Repository: NikolayIT/OpenJudgeSystem Branch: master Commit: e64527074150 Files: 1360 Total size: 14.6 MB Directory structure: gitextract_pv7nkudb/ ├── .github/ │ └── FUNDING.yml ├── .gitignore ├── Documentation/ │ ├── Development/ │ │ └── How to add new administration.txt │ ├── HISTORY.txt │ ├── Installation/ │ │ ├── sample-solution-cpp11.cpp │ │ ├── sample-solution.cpp │ │ ├── sample-solution.cs │ │ └── sample-solution.js │ └── Requirements/ │ ├── Gacutil/ │ │ └── gacutil.exe.config │ ├── PowerCollections/ │ │ ├── Binaries/ │ │ │ ├── License.txt │ │ │ └── PowerCollections.XML │ │ └── Binaries_Signed_4.5/ │ │ ├── PowerCollections.XML │ │ └── PowerCollections.dll.config │ └── Requirements for agent enviroments.txt ├── LICENSE ├── Open Judge System/ │ ├── Data/ │ │ ├── OJS.Data/ │ │ │ ├── App.config │ │ │ ├── Configurations/ │ │ │ │ ├── ParticipantAnswersConfiguration.cs │ │ │ │ ├── TestRunConfiguration.cs │ │ │ │ └── UserProfileConfiguration.cs │ │ │ ├── IOjsData.cs │ │ │ ├── IOjsDbContext.cs │ │ │ ├── Migrations/ │ │ │ │ └── DefaultMigrationConfiguration.cs │ │ │ ├── OJS.Data.csproj │ │ │ ├── OjsData.cs │ │ │ ├── OjsDbContext.cs │ │ │ ├── Properties/ │ │ │ │ └── AssemblyInfo.cs │ │ │ ├── Providers/ │ │ │ │ ├── GlimpseConnectionEfSqlBulkInsertProvider.cs │ │ │ │ └── Registries/ │ │ │ │ └── EfBulkInsertGlimpseProviderRegistry.cs │ │ │ ├── Repositories/ │ │ │ │ ├── Base/ │ │ │ │ │ ├── DeletableEntityRepository.cs │ │ │ │ │ └── GenericRepository.cs │ │ │ │ ├── ContestsRepository.cs │ │ │ │ ├── Contracts/ │ │ │ │ │ ├── IContestsRepository.cs │ │ │ │ │ ├── IParticipantsRepository.cs │ │ │ │ │ ├── ISubmissionsRepository.cs │ │ │ │ │ ├── ITestRepository.cs │ │ │ │ │ ├── ITestRunsRepository.cs │ │ │ │ │ └── IUsersRepository.cs │ │ │ │ ├── ParticipantsRepository.cs │ │ │ │ ├── SubmissionsRepository.cs │ │ │ │ ├── TestRepository.cs │ │ │ │ ├── TestRunsRepository.cs │ │ │ │ └── UsersRepository.cs │ │ │ └── packages.config │ │ ├── OJS.Data.Contracts/ │ │ │ ├── App.config │ │ │ ├── AuditInfo.cs │ │ │ ├── CodeFirstConventions/ │ │ │ │ └── IsUnicodeAttributeConvention.cs │ │ │ ├── DataAnnotations/ │ │ │ │ └── IsUnicodeAttribute.cs │ │ │ ├── DeletableEntity.cs │ │ │ ├── IAuditInfo.cs │ │ │ ├── IDeletableEntity.cs │ │ │ ├── IDeletableEntityRepository.cs │ │ │ ├── IOrderable.cs │ │ │ ├── IRepository.cs │ │ │ ├── OJS.Data.Contracts.csproj │ │ │ ├── Properties/ │ │ │ │ └── AssemblyInfo.cs │ │ │ └── packages.config │ │ └── OJS.Data.Models/ │ │ ├── AccessLog.cs │ │ ├── App.config │ │ ├── Checker.cs │ │ ├── Contest.cs │ │ ├── ContestCategory.cs │ │ ├── ContestQuestion.cs │ │ ├── ContestQuestionAnswer.cs │ │ ├── Event.cs │ │ ├── FeedbackReport.cs │ │ ├── News.cs │ │ ├── OJS.Data.Models.csproj │ │ ├── Participant.cs │ │ ├── ParticipantAnswer.cs │ │ ├── Problem.cs │ │ ├── ProblemResource.cs │ │ ├── Properties/ │ │ │ └── AssemblyInfo.cs │ │ ├── Setting.cs │ │ ├── SourceCode.cs │ │ ├── Submission.cs │ │ ├── SubmissionType.cs │ │ ├── Tag.cs │ │ ├── Test.cs │ │ ├── TestRun.cs │ │ ├── UserProfile.cs │ │ ├── UserSettings.cs │ │ └── packages.config │ ├── External Libraries/ │ │ ├── Kendo.Mvc.README │ │ └── Kendo.Mvc.xml │ ├── OJS.Common/ │ │ ├── Attributes/ │ │ │ ├── LocalizedDescriptionAttribute.cs │ │ │ └── LocalizedDisplayFormatAttribute.cs │ │ ├── Calculator.cs │ │ ├── DataAnnotations/ │ │ │ ├── DatabasePropertyAttribute.cs │ │ │ └── ExcludeFromExcelAttribute.cs │ │ ├── ExpressionBuilder.cs │ │ ├── Extensions/ │ │ │ ├── CompilerTypeExtensions.cs │ │ │ ├── CompressStringExtensions.cs │ │ │ ├── DirectoryHelpers.cs │ │ │ ├── EnumExtensions.cs │ │ │ ├── ExecutionStrategyTypeExtensions.cs │ │ │ ├── FileHelpers.cs │ │ │ ├── IEnumerableExtensions.cs │ │ │ ├── ObjectExtensions.cs │ │ │ ├── PlagiarismDetectorTypeExtensions.cs │ │ │ ├── StreamExtensions.cs │ │ │ └── StringExtensions.cs │ │ ├── GlobalConstants.cs │ │ ├── MailSender.cs │ │ ├── Models/ │ │ │ ├── CompilerType.cs │ │ │ ├── ContestQuestionType.cs │ │ │ ├── ExecutionStrategyType.cs │ │ │ ├── PlagiarismDetectorType.cs │ │ │ ├── ProblemResourceType.cs │ │ │ └── TestRunResultType.cs │ │ ├── OJS.Common.csproj │ │ ├── Properties/ │ │ │ └── AssemblyInfo.cs │ │ ├── Resources/ │ │ │ └── Enums/ │ │ │ ├── EnumTranslations.Designer.cs │ │ │ ├── EnumTranslations.bg.Designer.cs │ │ │ ├── EnumTranslations.bg.resx │ │ │ └── EnumTranslations.resx │ │ ├── SynchronizedHashtable.cs │ │ └── packages.config │ ├── Open Judge System.sln │ ├── Rules.ruleset │ ├── Settings.StyleCop │ ├── Tests/ │ │ ├── OJS.Common.Tests/ │ │ │ ├── OJS.Common.Tests.csproj │ │ │ ├── Properties/ │ │ │ │ └── AssemblyInfo.cs │ │ │ ├── StringExtensions/ │ │ │ │ ├── CompressDecompressTests.cs │ │ │ │ ├── GetFileExtensionTests.cs │ │ │ │ ├── GetFirstDifferenceIndexWithTests.cs │ │ │ │ ├── GetStringBetweenTests.cs │ │ │ │ ├── GetStringWithEllipsisBetweenTests.cs │ │ │ │ ├── MaxLengthTests.cs │ │ │ │ ├── PascalCaseToTextTests.cs │ │ │ │ ├── StringToUrlTests.cs │ │ │ │ ├── ToInteger.cs │ │ │ │ └── ToIntegerTests.cs │ │ │ └── packages.config │ │ ├── OJS.Tests.Common/ │ │ │ ├── App.config │ │ │ ├── DataFakes/ │ │ │ │ ├── DatabaseConfiguration.cs │ │ │ │ ├── FakeEmptyOjsDbContext.cs │ │ │ │ ├── FakeOjsDbContext.cs │ │ │ │ └── ObjectExtensions.cs │ │ │ ├── OJS.Tests.Common.csproj │ │ │ ├── Properties/ │ │ │ │ └── AssemblyInfo.cs │ │ │ ├── TestClassBase.cs │ │ │ ├── WebStubs/ │ │ │ │ ├── StubHttpContextForRouting.cs │ │ │ │ ├── StubHttpRequestForRouting.cs │ │ │ │ └── StubHttpResponseForRouting.cs │ │ │ └── packages.config │ │ ├── OJS.Workers.Checkers.Tests/ │ │ │ ├── CSharpCodeCheckerTests.cs │ │ │ ├── CaseInsensitiveCheckerTests.cs │ │ │ ├── ExactCheckerTests.cs │ │ │ ├── OJS.Workers.Checkers.Tests.csproj │ │ │ ├── PrecisionCheckerTests.cs │ │ │ ├── Properties/ │ │ │ │ └── AssemblyInfo.cs │ │ │ ├── SortCheckerTests.cs │ │ │ ├── TrimCheckerTests.cs │ │ │ └── packages.config │ │ ├── OJS.Workers.Compilers.Tests/ │ │ │ ├── CSharpCompilerTests.cs │ │ │ ├── MsBuildCompilerTests.cs │ │ │ ├── OJS.Workers.Compilers.Tests.csproj │ │ │ ├── Properties/ │ │ │ │ └── AssemblyInfo.cs │ │ │ └── packages.config │ │ ├── OJS.Workers.ExecutionStrategies.Tests/ │ │ │ ├── JsonExecutionResultTests.cs │ │ │ ├── OJS.Workers.ExecutionStrategies.Tests.csproj │ │ │ ├── Properties/ │ │ │ │ └── AssemblyInfo.cs │ │ │ └── packages.config │ │ ├── OJS.Workers.Executors.Tests/ │ │ │ ├── BaseExecutorsTestClass.cs │ │ │ ├── OJS.Workers.Executors.Tests.csproj │ │ │ ├── Properties/ │ │ │ │ └── AssemblyInfo.cs │ │ │ ├── RestrictedProcessSecurityTests.cs │ │ │ ├── RestrictedProcessTests.cs │ │ │ └── packages.config │ │ └── OJS.Workers.Tools.Tests/ │ │ ├── AntiCheat/ │ │ │ └── SortAndTrimLinesVisitorTests.cs │ │ ├── OJS.Workers.Tools.Tests.csproj │ │ ├── Properties/ │ │ │ └── AssemblyInfo.cs │ │ ├── Similarity/ │ │ │ └── SimilarityFinderDiffTextTests.cs │ │ └── packages.config │ ├── Tools/ │ │ ├── SandboxExecutorProofOfConcept/ │ │ │ ├── App.config │ │ │ ├── GlobalConstants.cs │ │ │ ├── Properties/ │ │ │ │ └── AssemblyInfo.cs │ │ │ ├── SandboxExecutorProofOfConcept.csproj │ │ │ ├── SandboxExecutorProofOfConceptProgram.cs │ │ │ └── packages.config │ │ ├── SandboxTarget/ │ │ │ ├── App.config │ │ │ ├── Properties/ │ │ │ │ └── AssemblyInfo.cs │ │ │ ├── SandboxTarget.csproj │ │ │ ├── SandboxTargetProgram.cs │ │ │ ├── TryToExecuteParams.cs │ │ │ └── packages.config │ │ └── SqlTestingPoC/ │ │ ├── App.config │ │ ├── Program.cs │ │ ├── Properties/ │ │ │ └── AssemblyInfo.cs │ │ ├── SqlPrepareDatabaseAndRunUserQueryExecutionStrategy.cs │ │ ├── SqlRunUserQueryAndCheckDatabaseExecutionStrategy.cs │ │ ├── SqlTestingPoC.csproj │ │ └── packages.config │ ├── Web/ │ │ ├── OJS.Web/ │ │ │ ├── App_Code/ │ │ │ │ └── ContestsHelper.cshtml │ │ │ ├── App_GlobalResources/ │ │ │ │ ├── Account/ │ │ │ │ │ ├── AccountEmails.Designer.cs │ │ │ │ │ ├── AccountEmails.bg.Designer.cs │ │ │ │ │ ├── AccountEmails.bg.resx │ │ │ │ │ ├── AccountEmails.resx │ │ │ │ │ ├── ViewModels/ │ │ │ │ │ │ ├── AccountViewModels.Designer.cs │ │ │ │ │ │ ├── AccountViewModels.bg.Designer.cs │ │ │ │ │ │ ├── AccountViewModels.bg.resx │ │ │ │ │ │ └── AccountViewModels.resx │ │ │ │ │ └── Views/ │ │ │ │ │ ├── ChangeEmailView.Designer.cs │ │ │ │ │ ├── ChangeEmailView.bg.designer.cs │ │ │ │ │ ├── ChangeEmailView.bg.resx │ │ │ │ │ ├── ChangeEmailView.resx │ │ │ │ │ ├── ChangePasswordView.Designer.cs │ │ │ │ │ ├── ChangePasswordView.bg.designer.cs │ │ │ │ │ ├── ChangePasswordView.bg.resx │ │ │ │ │ ├── ChangePasswordView.resx │ │ │ │ │ ├── ChangeUsernameView.bg.designer.cs │ │ │ │ │ ├── ChangeUsernameView.bg.resx │ │ │ │ │ ├── ChangeUsernameView.designer.cs │ │ │ │ │ ├── ChangeUsernameView.resx │ │ │ │ │ ├── Disassociate.Designer.cs │ │ │ │ │ ├── Disassociate.bg.designer.cs │ │ │ │ │ ├── Disassociate.bg.resx │ │ │ │ │ ├── Disassociate.resx │ │ │ │ │ ├── ExternalLoginCallback.bg.designer.cs │ │ │ │ │ ├── ExternalLoginCallback.bg.resx │ │ │ │ │ ├── ExternalLoginCallback.designer.cs │ │ │ │ │ ├── ExternalLoginCallback.resx │ │ │ │ │ ├── ExternalLoginConfirmation.Designer.cs │ │ │ │ │ ├── ExternalLoginConfirmation.bg.designer.cs │ │ │ │ │ ├── ExternalLoginConfirmation.bg.resx │ │ │ │ │ ├── ExternalLoginConfirmation.resx │ │ │ │ │ ├── ExternalLoginFailure.Designer.cs │ │ │ │ │ ├── ExternalLoginFailure.bg.designer.cs │ │ │ │ │ ├── ExternalLoginFailure.bg.resx │ │ │ │ │ ├── ExternalLoginFailure.resx │ │ │ │ │ ├── ForgottenPassword.Designer.cs │ │ │ │ │ ├── ForgottenPassword.bg.designer.cs │ │ │ │ │ ├── ForgottenPassword.bg.resx │ │ │ │ │ ├── ForgottenPassword.resx │ │ │ │ │ ├── General.Designer.cs │ │ │ │ │ ├── General.bg.designer.cs │ │ │ │ │ ├── General.bg.resx │ │ │ │ │ ├── General.resx │ │ │ │ │ ├── Login.Designer.cs │ │ │ │ │ ├── Login.bg.designer.cs │ │ │ │ │ ├── Login.bg.resx │ │ │ │ │ ├── Login.resx │ │ │ │ │ ├── Manage.Designer.cs │ │ │ │ │ ├── Manage.bg.designer.cs │ │ │ │ │ ├── Manage.bg.resx │ │ │ │ │ ├── Manage.resx │ │ │ │ │ ├── Partial/ │ │ │ │ │ │ ├── ChangePassword.Designer.cs │ │ │ │ │ │ ├── ChangePassword.bg.designer.cs │ │ │ │ │ │ ├── ChangePassword.bg.resx │ │ │ │ │ │ ├── ChangePassword.resx │ │ │ │ │ │ ├── ExternalLoginsList.Designer.cs │ │ │ │ │ │ ├── ExternalLoginsList.bg.designer.cs │ │ │ │ │ │ ├── ExternalLoginsList.bg.resx │ │ │ │ │ │ ├── ExternalLoginsList.resx │ │ │ │ │ │ ├── RemoveAccount.Designer.cs │ │ │ │ │ │ ├── RemoveAccount.bg.designer.cs │ │ │ │ │ │ ├── RemoveAccount.bg.resx │ │ │ │ │ │ ├── RemoveAccount.resx │ │ │ │ │ │ ├── SetPassword.Designer.cs │ │ │ │ │ │ ├── SetPassword.bg.designer.cs │ │ │ │ │ │ ├── SetPassword.bg.resx │ │ │ │ │ │ └── SetPassword.resx │ │ │ │ │ ├── Register.Designer.cs │ │ │ │ │ ├── Register.bg.designer.cs │ │ │ │ │ ├── Register.bg.resx │ │ │ │ │ └── Register.resx │ │ │ │ ├── Areas/ │ │ │ │ │ ├── Administration/ │ │ │ │ │ │ ├── AccessLogs/ │ │ │ │ │ │ │ ├── ViewModels/ │ │ │ │ │ │ │ │ ├── AccessLogGridViewModel.Designer.cs │ │ │ │ │ │ │ │ ├── AccessLogGridViewModel.bg.designer.cs │ │ │ │ │ │ │ │ ├── AccessLogGridViewModel.bg.resx │ │ │ │ │ │ │ │ └── AccessLogGridViewModel.resx │ │ │ │ │ │ │ └── Views/ │ │ │ │ │ │ │ ├── AccessLogsIndex.Designer.cs │ │ │ │ │ │ │ ├── AccessLogsIndex.bg.Designer.cs │ │ │ │ │ │ │ ├── AccessLogsIndex.bg.resx │ │ │ │ │ │ │ └── AccessLogsIndex.resx │ │ │ │ │ │ ├── AdministrationGeneral.Designer.cs │ │ │ │ │ │ ├── AdministrationGeneral.bg.designer.cs │ │ │ │ │ │ ├── AdministrationGeneral.bg.resx │ │ │ │ │ │ ├── AdministrationGeneral.resx │ │ │ │ │ │ ├── AntiCheat/ │ │ │ │ │ │ │ └── Views/ │ │ │ │ │ │ │ ├── AntiCheatViews.Designer.cs │ │ │ │ │ │ │ ├── AntiCheatViews.bg.designer.cs │ │ │ │ │ │ │ ├── AntiCheatViews.bg.resx │ │ │ │ │ │ │ └── AntiCheatViews.resx │ │ │ │ │ │ ├── Checkers/ │ │ │ │ │ │ │ ├── ViewModels/ │ │ │ │ │ │ │ │ ├── CheckerAdministrationViewModel.Designer.cs │ │ │ │ │ │ │ │ ├── CheckerAdministrationViewModel.bg.designer.cs │ │ │ │ │ │ │ │ ├── CheckerAdministrationViewModel.bg.resx │ │ │ │ │ │ │ │ └── CheckerAdministrationViewModel.resx │ │ │ │ │ │ │ └── Views/ │ │ │ │ │ │ │ ├── CheckersIndex.Designer.cs │ │ │ │ │ │ │ ├── CheckersIndex.bg.designer.cs │ │ │ │ │ │ │ ├── CheckersIndex.bg.resx │ │ │ │ │ │ │ └── CheckersIndex.resx │ │ │ │ │ │ ├── ContestCategories/ │ │ │ │ │ │ │ ├── ViewModels/ │ │ │ │ │ │ │ │ ├── ContestCategoryAdministrationViewModel.Designer.cs │ │ │ │ │ │ │ │ ├── ContestCategoryAdministrationViewModel.bg.designer.cs │ │ │ │ │ │ │ │ ├── ContestCategoryAdministrationViewModel.bg.resx │ │ │ │ │ │ │ │ └── ContestCategoryAdministrationViewModel.resx │ │ │ │ │ │ │ └── Views/ │ │ │ │ │ │ │ ├── ContestCategoriesViews.Designer.cs │ │ │ │ │ │ │ ├── ContestCategoriesViews.bg.designer.cs │ │ │ │ │ │ │ ├── ContestCategoriesViews.bg.resx │ │ │ │ │ │ │ └── ContestCategoriesViews.resx │ │ │ │ │ │ ├── Contests/ │ │ │ │ │ │ │ ├── ContestsControllers.Designer.cs │ │ │ │ │ │ │ ├── ContestsControllers.bg.designer.cs │ │ │ │ │ │ │ ├── ContestsControllers.bg.resx │ │ │ │ │ │ │ ├── ContestsControllers.resx │ │ │ │ │ │ │ ├── ViewModels/ │ │ │ │ │ │ │ │ ├── ContestAdministration.Designer.cs │ │ │ │ │ │ │ │ ├── ContestAdministration.bg.Designer.cs │ │ │ │ │ │ │ │ ├── ContestAdministration.bg.resx │ │ │ │ │ │ │ │ ├── ContestAdministration.resx │ │ │ │ │ │ │ │ ├── ContestQuestion.Designer.cs │ │ │ │ │ │ │ │ ├── ContestQuestion.bg.designer.cs │ │ │ │ │ │ │ │ ├── ContestQuestion.bg.resx │ │ │ │ │ │ │ │ ├── ContestQuestion.resx │ │ │ │ │ │ │ │ ├── ContestQuestionAnswer.Designer.cs │ │ │ │ │ │ │ │ ├── ContestQuestionAnswer.bg.designer.cs │ │ │ │ │ │ │ │ ├── ContestQuestionAnswer.bg.resx │ │ │ │ │ │ │ │ ├── ContestQuestionAnswer.resx │ │ │ │ │ │ │ │ ├── ShortContestAdministration.Designer.cs │ │ │ │ │ │ │ │ ├── ShortContestAdministration.bg.Designer.cs │ │ │ │ │ │ │ │ ├── ShortContestAdministration.bg.resx │ │ │ │ │ │ │ │ └── ShortContestAdministration.resx │ │ │ │ │ │ │ └── Views/ │ │ │ │ │ │ │ ├── ContestCreate.bg.designer.cs │ │ │ │ │ │ │ ├── ContestCreate.bg.resx │ │ │ │ │ │ │ ├── ContestCreate.designer.cs │ │ │ │ │ │ │ ├── ContestCreate.resx │ │ │ │ │ │ │ ├── ContestEdit.Designer.cs │ │ │ │ │ │ │ ├── ContestEdit.bg.designer.cs │ │ │ │ │ │ │ ├── ContestEdit.bg.resx │ │ │ │ │ │ │ ├── ContestEdit.resx │ │ │ │ │ │ │ ├── ContestIndex.Designer.cs │ │ │ │ │ │ │ ├── ContestIndex.bg.designer.cs │ │ │ │ │ │ │ ├── ContestIndex.bg.resx │ │ │ │ │ │ │ ├── ContestIndex.resx │ │ │ │ │ │ │ ├── EditorTemplates/ │ │ │ │ │ │ │ │ ├── CategoryDropDown.Designer.cs │ │ │ │ │ │ │ │ ├── CategoryDropDown.bg.designer.cs │ │ │ │ │ │ │ │ ├── CategoryDropDown.bg.resx │ │ │ │ │ │ │ │ ├── CategoryDropDown.resx │ │ │ │ │ │ │ │ ├── SubmissionTypeCheckBoxes.Designer.cs │ │ │ │ │ │ │ │ ├── SubmissionTypeCheckBoxes.bg.designer.cs │ │ │ │ │ │ │ │ ├── SubmissionTypeCheckBoxes.bg.resx │ │ │ │ │ │ │ │ └── SubmissionTypeCheckBoxes.resx │ │ │ │ │ │ │ └── Partials/ │ │ │ │ │ │ │ ├── ContestEditor.Designer.cs │ │ │ │ │ │ │ ├── ContestEditor.bg.designer.cs │ │ │ │ │ │ │ ├── ContestEditor.bg.resx │ │ │ │ │ │ │ └── ContestEditor.resx │ │ │ │ │ │ ├── Feedback/ │ │ │ │ │ │ │ ├── ViewModels/ │ │ │ │ │ │ │ │ ├── FeedbackReport.Designer.cs │ │ │ │ │ │ │ │ ├── FeedbackReport.bg.designer.cs │ │ │ │ │ │ │ │ ├── FeedbackReport.bg.resx │ │ │ │ │ │ │ │ └── FeedbackReport.resx │ │ │ │ │ │ │ └── Views/ │ │ │ │ │ │ │ ├── FeedbackIndexAdmin.Designer.cs │ │ │ │ │ │ │ ├── FeedbackIndexAdmin.bg.Designer.cs │ │ │ │ │ │ │ ├── FeedbackIndexAdmin.bg.resx │ │ │ │ │ │ │ └── FeedbackIndexAdmin.resx │ │ │ │ │ │ ├── News/ │ │ │ │ │ │ │ ├── ViewModels/ │ │ │ │ │ │ │ │ ├── NewsAdministration.Designer.cs │ │ │ │ │ │ │ │ ├── NewsAdministration.bg.designer.cs │ │ │ │ │ │ │ │ ├── NewsAdministration.bg.resx │ │ │ │ │ │ │ │ └── NewsAdministration.resx │ │ │ │ │ │ │ └── Views/ │ │ │ │ │ │ │ ├── NewsIndex.Designer.cs │ │ │ │ │ │ │ ├── NewsIndex.bg.designer.cs │ │ │ │ │ │ │ ├── NewsIndex.bg.resx │ │ │ │ │ │ │ └── NewsIndex.resx │ │ │ │ │ │ ├── Participants/ │ │ │ │ │ │ │ ├── ViewModels/ │ │ │ │ │ │ │ │ ├── ParticipantViewModels.Designer.cs │ │ │ │ │ │ │ │ ├── ParticipantViewModels.bg.designer.cs │ │ │ │ │ │ │ │ ├── ParticipantViewModels.bg.resx │ │ │ │ │ │ │ │ └── ParticipantViewModels.resx │ │ │ │ │ │ │ └── Views/ │ │ │ │ │ │ │ ├── EditorTemplates/ │ │ │ │ │ │ │ │ ├── ParticipantEditorTemplates.Designer.cs │ │ │ │ │ │ │ │ ├── ParticipantEditorTemplates.bg.designer.cs │ │ │ │ │ │ │ │ ├── ParticipantEditorTemplates.bg.resx │ │ │ │ │ │ │ │ └── ParticipantEditorTemplates.resx │ │ │ │ │ │ │ ├── Partials/ │ │ │ │ │ │ │ │ ├── Participants.Designer.cs │ │ │ │ │ │ │ │ ├── Participants.bg.designer.cs │ │ │ │ │ │ │ │ ├── Participants.bg.resx │ │ │ │ │ │ │ │ └── Participants.resx │ │ │ │ │ │ │ ├── ParticipantsContest.bg.designer.cs │ │ │ │ │ │ │ ├── ParticipantsContest.bg.resx │ │ │ │ │ │ │ ├── ParticipantsContest.designer.cs │ │ │ │ │ │ │ ├── ParticipantsContest.resx │ │ │ │ │ │ │ ├── ParticipantsIndex.Designer.cs │ │ │ │ │ │ │ ├── ParticipantsIndex.bg.designer.cs │ │ │ │ │ │ │ ├── ParticipantsIndex.bg.resx │ │ │ │ │ │ │ └── ParticipantsIndex.resx │ │ │ │ │ │ ├── Problems/ │ │ │ │ │ │ │ ├── ProblemsControllers.Designer.cs │ │ │ │ │ │ │ ├── ProblemsControllers.bg.designer.cs │ │ │ │ │ │ │ ├── ProblemsControllers.bg.resx │ │ │ │ │ │ │ ├── ProblemsControllers.resx │ │ │ │ │ │ │ ├── ViewModels/ │ │ │ │ │ │ │ │ ├── DetailedProblem.Designer.cs │ │ │ │ │ │ │ │ ├── DetailedProblem.bg.designer.cs │ │ │ │ │ │ │ │ ├── DetailedProblem.bg.resx │ │ │ │ │ │ │ │ ├── DetailedProblem.resx │ │ │ │ │ │ │ │ ├── ProblemResources.bg.designer.cs │ │ │ │ │ │ │ │ ├── ProblemResources.bg.resx │ │ │ │ │ │ │ │ ├── ProblemResources.designer.cs │ │ │ │ │ │ │ │ └── ProblemResources.resx │ │ │ │ │ │ │ └── Views/ │ │ │ │ │ │ │ ├── Partials/ │ │ │ │ │ │ │ │ ├── ProblemsPartials.Designer.cs │ │ │ │ │ │ │ │ ├── ProblemsPartials.bg.designer.cs │ │ │ │ │ │ │ │ ├── ProblemsPartials.bg.resx │ │ │ │ │ │ │ │ └── ProblemsPartials.resx │ │ │ │ │ │ │ ├── ProblemsCreate.Designer.cs │ │ │ │ │ │ │ ├── ProblemsCreate.bg.designer.cs │ │ │ │ │ │ │ ├── ProblemsCreate.bg.resx │ │ │ │ │ │ │ ├── ProblemsCreate.resx │ │ │ │ │ │ │ ├── ProblemsDelete.Designer.cs │ │ │ │ │ │ │ ├── ProblemsDelete.bg.designer.cs │ │ │ │ │ │ │ ├── ProblemsDelete.bg.resx │ │ │ │ │ │ │ ├── ProblemsDelete.resx │ │ │ │ │ │ │ ├── ProblemsDeleteAll.Designer.cs │ │ │ │ │ │ │ ├── ProblemsDeleteAll.bg.designer.cs │ │ │ │ │ │ │ ├── ProblemsDeleteAll.bg.resx │ │ │ │ │ │ │ ├── ProblemsDeleteAll.resx │ │ │ │ │ │ │ ├── ProblemsDetails.Designer.cs │ │ │ │ │ │ │ ├── ProblemsDetails.bg.designer.cs │ │ │ │ │ │ │ ├── ProblemsDetails.bg.resx │ │ │ │ │ │ │ ├── ProblemsDetails.resx │ │ │ │ │ │ │ ├── ProblemsEdit.Designer.cs │ │ │ │ │ │ │ ├── ProblemsEdit.bg.designer.cs │ │ │ │ │ │ │ ├── ProblemsEdit.bg.resx │ │ │ │ │ │ │ ├── ProblemsEdit.resx │ │ │ │ │ │ │ ├── ProblemsIndex.Designer.cs │ │ │ │ │ │ │ ├── ProblemsIndex.bg.designer.cs │ │ │ │ │ │ │ ├── ProblemsIndex.bg.resx │ │ │ │ │ │ │ └── ProblemsIndex.resx │ │ │ │ │ │ ├── Resources/ │ │ │ │ │ │ │ ├── ResourcesControllers.Designer.cs │ │ │ │ │ │ │ ├── ResourcesControllers.bg.designer.cs │ │ │ │ │ │ │ ├── ResourcesControllers.bg.resx │ │ │ │ │ │ │ ├── ResourcesControllers.resx │ │ │ │ │ │ │ └── Views/ │ │ │ │ │ │ │ ├── ResourcesCreate.Designer.cs │ │ │ │ │ │ │ ├── ResourcesCreate.bg.designer.cs │ │ │ │ │ │ │ ├── ResourcesCreate.bg.resx │ │ │ │ │ │ │ ├── ResourcesCreate.resx │ │ │ │ │ │ │ ├── ResourcesEdit.Designer.cs │ │ │ │ │ │ │ ├── ResourcesEdit.bg.designer.cs │ │ │ │ │ │ │ ├── ResourcesEdit.bg.resx │ │ │ │ │ │ │ └── ResourcesEdit.resx │ │ │ │ │ │ ├── Roles/ │ │ │ │ │ │ │ ├── ViewModels/ │ │ │ │ │ │ │ │ ├── RolesViewModels.Designer.cs │ │ │ │ │ │ │ │ ├── RolesViewModels.bg.designer.cs │ │ │ │ │ │ │ │ ├── RolesViewModels.bg.resx │ │ │ │ │ │ │ │ └── RolesViewModels.resx │ │ │ │ │ │ │ └── Views/ │ │ │ │ │ │ │ ├── RolesIndex.Designer.cs │ │ │ │ │ │ │ ├── RolesIndex.bg.designer.cs │ │ │ │ │ │ │ ├── RolesIndex.bg.resx │ │ │ │ │ │ │ └── RolesIndex.resx │ │ │ │ │ │ ├── Settings/ │ │ │ │ │ │ │ ├── ViewModels/ │ │ │ │ │ │ │ │ ├── SettingAdministration.Designer.cs │ │ │ │ │ │ │ │ ├── SettingAdministration.bg.designer.cs │ │ │ │ │ │ │ │ ├── SettingAdministration.bg.resx │ │ │ │ │ │ │ │ └── SettingAdministration.resx │ │ │ │ │ │ │ └── Views/ │ │ │ │ │ │ │ ├── SettingsAdministrationIndex.Designer.cs │ │ │ │ │ │ │ ├── SettingsAdministrationIndex.bg.Designer.cs │ │ │ │ │ │ │ ├── SettingsAdministrationIndex.bg.resx │ │ │ │ │ │ │ └── SettingsAdministrationIndex.resx │ │ │ │ │ │ ├── Shared/ │ │ │ │ │ │ │ └── Views/ │ │ │ │ │ │ │ └── Partials/ │ │ │ │ │ │ │ ├── Partials.Designer.cs │ │ │ │ │ │ │ ├── Partials.bg.designer.cs │ │ │ │ │ │ │ ├── Partials.bg.resx │ │ │ │ │ │ │ └── Partials.resx │ │ │ │ │ │ ├── SubmissionTypes/ │ │ │ │ │ │ │ ├── ViewModels/ │ │ │ │ │ │ │ │ ├── SubmissionTypeAdministration.Designer.cs │ │ │ │ │ │ │ │ ├── SubmissionTypeAdministration.bg.designer.cs │ │ │ │ │ │ │ │ ├── SubmissionTypeAdministration.bg.resx │ │ │ │ │ │ │ │ └── SubmissionTypeAdministration.resx │ │ │ │ │ │ │ └── Views/ │ │ │ │ │ │ │ ├── SubmissionTypesIndex.Designer.cs │ │ │ │ │ │ │ ├── SubmissionTypesIndex.bg.designer.cs │ │ │ │ │ │ │ ├── SubmissionTypesIndex.bg.resx │ │ │ │ │ │ │ └── SubmissionTypesIndex.resx │ │ │ │ │ │ ├── Submissions/ │ │ │ │ │ │ │ ├── SubmissionsControllers.Designer.cs │ │ │ │ │ │ │ ├── SubmissionsControllers.bg.designer.cs │ │ │ │ │ │ │ ├── SubmissionsControllers.bg.resx │ │ │ │ │ │ │ ├── SubmissionsControllers.resx │ │ │ │ │ │ │ ├── ViewModels/ │ │ │ │ │ │ │ │ ├── SubmissionAdministration.Designer.cs │ │ │ │ │ │ │ │ ├── SubmissionAdministration.bg.designer.cs │ │ │ │ │ │ │ │ ├── SubmissionAdministration.bg.resx │ │ │ │ │ │ │ │ └── SubmissionAdministration.resx │ │ │ │ │ │ │ └── Views/ │ │ │ │ │ │ │ ├── EditorTemplates/ │ │ │ │ │ │ │ │ ├── SubmissionsEditorTemplates.Designer.cs │ │ │ │ │ │ │ │ ├── SubmissionsEditorTemplates.bg.Designer.cs │ │ │ │ │ │ │ │ ├── SubmissionsEditorTemplates.bg.resx │ │ │ │ │ │ │ │ └── SubmissionsEditorTemplates.resx │ │ │ │ │ │ │ ├── Partials/ │ │ │ │ │ │ │ │ ├── SubmissionForm.Designer.cs │ │ │ │ │ │ │ │ ├── SubmissionForm.bg.designer.cs │ │ │ │ │ │ │ │ ├── SubmissionForm.bg.resx │ │ │ │ │ │ │ │ ├── SubmissionForm.resx │ │ │ │ │ │ │ │ ├── SubmissionsGrid.Designer.cs │ │ │ │ │ │ │ │ ├── SubmissionsGrid.bg.designer.cs │ │ │ │ │ │ │ │ ├── SubmissionsGrid.bg.resx │ │ │ │ │ │ │ │ └── SubmissionsGrid.resx │ │ │ │ │ │ │ ├── SubmissionsCreate.Designer.cs │ │ │ │ │ │ │ ├── SubmissionsCreate.bg.designer.cs │ │ │ │ │ │ │ ├── SubmissionsCreate.bg.resx │ │ │ │ │ │ │ ├── SubmissionsCreate.resx │ │ │ │ │ │ │ ├── SubmissionsDelete.Designer.cs │ │ │ │ │ │ │ ├── SubmissionsDelete.bg.designer.cs │ │ │ │ │ │ │ ├── SubmissionsDelete.bg.resx │ │ │ │ │ │ │ ├── SubmissionsDelete.resx │ │ │ │ │ │ │ ├── SubmissionsIndex.Designer.cs │ │ │ │ │ │ │ ├── SubmissionsIndex.bg.designer.cs │ │ │ │ │ │ │ ├── SubmissionsIndex.bg.resx │ │ │ │ │ │ │ ├── SubmissionsIndex.resx │ │ │ │ │ │ │ ├── SubmissionsUpdate.Designer.cs │ │ │ │ │ │ │ ├── SubmissionsUpdate.bg.designer.cs │ │ │ │ │ │ │ ├── SubmissionsUpdate.bg.resx │ │ │ │ │ │ │ └── SubmissionsUpdate.resx │ │ │ │ │ │ ├── Tests/ │ │ │ │ │ │ │ ├── TestsControllers.bg.designer.cs │ │ │ │ │ │ │ ├── TestsControllers.bg.resx │ │ │ │ │ │ │ ├── TestsControllers.designer.cs │ │ │ │ │ │ │ ├── TestsControllers.resx │ │ │ │ │ │ │ ├── ViewModels/ │ │ │ │ │ │ │ │ ├── TestAdministration.Designer.cs │ │ │ │ │ │ │ │ ├── TestAdministration.bg.designer.cs │ │ │ │ │ │ │ │ ├── TestAdministration.bg.resx │ │ │ │ │ │ │ │ └── TestAdministration.resx │ │ │ │ │ │ │ └── Views/ │ │ │ │ │ │ │ ├── TestsCreate.Designer.cs │ │ │ │ │ │ │ ├── TestsCreate.bg.designer.cs │ │ │ │ │ │ │ ├── TestsCreate.bg.resx │ │ │ │ │ │ │ ├── TestsCreate.resx │ │ │ │ │ │ │ ├── TestsDelete.Designer.cs │ │ │ │ │ │ │ ├── TestsDelete.bg.designer.cs │ │ │ │ │ │ │ ├── TestsDelete.bg.resx │ │ │ │ │ │ │ ├── TestsDelete.resx │ │ │ │ │ │ │ ├── TestsDeleteAll.Designer.cs │ │ │ │ │ │ │ ├── TestsDeleteAll.bg.designer.cs │ │ │ │ │ │ │ ├── TestsDeleteAll.bg.resx │ │ │ │ │ │ │ ├── TestsDeleteAll.resx │ │ │ │ │ │ │ ├── TestsDetails.bg.designer.cs │ │ │ │ │ │ │ ├── TestsDetails.bg.resx │ │ │ │ │ │ │ ├── TestsDetails.designer.cs │ │ │ │ │ │ │ ├── TestsDetails.resx │ │ │ │ │ │ │ ├── TestsEdit.Designer.cs │ │ │ │ │ │ │ ├── TestsEdit.bg.designer.cs │ │ │ │ │ │ │ ├── TestsEdit.bg.resx │ │ │ │ │ │ │ ├── TestsEdit.resx │ │ │ │ │ │ │ ├── TestsIndex.Designer.cs │ │ │ │ │ │ │ ├── TestsIndex.bg.designer.cs │ │ │ │ │ │ │ ├── TestsIndex.bg.resx │ │ │ │ │ │ │ └── TestsIndex.resx │ │ │ │ │ │ └── Users/ │ │ │ │ │ │ ├── ViewModels/ │ │ │ │ │ │ │ ├── UserProfileAdministration.Designer.cs │ │ │ │ │ │ │ ├── UserProfileAdministration.bg.designer.cs │ │ │ │ │ │ │ ├── UserProfileAdministration.bg.resx │ │ │ │ │ │ │ └── UserProfileAdministration.resx │ │ │ │ │ │ └── Views/ │ │ │ │ │ │ ├── UsersIndex.Designer.cs │ │ │ │ │ │ ├── UsersIndex.bg.designer.cs │ │ │ │ │ │ ├── UsersIndex.bg.resx │ │ │ │ │ │ └── UsersIndex.resx │ │ │ │ │ ├── Contests/ │ │ │ │ │ │ ├── ContestsGeneral.Designer.cs │ │ │ │ │ │ ├── ContestsGeneral.bg.Designer.cs │ │ │ │ │ │ ├── ContestsGeneral.bg.resx │ │ │ │ │ │ ├── ContestsGeneral.resx │ │ │ │ │ │ ├── Shared/ │ │ │ │ │ │ │ ├── ContestsAllContestSubmissionsByUser.Designer.cs │ │ │ │ │ │ │ ├── ContestsAllContestSubmissionsByUser.bg.designer.cs │ │ │ │ │ │ │ ├── ContestsAllContestSubmissionsByUser.bg.resx │ │ │ │ │ │ │ ├── ContestsAllContestSubmissionsByUser.resx │ │ │ │ │ │ │ ├── ContestsProblemPartial.Designer.cs │ │ │ │ │ │ │ ├── ContestsProblemPartial.bg.Designer.cs │ │ │ │ │ │ │ ├── ContestsProblemPartial.bg.resx │ │ │ │ │ │ │ └── ContestsProblemPartial.resx │ │ │ │ │ │ ├── ViewModels/ │ │ │ │ │ │ │ ├── ContestsViewModels.Designer.cs │ │ │ │ │ │ │ ├── ContestsViewModels.bg.designer.cs │ │ │ │ │ │ │ ├── ContestsViewModels.bg.resx │ │ │ │ │ │ │ ├── ContestsViewModels.resx │ │ │ │ │ │ │ ├── ProblemsViewModels.Designer.cs │ │ │ │ │ │ │ ├── ProblemsViewModels.bg.designer.cs │ │ │ │ │ │ │ ├── ProblemsViewModels.bg.resx │ │ │ │ │ │ │ ├── ProblemsViewModels.resx │ │ │ │ │ │ │ ├── SubmissionsViewModels.Designer.cs │ │ │ │ │ │ │ ├── SubmissionsViewModels.bg.designer.cs │ │ │ │ │ │ │ ├── SubmissionsViewModels.bg.resx │ │ │ │ │ │ │ └── SubmissionsViewModels.resx │ │ │ │ │ │ └── Views/ │ │ │ │ │ │ ├── Compete/ │ │ │ │ │ │ │ ├── CompeteIndex.Designer.cs │ │ │ │ │ │ │ ├── CompeteIndex.bg.designer.cs │ │ │ │ │ │ │ ├── CompeteIndex.bg.resx │ │ │ │ │ │ │ ├── CompeteIndex.resx │ │ │ │ │ │ │ ├── CompeteRegister.Designer.cs │ │ │ │ │ │ │ ├── CompeteRegister.bg.Designer.cs │ │ │ │ │ │ │ ├── CompeteRegister.bg.resx │ │ │ │ │ │ │ └── CompeteRegister.resx │ │ │ │ │ │ ├── Contests/ │ │ │ │ │ │ │ ├── ContestsDetails.Designer.cs │ │ │ │ │ │ │ ├── ContestsDetails.bg.designer.cs │ │ │ │ │ │ │ ├── ContestsDetails.bg.resx │ │ │ │ │ │ │ └── ContestsDetails.resx │ │ │ │ │ │ ├── List/ │ │ │ │ │ │ │ ├── ListByCategory.Designer.cs │ │ │ │ │ │ │ ├── ListByCategory.bg.Designer.cs │ │ │ │ │ │ │ ├── ListByCategory.bg.resx │ │ │ │ │ │ │ ├── ListByCategory.resx │ │ │ │ │ │ │ ├── ListByType.Designer.cs │ │ │ │ │ │ │ ├── ListByType.bg.designer.cs │ │ │ │ │ │ │ ├── ListByType.bg.resx │ │ │ │ │ │ │ ├── ListByType.resx │ │ │ │ │ │ │ ├── ListIndex.bg.designer.cs │ │ │ │ │ │ │ ├── ListIndex.bg.resx │ │ │ │ │ │ │ ├── ListIndex.designer.cs │ │ │ │ │ │ │ └── ListIndex.resx │ │ │ │ │ │ ├── Results/ │ │ │ │ │ │ │ ├── Partials/ │ │ │ │ │ │ │ │ ├── StatsPartial.Designer.cs │ │ │ │ │ │ │ │ ├── StatsPartial.bg.designer.cs │ │ │ │ │ │ │ │ ├── StatsPartial.bg.resx │ │ │ │ │ │ │ │ └── StatsPartial.resx │ │ │ │ │ │ │ ├── ResultsFull.bg.Designer.cs │ │ │ │ │ │ │ ├── ResultsFull.bg.resx │ │ │ │ │ │ │ ├── ResultsFull.designer.cs │ │ │ │ │ │ │ ├── ResultsFull.resx │ │ │ │ │ │ │ ├── ResultsSimple.Designer.cs │ │ │ │ │ │ │ ├── ResultsSimple.bg.Designer.cs │ │ │ │ │ │ │ ├── ResultsSimple.bg.resx │ │ │ │ │ │ │ └── ResultsSimple.resx │ │ │ │ │ │ └── Submissions/ │ │ │ │ │ │ ├── SubmissionsView.Designer.cs │ │ │ │ │ │ ├── SubmissionsView.bg.designer.cs │ │ │ │ │ │ ├── SubmissionsView.bg.resx │ │ │ │ │ │ └── SubmissionsView.resx │ │ │ │ │ └── Users/ │ │ │ │ │ ├── Shared/ │ │ │ │ │ │ ├── ProfileProfileInfo.Designer.cs │ │ │ │ │ │ ├── ProfileProfileInfo.bg.Designer.cs │ │ │ │ │ │ ├── ProfileProfileInfo.bg.resx │ │ │ │ │ │ └── ProfileProfileInfo.resx │ │ │ │ │ ├── ViewModels/ │ │ │ │ │ │ ├── ProfileViewModels.Designer.cs │ │ │ │ │ │ ├── ProfileViewModels.bg.Designer.cs │ │ │ │ │ │ ├── ProfileViewModels.bg.resx │ │ │ │ │ │ └── ProfileViewModels.resx │ │ │ │ │ └── Views/ │ │ │ │ │ ├── Profile/ │ │ │ │ │ │ ├── ProfileIndex.Designer.cs │ │ │ │ │ │ ├── ProfileIndex.bg.Designer.cs │ │ │ │ │ │ ├── ProfileIndex.bg.resx │ │ │ │ │ │ └── ProfileIndex.resx │ │ │ │ │ └── Settings/ │ │ │ │ │ ├── SettingsIndex.Designer.cs │ │ │ │ │ ├── SettingsIndex.bg.designer.cs │ │ │ │ │ ├── SettingsIndex.bg.resx │ │ │ │ │ └── SettingsIndex.resx │ │ │ │ ├── Base/ │ │ │ │ │ ├── Main.Designer.cs │ │ │ │ │ ├── Main.bg.Designer.cs │ │ │ │ │ ├── Main.bg.resx │ │ │ │ │ └── Main.resx │ │ │ │ ├── Feedback/ │ │ │ │ │ ├── ViewModels/ │ │ │ │ │ │ ├── FeedbackViewModels.Designer.cs │ │ │ │ │ │ ├── FeedbackViewModels.bg.designer.cs │ │ │ │ │ │ ├── FeedbackViewModels.bg.resx │ │ │ │ │ │ └── FeedbackViewModels.resx │ │ │ │ │ └── Views/ │ │ │ │ │ ├── FeedbackIndex.Designer.cs │ │ │ │ │ ├── FeedbackIndex.bg.designer.cs │ │ │ │ │ ├── FeedbackIndex.bg.resx │ │ │ │ │ ├── FeedbackIndex.resx │ │ │ │ │ ├── FeedbackSubmitted.Designer.cs │ │ │ │ │ ├── FeedbackSubmitted.bg.designer.cs │ │ │ │ │ ├── FeedbackSubmitted.bg.resx │ │ │ │ │ └── FeedbackSubmitted.resx │ │ │ │ ├── Global.Designer.cs │ │ │ │ ├── Global.resx │ │ │ │ ├── Home/ │ │ │ │ │ └── Views/ │ │ │ │ │ ├── Index.bg.designer.cs │ │ │ │ │ ├── Index.bg.resx │ │ │ │ │ ├── Index.designer.cs │ │ │ │ │ └── Index.resx │ │ │ │ ├── Models/ │ │ │ │ │ ├── ContestQuestionTypeResource.bg.Designer.cs │ │ │ │ │ ├── ContestQuestionTypeResource.bg.resx │ │ │ │ │ ├── ContestQuestionTypeResource.designer.cs │ │ │ │ │ └── ContestQuestionTypeResource.resx │ │ │ │ ├── News/ │ │ │ │ │ └── Views/ │ │ │ │ │ ├── All.Designer.cs │ │ │ │ │ ├── All.bg.designer.cs │ │ │ │ │ ├── All.bg.resx │ │ │ │ │ ├── All.resx │ │ │ │ │ ├── LatestNews.Designer.cs │ │ │ │ │ ├── LatestNews.bg.designer.cs │ │ │ │ │ ├── LatestNews.bg.resx │ │ │ │ │ ├── LatestNews.resx │ │ │ │ │ ├── Selected.Designer.cs │ │ │ │ │ ├── Selected.bg.designer.cs │ │ │ │ │ ├── Selected.bg.resx │ │ │ │ │ └── Selected.resx │ │ │ │ ├── Search/ │ │ │ │ │ └── Views/ │ │ │ │ │ ├── SearchIndex.bg.Designer.cs │ │ │ │ │ ├── SearchIndex.bg.resx │ │ │ │ │ ├── SearchIndex.designer.cs │ │ │ │ │ ├── SearchIndex.resx │ │ │ │ │ ├── SearchResults.Designer.cs │ │ │ │ │ ├── SearchResults.bg.Designer.cs │ │ │ │ │ ├── SearchResults.bg.resx │ │ │ │ │ └── SearchResults.resx │ │ │ │ ├── Submissions/ │ │ │ │ │ └── Views/ │ │ │ │ │ ├── AdvancedSubmissions.Designer.cs │ │ │ │ │ ├── AdvancedSubmissions.bg.designer.cs │ │ │ │ │ ├── AdvancedSubmissions.bg.resx │ │ │ │ │ ├── AdvancedSubmissions.resx │ │ │ │ │ ├── BasicSubmissions.Designer.cs │ │ │ │ │ ├── BasicSubmissions.bg.designer.cs │ │ │ │ │ ├── BasicSubmissions.bg.resx │ │ │ │ │ ├── BasicSubmissions.resx │ │ │ │ │ └── Partial/ │ │ │ │ │ ├── AdvancedSubmissionsGridPartial.Designer.cs │ │ │ │ │ ├── AdvancedSubmissionsGridPartial.bg.designer.cs │ │ │ │ │ ├── AdvancedSubmissionsGridPartial.bg.resx │ │ │ │ │ └── AdvancedSubmissionsGridPartial.resx │ │ │ │ └── Views/ │ │ │ │ └── Shared/ │ │ │ │ ├── Layout.Designer.cs │ │ │ │ ├── Layout.bg.designer.cs │ │ │ │ ├── Layout.bg.resx │ │ │ │ ├── Layout.resx │ │ │ │ ├── LoginPartial.bg.designer.cs │ │ │ │ ├── LoginPartial.bg.resx │ │ │ │ ├── LoginPartial.designer.cs │ │ │ │ └── LoginPartial.resx │ │ │ ├── App_Start/ │ │ │ │ ├── BundleConfig.cs │ │ │ │ ├── FilterConfig.cs │ │ │ │ ├── GlimpseSecurityPolicy.cs │ │ │ │ ├── LoggingModule.cs │ │ │ │ ├── NinjectWebCommon.cs │ │ │ │ ├── RouteConfig.cs │ │ │ │ ├── Settings.cs │ │ │ │ ├── Startup.Auth.cs │ │ │ │ └── ViewEngineConfig.cs │ │ │ ├── Areas/ │ │ │ │ ├── Administration/ │ │ │ │ │ ├── AdministrationAreaRegistration.cs │ │ │ │ │ ├── Controllers/ │ │ │ │ │ │ ├── AccessLogsController.cs │ │ │ │ │ │ ├── AntiCheatController.cs │ │ │ │ │ │ ├── CheckersController.cs │ │ │ │ │ │ ├── ContestCategoriesController.cs │ │ │ │ │ │ ├── ContestQuestionAnswersController.cs │ │ │ │ │ │ ├── ContestQuestionsController.cs │ │ │ │ │ │ ├── ContestsController.cs │ │ │ │ │ │ ├── ContestsExportController.cs │ │ │ │ │ │ ├── FeedbackController.cs │ │ │ │ │ │ ├── NavigationController.cs │ │ │ │ │ │ ├── NewsController.cs │ │ │ │ │ │ ├── ParticipantsController.cs │ │ │ │ │ │ ├── ProblemsController.cs │ │ │ │ │ │ ├── ResourcesController.cs │ │ │ │ │ │ ├── RolesController.cs │ │ │ │ │ │ ├── SettingsController.cs │ │ │ │ │ │ ├── SubmissionTypesController.cs │ │ │ │ │ │ ├── SubmissionsController.cs │ │ │ │ │ │ ├── TestsController.cs │ │ │ │ │ │ └── UsersController.cs │ │ │ │ │ ├── Providers/ │ │ │ │ │ │ ├── Common/ │ │ │ │ │ │ │ └── BaseNewsProvider.cs │ │ │ │ │ │ ├── Contracts/ │ │ │ │ │ │ │ └── INewsProvider.cs │ │ │ │ │ │ ├── InfoManNewsProvider.cs │ │ │ │ │ │ └── InfosNewsProvider.cs │ │ │ │ │ ├── ViewModels/ │ │ │ │ │ │ ├── AccessLogs/ │ │ │ │ │ │ │ └── AccessLogGridViewModel.cs │ │ │ │ │ │ ├── AntiCheat/ │ │ │ │ │ │ │ ├── AntiCheatByIpAdministrationViewModel.cs │ │ │ │ │ │ │ ├── IpSubmissionsAdministrationViewModel.cs │ │ │ │ │ │ │ ├── SubmissionSimilarityFiltersInputModel.cs │ │ │ │ │ │ │ └── SubmissionSimilarityViewModel.cs │ │ │ │ │ │ ├── Checker/ │ │ │ │ │ │ │ └── CheckerAdministrationViewModel.cs │ │ │ │ │ │ ├── Common/ │ │ │ │ │ │ │ └── AdministrationViewModel.cs │ │ │ │ │ │ ├── Contest/ │ │ │ │ │ │ │ ├── ContestAdministrationViewModel.cs │ │ │ │ │ │ │ └── ShortContestAdministrationViewModel.cs │ │ │ │ │ │ ├── ContestCategory/ │ │ │ │ │ │ │ └── ContestCategoryAdministrationViewModel.cs │ │ │ │ │ │ ├── ContestQuestion/ │ │ │ │ │ │ │ └── ContestQuestionViewModel.cs │ │ │ │ │ │ ├── ContestQuestionAnswer/ │ │ │ │ │ │ │ └── ContestQuestionAnswerViewModel.cs │ │ │ │ │ │ ├── FeedbackReport/ │ │ │ │ │ │ │ └── FeedbackReportViewModel.cs │ │ │ │ │ │ ├── News/ │ │ │ │ │ │ │ └── NewsAdministrationViewModel.cs │ │ │ │ │ │ ├── Participant/ │ │ │ │ │ │ │ ├── ContestViewModel.cs │ │ │ │ │ │ │ ├── ParticipantAdministrationViewModel.cs │ │ │ │ │ │ │ ├── ParticipantAnswerViewModel.cs │ │ │ │ │ │ │ └── UserViewModel.cs │ │ │ │ │ │ ├── Problem/ │ │ │ │ │ │ │ ├── DetailedProblemViewModel.cs │ │ │ │ │ │ │ └── ProblemViewModel.cs │ │ │ │ │ │ ├── ProblemResource/ │ │ │ │ │ │ │ ├── ProblemResourceGridViewModel.cs │ │ │ │ │ │ │ └── ProblemResourceViewModel.cs │ │ │ │ │ │ ├── Roles/ │ │ │ │ │ │ │ ├── RoleAdministrationViewModel.cs │ │ │ │ │ │ │ └── UserInRoleAdministrationViewModel.cs │ │ │ │ │ │ ├── Setting/ │ │ │ │ │ │ │ └── SettingAdministrationViewModel.cs │ │ │ │ │ │ ├── Submission/ │ │ │ │ │ │ │ ├── SubmissionAdministrationGridViewModel.cs │ │ │ │ │ │ │ └── SubmissionAdministrationViewModel.cs │ │ │ │ │ │ ├── SubmissionType/ │ │ │ │ │ │ │ ├── SubmissionTypeAdministrationViewModel.cs │ │ │ │ │ │ │ └── SubmissionTypeViewModel.cs │ │ │ │ │ │ ├── Test/ │ │ │ │ │ │ │ └── TestViewModel.cs │ │ │ │ │ │ ├── TestRun/ │ │ │ │ │ │ │ └── TestRunViewModel.cs │ │ │ │ │ │ └── User/ │ │ │ │ │ │ └── UserProfileAdministrationViewModel.cs │ │ │ │ │ └── Views/ │ │ │ │ │ ├── AccessLogs/ │ │ │ │ │ │ └── Index.cshtml │ │ │ │ │ ├── AntiCheat/ │ │ │ │ │ │ ├── ByIP.cshtml │ │ │ │ │ │ ├── BySubmissionSimilarity.cshtml │ │ │ │ │ │ ├── _ContestsComboBox.cshtml │ │ │ │ │ │ ├── _IPGrid.cshtml │ │ │ │ │ │ └── _SubmissionsGrid.cshtml │ │ │ │ │ ├── Checkers/ │ │ │ │ │ │ └── Index.cshtml │ │ │ │ │ ├── ContestCategories/ │ │ │ │ │ │ ├── Hierarchy.cshtml │ │ │ │ │ │ └── Index.cshtml │ │ │ │ │ ├── Contests/ │ │ │ │ │ │ ├── Create.cshtml │ │ │ │ │ │ ├── Edit.cshtml │ │ │ │ │ │ ├── EditorTemplates/ │ │ │ │ │ │ │ ├── CategoryDropDown.cshtml │ │ │ │ │ │ │ ├── ContestQuestionType.cshtml │ │ │ │ │ │ │ └── SubmissionTypeCheckBoxes.cshtml │ │ │ │ │ │ ├── Index.cshtml │ │ │ │ │ │ └── _ContestEditor.cshtml │ │ │ │ │ ├── Feedback/ │ │ │ │ │ │ └── Index.cshtml │ │ │ │ │ ├── Navigation/ │ │ │ │ │ │ └── Index.cshtml │ │ │ │ │ ├── News/ │ │ │ │ │ │ └── Index.cshtml │ │ │ │ │ ├── Participants/ │ │ │ │ │ │ ├── Contest.cshtml │ │ │ │ │ │ ├── EditorTemplates/ │ │ │ │ │ │ │ ├── ContestsComboBox.cshtml │ │ │ │ │ │ │ └── UsersComboBox.cshtml │ │ │ │ │ │ ├── Index.cshtml │ │ │ │ │ │ └── _Participants.cshtml │ │ │ │ │ ├── Problems/ │ │ │ │ │ │ ├── Create.cshtml │ │ │ │ │ │ ├── Delete.cshtml │ │ │ │ │ │ ├── DeleteAll.cshtml │ │ │ │ │ │ ├── Details.cshtml │ │ │ │ │ │ ├── Edit.cshtml │ │ │ │ │ │ ├── Index.cshtml │ │ │ │ │ │ ├── _ResourcesGrid.cshtml │ │ │ │ │ │ └── _SubmissionsGrid.cshtml │ │ │ │ │ ├── Resources/ │ │ │ │ │ │ ├── Create.cshtml │ │ │ │ │ │ └── Edit.cshtml │ │ │ │ │ ├── Roles/ │ │ │ │ │ │ ├── EditorTemplates/ │ │ │ │ │ │ │ └── AddUserToRole.cshtml │ │ │ │ │ │ └── Index.cshtml │ │ │ │ │ ├── Settings/ │ │ │ │ │ │ └── Index.cshtml │ │ │ │ │ ├── Shared/ │ │ │ │ │ │ ├── EditorTemplates/ │ │ │ │ │ │ │ ├── Date.cshtml │ │ │ │ │ │ │ ├── DateAndTime.cshtml │ │ │ │ │ │ │ ├── DisabledCheckbox.cshtml │ │ │ │ │ │ │ ├── DropDownList.cshtml │ │ │ │ │ │ │ ├── Enum.cshtml │ │ │ │ │ │ │ ├── HtmlContent.cshtml │ │ │ │ │ │ │ ├── Integer.cshtml │ │ │ │ │ │ │ ├── MultiLineText.cshtml │ │ │ │ │ │ │ ├── NonEditable.cshtml │ │ │ │ │ │ │ ├── PositiveInteger.cshtml │ │ │ │ │ │ │ └── SingleLineText.cshtml │ │ │ │ │ │ ├── _AdministrationLayout.cshtml │ │ │ │ │ │ ├── _CopyQuestionsFromContest.cshtml │ │ │ │ │ │ ├── _ProblemResourceForm.cshtml │ │ │ │ │ │ └── _QuickContestsGrid.cshtml │ │ │ │ │ ├── SubmissionTypes/ │ │ │ │ │ │ └── Index.cshtml │ │ │ │ │ ├── Submissions/ │ │ │ │ │ │ ├── Create.cshtml │ │ │ │ │ │ ├── Delete.cshtml │ │ │ │ │ │ ├── EditorTemplates/ │ │ │ │ │ │ │ ├── ParticipantDropDownList.cshtml │ │ │ │ │ │ │ ├── ProblemComboBox.cshtml │ │ │ │ │ │ │ ├── SubmissionAdministrationViewModel.cshtml │ │ │ │ │ │ │ └── SubmissionTypesDropDownList.cshtml │ │ │ │ │ │ ├── Index.cshtml │ │ │ │ │ │ ├── Update.cshtml │ │ │ │ │ │ ├── _SubmissionForm.cshtml │ │ │ │ │ │ └── _SubmissionsGrid.cshtml │ │ │ │ │ ├── Tests/ │ │ │ │ │ │ ├── Create.cshtml │ │ │ │ │ │ ├── Delete.cshtml │ │ │ │ │ │ ├── DeleteAll.cshtml │ │ │ │ │ │ ├── Details.cshtml │ │ │ │ │ │ ├── Edit.cshtml │ │ │ │ │ │ └── Index.cshtml │ │ │ │ │ ├── Users/ │ │ │ │ │ │ └── Index.cshtml │ │ │ │ │ ├── Web.config │ │ │ │ │ └── _ViewStart.cshtml │ │ │ │ ├── Api/ │ │ │ │ │ ├── ApiAreaRegistration.cs │ │ │ │ │ ├── Controllers/ │ │ │ │ │ │ ├── ApiController.cs │ │ │ │ │ │ └── ResultsController.cs │ │ │ │ │ └── Models/ │ │ │ │ │ └── ErrorMessageViewModel.cs │ │ │ │ ├── Contests/ │ │ │ │ │ ├── ContestsAreaRegistration.cs │ │ │ │ │ ├── Controllers/ │ │ │ │ │ │ ├── CompeteController.cs │ │ │ │ │ │ ├── ContestsController.cs │ │ │ │ │ │ ├── ListController.cs │ │ │ │ │ │ ├── ParticipantsAnswersController.cs │ │ │ │ │ │ ├── ResultsController.cs │ │ │ │ │ │ └── SubmissionsController.cs │ │ │ │ │ ├── Helpers/ │ │ │ │ │ │ └── ContestExtensions.cs │ │ │ │ │ ├── Models/ │ │ │ │ │ │ ├── BinarySubmissionModel.cs │ │ │ │ │ │ ├── ContestQuestionAnswerModel.cs │ │ │ │ │ │ ├── ContestRegistrationModel.cs │ │ │ │ │ │ └── SubmissionModel.cs │ │ │ │ │ ├── ViewModels/ │ │ │ │ │ │ ├── Contests/ │ │ │ │ │ │ │ ├── ContestCategoryListViewModel.cs │ │ │ │ │ │ │ ├── ContestCategoryViewModel.cs │ │ │ │ │ │ │ ├── ContestPointsRangeViewModel.cs │ │ │ │ │ │ │ ├── ContestProblemResourceViewModel.cs │ │ │ │ │ │ │ ├── ContestProblemStatsViewModel.cs │ │ │ │ │ │ │ ├── ContestProblemViewModel.cs │ │ │ │ │ │ │ ├── ContestRegistrationViewModel.cs │ │ │ │ │ │ │ ├── ContestStatsChartViewModel.cs │ │ │ │ │ │ │ ├── ContestStatsViewModel.cs │ │ │ │ │ │ │ ├── ContestViewModel.cs │ │ │ │ │ │ │ ├── DropDownAnswerViewModel.cs │ │ │ │ │ │ │ └── QuestionViewModel.cs │ │ │ │ │ │ ├── Participants/ │ │ │ │ │ │ │ └── ParticipantViewModel.cs │ │ │ │ │ │ ├── ParticipantsAnswers/ │ │ │ │ │ │ │ └── ParticipantsAnswersViewModel.cs │ │ │ │ │ │ ├── Problems/ │ │ │ │ │ │ │ └── ProblemListItemViewModel.cs │ │ │ │ │ │ ├── Results/ │ │ │ │ │ │ │ ├── BestSubmissionViewModel.cs │ │ │ │ │ │ │ ├── ContestFullResultsViewModel.cs │ │ │ │ │ │ │ ├── ContestResultsViewModel.cs │ │ │ │ │ │ │ ├── ParticipantFullResultViewModel.cs │ │ │ │ │ │ │ ├── ParticipantResultViewModel.cs │ │ │ │ │ │ │ ├── ProblemFullResultViewModel.cs │ │ │ │ │ │ │ ├── ProblemResultPairViewModel.cs │ │ │ │ │ │ │ ├── ProblemResultViewModel.cs │ │ │ │ │ │ │ ├── SubmissionFullResultsViewModel.cs │ │ │ │ │ │ │ ├── SubmissionResultIsCompiledViewModel.cs │ │ │ │ │ │ │ └── TestRunFullResultsViewModel.cs │ │ │ │ │ │ └── Submissions/ │ │ │ │ │ │ ├── SubmissionDetailsViewModel.cs │ │ │ │ │ │ ├── SubmissionResultViewModel.cs │ │ │ │ │ │ ├── SubmissionTypeViewModel.cs │ │ │ │ │ │ └── TestRunDetailsViewModel.cs │ │ │ │ │ └── Views/ │ │ │ │ │ ├── Compete/ │ │ │ │ │ │ ├── Index.cshtml │ │ │ │ │ │ └── Register.cshtml │ │ │ │ │ ├── Contests/ │ │ │ │ │ │ └── Details.cshtml │ │ │ │ │ ├── List/ │ │ │ │ │ │ ├── ByCategory.cshtml │ │ │ │ │ │ ├── BySubmissionType.cshtml │ │ │ │ │ │ └── Index.cshtml │ │ │ │ │ ├── ParticipantsAnswers/ │ │ │ │ │ │ └── Details.cshtml │ │ │ │ │ ├── Results/ │ │ │ │ │ │ ├── Full.cshtml │ │ │ │ │ │ ├── Simple.cshtml │ │ │ │ │ │ ├── _StatsChartPartial.cshtml │ │ │ │ │ │ └── _StatsPartial.cshtml │ │ │ │ │ ├── Shared/ │ │ │ │ │ │ ├── _AllContestSubmissionsByUser.cshtml │ │ │ │ │ │ └── _ProblemPartial.cshtml │ │ │ │ │ ├── Submissions/ │ │ │ │ │ │ └── View.cshtml │ │ │ │ │ └── Web.Config │ │ │ │ └── Users/ │ │ │ │ ├── Controllers/ │ │ │ │ │ ├── ProfileController.cs │ │ │ │ │ └── SettingsController.cs │ │ │ │ ├── Helpers/ │ │ │ │ │ └── NullDisplayFormatAttribute.cs │ │ │ │ ├── UsersAreaRegistration.cs │ │ │ │ ├── ViewModels/ │ │ │ │ │ ├── UserParticipationViewModel.cs │ │ │ │ │ ├── UserProfileViewModel.cs │ │ │ │ │ └── UserSettingsViewModel.cs │ │ │ │ └── Views/ │ │ │ │ ├── Profile/ │ │ │ │ │ └── Index.cshtml │ │ │ │ ├── Settings/ │ │ │ │ │ └── Index.cshtml │ │ │ │ ├── Shared/ │ │ │ │ │ └── _ProfileInfo.cshtml │ │ │ │ └── Web.Config │ │ │ ├── Content/ │ │ │ │ ├── CodeMirror/ │ │ │ │ │ ├── addon/ │ │ │ │ │ │ └── merge.css │ │ │ │ │ ├── codemirror.css │ │ │ │ │ └── theme/ │ │ │ │ │ ├── 3024-day.css │ │ │ │ │ ├── 3024-night.css │ │ │ │ │ ├── ambiance-mobile.css │ │ │ │ │ ├── ambiance.css │ │ │ │ │ ├── base16-dark.css │ │ │ │ │ ├── base16-light.css │ │ │ │ │ ├── blackboard.css │ │ │ │ │ ├── cobalt.css │ │ │ │ │ ├── eclipse.css │ │ │ │ │ ├── elegant.css │ │ │ │ │ ├── erlang-dark.css │ │ │ │ │ ├── lesser-dark.css │ │ │ │ │ ├── mbo.css │ │ │ │ │ ├── mdn-like.css │ │ │ │ │ ├── midnight.css │ │ │ │ │ ├── monokai.css │ │ │ │ │ ├── neat.css │ │ │ │ │ ├── night.css │ │ │ │ │ ├── paraiso-dark.css │ │ │ │ │ ├── paraiso-light.css │ │ │ │ │ ├── pastel-on-dark.css │ │ │ │ │ ├── rubyblue.css │ │ │ │ │ ├── solarized.css │ │ │ │ │ ├── the-matrix.css │ │ │ │ │ ├── tomorrow-night-eighties.css │ │ │ │ │ ├── twilight.css │ │ │ │ │ ├── vibrant-ink.css │ │ │ │ │ ├── xq-dark.css │ │ │ │ │ └── xq-light.css │ │ │ │ ├── Contests/ │ │ │ │ │ ├── results-page.css │ │ │ │ │ ├── submission-page.css │ │ │ │ │ └── submission-view-page.css │ │ │ │ ├── KendoUI/ │ │ │ │ │ ├── kendo.black.css │ │ │ │ │ └── kendo.common.css │ │ │ │ ├── Site.css │ │ │ │ ├── bootstrap/ │ │ │ │ │ ├── bootstrap-theme-cyborg.css │ │ │ │ │ ├── bootstrap-theme.css │ │ │ │ │ ├── bootstrap.css │ │ │ │ │ └── themes/ │ │ │ │ │ ├── bootstrap-theme-cosmo.css │ │ │ │ │ ├── bootstrap-theme-cyborg.css │ │ │ │ │ ├── bootstrap-theme-flatly.css │ │ │ │ │ └── bootstrap-theme.css │ │ │ │ └── docs.css │ │ │ ├── Controllers/ │ │ │ │ ├── AccountController.cs │ │ │ │ ├── AdministrationController.cs │ │ │ │ ├── BaseController.cs │ │ │ │ ├── FeedbackController.cs │ │ │ │ ├── HomeController.cs │ │ │ │ ├── KendoGridAdministrationController.cs │ │ │ │ ├── NewsController.cs │ │ │ │ ├── RedirectsController.cs │ │ │ │ ├── SearchController.cs │ │ │ │ └── SubmissionsController.cs │ │ │ ├── Global.asax │ │ │ ├── Global.asax.cs │ │ │ ├── JSLintNet.json │ │ │ ├── OJS.Web.csproj │ │ │ ├── Properties/ │ │ │ │ ├── AssemblyInfo.cs │ │ │ │ └── PublishProfiles/ │ │ │ │ ├── File System.pubxml │ │ │ │ └── bgcoder.com.pubxml │ │ │ ├── Scripts/ │ │ │ │ ├── Administration/ │ │ │ │ │ ├── Contests/ │ │ │ │ │ │ └── contests-index.js │ │ │ │ │ ├── Problems/ │ │ │ │ │ │ ├── problems-create.js │ │ │ │ │ │ ├── problems-edit.js │ │ │ │ │ │ └── problems-index.js │ │ │ │ │ ├── Resources/ │ │ │ │ │ │ ├── resources-create.js │ │ │ │ │ │ └── resources-edit.js │ │ │ │ │ ├── Tests/ │ │ │ │ │ │ ├── tests-details.js │ │ │ │ │ │ └── tests-index.js │ │ │ │ │ └── administration-global.js │ │ │ │ ├── CodeMirror/ │ │ │ │ │ ├── addon/ │ │ │ │ │ │ ├── diff_match_patch.js │ │ │ │ │ │ └── merge.js │ │ │ │ │ ├── codemirror.js │ │ │ │ │ └── mode/ │ │ │ │ │ ├── clike.js │ │ │ │ │ └── javascript.js │ │ │ │ ├── Contests/ │ │ │ │ │ ├── list-categories-page.js │ │ │ │ │ └── submission-page.js │ │ │ │ ├── Helpers/ │ │ │ │ │ └── test-results.js │ │ │ │ ├── KendoUI/ │ │ │ │ │ └── 2014.3.1411/ │ │ │ │ │ ├── cultures/ │ │ │ │ │ │ ├── kendo.culture.bg.js │ │ │ │ │ │ └── kendo.culture.en-GB.js │ │ │ │ │ ├── kendo.all.js │ │ │ │ │ └── kendo.aspnetmvc.js │ │ │ │ ├── _references.js │ │ │ │ ├── bootstrap.js │ │ │ │ ├── global.js │ │ │ │ ├── jquery-2.1.4.intellisense.js │ │ │ │ ├── jquery-2.1.4.js │ │ │ │ ├── jquery.unobtrusive-ajax.js │ │ │ │ ├── jquery.validate-vsdoc.js │ │ │ │ ├── jquery.validate.js │ │ │ │ └── jquery.validate.unobtrusive.js │ │ │ ├── Startup.cs │ │ │ ├── ViewModels/ │ │ │ │ ├── Account/ │ │ │ │ │ ├── ChangeEmailViewModel.cs │ │ │ │ │ ├── ChangeUsernameViewModel.cs │ │ │ │ │ ├── ExternalLoginConfirmationViewModel.cs │ │ │ │ │ ├── ForgottenPasswordViewModel.cs │ │ │ │ │ ├── LoginViewModel.cs │ │ │ │ │ ├── ManageUserViewModel.cs │ │ │ │ │ └── RegisterViewModel.cs │ │ │ │ ├── CategoryMenuItemViewModel.cs │ │ │ │ ├── Feedback/ │ │ │ │ │ └── FeedbackViewModel.cs │ │ │ │ ├── Home/ │ │ │ │ │ └── Index/ │ │ │ │ │ ├── HomeContestViewModel.cs │ │ │ │ │ └── IndexViewModel.cs │ │ │ │ ├── News/ │ │ │ │ │ ├── AllNewsViewModel.cs │ │ │ │ │ ├── NewsViewModel.cs │ │ │ │ │ └── SelectedNewsViewModel.cs │ │ │ │ ├── Search/ │ │ │ │ │ ├── SearchResultGroupViewModel.cs │ │ │ │ │ └── SearchResultViewModel.cs │ │ │ │ ├── Shared/ │ │ │ │ │ └── PaginationViewModel.cs │ │ │ │ ├── Submission/ │ │ │ │ │ └── SubmissionViewModel.cs │ │ │ │ └── TestRun/ │ │ │ │ └── TestRunViewModel.cs │ │ │ ├── Views/ │ │ │ │ ├── Account/ │ │ │ │ │ ├── ChangeEmail.cshtml │ │ │ │ │ ├── ChangePassword.cshtml │ │ │ │ │ ├── ChangeUsername.cshtml │ │ │ │ │ ├── ExternalLoginConfirmation.cshtml │ │ │ │ │ ├── ExternalLoginFailure.cshtml │ │ │ │ │ ├── ForgottenPassword.cshtml │ │ │ │ │ ├── Login.cshtml │ │ │ │ │ ├── Manage.cshtml │ │ │ │ │ ├── Register.cshtml │ │ │ │ │ ├── _ChangePasswordPartial.cshtml │ │ │ │ │ ├── _ExternalLoginsListPartial.cshtml │ │ │ │ │ ├── _RemoveAccountPartial.cshtml │ │ │ │ │ └── _SetPasswordPartial.cshtml │ │ │ │ ├── Feedback/ │ │ │ │ │ ├── Index.cshtml │ │ │ │ │ └── Submitted.cshtml │ │ │ │ ├── Home/ │ │ │ │ │ └── Index.cshtml │ │ │ │ ├── News/ │ │ │ │ │ ├── All.cshtml │ │ │ │ │ └── Selected.cshtml │ │ │ │ ├── Search/ │ │ │ │ │ ├── Index.cshtml │ │ │ │ │ └── Results.cshtml │ │ │ │ ├── Shared/ │ │ │ │ │ ├── EditorTemplates/ │ │ │ │ │ │ ├── Currency.cshtml │ │ │ │ │ │ ├── Date.cshtml │ │ │ │ │ │ ├── DateTime.cshtml │ │ │ │ │ │ ├── EmailAddress.cshtml │ │ │ │ │ │ ├── GridForeignKey.cshtml │ │ │ │ │ │ ├── Integer.cshtml │ │ │ │ │ │ ├── MultilineText.cshtml │ │ │ │ │ │ ├── Number.cshtml │ │ │ │ │ │ ├── Password.cshtml │ │ │ │ │ │ ├── QuestionViewModel.cshtml │ │ │ │ │ │ ├── String.cshtml │ │ │ │ │ │ └── Time.cshtml │ │ │ │ │ ├── Error.cshtml │ │ │ │ │ ├── _AdvancedSubmissionsGridPartial.cshtml │ │ │ │ │ ├── _LatestNews.cshtml │ │ │ │ │ ├── _Layout.cshtml │ │ │ │ │ ├── _LoginPartial.cshtml │ │ │ │ │ └── _Pagination.cshtml │ │ │ │ ├── Submissions/ │ │ │ │ │ ├── AdvancedSubmissions.cshtml │ │ │ │ │ └── BasicSubmissions.cshtml │ │ │ │ ├── Web.config │ │ │ │ └── _ViewStart.cshtml │ │ │ ├── Web.Debug.config │ │ │ ├── Web.Release.config │ │ │ ├── Web.config │ │ │ ├── _ViewStart.cshtml │ │ │ ├── google95e631afa25e7960.html │ │ │ ├── packages.config │ │ │ └── robots.txt │ │ └── OJS.Web.Common/ │ │ ├── Attributes/ │ │ │ ├── LogAccessAttribute.cs │ │ │ ├── LoggerFilterAttribute.cs │ │ │ └── OverrideAuthorizeAttribute.cs │ │ ├── EnumConverter.cs │ │ ├── Extensions/ │ │ │ ├── PrincipalExtensions.cs │ │ │ └── TempDataExtentions.cs │ │ ├── Interfaces/ │ │ │ ├── IAdministrationViewModel.cs │ │ │ └── IKendoGridAdministrationController.cs │ │ ├── OJS.Web.Common.csproj │ │ ├── OjsUserManager.cs │ │ ├── Properties/ │ │ │ └── AssemblyInfo.cs │ │ ├── SearchResultType.cs │ │ ├── SystemMessage.cs │ │ ├── SystemMessageCollection.cs │ │ ├── SystemMessageType.cs │ │ ├── ZipFileResult.cs │ │ ├── ZippedTestManipulator/ │ │ │ ├── TestsParseResult.cs │ │ │ └── ZippedTestsManipulator.cs │ │ ├── app.config │ │ └── packages.config │ └── Workers/ │ ├── OJS.Workers.Agent/ │ │ ├── AgentClient.cs │ │ ├── AgentCommunicator.cs │ │ ├── AgentService.cs │ │ ├── AgentServiceInstaller.cs │ │ ├── App.config │ │ ├── Batch Files/ │ │ │ ├── InstallService.bat │ │ │ └── StopService.bat │ │ ├── CodeJobWorker.cs │ │ ├── FileCache.cs │ │ ├── IFileCache.cs │ │ ├── IJobWorker.cs │ │ ├── OJS.Workers.Agent.csproj │ │ ├── OJS.Workers.Agent_TemporaryKey.pfx │ │ ├── Program.cs │ │ ├── Properties/ │ │ │ ├── AssemblyInfo.cs │ │ │ └── app.manifest │ │ └── packages.config │ ├── OJS.Workers.Checkers/ │ │ ├── CPlusPlusCodeChecker.cs │ │ ├── CSharpCodeChecker.cs │ │ ├── CaseInsensitiveChecker.cs │ │ ├── Checker.cs │ │ ├── ExactChecker.cs │ │ ├── OJS.Workers.Checkers.csproj │ │ ├── PrecisionChecker.cs │ │ ├── Properties/ │ │ │ └── AssemblyInfo.cs │ │ ├── SortChecker.cs │ │ ├── TrimChecker.cs │ │ └── packages.config │ ├── OJS.Workers.Common/ │ │ ├── Agents/ │ │ │ ├── AgentResponseData.cs │ │ │ ├── AgentTaskData.cs │ │ │ ├── SourceFile.cs │ │ │ ├── TaskInformation.cs │ │ │ ├── Test.cs │ │ │ └── TestResult.cs │ │ ├── CheckerDetails.cs │ │ ├── CheckerResult.cs │ │ ├── CheckerResultType.cs │ │ ├── Communication/ │ │ │ ├── Job.cs │ │ │ ├── JobResult.cs │ │ │ ├── NetworkCommunicationException.cs │ │ │ ├── NetworkDataObject.cs │ │ │ ├── NetworkDataObjectType.cs │ │ │ └── SystemInformation.cs │ │ ├── CompileResult.cs │ │ ├── Helpers/ │ │ │ └── JavaCodePreprocessorHelper.cs │ │ ├── IChecker.cs │ │ ├── ICompiler.cs │ │ ├── IExecutor.cs │ │ ├── OJS.Workers.Common.csproj │ │ ├── ProcessExecutionResult.cs │ │ ├── ProcessExecutionResultType.cs │ │ ├── Properties/ │ │ │ └── AssemblyInfo.cs │ │ └── packages.config │ ├── OJS.Workers.Compilers/ │ │ ├── CPlusPlusCompiler.cs │ │ ├── CSharpCompiler.cs │ │ ├── Compiler.cs │ │ ├── CompilerOutput.cs │ │ ├── JavaCompiler.cs │ │ ├── JavaZipCompiler.cs │ │ ├── MsBuildCompiler.cs │ │ ├── OJS.Workers.Compilers.csproj │ │ ├── Properties/ │ │ │ └── AssemblyInfo.cs │ │ └── packages.config │ ├── OJS.Workers.Controller/ │ │ ├── App.config │ │ ├── Batch Files/ │ │ │ ├── InstallService.bat │ │ │ └── StopService.bat │ │ ├── ClientConnectedEventArgs.cs │ │ ├── ControllerCommunicator.cs │ │ ├── ControllerServer.cs │ │ ├── ControllerService.cs │ │ ├── ControllerServiceInstaller.cs │ │ ├── OJS.Workers.Controller.csproj │ │ ├── Program.cs │ │ ├── Properties/ │ │ │ └── AssemblyInfo.cs │ │ └── packages.config │ ├── OJS.Workers.ExecutionStrategies/ │ │ ├── CSharpTestRunnerExecutionStrategy.cs │ │ ├── CompileExecuteAndCheckExecutionStrategy.cs │ │ ├── DoNothingExecutionStrategy.cs │ │ ├── ExecutionContext.cs │ │ ├── ExecutionResult.cs │ │ ├── ExecutionStrategy.cs │ │ ├── IExecutionStrategy.cs │ │ ├── IoJsPreprocessExecuteAndRunJsDomUnitTestsExecutionStrategy.cs │ │ ├── JavaPreprocessCompileExecuteAndCheckExecutionStrategy.cs │ │ ├── JavaZipFileCompileExecuteAndCheckExecutionStrategy.cs │ │ ├── JsonExecutionResult.cs │ │ ├── NodeJsPreprocessExecuteAndCheckExecutionStrategy.cs │ │ ├── NodeJsPreprocessExecuteAndRunUnitTestsWithMochaExecutionStrategy.cs │ │ ├── OJS.Workers.ExecutionStrategies.csproj │ │ ├── PhpCgiExecuteAndCheckExecutionStrategy.cs │ │ ├── PhpCliExecuteAndCheckExecutionStrategy.cs │ │ ├── Properties/ │ │ │ └── AssemblyInfo.cs │ │ ├── PythonExecuteAndCheckExecutionStrategy.cs │ │ ├── RemoteExecutionStrategy.cs │ │ ├── TestContext.cs │ │ ├── TestResult.cs │ │ └── packages.config │ ├── OJS.Workers.Executors/ │ │ ├── JobObjects/ │ │ │ ├── BasicLimitInformation.cs │ │ │ ├── BasicUiRestrictions.cs │ │ │ ├── ExtendedLimitInformation.cs │ │ │ ├── InfoClass.cs │ │ │ ├── IoCounters.cs │ │ │ ├── JobObject.cs │ │ │ ├── LimitFlags.cs │ │ │ ├── NativeMethods.cs │ │ │ ├── PrepareJobObject.cs │ │ │ ├── SecurityAttributes.cs │ │ │ ├── SecurityLimitFlags.cs │ │ │ ├── SecurityLimitInformation.cs │ │ │ └── UiRestrictionFlags.cs │ │ ├── OJS.Workers.Executors.csproj │ │ ├── Process/ │ │ │ ├── CreateProcessFlags.cs │ │ │ ├── CreateRestrictedTokenFlags.cs │ │ │ ├── DuplicateOptions.cs │ │ │ ├── LogonProvider.cs │ │ │ ├── LogonType.cs │ │ │ ├── Luid.cs │ │ │ ├── LuidAndAttributes.cs │ │ │ ├── NativeMethods.cs │ │ │ ├── PriorityClass.cs │ │ │ ├── ProcessInformation.cs │ │ │ ├── ProcessMemoryCounters.cs │ │ │ ├── ProcessThreadTimes.cs │ │ │ ├── ProcessWaitHandle.cs │ │ │ ├── RestrictedProcess.cs │ │ │ ├── SafeLocalMemHandle.cs │ │ │ ├── SafeProcessHandle.cs │ │ │ ├── SecurityAttributes.cs │ │ │ ├── SecurityMandatoryLabel.cs │ │ │ ├── SidAndAttributes.cs │ │ │ ├── SidIdentifierAuthority.cs │ │ │ ├── StartupInfo.cs │ │ │ ├── StartupInfoFlags.cs │ │ │ ├── TokenInformationClass.cs │ │ │ └── TokenMandatoryLabel.cs │ │ ├── Properties/ │ │ │ └── AssemblyInfo.cs │ │ ├── RestrictedProcessExecutor.cs │ │ ├── StandardProcessExecutor.cs │ │ └── packages.config │ ├── OJS.Workers.LocalWorker/ │ │ ├── App.config │ │ ├── Batch Files/ │ │ │ ├── InstallService.bat │ │ │ └── StopService.bat │ │ ├── IJob.cs │ │ ├── LocalWorkerService.cs │ │ ├── LocalWorkerServiceInstaller.cs │ │ ├── OJS.Workers.LocalWorker.csproj │ │ ├── Program.cs │ │ ├── Properties/ │ │ │ └── AssemblyInfo.cs │ │ ├── Settings.cs │ │ ├── SubmissionJob.cs │ │ └── packages.config │ └── OJS.Workers.Tools/ │ ├── AntiCheat/ │ │ ├── CSharpCompileDisassemblePlagiarismDetector.cs │ │ ├── CompileDisassemblePlagiarismDetector.cs │ │ ├── Contracts/ │ │ │ ├── IDetectPlagiarismVisitor.cs │ │ │ ├── IPlagiarismDetector.cs │ │ │ └── IPlagiarismDetectorFactory.cs │ │ ├── JavaCompileDisassemblePlagiarismDetector.cs │ │ ├── PlagiarismDetectorCreationContext.cs │ │ ├── PlagiarismDetectorFactory.cs │ │ ├── PlagiarismResult.cs │ │ ├── PlainTextPlagiarismDetector.cs │ │ ├── SortAndTrimLinesVisitor.cs │ │ └── SortTrimLinesAndRemoveBlankLinesVisitor.cs │ ├── Disassemblers/ │ │ ├── Contracts/ │ │ │ └── IDisassembler.cs │ │ ├── DisassembleResult.cs │ │ ├── Disassembler.cs │ │ ├── DotNetDisassembler.cs │ │ └── JavaDisassembler.cs │ ├── OJS.Workers.Tools.csproj │ ├── Properties/ │ │ └── AssemblyInfo.cs │ ├── Similarity/ │ │ ├── Contracts/ │ │ │ └── ISimilarityFinder.cs │ │ ├── DiffData.cs │ │ ├── Difference.cs │ │ ├── ShortestMiddleSnakeReturnData.cs │ │ └── SimilarityFinder.cs │ └── packages.config ├── README.md └── Research/ ├── Other Judge Systems/ │ ├── PC2/ │ │ └── Web page.url │ └── README.md ├── Sandbox/ │ ├── ChromiumSandbox.docx │ ├── Executor.Security.Tests/ │ │ └── CSharp/ │ │ ├── 01. Shut Down With Diagnostics.txt │ │ ├── 02. Shut Down With Win32 Method.txt │ │ ├── 03. Shut Down With System.Management.txt │ │ ├── 04. Reboot.txt │ │ ├── 05. Kill Network.txt │ │ ├── 06. Registry Edit.txt │ │ ├── 07. Kill Process - WORKS ON CURRENT VERSION!.txt │ │ ├── 08. Execute Bat File - WORKS ON CURRENT VERSION.txt │ │ ├── 09. Create Folder Somewhere.txt │ │ ├── 10. Try To Save Input In File.txt │ │ ├── 11. Using Windows Fork Bomb - WORKS ON CURRENT VERSION.txt │ │ └── ToDo.txt │ ├── Java sandbox/ │ │ ├── SandboxTests/ │ │ │ ├── build/ │ │ │ │ └── classes/ │ │ │ │ ├── .netbeans_automatic_build │ │ │ │ └── .netbeans_update_resources │ │ │ ├── build.xml │ │ │ ├── manifest.mf │ │ │ ├── nbproject/ │ │ │ │ ├── build-impl.xml │ │ │ │ ├── genfiles.properties │ │ │ │ ├── private/ │ │ │ │ │ ├── private.properties │ │ │ │ │ └── private.xml │ │ │ │ ├── project.properties │ │ │ │ └── project.xml │ │ │ └── src/ │ │ │ └── sandboxtests/ │ │ │ ├── SandboxSecurityManager.java │ │ │ ├── SandboxTests.java │ │ │ └── UserClass.java │ │ └── TestApplication/ │ │ ├── build/ │ │ │ └── built-jar.properties │ │ ├── build.xml │ │ ├── dist/ │ │ │ ├── README.TXT │ │ │ └── TestApplication.jar │ │ ├── manifest.mf │ │ ├── nbproject/ │ │ │ ├── build-impl.xml │ │ │ ├── genfiles.properties │ │ │ ├── private/ │ │ │ │ ├── private.properties │ │ │ │ └── private.xml │ │ │ ├── project.properties │ │ │ └── project.xml │ │ └── src/ │ │ └── testapplication/ │ │ └── TestApplication.java │ ├── README.md │ └── Software/ │ └── AsproLock.v0504.src/ │ ├── AsproLock/ │ │ ├── AccessControl/ │ │ │ ├── BaseSecurity.cs │ │ │ ├── DesktopAccessRule.cs │ │ │ ├── DesktopAuditRule.cs │ │ │ ├── DesktopRights.cs │ │ │ ├── DesktopSecurity.cs │ │ │ ├── DirectoryAccessRule.cs │ │ │ ├── DirectoryAuditRule.cs │ │ │ ├── DirectoryRights.cs │ │ │ ├── DirectorySecurity.cs │ │ │ ├── FileAccessRule.cs │ │ │ ├── FileAuditRule.cs │ │ │ ├── FileMappingAccessRule.cs │ │ │ ├── FileMappingAuditRule.cs │ │ │ ├── FileMappingRights.cs │ │ │ ├── FileMappingSecurity.cs │ │ │ ├── FileRights.cs │ │ │ ├── FileSecurity.cs │ │ │ ├── GenericMapping.cs │ │ │ ├── JobObjectAccessRule.cs │ │ │ ├── JobObjectAuditRule.cs │ │ │ ├── JobObjectRights.cs │ │ │ ├── JobObjectSecurity.cs │ │ │ ├── PipeAccessRule.cs │ │ │ ├── PipeAuditRule.cs │ │ │ ├── PipeRights.cs │ │ │ ├── PipeSecurity.cs │ │ │ ├── PrinterAccessRule.cs │ │ │ ├── PrinterAuditRule.cs │ │ │ ├── PrinterRights.cs │ │ │ ├── PrinterSecurity.cs │ │ │ ├── ProcessAccessRule.cs │ │ │ ├── ProcessAuditRule.cs │ │ │ ├── ProcessRights.cs │ │ │ ├── ProcessSecurity.cs │ │ │ ├── RegistryKeyAccessRule.cs │ │ │ ├── RegistryKeyAuditRule.cs │ │ │ ├── RegistryKeyRights.cs │ │ │ ├── RegistryKeySecurity.cs │ │ │ ├── ServiceAccessRule.cs │ │ │ ├── ServiceAuditRule.cs │ │ │ ├── ServiceRights.cs │ │ │ ├── ServiceSecurity.cs │ │ │ ├── ShareAccessRule.cs │ │ │ ├── ShareAuditRule.cs │ │ │ ├── ShareRights.cs │ │ │ ├── ShareSecurity.cs │ │ │ ├── StandardRights.cs │ │ │ ├── ThreadAccessRule.cs │ │ │ ├── ThreadAuditRule.cs │ │ │ ├── ThreadRights.cs │ │ │ ├── ThreadSecurity.cs │ │ │ ├── TokenAccessRule.cs │ │ │ ├── TokenAuditRule.cs │ │ │ ├── TokenRights.cs │ │ │ ├── TokenSecurity.cs │ │ │ ├── WaitObjectAccessRule.cs │ │ │ ├── WaitObjectAuditRule.cs │ │ │ ├── WaitObjectRights.cs │ │ │ ├── WaitObjectSecurity.cs │ │ │ ├── WindowStationAccessRule.cs │ │ │ ├── WindowStationAuditRule.cs │ │ │ ├── WindowStationRights.cs │ │ │ └── WindowStationSecurity.cs │ │ ├── AsproLock.csproj │ │ ├── AssemblyInfo.cs │ │ └── Win32/ │ │ ├── GenericSafeHandle.cs │ │ ├── NativeConstants.cs │ │ └── NativeMethods.cs │ └── AsproLock.sln └── Tools/ ├── API Monitor.url └── ApiMonitorApiFilters.xml ================================================ FILE CONTENTS ================================================ ================================================ FILE: .github/FUNDING.yml ================================================ # These are supported funding model platforms github: NikolayIT # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] patreon: # Replace with a single Patreon username open_collective: # Replace with a single Open Collective username ko_fi: # Replace with a single Ko-fi username tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry liberapay: # Replace with a single Liberapay username issuehunt: # Replace with a single IssueHunt username otechie: # Replace with a single Otechie username custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] ================================================ FILE: .gitignore ================================================ # Build Folders (you can keep bin if you'd like, to store dlls and pdbs) [Bb]in/ [Oo]bj/ # mstest test results TestResults/ ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. # User-specific files *.suo *.user *.sln.docstates # Build results [Dd]ebug/ [Rr]elease/ x64/ *_i.c *_p.c *.ilk *.meta *.obj *.pch *.pdb *.pgc *.pgd *.rsp *.sbr *.tlb *.tli *.tlh *.tmp *.log *.vspscc *.vssscc .builds # Visual C++ cache files ipch/ *.aps *.ncb *.opensdf *.sdf # Visual Studio profiler *.psess *.vsp *.vspx # Guidance Automation Toolkit *.gpState # ReSharper is a .NET coding add-in _ReSharper* # NCrunch *.ncrunch* .*crunch*.local.xml # Installshield output folder [Ee]xpress # DocProject is a documentation generator add-in DocProject/buildhelp/ DocProject/Help/*.HxT DocProject/Help/*.HxC DocProject/Help/*.hhc DocProject/Help/*.hhk DocProject/Help/*.hhp DocProject/Help/Html2 DocProject/Help/html # Click-Once directory publish # Publish Web Output *.Publish.xml # NuGet Packages Directory packages # Windows Azure Build Output csx *.build.csdef # Windows Store app package directory AppPackages/ # Others [Bb]in [Oo]bj sql TestResults/ [Tt]est[Rr]esult*/ *.Cache ClientBin [Ss]tyle[Cc]op.* ~$* *.dbmdl Generated_Code #added for RIA/Silverlight projects # Backup & report files from converting an old project file to a newer # Visual Studio version. Backup files are not needed, because we have git ;-) _UpgradeReport_Files/ Backup*/ UpgradeLog*.XML # TFS $tf/ # Installation guide /Documentation/Installation/Installation Guide for Open Judge System.docx # JustMock configuration files /Open Judge System/*.jmconfig #Visual studio config folder .vs/ ================================================ FILE: Documentation/Development/How to add new administration.txt ================================================ Adding new Administration 1. Go to Areas -> Administration -> Controller and create a controller for the new administration (Example: "ContestsController") 2. Remove default usings and add these to your new controller: using System.Collections; using System.Linq; using System.Web.Mvc; using Kendo.Mvc.Extensions; using Kendo.Mvc.UI; using OJS.Data; using OJS.Web.Controllers; 3. Enter the model you would like to use for your controller with this line: using ModelType = OJS.Data.Models.{model}; For example if you want to add model for contests -> you enter: using ModelType = OJS.Data.Models.Contest; 4. Your new controller should inherit "KendoGridAdministrationController" class instead of the default "Controller" class. 5. Copy the following code to enable CRUD derivered from the base class. Make sure you fill the constructor with its proper name and override the correct data in GetData() method public {name}Controller(IOjsData data) : base(data) { } public override IEnumerable GetData() { return this.Data.{model}.All().Where(x => !x.IsDeleted); } public ActionResult Index() { return View(); } [HttpPost] public ActionResult Create([DataSourceRequest]DataSourceRequest request, ModelType model) { return this.BaseCreate(request, model); } [HttpPost] public ActionResult Update([DataSourceRequest]DataSourceRequest request, ModelType model) { return this.BaseUpdate(request, model); } [HttpPost] public ActionResult Destroy([DataSourceRequest]DataSourceRequest request, ModelType model) { return this.BaseDestroy(request, model); } 6. Your controller is now ready but it needs a view for rendering on browser. Go to Areas -> Administration -> Views and add folder named after your controller. For example "Contests". 7. Add a new Empty View, name it Index and select a proper model for it. For example "OJS.Data.Models.Contest". Use empty layout. Now your web application should be able to render the default view for this controller. 8. Remove everything from the view and copy the following text which will render the Kendo UI Grid view (make sure you put correct names and options for columns). You can remove the commented part about the Groupable option if you need: @model OJS.Data.Models.{model} @{ ViewBag.Title = "{name}"; const string ControllerName = "{controller}"; }
The keys are compared in one of three ways. If TKey implements IComparable<TKey> or IComparable, then the CompareTo method of that interface will be used to compare elements. Alternatively, a comparison function can be passed in either as a delegate, or as an instance of IComparer<TKey>.
OrderedDictionary is implemented as a balanced binary tree. Inserting, deleting, and looking up an an element all are done in log(N) type, where N is the number of keys in the tree.
This method is not abstract, although derived classes should always override it. It is not abstract because some derived classes may wish to reimplement Add with a different return type (typically bool). In C#, this can be accomplished with code like the following:
public class MyCollection<T>: CollectionBase<T>, ICollection<T>
{
public new bool Add(T item) {
/* Add the item */
}
void ICollection<T>.Add(T item) {
Add(item);
}
}
Typically, this method is used in conjunction with a foreach statement. For example:
foreach(KeyValuePair<TKey, TValue> pair in dictionary.Reversed()) {
// process pair
}
If an entry is added to or deleted from the dictionary while the View is being enumerated, then the enumeration will end with an InvalidOperationException.
Calling Reverse does not copy the data in the dictionary, and the operation takes constant time.
If
The sorted order of the keys is determined by the comparison instance or delegate used to create the dictionary.
Typically, this property is used in conjunction with a foreach statement. For example:
foreach(KeyValuePair<TKey, TValue> pair in dictionary.Range(from, true, to, false)) {
// process pair
}
Calling Range does not copy the data in the dictionary, and the operation takes constant time.
The sorted order of the keys is determined by the comparison instance or delegate used to create the dictionary.
Typically, this property is used in conjunction with a foreach statement. For example:
foreach(KeyValuePair<TKey, TValue> pair in dictionary.RangeFrom(from, true)) {
// process pair
}
Calling RangeFrom does not copy of the data in the dictionary, and the operation takes constant time.
The sorted order of the keys is determined by the comparison instance or delegate used to create the dictionary.
Typically, this property is used in conjunction with a foreach statement. For example:
foreach(KeyValuePair<TKey, TValue> pair in dictionary.RangeFrom(from, false)) {
// process pair
}
Calling RangeTo does not copy the data in the dictionary, and the operation takes constant time.
Unlike adding or removing an element, changing the value associated with a key can be performed while an enumeration (foreach) on the the dictionary is in progress.
Equality between keys is determined by the comparison instance or delegate used to create the dictionary.
Replace takes time O(log N), where N is the number of entries in the dictionary.
Typically, this method is not called directly. Instead the "foreach" statement is used to enumerate the elements of the dictionary, which uses this method implicitly.
If an element is added to or deleted from the dictionary while it is being enumerated, then the enumeration will end with an InvalidOperationException.
Enumeration all the entries in the dictionary takes time O(N log N), where N is the number of entries in the dictionary.
Views are dynamic. If the underlying dictionary changes, the view changes in sync. If a change is made to the view, the underlying dictionary changes accordingly.
Typically, this class is used in conjunction with a foreach statement to enumerate the keys and values in a subset of the OrderedDictionary. For example:
foreach(KeyValuePair<TKey, TValue> pair in dictionary.Range(from, to)) {
// process pair
}
dictionary.Range("A", "B").Clear();
The items are compared in one of three ways. If T implements IComparable<TKey> or IComparable, then the CompareTo method of that interface will be used to compare items. Alternatively, a comparison function can be passed in either as a delegate, or as an instance of IComparer<TKey>.
OrderedBag is implemented as a balanced binary tree. Inserting, deleting, and looking up an an element all are done in log(N) + M time, where N is the number of keys in the tree, and M is the current number of copies of the element being handled.
Typically, this method is not called directly. Instead the "foreach" statement is used to enumerate the items, which uses this method implicitly.
If an item is added to or deleted from the bag while it is being enumerated, then the enumeration will end with an InvalidOperationException.
Enumeration all the items in the bag takes time O(N), where N is the number of items in the bag.
Typically, this method is used in conjunction with a foreach statement. For example:
foreach(T item in bag.Reversed()) {
// process item
}
If an item is added to or deleted from the bag while the View is being enumerated, then the enumeration will end with an InvalidOperationException.
Calling Reverse does not copy the data in the tree, and the operation takes constant time.
If
Typically, this method is used in conjunction with a foreach statement. For example:
foreach(T item in bag.Range(from, true, to, false)) {
// process item
}
If an item is added to or deleted from the bag while the View is being enumerated, then the enumeration will end with an InvalidOperationException.
Calling Range does not copy the data in the tree, and the operation takes constant time.
Typically, this method is used in conjunction with a foreach statement. For example:
foreach(T item in bag.RangeFrom(from, true)) {
// process item
}
If an item is added to or deleted from the bag while the View is being enumerated, then the enumeration will end with an InvalidOperationException.
Calling RangeFrom does not copy the data in the tree, and the operation takes constant time.
Typically, this method is used in conjunction with a foreach statement. For example:
foreach(T item in bag.RangeTo(to, false)) {
// process item
}
If an item is added to or deleted from the bag while the View is being enumerated, then the enumeration will end with an InvalidOperationException.
Calling RangeTo does not copy the data in the tree, and the operation takes constant time.
Algorithms.Reverse(deque.Range(3, 6))
will return the reverse opf the 6 items beginning at index 3.Views are dynamic. If the underlying bag changes, the view changes in sync. If a change is made to the view, the underlying bag changes accordingly.
Typically, this class is used in conjunction with a foreach statement to enumerate the items in a subset of the OrderedBag. For example:
foreach(T item in bag.Range(from, to)) {
// process item
}
bag.Range("A", "B").Clear();
Insert(Count, item)
Algorithms.ReverseInPlace(deque.Range(3, 6))
will reverse the 6 items beginning at index 3.Insert(Count, item)
The items are compared in one of two ways. If T implements IComparable<T> then the Equals method of that interface will be used to compare items, otherwise the Equals method from Object will be used. Alternatively, an instance of IComparer<T> can be passed to the constructor to use to compare items.
Set is implemented as a hash table. Inserting, deleting, and looking up an an element all are done in approximately constant time, regardless of the number of items in the Set.
Typically, this method is not called directly. Instead the "foreach" statement is used to enumerate the items, which uses this method implicitly.
If an item is added to or deleted from the set while it is being enumerated, then the enumeration will end with an InvalidOperationException.
Enumerating all the items in the set takes time O(N), where N is the number of items in the set.
Set<string> set = new Set<string>(StringComparer.CurrentCultureIgnoreCase);
set.Add("HELLO");
string s;
bool b = set.TryGetItem("Hello", out s); // b receives true, s receives "HELLO".
Algorithms.ReverseInPlace(Algorithms.Range(list, 3, 6))
will reverse the 6 items beginning at index 3.Algorithms.ReverseInPlace(Algorithms.Range(array, 3, 6))
will reverse the 6 items beginning at index 3.
Dictionary<IEnumerable<string>, int> =
new Dictionary<IEnumerable<string>, int>(Algorithms.GetCollectionEqualityComparer<string>());
Dictionary<IEnumerable<string>, int> =
new Dictionary<IEnumerable<string>, int>(Algorithms.GetCollectionEqualityComparer<string>(StringComparer.CurrentCultureIgnoreCase));
Dictionary<IEnumerable<string>, int> =
new Dictionary<IEnumerable<string>, int>(Algorithms.GetSetEqualityComparer<string>(StringComparer.CurrentCultureIgnoreCase));
Dictionary<IEnumerable<string>, int> =
new Dictionary<IEnumerable<string>, int>(Algorithms.GetSetEqualityComparer<string>());
List<int> list1, list2;
if (EqualCollections(list1, list2, delegate(int x, int y) { return x <= y; }) {
// the check is true...
}
List<double> list = new List<double>(Algorithms.NCopiesOf(1000, 1.0));
Algorithms.ReverseInPlace(list.Range(3, 6))
will reverse the 6 items beginning at index 3.The items are compared in one of three ways. If T implements IComparable<TKey> or IComparable, then the CompareTo method of that interface will be used to compare items. Alternatively, a comparison function can be passed in either as a delegate, or as an instance of IComparer<TKey>.
OrderedSet is implemented as a balanced binary tree. Inserting, deleting, and looking up an an element all are done in log(N) type, where N is the number of keys in the tree.
Typically, this method is not called directly. Instead the "foreach" statement is used to enumerate the items, which uses this method implicitly.
If an item is added to or deleted from the set while it is being enumerated, then the enumeration will end with an InvalidOperationException.
Enumeration all the items in the set takes time O(N log N), where N is the number of items in the set.
OrderedSet<string> set = new OrderedSet<string>(StringComparer.CurrentCultureIgnoreCase);
set.Add("HELLO");
string s;
bool b = set.TryGetItem("Hello", out s); // b receives true, s receives "HELLO".
Typically, this method is used in conjunction with a foreach statement. For example:
foreach(T item in set.Reversed()) {
// process item
}
If an item is added to or deleted from the set while the View is being enumerated, then the enumeration will end with an InvalidOperationException.
Calling Reverse does not copy the data in the tree, and the operation takes constant time.
If
Typically, this method is used in conjunction with a foreach statement. For example:
foreach(T item in set.Range(from, true, to, false)) {
// process item
}
If an item is added to or deleted from the set while the View is being enumerated, then the enumeration will end with an InvalidOperationException.
Calling Range does not copy the data in the tree, and the operation takes constant time.
Typically, this method is used in conjunction with a foreach statement. For example:
foreach(T item in set.RangeFrom(from, true)) {
// process item
}
If an item is added to or deleted from the set while the View is being enumerated, then the enumeration will end with an InvalidOperationException.
Calling RangeFrom does not copy the data in the tree, and the operation takes constant time.
Typically, this method is used in conjunction with a foreach statement. For example:
foreach(T item in set.RangeTo(to, false)) {
// process item
}
If an item is added to or deleted from the set while the View is being enumerated, then the enumeration will end with an InvalidOperationException.
Calling RangeTo does not copy the data in the tree, and the operation takes constant time.
Views are dynamic. If the underlying set changes, the view changes in sync. If a change is made to the view, the underlying set changes accordingly.
Typically, this class is used in conjunction with a foreach statement to enumerate the items in a subset of the OrderedSet. For example:
foreach(T item in set.Range(from, to)) {
// process item
}
set.Range("A", "B").Clear();
The items are compared in one of two ways. If T implements IComparable<T> then the Equals method of that interface will be used to compare items, otherwise the Equals method from Object will be used. Alternatively, an instance of IComparer<T> can be passed to the constructor to use to compare items.
Bag is implemented as a hash table. Inserting, deleting, and looking up an an element all are done in approximately constant time, regardless of the number of items in the bag.
When multiple equal items are stored in the bag, they are stored as a representative item and a count. If equal items can be distinguished, this may be noticable. For example, if a case-insensitive comparer is used with a Bag<string>, and both "hello", and "HELLO" are added to the bag, then the bag will appear to contain two copies of "hello" (the representative item).
Typically, this method is not called directly. Instead the "foreach" statement is used to enumerate the items, which uses this method implicitly.
If an item is added to or deleted from the bag while it is being enumerated, then the enumeration will end with an InvalidOperationException.
Enumeration all the items in the bag takes time O(N), where N is the number of items in the bag.
Typically, this method is used in conjunction with a foreach statement. For example:
foreach(KeyValuePair<TKey, TValue> pair in dictionary.Reversed()) {
// process pair
}
If an entry is added to or deleted from the dictionary while the View is being enumerated, then the enumeration will end with an InvalidOperationException.
Calling Reverse does not copy the data in the dictionary, and the operation takes constant time.
If
The sorted order of the keys is determined by the comparison instance or delegate used to create the dictionary.
Typically, this property is used in conjunction with a foreach statement. For example:
foreach(KeyValuePair<TKey, TValue> pair in dictionary.Range(from, true, to, false)) {
// process pair
}
Calling Range does not copy the data in the dictionary, and the operation takes constant time.
The sorted order of the keys is determined by the comparison instance or delegate used to create the dictionary.
Typically, this property is used in conjunction with a foreach statement. For example:
foreach(KeyValuePair<TKey, TValue> pair in dictionary.RangeFrom(from, true)) {
// process pair
}
Calling RangeFrom does not copy of the data in the dictionary, and the operation takes constant time.
The sorted order of the keys is determined by the comparison instance or delegate used to create the dictionary.
Typically, this property is used in conjunction with a foreach statement. For example:
foreach(KeyValuePair<TKey, TValue> pair in dictionary.RangeFrom(from, false)) {
// process pair
}
Calling RangeTo does not copy the data in the dictionary, and the operation takes constant time.
Views are dynamic. If the underlying dictionary changes, the view changes in sync. If a change is made to the view, the underlying dictionary changes accordingly.
Typically, this class is used in conjunction with a foreach statement to enumerate the keys and values in a subset of the OrderedMultiDictionary. For example:
foreach(KeyValuePair<TKey, TValue> pair in dictionary.Range(from, to)) {
// process pair
}
dictionary.Range("A", "B").Clear();
Algorithms.ReverseInPlace(Algorithms.Range(list, 3, 6))
will reverse the 6 items beginning at index 3.Algorithms.ReverseInPlace(Algorithms.Range(array, 3, 6))
will reverse the 6 items beginning at index 3.
Dictionary<IEnumerable<string>, int> =
new Dictionary<IEnumerable<string>, int>(Algorithms.GetCollectionEqualityComparer<string>());
Dictionary<IEnumerable<string>, int> =
new Dictionary<IEnumerable<string>, int>(Algorithms.GetCollectionEqualityComparer<string>(StringComparer.CurrentCultureIgnoreCase));
Dictionary<IEnumerable<string>, int> =
new Dictionary<IEnumerable<string>, int>(Algorithms.GetSetEqualityComparer<string>(StringComparer.CurrentCultureIgnoreCase));
Dictionary<IEnumerable<string>, int> =
new Dictionary<IEnumerable<string>, int>(Algorithms.GetSetEqualityComparer<string>());
List<int> list1, list2;
if (EqualCollections(list1, list2, delegate(int x, int y) { return x <= y; }) {
// the check is true...
}
List<double> list = new List<double>(Algorithms.NCopiesOf(1000, 1.0));
This method is not abstract, although derived classes should always override it. It is not abstract because some derived classes may wish to reimplement Add with a different return type (typically bool). In C#, this can be accomplished with code like the following:
public class MyCollection<T>: CollectionBase<T>, ICollection<T>
{
public new bool Add(T item) {
/* Add the item */
}
void ICollection<T>.Add(T item) {
Add(item);
}
}
Insert(Count, item)
Algorithms.ReverseInPlace(deque.Range(3, 6))
will reverse the 6 items beginning at index 3.Insert(Count, item)
The items are compared in one of two ways. If T implements IComparable<T> then the Equals method of that interface will be used to compare items, otherwise the Equals method from Object will be used. Alternatively, an instance of IComparer<T> can be passed to the constructor to use to compare items.
Bag is implemented as a hash table. Inserting, deleting, and looking up an an element all are done in approximately constant time, regardless of the number of items in the bag.
When multiple equal items are stored in the bag, they are stored as a representative item and a count. If equal items can be distinguished, this may be noticable. For example, if a case-insensitive comparer is used with a Bag<string>, and both "hello", and "HELLO" are added to the bag, then the bag will appear to contain two copies of "hello" (the representative item).
Typically, this method is not called directly. Instead the "foreach" statement is used to enumerate the items, which uses this method implicitly.
If an item is added to or deleted from the bag while it is being enumerated, then the enumeration will end with an InvalidOperationException.
Enumeration all the items in the bag takes time O(N), where N is the number of items in the bag.
The items are compared in one of three ways. If T implements IComparable<TKey> or IComparable, then the CompareTo method of that interface will be used to compare items. Alternatively, a comparison function can be passed in either as a delegate, or as an instance of IComparer<TKey>.
OrderedBag is implemented as a balanced binary tree. Inserting, deleting, and looking up an an element all are done in log(N) + M time, where N is the number of keys in the tree, and M is the current number of copies of the element being handled.
Typically, this method is not called directly. Instead the "foreach" statement is used to enumerate the items, which uses this method implicitly.
If an item is added to or deleted from the bag while it is being enumerated, then the enumeration will end with an InvalidOperationException.
Enumeration all the items in the bag takes time O(N), where N is the number of items in the bag.
Typically, this method is used in conjunction with a foreach statement. For example:
foreach(T item in bag.Reversed()) {
// process item
}
If an item is added to or deleted from the bag while the View is being enumerated, then the enumeration will end with an InvalidOperationException.
Calling Reverse does not copy the data in the tree, and the operation takes constant time.
If
Typically, this method is used in conjunction with a foreach statement. For example:
foreach(T item in bag.Range(from, true, to, false)) {
// process item
}
If an item is added to or deleted from the bag while the View is being enumerated, then the enumeration will end with an InvalidOperationException.
Calling Range does not copy the data in the tree, and the operation takes constant time.
Typically, this method is used in conjunction with a foreach statement. For example:
foreach(T item in bag.RangeFrom(from, true)) {
// process item
}
If an item is added to or deleted from the bag while the View is being enumerated, then the enumeration will end with an InvalidOperationException.
Calling RangeFrom does not copy the data in the tree, and the operation takes constant time.
Typically, this method is used in conjunction with a foreach statement. For example:
foreach(T item in bag.RangeTo(to, false)) {
// process item
}
If an item is added to or deleted from the bag while the View is being enumerated, then the enumeration will end with an InvalidOperationException.
Calling RangeTo does not copy the data in the tree, and the operation takes constant time.
Algorithms.Reverse(deque.Range(3, 6))
will return the reverse opf the 6 items beginning at index 3.Views are dynamic. If the underlying bag changes, the view changes in sync. If a change is made to the view, the underlying bag changes accordingly.
Typically, this class is used in conjunction with a foreach statement to enumerate the items in a subset of the OrderedBag. For example:
foreach(T item in bag.Range(from, to)) {
// process item
}
bag.Range("A", "B").Clear();
Typically, this method is used in conjunction with a foreach statement. For example:
foreach(KeyValuePair<TKey, TValue> pair in dictionary.Reversed()) {
// process pair
}
If an entry is added to or deleted from the dictionary while the View is being enumerated, then the enumeration will end with an InvalidOperationException.
Calling Reverse does not copy the data in the dictionary, and the operation takes constant time.
If
The sorted order of the keys is determined by the comparison instance or delegate used to create the dictionary.
Typically, this property is used in conjunction with a foreach statement. For example:
foreach(KeyValuePair<TKey, TValue> pair in dictionary.Range(from, true, to, false)) {
// process pair
}
Calling Range does not copy the data in the dictionary, and the operation takes constant time.
The sorted order of the keys is determined by the comparison instance or delegate used to create the dictionary.
Typically, this property is used in conjunction with a foreach statement. For example:
foreach(KeyValuePair<TKey, TValue> pair in dictionary.RangeFrom(from, true)) {
// process pair
}
Calling RangeFrom does not copy of the data in the dictionary, and the operation takes constant time.
The sorted order of the keys is determined by the comparison instance or delegate used to create the dictionary.
Typically, this property is used in conjunction with a foreach statement. For example:
foreach(KeyValuePair<TKey, TValue> pair in dictionary.RangeFrom(from, false)) {
// process pair
}
Calling RangeTo does not copy the data in the dictionary, and the operation takes constant time.
Views are dynamic. If the underlying dictionary changes, the view changes in sync. If a change is made to the view, the underlying dictionary changes accordingly.
Typically, this class is used in conjunction with a foreach statement to enumerate the keys and values in a subset of the OrderedMultiDictionary. For example:
foreach(KeyValuePair<TKey, TValue> pair in dictionary.Range(from, to)) {
// process pair
}
dictionary.Range("A", "B").Clear();
The items are compared in one of three ways. If T implements IComparable<TKey> or IComparable, then the CompareTo method of that interface will be used to compare items. Alternatively, a comparison function can be passed in either as a delegate, or as an instance of IComparer<TKey>.
OrderedSet is implemented as a balanced binary tree. Inserting, deleting, and looking up an an element all are done in log(N) type, where N is the number of keys in the tree.
Typically, this method is not called directly. Instead the "foreach" statement is used to enumerate the items, which uses this method implicitly.
If an item is added to or deleted from the set while it is being enumerated, then the enumeration will end with an InvalidOperationException.
Enumeration all the items in the set takes time O(N log N), where N is the number of items in the set.
OrderedSet<string> set = new OrderedSet<string>(StringComparer.CurrentCultureIgnoreCase);
set.Add("HELLO");
string s;
bool b = set.TryGetItem("Hello", out s); // b receives true, s receives "HELLO".
Typically, this method is used in conjunction with a foreach statement. For example:
foreach(T item in set.Reversed()) {
// process item
}
If an item is added to or deleted from the set while the View is being enumerated, then the enumeration will end with an InvalidOperationException.
Calling Reverse does not copy the data in the tree, and the operation takes constant time.
If
Typically, this method is used in conjunction with a foreach statement. For example:
foreach(T item in set.Range(from, true, to, false)) {
// process item
}
If an item is added to or deleted from the set while the View is being enumerated, then the enumeration will end with an InvalidOperationException.
Calling Range does not copy the data in the tree, and the operation takes constant time.
Typically, this method is used in conjunction with a foreach statement. For example:
foreach(T item in set.RangeFrom(from, true)) {
// process item
}
If an item is added to or deleted from the set while the View is being enumerated, then the enumeration will end with an InvalidOperationException.
Calling RangeFrom does not copy the data in the tree, and the operation takes constant time.
Typically, this method is used in conjunction with a foreach statement. For example:
foreach(T item in set.RangeTo(to, false)) {
// process item
}
If an item is added to or deleted from the set while the View is being enumerated, then the enumeration will end with an InvalidOperationException.
Calling RangeTo does not copy the data in the tree, and the operation takes constant time.
Views are dynamic. If the underlying set changes, the view changes in sync. If a change is made to the view, the underlying set changes accordingly.
Typically, this class is used in conjunction with a foreach statement to enumerate the items in a subset of the OrderedSet. For example:
foreach(T item in set.Range(from, to)) {
// process item
}
set.Range("A", "B").Clear();
Algorithms.ReverseInPlace(list.Range(3, 6))
will reverse the 6 items beginning at index 3.The items are compared in one of two ways. If T implements IComparable<T> then the Equals method of that interface will be used to compare items, otherwise the Equals method from Object will be used. Alternatively, an instance of IComparer<T> can be passed to the constructor to use to compare items.
Set is implemented as a hash table. Inserting, deleting, and looking up an an element all are done in approximately constant time, regardless of the number of items in the Set.
Typically, this method is not called directly. Instead the "foreach" statement is used to enumerate the items, which uses this method implicitly.
If an item is added to or deleted from the set while it is being enumerated, then the enumeration will end with an InvalidOperationException.
Enumerating all the items in the set takes time O(N), where N is the number of items in the set.
Set<string> set = new Set<string>(StringComparer.CurrentCultureIgnoreCase);
set.Add("HELLO");
string s;
bool b = set.TryGetItem("Hello", out s); // b receives true, s receives "HELLO".
The keys are compared in one of three ways. If TKey implements IComparable<TKey> or IComparable, then the CompareTo method of that interface will be used to compare elements. Alternatively, a comparison function can be passed in either as a delegate, or as an instance of IComparer<TKey>.
OrderedDictionary is implemented as a balanced binary tree. Inserting, deleting, and looking up an an element all are done in log(N) type, where N is the number of keys in the tree.
Typically, this method is used in conjunction with a foreach statement. For example:
foreach(KeyValuePair<TKey, TValue> pair in dictionary.Reversed()) {
// process pair
}
If an entry is added to or deleted from the dictionary while the View is being enumerated, then the enumeration will end with an InvalidOperationException.
Calling Reverse does not copy the data in the dictionary, and the operation takes constant time.
If
The sorted order of the keys is determined by the comparison instance or delegate used to create the dictionary.
Typically, this property is used in conjunction with a foreach statement. For example:
foreach(KeyValuePair<TKey, TValue> pair in dictionary.Range(from, true, to, false)) {
// process pair
}
Calling Range does not copy the data in the dictionary, and the operation takes constant time.
The sorted order of the keys is determined by the comparison instance or delegate used to create the dictionary.
Typically, this property is used in conjunction with a foreach statement. For example:
foreach(KeyValuePair<TKey, TValue> pair in dictionary.RangeFrom(from, true)) {
// process pair
}
Calling RangeFrom does not copy of the data in the dictionary, and the operation takes constant time.
The sorted order of the keys is determined by the comparison instance or delegate used to create the dictionary.
Typically, this property is used in conjunction with a foreach statement. For example:
foreach(KeyValuePair<TKey, TValue> pair in dictionary.RangeFrom(from, false)) {
// process pair
}
Calling RangeTo does not copy the data in the dictionary, and the operation takes constant time.
Unlike adding or removing an element, changing the value associated with a key can be performed while an enumeration (foreach) on the the dictionary is in progress.
Equality between keys is determined by the comparison instance or delegate used to create the dictionary.
Replace takes time O(log N), where N is the number of entries in the dictionary.
Typically, this method is not called directly. Instead the "foreach" statement is used to enumerate the elements of the dictionary, which uses this method implicitly.
If an element is added to or deleted from the dictionary while it is being enumerated, then the enumeration will end with an InvalidOperationException.
Enumeration all the entries in the dictionary takes time O(N log N), where N is the number of entries in the dictionary.
Views are dynamic. If the underlying dictionary changes, the view changes in sync. If a change is made to the view, the underlying dictionary changes accordingly.
Typically, this class is used in conjunction with a foreach statement to enumerate the keys and values in a subset of the OrderedDictionary. For example:
foreach(KeyValuePair<TKey, TValue> pair in dictionary.Range(from, to)) {
// process pair
}
dictionary.Range("A", "B").Clear();