diff --git a/.github/workflows/openactive-test-suite.yml b/.github/workflows/openactive-test-suite.yml index 40bc842e..06f8780c 100644 --- a/.github/workflows/openactive-test-suite.yml +++ b/.github/workflows/openactive-test-suite.yml @@ -57,7 +57,7 @@ jobs: # output - name: Run OpenActive.FakeDatabase.NET.Tests run: dotnet test ./Fakes/OpenActive.FakeDatabase.NET.Tests/OpenActive.FakeDatabase.NET.Tests.csproj --configuration Release --no-build --verbosity normal - + core: # Specifies that this job depends on the successful completion of two other jobs: "test-server" and "test-fake-database" needs: @@ -110,6 +110,7 @@ jobs: # runs `dotnet restore` to install the dependencies for the "OpenActive.Server.NET" project. It is conditional and # depends on the "profile" value not being 'no-auth' or 'single-seller' + # LW: Why is it conditional? - name: Install OpenActive.Server.NET dependencies if: ${{ matrix.profile != 'no-auth' && matrix.profile != 'single-seller' }} run: dotnet restore ./server/ diff --git a/.gitignore b/.gitignore index c83e3a48..60e64674 100644 --- a/.gitignore +++ b/.gitignore @@ -336,3 +336,6 @@ ASALocalRun/ # Fake database *fakedatabase.db + +# Output path for app publishing +/web-app-package/ \ No newline at end of file diff --git a/Examples/BookingSystem.AspNetCore.IdentityServer/Startup.cs b/Examples/BookingSystem.AspNetCore.IdentityServer/Startup.cs index f743c4c4..8d8d501b 100644 --- a/Examples/BookingSystem.AspNetCore.IdentityServer/Startup.cs +++ b/Examples/BookingSystem.AspNetCore.IdentityServer/Startup.cs @@ -8,6 +8,7 @@ using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Configuration; using OpenActive.FakeDatabase.NET; +using Microsoft.Extensions.Logging; namespace IdentityServer { @@ -27,7 +28,11 @@ public Startup(IWebHostEnvironment environment, IConfiguration configuration) public void ConfigureServices(IServiceCollection services) { services.AddTransient(); - services.AddSingleton(x => new FakeBookingSystem(AppSettings.FeatureFlags.FacilityUseHasSlots)); + services.AddSingleton(x => new FakeBookingSystem + ( + AppSettings.FeatureFlags.FacilityUseHasSlots, + x.GetRequiredService>() + )); var builder = services.AddIdentityServer(options => { diff --git a/Examples/BookingSystem.AspNetCore/BackgroundServices/FakeDataRefresherService.cs b/Examples/BookingSystem.AspNetCore/BackgroundServices/FakeDataRefresherService.cs new file mode 100644 index 00000000..592e54a6 --- /dev/null +++ b/Examples/BookingSystem.AspNetCore/BackgroundServices/FakeDataRefresherService.cs @@ -0,0 +1,71 @@ +using System; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; +using OpenActive.FakeDatabase.NET; +using BookingSystem.AspNetCore.Services; + + +namespace BookingSystem +{ + /// + /// A background task which periodically refreshes the data in the + /// FakeBookingSystem. This means that past data is deleted and new copies + /// are created in the future. + /// + /// More information on background tasks here: + /// https://docs.microsoft.com/en-us/dotnet/architecture/microservices/multi-container-microservice-net-applications/background-tasks-with-ihostedservice#implementing-ihostedservice-with-a-custom-hosted-service-class-deriving-from-the-backgroundservice-base-class + /// + public class FakeDataRefresherService : BackgroundService + { + private readonly ILogger _logger; + private readonly AppSettings _settings; + private readonly FakeBookingSystem _bookingSystem; + private readonly DataRefresherStatusService _statusService; + + public FakeDataRefresherService( + AppSettings settings, + ILogger logger, + FakeBookingSystem bookingSystem, + DataRefresherStatusService statusService) + { + _settings = settings; + _logger = logger; + _bookingSystem = bookingSystem; + _statusService = statusService; + + // Indicate that the refresher service is configured to run + _statusService.SetRefresherConfigured(true); + } + + protected override async Task ExecuteAsync(CancellationToken stoppingToken) + { + var interval = TimeSpan.FromHours(_settings.DataRefresherIntervalHours); + + stoppingToken.Register(() => + _logger.LogInformation($"FakeDataRefresherService background task is stopping.")); + + while (!stoppingToken.IsCancellationRequested) + { + _logger.LogInformation($"FakeDataRefresherService is starting.."); + var (numDeletedOccurrences, numDeletedSlots) = await _bookingSystem + .Database + .HardDeleteOldSoftDeletedOccurrencesAndSlots(); + _logger.LogInformation($"FakeDataRefresherService hard deleted {numDeletedOccurrences} occurrences and {numDeletedSlots} slots that were previously old and soft-deleted."); + + var (numRefreshedOccurrences, numRefreshedSlots) = await _bookingSystem + .Database + .SoftDeletePastOpportunitiesAndInsertNewAtEdgeOfWindow(); + _logger.LogInformation($"FakeDataRefresherService, for {numRefreshedOccurrences} old occurrences and {numRefreshedSlots} old slots, inserted new copies into the future and soft-deleted the old ones."); + + _logger.LogInformation($"FakeDataRefresherService is finished"); + + // Signal that a cycle has completed + _statusService.SignalCycleCompletion(); + + await Task.Delay(interval, stoppingToken); + } + } + } +} \ No newline at end of file diff --git a/Examples/BookingSystem.AspNetCore/Controllers/InitWaitController.cs b/Examples/BookingSystem.AspNetCore/Controllers/InitWaitController.cs new file mode 100644 index 00000000..6c61517e --- /dev/null +++ b/Examples/BookingSystem.AspNetCore/Controllers/InitWaitController.cs @@ -0,0 +1,76 @@ +using System; +using System.Threading.Tasks; +using BookingSystem.AspNetCore.Services; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; + +/// +/// Endpoints which are used to wait for components within +/// BookingSystem.AspNetCore to be initialized. +/// +namespace BookingSystem.AspNetCore.Controllers +{ + [ApiController] + [Route("init-wait")] + public class InitWaitController : ControllerBase + { + private readonly DataRefresherStatusService _statusService; + private readonly ILogger _logger; + private static readonly TimeSpan _defaultTimeout = TimeSpan.FromMinutes(5); + + public InitWaitController( + DataRefresherStatusService statusService, + ILogger logger) + { + _statusService = statusService; + _logger = logger; + } + + /// + /// Wait for the data refresher to complete its first cycle. + /// + /// This makes it possible to write scripts (for CI) which don't start + /// until the data refresher has completed at least one cycle. + /// + /// - Returns 204 when the data refresher has completed its first cycle. + /// - Returns 503 if the data refresher is not configured to run. + /// - Returns 504 if the data refresher fails to complete a cycle within + /// the default timeout. + /// + [HttpGet("data-refresher")] + public async Task WaitForDataRefresher() + { + _logger.LogDebug("Received request to wait for data refresher completion"); + + // Check if the data refresher is configured to run + if (!_statusService.IsRefresherConfigured()) + { + _logger.LogWarning("Data refresher is not configured to run"); + return StatusCode(503, "Data refresher service is not configured to run"); + } + + // If it has already completed a cycle, return immediately + if (_statusService.HasCompletedCycle()) + { + _logger.LogDebug("Data refresher has already completed a cycle"); + return NoContent(); + } + + _logger.LogDebug("Waiting for data refresher to complete a cycle..."); + + // Wait for the cycle to complete, with a timeout + await _statusService.WaitForCycleCompletion(_defaultTimeout); + + if (_statusService.HasCompletedCycle()) + { + _logger.LogDebug("Data refresher completed a cycle, returning 204"); + return NoContent(); + } + else + { + _logger.LogWarning("Timed out waiting for data refresher to complete a cycle"); + return StatusCode(504, "Timed out waiting for data refresher to complete a cycle"); + } + } + } +} \ No newline at end of file diff --git a/Examples/BookingSystem.AspNetCore/Feeds/FacilitiesFeeds.cs b/Examples/BookingSystem.AspNetCore/Feeds/FacilitiesFeeds.cs index 4ea35f33..c9c7b496 100644 --- a/Examples/BookingSystem.AspNetCore/Feeds/FacilitiesFeeds.cs +++ b/Examples/BookingSystem.AspNetCore/Feeds/FacilitiesFeeds.cs @@ -1,5 +1,5 @@ -using Bogus; -using BookingSystem.AspNetCore.Helpers; +using Bogus; +using BookingSystem.AspNetCore.Helpers; using OpenActive.DatasetSite.NET; using OpenActive.FakeDatabase.NET; using OpenActive.NET; @@ -26,6 +26,7 @@ public AcmeFacilityUseRpdeGenerator(AppSettings appSettings, FakeBookingSystem f this._fakeBookingSystem = fakeBookingSystem; } + // TODO this method should use async queries so as not to block the main thread protected override async Task>> GetRpdeItems(long? afterTimestamp, long? afterId) { var facilityTypeId = Environment.GetEnvironmentVariable("FACILITY_TYPE_ID") ?? "https://openactive.io/facility-types#a1f82b7a-1258-4d9a-8dc5-bfc2ae961651"; @@ -204,6 +205,7 @@ public AcmeFacilityUseSlotRpdeGenerator(AppSettings appSettings, FakeBookingSyst this._fakeBookingSystem = fakeBookingSystem; } + // TODO this method should use async queries so as not to block the main thread protected override async Task>> GetRpdeItems(long? afterTimestamp, long? afterId) { using (var db = _fakeBookingSystem.Database.Mem.Database.Open()) diff --git a/Examples/BookingSystem.AspNetCore/README.md b/Examples/BookingSystem.AspNetCore/README.md index 38bd0a32..d054651a 100644 --- a/Examples/BookingSystem.AspNetCore/README.md +++ b/Examples/BookingSystem.AspNetCore/README.md @@ -33,6 +33,15 @@ ASPNETCORE_ENVIRONMENT=no-auth dotnet run --no-launch-profile --project ./Bookin The above example starts the BookingSystem.AspNetCore in `no-auth` mode. +## Env Vars + +BookingSystem.AspNetCore uses the following environment variables (note: this list is not exhaustive): + +- `PERIODICALLY_REFRESH_DATA`: (optional - default `false`) If set to `true`, + the database will be periodically refreshed, deleting past data and replacing + it with future data. +- `IS_LOREM_FITSUM_MODE`: (optional - default `false`) If set to `true`, data is created in ["Lorem Fitsum" mode](#lorem-fitsum-mode). + ## BookingSystem.AspNetCore Data Generation BookingSystem.AspNetCore has three main uses that make it very important in the OpenActive ecosystem: @@ -64,6 +73,6 @@ In the CLI this can be done by running the following command for example: IS_LOREM_FITSUM_MODE=true dotnet run --no-launch-profile --project ./BookingSystem.AspNetCore.csproj --configuration Release --no-build ``` -### Golden Records +#### Golden Records Golden records are randomly generated records that have maximally enriched properties in the generated data. For example where a record might have one image normally, a golden record will have four. diff --git a/Examples/BookingSystem.AspNetCore/Services/DataRefresherStatusService.cs b/Examples/BookingSystem.AspNetCore/Services/DataRefresherStatusService.cs new file mode 100644 index 00000000..aa5fc9b1 --- /dev/null +++ b/Examples/BookingSystem.AspNetCore/Services/DataRefresherStatusService.cs @@ -0,0 +1,59 @@ +using System; +using System.Threading; +using System.Threading.Tasks; + +namespace BookingSystem.AspNetCore.Services +{ + /// + /// A service which tracks the status of the data refresher, including + /// whether it is configured to run and whether a cycle has completed. + /// + public class DataRefresherStatusService + { + private readonly SemaphoreSlim _completionSemaphore = new SemaphoreSlim(0, 1); + private bool _isRefresherConfigured = false; + private bool _hasCompletedCycle = false; + + public void SetRefresherConfigured(bool isConfigured) + { + _isRefresherConfigured = isConfigured; + } + + public bool IsRefresherConfigured() + { + return _isRefresherConfigured; + } + + public void SignalCycleCompletion() + { + _hasCompletedCycle = true; + + // Release the semaphore if someone is waiting on it + if (_completionSemaphore.CurrentCount == 0) + { + _completionSemaphore.Release(); + } + } + + /// + /// Has the data refresher completed a cycle? + /// + /// This makes it possible to write scripts (for CI) which don't start + /// until the data refresher has completed at least one cycle. + /// + public bool HasCompletedCycle() + { + return _hasCompletedCycle; + } + + public async Task WaitForCycleCompletion(TimeSpan timeout) + { + if (_hasCompletedCycle) + { + return; + } + + await _completionSemaphore.WaitAsync(timeout); + } + } +} \ No newline at end of file diff --git a/Examples/BookingSystem.AspNetCore/Settings/AppSettings.cs b/Examples/BookingSystem.AspNetCore/Settings/AppSettings.cs index 07edbb7c..1f5f0fe3 100644 --- a/Examples/BookingSystem.AspNetCore/Settings/AppSettings.cs +++ b/Examples/BookingSystem.AspNetCore/Settings/AppSettings.cs @@ -1,3 +1,5 @@ +using System; + namespace BookingSystem { public class AppSettings @@ -6,6 +8,7 @@ public class AppSettings public string OpenIdIssuerUrl { get; set; } public FeatureSettings FeatureFlags { get; set; } public PaymentSettings Payment { get; set; } + public int DataRefresherIntervalHours { get; set; } = 6; } /** diff --git a/Examples/BookingSystem.AspNetCore/Startup.cs b/Examples/BookingSystem.AspNetCore/Startup.cs index c02b7b91..b0953da5 100644 --- a/Examples/BookingSystem.AspNetCore/Startup.cs +++ b/Examples/BookingSystem.AspNetCore/Startup.cs @@ -1,4 +1,5 @@ -using Microsoft.AspNetCore.Builder; +using System; +using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; @@ -9,6 +10,8 @@ using OpenActive.Server.NET.OpenBookingHelper; using Microsoft.AspNetCore.Authorization; using OpenActive.FakeDatabase.NET; +using Microsoft.Extensions.Logging; +using BookingSystem.AspNetCore.Services; namespace BookingSystem.AspNetCore { @@ -20,22 +23,37 @@ public Startup(IConfiguration configuration) configuration.Bind(AppSettings); // Provide a simple way to disable token auth for some testing scenarios - if (System.Environment.GetEnvironmentVariable("DISABLE_TOKEN_AUTH") == "true") + var disableTokenAuthEnvVar = System.Environment.GetEnvironmentVariable("DISABLE_TOKEN_AUTH"); + if (disableTokenAuthEnvVar == "true") { AppSettings.FeatureFlags.EnableTokenAuth = false; } + else if (disableTokenAuthEnvVar == "false") + { + AppSettings.FeatureFlags.EnableTokenAuth = true; + } // Provide a simple way to enable FacilityUseHasSlots for some testing scenarios - if (System.Environment.GetEnvironmentVariable("FACILITY_USE_HAS_SLOTS") == "true") + var facilityUseHasSlotsEnvVar = System.Environment.GetEnvironmentVariable("FACILITY_USE_HAS_SLOTS"); + if (facilityUseHasSlotsEnvVar == "true") { AppSettings.FeatureFlags.FacilityUseHasSlots = true; } + else if (facilityUseHasSlotsEnvVar == "false") + { + AppSettings.FeatureFlags.FacilityUseHasSlots = false; + } // Provide a simple way to enable CI mode - if (System.Environment.GetEnvironmentVariable("IS_LOREM_FITSUM_MODE") == "true") + var isLoremFitsumModeEnvVar = System.Environment.GetEnvironmentVariable("IS_LOREM_FITSUM_MODE"); + if (isLoremFitsumModeEnvVar == "true") { AppSettings.FeatureFlags.IsLoremFitsumMode = true; } + else if (isLoremFitsumModeEnvVar == "false") + { + AppSettings.FeatureFlags.IsLoremFitsumMode = false; + } } public AppSettings AppSettings { get; } @@ -92,12 +110,39 @@ public void ConfigureServices(IServiceCollection services) .AddControllers() .AddMvcOptions(options => options.InputFormatters.Insert(0, new OpenBookingInputFormatter())); - services.AddSingleton(sp => EngineConfig.CreateStoreBookingEngine(AppSettings, new FakeBookingSystem(AppSettings.FeatureFlags.FacilityUseHasSlots))); + services.AddSingleton(x => AppSettings); + + services.AddSingleton(sp => new FakeBookingSystem + ( + AppSettings.FeatureFlags.FacilityUseHasSlots, + sp.GetRequiredService>() + )); + + services.AddSingleton(); + + services.AddSingleton(sp => + EngineConfig.CreateStoreBookingEngine( + AppSettings, + sp.GetRequiredService() + )); + + var doRunDataRefresher = Environment.GetEnvironmentVariable("PERIODICALLY_REFRESH_DATA")?.ToLowerInvariant() == "true"; + if (doRunDataRefresher) + { + services.AddHostedService(); + } } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IHostingEnvironment env) + public void Configure(IApplicationBuilder app, IHostingEnvironment env, DataRefresherStatusService statusService) { + // If data refresher is not configured to run, make this clear in the status service + var doRunDataRefresher = Environment.GetEnvironmentVariable("PERIODICALLY_REFRESH_DATA")?.ToLowerInvariant() == "true"; + if (!doRunDataRefresher) + { + statusService.SetRefresherConfigured(false); + } + // Note this will prevent UnknownOrIncorrectEndpointError being produced for 404 status in Development mode // Hence the `unknown-endpoint` test of the OpenActive Test Suite will always fail in Development mode if (env.IsDevelopment()) diff --git a/Examples/BookingSystem.AspNetFramework/Extensions/BookedOrderItemHelper.cs b/Examples/BookingSystem.AspNetFramework/Extensions/BookedOrderItemHelper.cs index 997599fd..1bb6965b 100644 --- a/Examples/BookingSystem.AspNetFramework/Extensions/BookedOrderItemHelper.cs +++ b/Examples/BookingSystem.AspNetFramework/Extensions/BookedOrderItemHelper.cs @@ -52,5 +52,13 @@ public static void AddPropertiesToBookedOrderItem(IOrderItemContext ctx, BookedO } } + public static void RemovePropertiesFromBookedOrderItem(IOrderItemContext ctx) + { + // Set RemainingAttendeeCapacity and MaximumAttendeeCapacity to null as the do not belong in the B and P responses. + // For more information see: https://github.com/openactive/open-booking-api/issues/156#issuecomment-926643733 + ctx.ResponseOrderItem.OrderedItem.Object.RemainingAttendeeCapacity = null; + ctx.ResponseOrderItem.OrderedItem.Object.MaximumAttendeeCapacity = null; + } + } } diff --git a/Examples/BookingSystem.AspNetFramework/Feeds/FacilitiesFeeds.cs b/Examples/BookingSystem.AspNetFramework/Feeds/FacilitiesFeeds.cs index 9bf1b691..c9c7b496 100644 --- a/Examples/BookingSystem.AspNetFramework/Feeds/FacilitiesFeeds.cs +++ b/Examples/BookingSystem.AspNetFramework/Feeds/FacilitiesFeeds.cs @@ -1,5 +1,5 @@ -using Bogus; -using BookingSystem.AspNetCore.Helpers; +using Bogus; +using BookingSystem.AspNetCore.Helpers; using OpenActive.DatasetSite.NET; using OpenActive.FakeDatabase.NET; using OpenActive.NET; @@ -26,6 +26,7 @@ public AcmeFacilityUseRpdeGenerator(AppSettings appSettings, FakeBookingSystem f this._fakeBookingSystem = fakeBookingSystem; } + // TODO this method should use async queries so as not to block the main thread protected override async Task>> GetRpdeItems(long? afterTimestamp, long? afterId) { var facilityTypeId = Environment.GetEnvironmentVariable("FACILITY_TYPE_ID") ?? "https://openactive.io/facility-types#a1f82b7a-1258-4d9a-8dc5-bfc2ae961651"; @@ -48,9 +49,8 @@ protected override async Task>> GetRpdeItems(long? af .Select(result => { var faker = new Faker() { Random = new Randomizer((int)result.Item1.Id) }; - var isGoldenRecord = faker.Random.Bool(); - - return new RpdeItem + var isGoldenRecord = faker.Random.Number(0, 1) > 0.75; + var facilityUseRpdeItem = new RpdeItem { Kind = RpdeKind.FacilityUse, Id = result.Item1.Id, @@ -68,22 +68,14 @@ protected override async Task>> GetRpdeItems(long? af }), Identifier = result.Item1.Id, Name = GetNameAndFacilityTypeForFacility(result.Item1.Name, isGoldenRecord).Name, - Description = faker.Lorem.Paragraphs(isGoldenRecord ? 4 : faker.Random.Number(4)), Provider = FeedGenerationHelper.GenerateOrganization( faker, result.Item2, _appSettings.FeatureFlags.SingleSeller, _appSettings.FeatureFlags.SingleSeller ? RenderSingleSellerId() : RenderSellerId(new SimpleIdComponents { IdLong = result.Item2.Id }) ), - Url = new Uri($"https://www.example.com/facilities/{result.Item1.Id}"), - AttendeeInstructions = FeedGenerationHelper.GenerateAttendeeInstructions(faker, isGoldenRecord), - AccessibilitySupport = FeedGenerationHelper.GenerateAccessibilitySupport(faker, isGoldenRecord), - AccessibilityInformation = faker.Lorem.Paragraphs(isGoldenRecord ? 2 : faker.Random.Number(2)), - IsWheelchairAccessible = isGoldenRecord || faker.Random.Bool() ? faker.Random.Bool() : faker.Random.ListItem(new List { true, false, null, null }), - Category = GenerateCategory(faker, isGoldenRecord), - Image = FeedGenerationHelper.GenerateImages(faker, isGoldenRecord), - Video = isGoldenRecord || faker.Random.Bool() ? new List { new VideoObject { Url = new Uri("https://www.youtube.com/watch?v=xvDZZLqlc-0") } } : null, Location = FeedGenerationHelper.GetPlaceById(result.Item1.PlaceId), + Url = new Uri($"https://www.example.com/facilities/{result.Item1.Id}"), FacilityType = GetNameAndFacilityTypeForFacility(result.Item1.Name, isGoldenRecord).Facility, IndividualFacilityUse = result.Item1.IndividualFacilityUses != null ? result.Item1.IndividualFacilityUses.Select(ifu => new OpenActive.NET.IndividualFacilityUse { @@ -97,6 +89,23 @@ protected override async Task>> GetRpdeItems(long? af }).ToList() : null, } }; + + // If this instance of the Reference Implementation is in Lorem Fitsum mode, then generate a comprehensive data. + // If it is not (eg for a CI run), return only the minimal properties needed + var IsLoremFitsumMode = _appSettings.FeatureFlags.IsLoremFitsumMode; + if (IsLoremFitsumMode) + { + facilityUseRpdeItem.Data.Description = faker.Lorem.Paragraphs(isGoldenRecord ? 4 : faker.Random.Number(4)); + facilityUseRpdeItem.Data.AttendeeInstructions = FeedGenerationHelper.GenerateAttendeeInstructions(faker, isGoldenRecord); + facilityUseRpdeItem.Data.AccessibilitySupport = FeedGenerationHelper.GenerateAccessibilitySupport(faker, isGoldenRecord); + facilityUseRpdeItem.Data.AccessibilityInformation = faker.Lorem.Paragraphs(isGoldenRecord ? 2 : faker.Random.Number(2)); + facilityUseRpdeItem.Data.IsWheelchairAccessible = isGoldenRecord || faker.Random.Bool() ? faker.Random.Bool() : faker.Random.ListItem(new List { true, false, null, null }); + facilityUseRpdeItem.Data.Category = GenerateCategory(faker, isGoldenRecord); + facilityUseRpdeItem.Data.Image = FeedGenerationHelper.GenerateImages(faker, isGoldenRecord); + facilityUseRpdeItem.Data.Video = isGoldenRecord || faker.Random.Bool() ? new List { new VideoObject { Url = new Uri("https://www.youtube.com/watch?v=xvDZZLqlc-0") } } : null; + } + + return facilityUseRpdeItem; }); return query.ToList(); @@ -181,19 +190,6 @@ private List GenerateCategory(Faker faker, bool isGoldenRecord) return FeedGenerationHelper.GetRandomElementsOf(faker, listOfPossibleCategories, isGoldenRecord, 1).ToList(); } - private List GenerateOpeningHours(Faker faker) - { - return new List - { - new OpeningHoursSpecification {DayOfWeek = new List {Schema.NET.DayOfWeek.Sunday }, Opens = $"{faker.Random.Number(9,12)}:00", Closes = $"{faker.Random.Number(15,17)}:30"}, - new OpeningHoursSpecification {DayOfWeek = new List {Schema.NET.DayOfWeek.Monday }, Opens = $"{faker.Random.Number(6,10)}:00", Closes = $"{faker.Random.Number(18,21)}:30"}, - new OpeningHoursSpecification {DayOfWeek = new List {Schema.NET.DayOfWeek.Tuesday }, Opens = $"{faker.Random.Number(6,10)}:00", Closes = $"{faker.Random.Number(18,21)}:30"}, - new OpeningHoursSpecification {DayOfWeek = new List {Schema.NET.DayOfWeek.Wednesday }, Opens = $"{faker.Random.Number(6,10)}:00", Closes = $"{faker.Random.Number(18,21)}:30"}, - new OpeningHoursSpecification {DayOfWeek = new List {Schema.NET.DayOfWeek.Thursday }, Opens = $"{faker.Random.Number(6,10)}:00", Closes = $"{faker.Random.Number(18,21)}:30"}, - new OpeningHoursSpecification {DayOfWeek = new List {Schema.NET.DayOfWeek.Friday }, Opens = $"{faker.Random.Number(6,10)}:00", Closes = $"{faker.Random.Number(18,21)}:30"}, - new OpeningHoursSpecification {DayOfWeek = new List {Schema.NET.DayOfWeek.Saturday }, Opens = $"{faker.Random.Number(9,12)}:00", Closes = $"{faker.Random.Number(15,17)}:30"} - }; - } } public class AcmeFacilityUseSlotRpdeGenerator : RpdeFeedModifiedTimestampAndIdLong @@ -209,6 +205,7 @@ public AcmeFacilityUseSlotRpdeGenerator(AppSettings appSettings, FakeBookingSyst this._fakeBookingSystem = fakeBookingSystem; } + // TODO this method should use async queries so as not to block the main thread protected override async Task>> GetRpdeItems(long? afterTimestamp, long? afterId) { using (var db = _fakeBookingSystem.Database.Mem.Database.Open()) diff --git a/Examples/BookingSystem.AspNetFramework/Feeds/SessionsFeeds.cs b/Examples/BookingSystem.AspNetFramework/Feeds/SessionsFeeds.cs index 3ab86dea..302aa382 100644 --- a/Examples/BookingSystem.AspNetFramework/Feeds/SessionsFeeds.cs +++ b/Examples/BookingSystem.AspNetFramework/Feeds/SessionsFeeds.cs @@ -105,14 +105,14 @@ protected override async Task>> GetRpdeItems(long? .SelectMulti(q) .Select(result => { - var intt = (int)result.Item1.Modified; var faker = new Faker() { Random = new Randomizer((int)result.Item1.Id) }; // here we randomly decide whether the item is going to be a golden record or not by using Faker // See the README for more detail on golden records. - var isGoldenRecord = faker.Random.Bool(); + var isGoldenRecord = faker.Random.Number(0, 1) > 0.75; - return new RpdeItem + + var sessionSeriesRpdeItem = new RpdeItem { Kind = RpdeKind.SessionSeries, Id = result.Item1.Id, @@ -131,37 +131,48 @@ protected override async Task>> GetRpdeItems(long? Identifier = result.Item1.Id, Name = GetNameAndActivityForSessions(result.Item1.Title, isGoldenRecord).Name, EventAttendanceMode = MapAttendanceMode(result.Item1.AttendanceMode), - Description = faker.Lorem.Paragraphs(isGoldenRecord ? 4 : faker.Random.Number(4)), - AttendeeInstructions = FeedGenerationHelper.GenerateAttendeeInstructions(faker, isGoldenRecord), - GenderRestriction = faker.Random.Enum(), - AgeRange = GenerateAgeRange(faker, isGoldenRecord), - Level = faker.Random.ListItems(new List { "Beginner", "Intermediate", "Advanced" }, 1).ToList(), Organizer = GenerateOrganizerOrPerson(faker, result.Item2), - AccessibilitySupport = FeedGenerationHelper.GenerateAccessibilitySupport(faker, isGoldenRecord), - AccessibilityInformation = faker.Lorem.Paragraphs(isGoldenRecord ? 2 : faker.Random.Number(2)), - IsWheelchairAccessible = isGoldenRecord || faker.Random.Bool() ? faker.Random.Bool() : faker.Random.ListItem(new List { true, false, null, null }), - Category = GenerateCategory(faker, isGoldenRecord), - Image = FeedGenerationHelper.GenerateImages(faker, isGoldenRecord), - Video = isGoldenRecord || faker.Random.Bool() ? new List { new VideoObject { Url = new Uri("https://www.youtube.com/watch?v=xvDZZLqlc-0") } } : null, - Leader = GenerateListOfPersons(faker, isGoldenRecord, 2), - Contributor = GenerateListOfPersons(faker, isGoldenRecord, 2), - IsCoached = isGoldenRecord || faker.Random.Bool() ? faker.Random.Bool() : faker.Random.ListItem(new List { true, false, null, null }), Offers = GenerateOffers(faker, isGoldenRecord, result.Item1), // location MUST not be provided for fully virtual sessions Location = result.Item1.AttendanceMode == AttendanceMode.Online ? null : FeedGenerationHelper.GetPlaceById(result.Item1.PlaceId), - // beta:affiliatedLocation MAY be provided for fully virtual sessions - AffiliatedLocation = (result.Item1.AttendanceMode == AttendanceMode.Offline && faker.Random.Bool()) ? null : FeedGenerationHelper.GetPlaceById(result.Item1.PlaceId), - EventSchedule = GenerateSchedules(faker, isGoldenRecord), - SchedulingNote = GenerateSchedulingNote(faker, isGoldenRecord), - IsAccessibleForFree = result.Item1.Price == 0, Url = new Uri($"https://www.example.com/sessions/{result.Item1.Id}"), Activity = GetNameAndActivityForSessions(result.Item1.Title, isGoldenRecord).Activity, - Programme = GenerateBrand(faker, isGoldenRecord), - IsInteractivityPreferred = result.Item1.AttendanceMode == AttendanceMode.Offline ? null : (isGoldenRecord ? true : faker.Random.ListItem(new List { true, false, null })), - IsVirtuallyCoached = result.Item1.AttendanceMode == AttendanceMode.Offline ? null : (isGoldenRecord ? true : faker.Random.ListItem(new List { true, false, null })), - ParticipantSuppliedEquipment = result.Item1.AttendanceMode == AttendanceMode.Offline ? null : (isGoldenRecord ? OpenActive.NET.RequiredStatusType.Optional : faker.Random.ListItem(new List { OpenActive.NET.RequiredStatusType.Optional, OpenActive.NET.RequiredStatusType.Required, OpenActive.NET.RequiredStatusType.Unavailable, null })), } }; + + // If this instance of the Reference Implementation is in Lorem Fitsum mode, then generate a comprehensive data. + // If it is not (eg for a CI run), return only the minimal properties needed + var IsLoremFitsumMode = _appSettings.FeatureFlags.IsLoremFitsumMode; + if (IsLoremFitsumMode) + { + sessionSeriesRpdeItem.Data.Description = faker.Lorem.Paragraphs(isGoldenRecord ? 4 : faker.Random.Number(4)); + sessionSeriesRpdeItem.Data.AttendeeInstructions = FeedGenerationHelper.GenerateAttendeeInstructions(faker, isGoldenRecord); + sessionSeriesRpdeItem.Data.GenderRestriction = faker.Random.Enum(); + sessionSeriesRpdeItem.Data.AccessibilitySupport = FeedGenerationHelper.GenerateAccessibilitySupport(faker, isGoldenRecord); + sessionSeriesRpdeItem.Data.AccessibilityInformation = faker.Lorem.Paragraphs(isGoldenRecord ? 2 : faker.Random.Number(2)); + sessionSeriesRpdeItem.Data.IsWheelchairAccessible = isGoldenRecord || faker.Random.Bool() ? faker.Random.Bool() : faker.Random.ListItem(new List { true, false, null, null }); + sessionSeriesRpdeItem.Data.Category = GenerateCategory(faker, isGoldenRecord); + sessionSeriesRpdeItem.Data.Video = isGoldenRecord || faker.Random.Bool() ? new List { new VideoObject { Url = new Uri("https://www.youtube.com/watch?v=xvDZZLqlc-0") } } : null; + sessionSeriesRpdeItem.Data.Leader = GenerateListOfPersons(faker, isGoldenRecord, 2); + sessionSeriesRpdeItem.Data.Contributor = GenerateListOfPersons(faker, isGoldenRecord, 2); + sessionSeriesRpdeItem.Data.AgeRange = GenerateAgeRange(faker, isGoldenRecord); + sessionSeriesRpdeItem.Data.Image = FeedGenerationHelper.GenerateImages(faker, isGoldenRecord); + sessionSeriesRpdeItem.Data.Level = faker.Random.ListItems(new List { "Beginner", "Intermediate", "Advanced" }, 1).ToList(); + sessionSeriesRpdeItem.Data.IsCoached = isGoldenRecord || faker.Random.Bool() ? faker.Random.Bool() : faker.Random.ListItem(new List { true, false, null, null }); + // beta:affiliatedLocation MAY be provided for fully virtual sessions + sessionSeriesRpdeItem.Data.AffiliatedLocation = (result.Item1.AttendanceMode == AttendanceMode.Offline && faker.Random.Bool()) ? null : FeedGenerationHelper.GetPlaceById(result.Item1.PlaceId); + sessionSeriesRpdeItem.Data.EventSchedule = GenerateSchedules(faker, isGoldenRecord); + sessionSeriesRpdeItem.Data.SchedulingNote = GenerateSchedulingNote(faker, isGoldenRecord); + sessionSeriesRpdeItem.Data.IsAccessibleForFree = result.Item1.Price == 0; + sessionSeriesRpdeItem.Data.Programme = GenerateBrand(faker, isGoldenRecord); + sessionSeriesRpdeItem.Data.IsInteractivityPreferred = result.Item1.AttendanceMode == AttendanceMode.Offline ? null : (isGoldenRecord ? true : faker.Random.ListItem(new List { true, false, null })); + sessionSeriesRpdeItem.Data.IsVirtuallyCoached = result.Item1.AttendanceMode == AttendanceMode.Offline ? null : (isGoldenRecord ? true : faker.Random.ListItem(new List { true, false, null })); + sessionSeriesRpdeItem.Data.ParticipantSuppliedEquipment = result.Item1.AttendanceMode == AttendanceMode.Offline ? null : (isGoldenRecord ? OpenActive.NET.RequiredStatusType.Optional : faker.Random.ListItem(new List { OpenActive.NET.RequiredStatusType.Optional, OpenActive.NET.RequiredStatusType.Required, OpenActive.NET.RequiredStatusType.Unavailable, null })); + + } + + + return sessionSeriesRpdeItem; }); return query.ToList(); diff --git a/Examples/BookingSystem.AspNetFramework/Settings/AppSettings.cs b/Examples/BookingSystem.AspNetFramework/Settings/AppSettings.cs index aa120720..1f5f0fe3 100644 --- a/Examples/BookingSystem.AspNetFramework/Settings/AppSettings.cs +++ b/Examples/BookingSystem.AspNetFramework/Settings/AppSettings.cs @@ -1,3 +1,5 @@ +using System; + namespace BookingSystem { public class AppSettings @@ -6,6 +8,7 @@ public class AppSettings public string OpenIdIssuerUrl { get; set; } public FeatureSettings FeatureFlags { get; set; } public PaymentSettings Payment { get; set; } + public int DataRefresherIntervalHours { get; set; } = 6; } /** @@ -20,6 +23,7 @@ public class FeatureSettings public bool OnlyFreeOpportunities { get; set; } = false; public bool PrepaymentAlwaysRequired { get; set; } = false; public bool FacilityUseHasSlots { get; set; } = false; + public bool IsLoremFitsumMode { get; set; } = false; } public class PaymentSettings diff --git a/Examples/BookingSystem.AspNetFramework/Settings/EngineConfig.cs b/Examples/BookingSystem.AspNetFramework/Settings/EngineConfig.cs index 70ab090c..3d5b28f0 100644 --- a/Examples/BookingSystem.AspNetFramework/Settings/EngineConfig.cs +++ b/Examples/BookingSystem.AspNetFramework/Settings/EngineConfig.cs @@ -202,9 +202,9 @@ public static StoreBookingEngine CreateStoreBookingEngine(AppSettings appSetting DatasetDiscussionUrl = "https://github.com/openactive/OpenActive.Server.NET/issues".ParseUrlOrNull(), DatasetDocumentationUrl = "https://developer.openactive.io/".ParseUrlOrNull(), DatasetLanguages = new List { "en-GB" }, - OrganisationName = "Example", + OrganisationName = "OpenActive Reference Implementation", OrganisationUrl = "https://www.example.com/".ParseUrlOrNull(), - OrganisationLegalEntity = "Example", + OrganisationLegalEntity = "OpenActive Reference Implementation", OrganisationPlainTextDescription = "The Reference Implementation provides an example of an full conformant implementation of the OpenActive specifications.", OrganisationLogoUrl = $"{appSettings.ApplicationHostBaseUrl}/images/placeholder-logo.png".ParseUrlOrNull(), OrganisationEmail = "hello@example.com", diff --git a/Examples/BookingSystem.AspNetFramework/Stores/FacilityStore.cs b/Examples/BookingSystem.AspNetFramework/Stores/FacilityStore.cs index a8381c34..f506d119 100644 --- a/Examples/BookingSystem.AspNetFramework/Stores/FacilityStore.cs +++ b/Examples/BookingSystem.AspNetFramework/Stores/FacilityStore.cs @@ -358,6 +358,7 @@ protected override async Task GetOrderItems(List> orderItemContexts, StoreBookingFlowContext flowContext, OrderStateContext stateContext, OrderTransaction databaseTransaction) { // Check that there are no conflicts between the supplied opportunities @@ -558,6 +560,8 @@ protected override async ValueTask BookOrderItems(List> orderItemContexts, StoreBookingFlowContext flowContext, OrderStateContext stateContext, OrderTransaction databaseTransaction) { // Check that there are no conflicts between the supplied opportunities @@ -619,6 +623,8 @@ protected override async ValueTask ProposeOrderItems(List (ctx, bookedOrderItemInfo))) { ctx.SetOrderItemId(flowContext, bookedOrderItemInfo.OrderItemId); + // Remove attendee capacity information from the OrderedItem. For more information see: https://github.com/openactive/open-booking-api/issues/156#issuecomment-926643733 + BookedOrderItemHelper.RemovePropertiesFromBookedOrderItem(ctx); } break; case ReserveOrderItemsResult.SellerIdMismatch: diff --git a/Examples/BookingSystem.AspNetFramework/Stores/OrderStore.cs b/Examples/BookingSystem.AspNetFramework/Stores/OrderStore.cs index e55b32e9..71b3005f 100644 --- a/Examples/BookingSystem.AspNetFramework/Stores/OrderStore.cs +++ b/Examples/BookingSystem.AspNetFramework/Stores/OrderStore.cs @@ -389,7 +389,7 @@ public override async Task CreateOrderFromOrderProposal(OrderIdComponents sellerId.IdLong ?? null /* Hack to allow this to work in Single Seller mode too */, orderId.uuid, version); - // TODO return enum to allow errors cases to be handled in the engine + // TODO return enum (something like CreateOrderStatus) to allow errors cases to be handled in the engine switch (result) { case FakeDatabaseBookOrderProposalResult.OrderSuccessfullyBooked: diff --git a/Examples/BookingSystem.AspNetFramework/Stores/SessionStore.cs b/Examples/BookingSystem.AspNetFramework/Stores/SessionStore.cs index 318cc82b..912579f7 100644 --- a/Examples/BookingSystem.AspNetFramework/Stores/SessionStore.cs +++ b/Examples/BookingSystem.AspNetFramework/Stores/SessionStore.cs @@ -331,6 +331,7 @@ protected override async Task GetOrderItems(List> orderItemContexts, StoreBookingFlowContext flowContext, OrderStateContext stateContext, OrderTransaction databaseTransaction) { // Check that there are no conflicts between the supplied opportunities @@ -580,6 +581,8 @@ protected override async ValueTask BookOrderItems(List> orderItemContexts, StoreBookingFlowContext flowContext, OrderStateContext stateContext, OrderTransaction databaseTransaction) { // Check that there are no conflicts between the supplied opportunities @@ -642,6 +645,8 @@ protected override async ValueTask ProposeOrderItems(List (ctx, bookedOrderItemInfo))) { ctx.SetOrderItemId(flowContext, bookedOrderItemInfo.OrderItemId); + // Remove attendee capacity information from the OrderedItem. For more information see: https://github.com/openactive/open-booking-api/issues/156#issuecomment-926643733 + BookedOrderItemHelper.RemovePropertiesFromBookedOrderItem(ctx); } break; case ReserveOrderItemsResult.SellerIdMismatch: diff --git a/Fakes/OpenActive.FakeDatabase.NET.Tests/FakeBookingSystemTest.cs b/Fakes/OpenActive.FakeDatabase.NET.Tests/FakeBookingSystemTest.cs index ce0b9dda..f0487e4e 100644 --- a/Fakes/OpenActive.FakeDatabase.NET.Tests/FakeBookingSystemTest.cs +++ b/Fakes/OpenActive.FakeDatabase.NET.Tests/FakeBookingSystemTest.cs @@ -4,13 +4,18 @@ using System; using ServiceStack.OrmLite; using System.Data; +using Microsoft.Extensions.Logging.Abstractions; namespace OpenActive.FakeDatabase.NET.Test { public class FakeBookingSystemTest { private readonly ITestOutputHelper output; - private readonly FakeBookingSystem fakeBookingSystem = new FakeBookingSystem(false); + private readonly FakeBookingSystem fakeBookingSystem = new FakeBookingSystem + ( + false, + new NullLogger() + ); public FakeBookingSystemTest(ITestOutputHelper output) { diff --git a/Fakes/OpenActive.FakeDatabase.NET/FakeBookingSystem.cs b/Fakes/OpenActive.FakeDatabase.NET/FakeBookingSystem.cs index 1ef0bdb5..3ccf6c7a 100644 --- a/Fakes/OpenActive.FakeDatabase.NET/FakeBookingSystem.cs +++ b/Fakes/OpenActive.FakeDatabase.NET/FakeBookingSystem.cs @@ -12,21 +12,26 @@ using System.Text; using System.Threading.Tasks; using ServiceStack.OrmLite.Dapper; +using Microsoft.Extensions.Logging; using OpenActive.NET; namespace OpenActive.FakeDatabase.NET { /// /// This class models the database schema within an actual booking system. - /// It is designed to simulate the database that woFuld be available in a full implementation. + /// It is designed to simulate the database that would be available in a full implementation. /// public class FakeBookingSystem { + private readonly ILogger _logger; public FakeDatabase Database { get; set; } - public FakeBookingSystem(bool facilityUseHasSlots) - { - Database = FakeDatabase.GetPrepopulatedFakeDatabase(facilityUseHasSlots).Result; + public FakeBookingSystem( + bool facilityUseHasSlots, + ILogger logger) + { + _logger = logger; + Database = FakeDatabase.GetPrepopulatedFakeDatabase(facilityUseHasSlots, logger).Result; } } @@ -58,14 +63,19 @@ public static string Sha256(this string input) // ReSharper disable once InconsistentNaming public class InMemorySQLite { + private readonly ILogger _logger; public readonly OrmLiteConnectionFactory Database; + public readonly bool IsPersistedDatabase; - public InMemorySQLite() + public InMemorySQLite(ILogger logger) { + _logger = logger; + var sqliteDbPath = Environment.GetEnvironmentVariable("SQLITE_DB_PATH") + ?? Path.GetTempPath() + "openactive-fakedatabase.db"; + _logger.LogInformation($"InMemorySQLite - using SQLite database at {sqliteDbPath}"); // ServiceStack registers a memory cache client by default https://docs.servicestack.net/caching // There are issues with transactions when using full in-memory SQLite. To workaround this, we create a temporary file and use this to hold the SQLite database. - var connectionString = Path.GetTempPath() + "openactive-fakedatabase.db"; - Database = new OrmLiteConnectionFactory(connectionString, SqliteDialect.Provider); + Database = new OrmLiteConnectionFactory(sqliteDbPath, SqliteDialect.Provider); using (var connection = Database.Open()) { @@ -78,8 +88,18 @@ public InMemorySQLite() walCommand.ExecuteNonQuery(); } + var persistPreviousDatabase = Environment + .GetEnvironmentVariable("PERSIST_PREVIOUS_DATABASE") + ?.ToLowerInvariant() == "true"; + // Create empty tables - DatabaseCreator.CreateTables(Database); + var tablesFreshlyCreated = DatabaseCreator.CreateTables(Database, !persistPreviousDatabase); + if (tablesFreshlyCreated) { + _logger.LogInformation($"InMemorySQLite - Database tables freshly created"); + } else { + _logger.LogInformation($"InMemorySQLite - Database tables not created as they already exist"); + } + IsPersistedDatabase = !tablesFreshlyCreated; // OrmLiteUtils.PrintSql(); } @@ -144,16 +164,19 @@ public class BookingPartnerAdministratorTable public class FakeDatabase { + private readonly ILogger _logger; private const float ProportionWithRequiresAttendeeValidation = 1f / 10; private const float ProportionWithRequiresAdditionalDetails = 1f / 10; private bool _facilityUseHasSlots; - public readonly InMemorySQLite Mem = new InMemorySQLite(); + public readonly InMemorySQLite Mem; private static readonly Faker Faker = new Faker(); - public FakeDatabase(bool facilityUseHasSlots) + public FakeDatabase(bool facilityUseHasSlots, ILogger logger) { + _logger = logger; _facilityUseHasSlots = facilityUseHasSlots; + Mem = new InMemorySQLite(logger); } static FakeDatabase() @@ -1356,13 +1379,26 @@ public static async Task RecalculateSpaces(IDbConnection db, IEnumerable o } } - public static async Task GetPrepopulatedFakeDatabase(bool facilityUseHasSlots) + public static async Task GetPrepopulatedFakeDatabase(bool facilityUseHasSlots, ILogger logger) { - var database = new FakeDatabase(facilityUseHasSlots); + var database = new FakeDatabase(facilityUseHasSlots, logger); + if (database.Mem.IsPersistedDatabase) + { + // Since we are persisting the previous database, we need to + // make sure that the current setting for `FacilityUseHasSlots` + // matches the one in which data was initially populated. + using (var db = await database.Mem.Database.OpenAsync()) + { + await AssertExistingFacilitiesMatchFacilityUseHasSlots(db, facilityUseHasSlots); + } + // No need to do any population, as the database is being + // persisted from a previous session. + logger.LogInformation($"FakeDatabase.GetPrepopulatedFakeDatabase - Database is persisted from an earlier session, so is not being pre-populated now."); + return database; + } using (var db = await database.Mem.Database.OpenAsync()) using (var transaction = db.OpenTransaction(IsolationLevel.Serializable)) { - await CreateSellers(db); await CreateSellerUsers(db); await CreateFakeClasses(db); @@ -1371,7 +1407,7 @@ public static async Task GetPrepopulatedFakeDatabase(bool facility await CreateGrants(db); await BookingPartnerTable.Create(db); transaction.Commit(); - + logger.LogInformation($"FakeDatabase.GetPrepopulatedFakeDatabase - Database has been pre-populated."); } return database; @@ -1439,6 +1475,31 @@ private static async Task CreateFakeFacilitiesAndSlots(IDbConnection db, bool fa await db.InsertAllAsync(facilities); await db.InsertAllAsync(slotTableSlots); } + + /// + /// Assert that the facilities in the database match the FacilityUseHasSlots setting. + /// i.e. if FacilityUseHasSlots is true, all facilities should have IndividualFacilityUses. + /// If FacilityUseHasSlots is false, all facilities should not have IndividualFacilityUses. + /// + private static async Task AssertExistingFacilitiesMatchFacilityUseHasSlots(IDbConnection db, bool facilityUseHasSlots) { + if (facilityUseHasSlots) { + var query = db.From() + .Where(x => !x.Deleted && x.IndividualFacilityUses != null) + .Limit(1); + if (await db.CountAsync(query) > 0) { + throw new Exception("FacilityUseHasSlots is true but there are facilities with IndividualFacilityUses"); + } + } + else { + var query = db.From() + .Where(x => !x.Deleted && x.IndividualFacilityUses == null) + .Limit(1); + if (await db.CountAsync(query) > 0) { + throw new Exception("FacilityUseHasSlots is false but there are facilities without IndividualFacilityUses"); + } + } + } + private static SlotTable GenerateSlot(OpportunitySeed seed, long? individualFacilityUseId, ref int slotId, DateTime startDate, int totalUses, decimal price) { var requiresAdditionalDetails = Faker.Random.Bool(ProportionWithRequiresAdditionalDetails); @@ -2039,6 +2100,126 @@ public async Task BookingPartnerAdd(BookingPartnerTable newBookingPartner) } } + /// + /// When refreshing data, the furthest number of days into the future + /// that an old ScheduledSession/Slot will be moved to. + /// + /// To give a clear example, if this is set to `15`, and an opportunity + /// starts 5 days in the past, Data Refresher will move it to -5 + 15 = + /// 10 days into the future. + /// + private static readonly int DataRefresherDaysInterval = 15; + + /// + /// Part of Data Refresher. + /// It updates old (startDate < now) opportunities (that are not + /// currently soft-deleted) by: + /// - Copying them into the future, so that there are fresh new + /// opportunities for clients to use. + /// - Soft-deleting the old opportunities (according to the Retention + /// Period guidance: + /// https://developer.openactive.io/publishing-data/data-feeds/scaling-feeds#option-1-retention-period-to-minimise-storage-requirements). + /// + public async Task<(int numRefreshedOccurrences, int numRefreshedSlots)> SoftDeletePastOpportunitiesAndInsertNewAtEdgeOfWindow() + { + using (var db = await Mem.Database.OpenAsync()) + { + // Get Occurrences to be soft deleted + var toBeSoftDeletedOccurrences = await db.SelectAsync( + x => x.Deleted != true + && x.Start < DateTime.Now); + // Create new copy of occurrences in which dates are moved into + // the future, reset the uses, and insert + var occurrencesAtEdgeOfWindow = toBeSoftDeletedOccurrences.Select(x => + new OccurrenceTable + { + Deleted = false, + TestDatasetIdentifier = x.TestDatasetIdentifier, + ClassTable = x.ClassTable, + ClassId = x.ClassId, + Start = DateTimeUtils.MoveToNextFutureInterval(x.Start, DataRefresherDaysInterval), + End = DateTimeUtils.MoveToNextFutureInterval(x.End, DataRefresherDaysInterval), + RemainingSpaces = x.TotalSpaces, + LeasedSpaces = 0, + TotalSpaces = x.TotalSpaces, + } + ).ToList(); + await db.InsertAllAsync(occurrencesAtEdgeOfWindow); + + // Mark old occurrences as soft deleted and update + // TODO create new OccurrenceTable instances using ...x when upgraded to C# v8+ + foreach (var occurrence in toBeSoftDeletedOccurrences) + { + occurrence.Deleted = true; + occurrence.Modified = DateTimeOffset.Now.UtcTicks; + } + await db.UpdateAllAsync(toBeSoftDeletedOccurrences); + + // Get Slots to be soft deleted + var toBeSoftDeletedSlots = await db.SelectAsync(x => + x.Deleted != true + && x.Start < DateTime.Now); + // Create new copy of slots in which dates are moved into the + // future, reset the uses, and insert + var slotsAtEdgeOfWindow = toBeSoftDeletedSlots.Select(x => new SlotTable + { + Deleted = false, + TestDatasetIdentifier = x.TestDatasetIdentifier, + FacilityUseTable = x.FacilityUseTable, + FacilityUseId = x.FacilityUseId, + IndividualFacilityUseId = x.IndividualFacilityUseId, + Start = DateTimeUtils.MoveToNextFutureInterval(x.Start, DataRefresherDaysInterval), + End = DateTimeUtils.MoveToNextFutureInterval(x.End, DataRefresherDaysInterval), + MaximumUses = x.MaximumUses, + LeasedUses = 0, + RemainingUses = x.MaximumUses, + Price = x.Price, + AllowCustomerCancellationFullRefund = x.AllowCustomerCancellationFullRefund, + Prepayment = x.Prepayment, + RequiresAttendeeValidation = x.RequiresAttendeeValidation, + RequiresApproval = x.RequiresApproval, + RequiresAdditionalDetails = x.RequiresAdditionalDetails, + RequiredAdditionalDetails = x.RequiredAdditionalDetails, + ValidFromBeforeStartDate = x.ValidFromBeforeStartDate, + LatestCancellationBeforeStartDate = x.LatestCancellationBeforeStartDate, + AllowsProposalAmendment = x.AllowsProposalAmendment, + } + ).ToList(); + await db.InsertAllAsync(slotsAtEdgeOfWindow); + + // Mark old slots as soft deleted and update + // TODO create new SlotTable instances using ...x when upgraded to C# v8+ + foreach (var slot in toBeSoftDeletedSlots) + { + slot.Deleted = true; + slot.Modified = DateTimeOffset.Now.UtcTicks; + } + await db.UpdateAllAsync(toBeSoftDeletedSlots); + return (toBeSoftDeletedOccurrences.Count, toBeSoftDeletedSlots.Count); + } + } + + public async Task<(int numDeletedOccurrences, int numDeletedSlots)> HardDeleteOldSoftDeletedOccurrencesAndSlots() + { + // Old (startDate < now) opportunities that have already been + // soft-deleted are hard-deleted. This is an implementation of the + // "Retention period" guidance documented here: + // https://developer.openactive.io/publishing-data/data-feeds/scaling-feeds#option-1-retention-period-to-minimise-storage-requirements. + var yesterday = DateTime.Today.AddDays(-7); + using (var db = await Mem.Database.OpenAsync()) + { + var numDeletedOccurrences = await db.DeleteAsync(x => + x.Deleted == true + && x.Modified < new DateTimeOffset(yesterday).UtcTicks); + + var numDeletedSlots = await db.DeleteAsync(x => + x.Deleted == true + && x.Modified < new DateTimeOffset(yesterday).UtcTicks); + + return (numDeletedOccurrences, numDeletedSlots); + } + } + private static readonly (Bounds, Bounds?, bool)[] BucketDefinitions = { // Approval not required diff --git a/Fakes/OpenActive.FakeDatabase.NET/Helpers/DateTimeUtils.cs b/Fakes/OpenActive.FakeDatabase.NET/Helpers/DateTimeUtils.cs new file mode 100644 index 00000000..64858ce6 --- /dev/null +++ b/Fakes/OpenActive.FakeDatabase.NET/Helpers/DateTimeUtils.cs @@ -0,0 +1,24 @@ +using System; + +namespace OpenActive.FakeDatabase.NET.Helpers +{ + public static class DateTimeUtils + { + /// + /// Keep adding `intervalDays` to `dateTime` until the result is in the + /// future. + /// + public static DateTime MoveToNextFutureInterval(DateTime dateTime, int intervalDays) + { + if (dateTime > DateTime.Now) + { + return dateTime; + } + + var daysUntilNow = (DateTime.Now - dateTime).Days; + var additionalDaysNeeded = ((daysUntilNow / intervalDays) + 1) * intervalDays; + + return dateTime.AddDays(additionalDaysNeeded); + } + } +} \ No newline at end of file diff --git a/Fakes/OpenActive.FakeDatabase.NET/Models/DatabaseTables.cs b/Fakes/OpenActive.FakeDatabase.NET/Models/DatabaseTables.cs index 672e88e1..a4103423 100644 --- a/Fakes/OpenActive.FakeDatabase.NET/Models/DatabaseTables.cs +++ b/Fakes/OpenActive.FakeDatabase.NET/Models/DatabaseTables.cs @@ -32,30 +32,76 @@ public abstract class Table public static class DatabaseCreator { - public static void CreateTables(OrmLiteConnectionFactory dbFactory) + private static readonly Type[] TableTypesToCreate = new[] + { + typeof(GrantTable), + typeof(BookingPartnerTable), + typeof(SellerTable), + typeof(ClassTable), + typeof(OrderTable), + typeof(OccurrenceTable), + typeof(OrderItemsTable), + typeof(FacilityUseTable), + typeof(SlotTable), + typeof(SellerUserTable) + }; + + private static readonly Type[] TableTypesToDrop = new [] + { + typeof(SellerUserTable), + typeof(OrderItemsTable), + typeof(OccurrenceTable), + typeof(OrderTable), + typeof(ClassTable), + typeof(SellerTable), + typeof(FacilityUseTable), + typeof(SlotTable), + typeof(GrantTable), + typeof(BookingPartnerTable) + }; + + /// True if the tables were created, false if they already existed + public static bool CreateTables(OrmLiteConnectionFactory dbFactory, bool dropTablesOnRestart) { using (var db = dbFactory.Open()) { - db.DropTable(); - db.DropTable(); - db.DropTable(); - db.DropTable(); - db.DropTable(); - db.DropTable(); - db.DropTable(); - db.DropTable(); - db.DropTable(); - db.DropTable(); - db.CreateTable(); - db.CreateTable(); - db.CreateTable(); - db.CreateTable(); - db.CreateTable(); - db.CreateTable(); - db.CreateTable(); - db.CreateTable(); - db.CreateTable(); - db.CreateTable(); + if (dropTablesOnRestart) + { + // Drop tables in reverse order to handle dependencies + foreach (var tableType in TableTypesToDrop) + { + db.DropTable(tableType); + } + foreach (var tableType in TableTypesToCreate) + { + db.CreateTable(false, tableType); + } + return true; + } + else + { + var tablesAlreadyExist = db.TableExists(TableTypesToCreate[0].Name); + if (tablesAlreadyExist) + { + foreach (var tableType in TableTypesToCreate) + { + if (!db.TableExists(tableType.Name)) + { + throw new Exception($"Database is in unexpected state (perhaps the code has changed, changing the schema). As migrations are not supported, please restart with PERSIST_PREVIOUS_DATABASE=false\n" + + $"Table {TableTypesToCreate[0].Name} exists but table is: {tableType.Name}"); + } + } + return false; + } + else + { + foreach (var tableType in TableTypesToCreate) + { + db.CreateTable(false, tableType); + } + return true; + } + } } } } diff --git a/Fakes/OpenActive.FakeDatabase.NET/OpenActive.FakeDatabase.NET.csproj b/Fakes/OpenActive.FakeDatabase.NET/OpenActive.FakeDatabase.NET.csproj index 4b5c36b5..1e72cbb1 100644 --- a/Fakes/OpenActive.FakeDatabase.NET/OpenActive.FakeDatabase.NET.csproj +++ b/Fakes/OpenActive.FakeDatabase.NET/OpenActive.FakeDatabase.NET.csproj @@ -30,6 +30,7 @@ + diff --git a/README.md b/README.md index b8fe6a9c..ce876012 100644 --- a/README.md +++ b/README.md @@ -13,3 +13,15 @@ This is designed to have its code copied-and-pasted to provide a quick working s # OpenActive.FakeDatabase.NET [![Nuget](https://img.shields.io/nuget/v/OpenActive.FakeDatabase.NET.svg)](https://www.nuget.org/packages/OpenActive.FakeDatabase.NET/) [![OpenActive.FakeDatabase.NET.Tests](https://github.com/openactive/OpenActive.Server.NET/workflows/OpenActive.FakeDatabase.NET.Tests/badge.svg?branch=master)](https://github.com/openactive/OpenActive.Server.NET/actions?query=workflow%3AOpenActive.FakeDatabase.NET.Tests) [`OpenActive.FakeDatabase.NET`](https://github.com/openactive/OpenActive.Server.NET/tree/master/Fakes/OpenActive.FakeDatabase.NET) is an in-memory database that is used by BookingSystem.AspNetCore for illustration purposes. It can be added as a dependency to your project during the initial stages of implementation, to get a conformant test implementation as a starting position. + +Env vars to use when running OpenActive.FakeDatabase.NET: + +- `SQLITE_DB_PATH`: (optional) The path to the SQLite database file. If not + provided, a temporary file will be created. Be sure to provide this if you + want to persist data between runs. +- `PERSIST_PREVIOUS_DATABASE`: (optional - default `false`) If set to `false`, + the database will be recreated from scratch with each run. If set to `true`, + and the database file already has data in it, this data will be preserved. +- `PERIODICALLY_REFRESH_DATA`: (optional - default `false`) If set to `true`, + the database will be periodically refreshed, deleting past data and replacing + it with future data. diff --git a/web-app-package/BookingSystem.AspNetCore.zip b/web-app-package/BookingSystem.AspNetCore.zip deleted file mode 100644 index 8961a5f5..00000000 Binary files a/web-app-package/BookingSystem.AspNetCore.zip and /dev/null differ diff --git a/web-app-package/BookingSystem.AspNetCore/Bogus.dll b/web-app-package/BookingSystem.AspNetCore/Bogus.dll deleted file mode 100755 index e6680440..00000000 Binary files a/web-app-package/BookingSystem.AspNetCore/Bogus.dll and /dev/null differ diff --git a/web-app-package/BookingSystem.AspNetCore/BookingSystem.AspNetCore b/web-app-package/BookingSystem.AspNetCore/BookingSystem.AspNetCore deleted file mode 100755 index 8b0c6746..00000000 Binary files a/web-app-package/BookingSystem.AspNetCore/BookingSystem.AspNetCore and /dev/null differ diff --git a/web-app-package/BookingSystem.AspNetCore/BookingSystem.AspNetCore.deps.json b/web-app-package/BookingSystem.AspNetCore/BookingSystem.AspNetCore.deps.json deleted file mode 100644 index ae9c8aa5..00000000 --- a/web-app-package/BookingSystem.AspNetCore/BookingSystem.AspNetCore.deps.json +++ /dev/null @@ -1,5945 +0,0 @@ -{ - "runtimeTarget": { - "name": ".NETCoreApp,Version=v3.1", - "signature": "" - }, - "compilationOptions": { - "defines": [ - "TRACE", - "RELEASE", - "NETCOREAPP", - "NETCOREAPP3_1", - "NETCOREAPP1_0_OR_GREATER", - "NETCOREAPP1_1_OR_GREATER", - "NETCOREAPP2_0_OR_GREATER", - "NETCOREAPP2_1_OR_GREATER", - "NETCOREAPP2_2_OR_GREATER", - "NETCOREAPP3_0_OR_GREATER", - "NETCOREAPP3_1_OR_GREATER" - ], - "languageVersion": "8.0", - "platform": "", - "allowUnsafe": false, - "warningsAsErrors": false, - "optimize": true, - "keyFile": "", - "emitEntryPoint": true, - "xmlDoc": false, - "debugType": "portable" - }, - "targets": { - ".NETCoreApp,Version=v3.1": { - "BookingSystem.AspNetCore/1.0.0": { - "dependencies": { - "Microsoft.AspNetCore.Authentication.JwtBearer": "2.1.2", - "OpenActive.FakeDatabase.NET": "0.11.0", - "OpenActive.Server.NET": "0.11.0", - "Microsoft.AspNetCore.Antiforgery": "3.1.0.0", - "Microsoft.AspNetCore.Authentication.Abstractions.Reference": "3.1.0.0", - "Microsoft.AspNetCore.Authentication.Cookies": "3.1.0.0", - "Microsoft.AspNetCore.Authentication.Core.Reference": "3.1.0.0", - "Microsoft.AspNetCore.Authentication.Reference": "3.1.0.0", - "Microsoft.AspNetCore.Authentication.OAuth": "3.1.0.0", - "Microsoft.AspNetCore.Authorization": "3.1.0.0", - "Microsoft.AspNetCore.Authorization.Policy": "3.1.0.0", - "Microsoft.AspNetCore.Components.Authorization": "3.1.0.0", - "Microsoft.AspNetCore.Components": "3.1.0.0", - "Microsoft.AspNetCore.Components.Forms": "3.1.0.0", - "Microsoft.AspNetCore.Components.Server": "3.1.0.0", - "Microsoft.AspNetCore.Components.Web": "3.1.0.0", - "Microsoft.AspNetCore.Connections.Abstractions": "3.1.0.0", - "Microsoft.AspNetCore.CookiePolicy": "3.1.0.0", - "Microsoft.AspNetCore.Cors": "3.1.0.0", - "Microsoft.AspNetCore.Cryptography.Internal.Reference": "3.1.0.0", - "Microsoft.AspNetCore.Cryptography.KeyDerivation": "3.1.0.0", - "Microsoft.AspNetCore.DataProtection.Abstractions.Reference": "3.1.0.0", - "Microsoft.AspNetCore.DataProtection.Reference": "3.1.0.0", - "Microsoft.AspNetCore.DataProtection.Extensions": "3.1.0.0", - "Microsoft.AspNetCore.Diagnostics.Abstractions": "3.1.0.0", - "Microsoft.AspNetCore.Diagnostics": "3.1.0.0", - "Microsoft.AspNetCore.Diagnostics.HealthChecks": "3.1.0.0", - "Microsoft.AspNetCore": "3.1.0.0", - "Microsoft.AspNetCore.HostFiltering": "3.1.0.0", - "Microsoft.AspNetCore.Hosting.Abstractions.Reference": "3.1.0.0", - "Microsoft.AspNetCore.Hosting": "3.1.0.0", - "Microsoft.AspNetCore.Hosting.Server.Abstractions.Reference": "3.1.0.0", - "Microsoft.AspNetCore.Html.Abstractions": "3.1.0.0", - "Microsoft.AspNetCore.Http.Abstractions.Reference": "3.1.0.0", - "Microsoft.AspNetCore.Http.Connections.Common": "3.1.0.0", - "Microsoft.AspNetCore.Http.Connections": "3.1.0.0", - "Microsoft.AspNetCore.Http.Reference": "3.1.0.0", - "Microsoft.AspNetCore.Http.Extensions.Reference": "3.1.0.0", - "Microsoft.AspNetCore.Http.Features.Reference": "3.1.0.0", - "Microsoft.AspNetCore.HttpOverrides": "3.1.0.0", - "Microsoft.AspNetCore.HttpsPolicy": "3.1.0.0", - "Microsoft.AspNetCore.Identity": "3.1.0.0", - "Microsoft.AspNetCore.Localization": "3.1.0.0", - "Microsoft.AspNetCore.Localization.Routing": "3.1.0.0", - "Microsoft.AspNetCore.Metadata": "3.1.0.0", - "Microsoft.AspNetCore.Mvc.Abstractions": "3.1.0.0", - "Microsoft.AspNetCore.Mvc.ApiExplorer": "3.1.0.0", - "Microsoft.AspNetCore.Mvc.Core": "3.1.0.0", - "Microsoft.AspNetCore.Mvc.Cors": "3.1.0.0", - "Microsoft.AspNetCore.Mvc.DataAnnotations": "3.1.0.0", - "Microsoft.AspNetCore.Mvc": "3.1.0.0", - "Microsoft.AspNetCore.Mvc.Formatters.Json": "3.1.0.0", - "Microsoft.AspNetCore.Mvc.Formatters.Xml": "3.1.0.0", - "Microsoft.AspNetCore.Mvc.Localization": "3.1.0.0", - "Microsoft.AspNetCore.Mvc.Razor": "3.1.0.0", - "Microsoft.AspNetCore.Mvc.RazorPages": "3.1.0.0", - "Microsoft.AspNetCore.Mvc.TagHelpers": "3.1.0.0", - "Microsoft.AspNetCore.Mvc.ViewFeatures": "3.1.0.0", - "Microsoft.AspNetCore.Razor": "3.1.0.0", - "Microsoft.AspNetCore.Razor.Runtime": "3.1.0.0", - "Microsoft.AspNetCore.ResponseCaching.Abstractions": "3.1.0.0", - "Microsoft.AspNetCore.ResponseCaching": "3.1.0.0", - "Microsoft.AspNetCore.ResponseCompression": "3.1.0.0", - "Microsoft.AspNetCore.Rewrite": "3.1.0.0", - "Microsoft.AspNetCore.Routing.Abstractions": "3.1.0.0", - "Microsoft.AspNetCore.Routing": "3.1.0.0", - "Microsoft.AspNetCore.Server.HttpSys": "3.1.0.0", - "Microsoft.AspNetCore.Server.IIS": "3.1.0.0", - "Microsoft.AspNetCore.Server.IISIntegration": "3.1.0.0", - "Microsoft.AspNetCore.Server.Kestrel.Core": "3.1.0.0", - "Microsoft.AspNetCore.Server.Kestrel": "3.1.0.0", - "Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets": "3.1.0.0", - "Microsoft.AspNetCore.Session": "3.1.0.0", - "Microsoft.AspNetCore.SignalR.Common": "3.1.0.0", - "Microsoft.AspNetCore.SignalR.Core": "3.1.0.0", - "Microsoft.AspNetCore.SignalR": "3.1.0.0", - "Microsoft.AspNetCore.SignalR.Protocols.Json": "3.1.0.0", - "Microsoft.AspNetCore.StaticFiles": "3.1.0.0", - "Microsoft.AspNetCore.WebSockets": "3.1.0.0", - "Microsoft.AspNetCore.WebUtilities.Reference": "3.1.0.0", - "Microsoft.CSharp.Reference": "4.0.0.0", - "Microsoft.Extensions.Caching.Abstractions": "3.1.0.0", - "Microsoft.Extensions.Caching.Memory": "3.1.0.0", - "Microsoft.Extensions.Configuration.Abstractions.Reference": "3.1.0.0", - "Microsoft.Extensions.Configuration.Binder": "3.1.0.0", - "Microsoft.Extensions.Configuration.CommandLine": "3.1.0.0", - "Microsoft.Extensions.Configuration": "3.1.0.0", - "Microsoft.Extensions.Configuration.EnvironmentVariables": "3.1.0.0", - "Microsoft.Extensions.Configuration.FileExtensions": "3.1.0.0", - "Microsoft.Extensions.Configuration.Ini": "3.1.0.0", - "Microsoft.Extensions.Configuration.Json": "3.1.0.0", - "Microsoft.Extensions.Configuration.KeyPerFile": "3.1.0.0", - "Microsoft.Extensions.Configuration.UserSecrets": "3.1.0.0", - "Microsoft.Extensions.Configuration.Xml": "3.1.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions.Reference": "3.1.0.0", - "Microsoft.Extensions.DependencyInjection": "3.1.0.0", - "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": "3.1.0.0", - "Microsoft.Extensions.Diagnostics.HealthChecks": "3.1.0.0", - "Microsoft.Extensions.FileProviders.Abstractions.Reference": "3.1.0.0", - "Microsoft.Extensions.FileProviders.Composite": "3.1.0.0", - "Microsoft.Extensions.FileProviders.Embedded": "3.1.0.0", - "Microsoft.Extensions.FileProviders.Physical": "3.1.0.0", - "Microsoft.Extensions.FileSystemGlobbing": "3.1.0.0", - "Microsoft.Extensions.Hosting.Abstractions.Reference": "3.1.0.0", - "Microsoft.Extensions.Hosting": "3.1.0.0", - "Microsoft.Extensions.Http": "3.1.0.0", - "Microsoft.Extensions.Identity.Core": "3.1.0.0", - "Microsoft.Extensions.Identity.Stores": "3.1.0.0", - "Microsoft.Extensions.Localization.Abstractions": "3.1.0.0", - "Microsoft.Extensions.Localization": "3.1.0.0", - "Microsoft.Extensions.Logging.Abstractions.Reference": "3.1.0.0", - "Microsoft.Extensions.Logging.Configuration": "3.1.0.0", - "Microsoft.Extensions.Logging.Console": "3.1.0.0", - "Microsoft.Extensions.Logging.Debug": "3.1.0.0", - "Microsoft.Extensions.Logging": "3.1.0.0", - "Microsoft.Extensions.Logging.EventLog": "3.1.0.0", - "Microsoft.Extensions.Logging.EventSource": "3.1.0.0", - "Microsoft.Extensions.Logging.TraceSource": "3.1.0.0", - "Microsoft.Extensions.ObjectPool.Reference": "3.1.0.0", - "Microsoft.Extensions.Options.ConfigurationExtensions": "3.1.0.0", - "Microsoft.Extensions.Options.DataAnnotations": "3.1.0.0", - "Microsoft.Extensions.Options.Reference": "3.1.0.0", - "Microsoft.Extensions.Primitives.Reference": "3.1.0.0", - "Microsoft.Extensions.WebEncoders.Reference": "3.1.0.0", - "Microsoft.JSInterop": "3.1.0.0", - "Microsoft.Net.Http.Headers.Reference": "3.1.0.0", - "Microsoft.VisualBasic.Core": "10.0.5.0", - "Microsoft.VisualBasic": "10.0.0.0", - "Microsoft.Win32.Primitives.Reference": "4.1.2.0", - "Microsoft.Win32.Registry.Reference": "4.1.3.0", - "mscorlib": "4.0.0.0", - "netstandard": "2.1.0.0", - "System.AppContext.Reference": "4.2.2.0", - "System.Buffers.Reference": "4.0.2.0", - "System.Collections.Concurrent.Reference": "4.0.15.0", - "System.Collections.Reference": "4.1.2.0", - "System.Collections.Immutable.Reference": "1.2.5.0", - "System.Collections.NonGeneric.Reference": "4.1.2.0", - "System.Collections.Specialized.Reference": "4.1.2.0", - "System.ComponentModel.Annotations.Reference": "4.3.1.0", - "System.ComponentModel.DataAnnotations": "4.0.0.0", - "System.ComponentModel.Reference": "4.0.4.0", - "System.ComponentModel.EventBasedAsync": "4.1.2.0", - "System.ComponentModel.Primitives.Reference": "4.2.2.0", - "System.ComponentModel.TypeConverter": "4.2.2.0", - "System.Configuration": "4.0.0.0", - "System.Console.Reference": "4.1.2.0", - "System.Core": "4.0.0.0", - "System.Data.Common.Reference": "4.2.2.0", - "System.Data.DataSetExtensions": "4.0.1.0", - "System.Data": "4.0.0.0", - "System.Diagnostics.Contracts.Reference": "4.0.4.0", - "System.Diagnostics.Debug.Reference": "4.1.2.0", - "System.Diagnostics.DiagnosticSource.Reference": "4.0.5.0", - "System.Diagnostics.EventLog": "4.0.2.0", - "System.Diagnostics.FileVersionInfo": "4.0.4.0", - "System.Diagnostics.Process": "4.2.2.0", - "System.Diagnostics.StackTrace": "4.1.2.0", - "System.Diagnostics.TextWriterTraceListener": "4.1.2.0", - "System.Diagnostics.Tools.Reference": "4.1.2.0", - "System.Diagnostics.TraceSource": "4.1.2.0", - "System.Diagnostics.Tracing.Reference": "4.2.2.0", - "System": "4.0.0.0", - "System.Drawing": "4.0.0.0", - "System.Drawing.Primitives": "4.2.1.0", - "System.Dynamic.Runtime.Reference": "4.1.2.0", - "System.Globalization.Calendars.Reference": "4.1.2.0", - "System.Globalization.Reference": "4.1.2.0", - "System.Globalization.Extensions.Reference": "4.1.2.0", - "System.IO.Compression.Brotli": "4.2.2.0", - "System.IO.Compression.Reference": "4.2.2.0", - "System.IO.Compression.FileSystem": "4.0.0.0", - "System.IO.Compression.ZipFile.Reference": "4.0.5.0", - "System.IO.Reference": "4.2.2.0", - "System.IO.FileSystem.Reference": "4.1.2.0", - "System.IO.FileSystem.DriveInfo": "4.1.2.0", - "System.IO.FileSystem.Primitives.Reference": "4.1.2.0", - "System.IO.FileSystem.Watcher": "4.1.2.0", - "System.IO.IsolatedStorage": "4.1.2.0", - "System.IO.MemoryMappedFiles": "4.1.2.0", - "System.IO.Pipelines": "4.0.2.0", - "System.IO.Pipes": "4.1.2.0", - "System.IO.UnmanagedMemoryStream": "4.1.2.0", - "System.Linq.Reference": "4.2.2.0", - "System.Linq.Expressions.Reference": "4.2.2.0", - "System.Linq.Parallel": "4.0.4.0", - "System.Linq.Queryable": "4.0.4.0", - "System.Memory.Reference": "4.2.1.0", - "System.Net": "4.0.0.0", - "System.Net.Http.Reference": "4.2.2.0", - "System.Net.HttpListener": "4.0.2.0", - "System.Net.Mail": "4.0.2.0", - "System.Net.NameResolution": "4.1.2.0", - "System.Net.NetworkInformation.Reference": "4.2.2.0", - "System.Net.Ping": "4.1.2.0", - "System.Net.Primitives.Reference": "4.1.2.0", - "System.Net.Requests.Reference": "4.1.2.0", - "System.Net.Security": "4.1.2.0", - "System.Net.ServicePoint": "4.0.2.0", - "System.Net.Sockets.Reference": "4.2.2.0", - "System.Net.WebClient": "4.0.2.0", - "System.Net.WebHeaderCollection.Reference": "4.1.2.0", - "System.Net.WebProxy": "4.0.2.0", - "System.Net.WebSockets.Client": "4.1.2.0", - "System.Net.WebSockets": "4.1.2.0", - "System.Numerics": "4.0.0.0", - "System.Numerics.Vectors": "4.1.6.0", - "System.ObjectModel.Reference": "4.1.2.0", - "System.Reflection.DispatchProxy": "4.0.6.0", - "System.Reflection.Reference": "4.2.2.0", - "System.Reflection.Emit.Reference": "4.1.2.0", - "System.Reflection.Emit.ILGeneration.Reference": "4.1.1.0", - "System.Reflection.Emit.Lightweight.Reference": "4.1.1.0", - "System.Reflection.Extensions.Reference": "4.1.2.0", - "System.Reflection.Metadata": "1.4.5.0", - "System.Reflection.Primitives.Reference": "4.1.2.0", - "System.Reflection.TypeExtensions.Reference": "4.1.2.0", - "System.Resources.Reader": "4.1.2.0", - "System.Resources.ResourceManager.Reference": "4.1.2.0", - "System.Resources.Writer": "4.1.2.0", - "System.Runtime.CompilerServices.Unsafe.Reference": "4.0.6.0", - "System.Runtime.CompilerServices.VisualC": "4.1.2.0", - "System.Runtime.Reference": "4.2.2.0", - "System.Runtime.Extensions.Reference": "4.2.2.0", - "System.Runtime.Handles.Reference": "4.1.2.0", - "System.Runtime.InteropServices.Reference": "4.2.2.0", - "System.Runtime.InteropServices.RuntimeInformation.Reference": "4.0.4.0", - "System.Runtime.InteropServices.WindowsRuntime": "4.0.4.0", - "System.Runtime.Intrinsics": "4.0.1.0", - "System.Runtime.Loader": "4.1.1.0", - "System.Runtime.Numerics.Reference": "4.1.2.0", - "System.Runtime.Serialization": "4.0.0.0", - "System.Runtime.Serialization.Formatters": "4.0.4.0", - "System.Runtime.Serialization.Json": "4.0.5.0", - "System.Runtime.Serialization.Primitives.Reference": "4.2.2.0", - "System.Runtime.Serialization.Xml.Reference": "4.1.5.0", - "System.Security.AccessControl.Reference": "4.1.1.0", - "System.Security.Claims.Reference": "4.1.2.0", - "System.Security.Cryptography.Algorithms.Reference": "4.3.2.0", - "System.Security.Cryptography.Cng.Reference": "4.3.3.0", - "System.Security.Cryptography.Csp.Reference": "4.1.2.0", - "System.Security.Cryptography.Encoding.Reference": "4.1.2.0", - "System.Security.Cryptography.Primitives.Reference": "4.1.2.0", - "System.Security.Cryptography.X509Certificates.Reference": "4.2.2.0", - "System.Security.Cryptography.Xml.Reference": "4.0.3.0", - "System.Security": "4.0.0.0", - "System.Security.Permissions.Reference": "4.0.3.0", - "System.Security.Principal.Reference": "4.1.2.0", - "System.Security.Principal.Windows.Reference": "4.1.1.0", - "System.Security.SecureString": "4.1.2.0", - "System.ServiceModel.Web": "4.0.0.0", - "System.ServiceProcess": "4.0.0.0", - "System.Text.Encoding.CodePages": "4.1.3.0", - "System.Text.Encoding.Reference": "4.1.2.0", - "System.Text.Encoding.Extensions.Reference": "4.1.2.0", - "System.Text.Encodings.Web.Reference": "4.0.5.0", - "System.Text.Json": "4.0.1.0", - "System.Text.RegularExpressions.Reference": "4.2.2.0", - "System.Threading.Channels": "4.0.2.0", - "System.Threading.Reference": "4.1.2.0", - "System.Threading.Overlapped.Reference": "4.1.2.0", - "System.Threading.Tasks.Dataflow": "4.6.5.0", - "System.Threading.Tasks.Reference": "4.1.2.0", - "System.Threading.Tasks.Extensions.Reference": "4.3.1.0", - "System.Threading.Tasks.Parallel": "4.0.4.0", - "System.Threading.Thread.Reference": "4.1.2.0", - "System.Threading.ThreadPool.Reference": "4.1.2.0", - "System.Threading.Timer.Reference": "4.1.2.0", - "System.Transactions": "4.0.0.0", - "System.Transactions.Local": "4.0.2.0", - "System.ValueTuple.Reference": "4.0.3.0", - "System.Web": "4.0.0.0", - "System.Web.HttpUtility": "4.0.2.0", - "System.Windows": "4.0.0.0", - "System.Windows.Extensions": "4.0.1.0", - "System.Xml": "4.0.0.0", - "System.Xml.Linq": "4.0.0.0", - "System.Xml.ReaderWriter.Reference": "4.2.2.0", - "System.Xml.Serialization": "4.0.0.0", - "System.Xml.XDocument.Reference": "4.1.2.0", - "System.Xml.XmlDocument.Reference": "4.1.2.0", - "System.Xml.XmlSerializer.Reference": "4.1.2.0", - "System.Xml.XPath": "4.1.2.0", - "System.Xml.XPath.XDocument": "4.1.2.0", - "WindowsBase": "4.0.0.0" - }, - "runtime": { - "BookingSystem.AspNetCore.dll": {} - }, - "compile": { - "BookingSystem.AspNetCore.dll": {} - } - }, - "Bogus/33.0.2": { - "runtime": { - "lib/netstandard2.0/Bogus.dll": { - "assemblyVersion": "33.0.2.0", - "fileVersion": "33.0.2.0" - } - }, - "compile": { - "lib/netstandard2.0/Bogus.dll": {} - } - }, - "Microsoft.AspNetCore.Authentication/2.1.2": { - "dependencies": { - "Microsoft.AspNetCore.Authentication.Core": "2.1.1", - "Microsoft.AspNetCore.DataProtection": "2.1.1", - "Microsoft.AspNetCore.Http": "2.1.1", - "Microsoft.AspNetCore.Http.Extensions": "2.1.1", - "Microsoft.Extensions.Logging.Abstractions": "2.1.1", - "Microsoft.Extensions.Options": "2.1.1", - "Microsoft.Extensions.WebEncoders": "2.1.1" - } - }, - "Microsoft.AspNetCore.Authentication.Abstractions/2.1.1": { - "dependencies": { - "Microsoft.AspNetCore.Http.Abstractions": "2.1.1", - "Microsoft.Extensions.Logging.Abstractions": "2.1.1", - "Microsoft.Extensions.Options": "2.1.1" - } - }, - "Microsoft.AspNetCore.Authentication.Core/2.1.1": { - "dependencies": { - "Microsoft.AspNetCore.Authentication.Abstractions": "2.1.1", - "Microsoft.AspNetCore.Http": "2.1.1", - "Microsoft.AspNetCore.Http.Extensions": "2.1.1" - } - }, - "Microsoft.AspNetCore.Authentication.JwtBearer/2.1.2": { - "dependencies": { - "Microsoft.AspNetCore.Authentication": "2.1.2", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "5.2.0" - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Authentication.JwtBearer.dll": { - "assemblyVersion": "2.1.2.0", - "fileVersion": "2.1.2.18207" - } - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.Authentication.JwtBearer.dll": {} - } - }, - "Microsoft.AspNetCore.Cryptography.Internal/2.1.1": {}, - "Microsoft.AspNetCore.DataProtection/2.1.1": { - "dependencies": { - "Microsoft.AspNetCore.Cryptography.Internal": "2.1.1", - "Microsoft.AspNetCore.DataProtection.Abstractions": "2.1.1", - "Microsoft.AspNetCore.Hosting.Abstractions": "2.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.1", - "Microsoft.Extensions.Logging.Abstractions": "2.1.1", - "Microsoft.Extensions.Options": "2.1.1", - "Microsoft.Win32.Registry": "4.5.0", - "System.Security.Cryptography.Xml": "4.5.0", - "System.Security.Principal.Windows": "4.5.0" - } - }, - "Microsoft.AspNetCore.DataProtection.Abstractions/2.1.1": {}, - "Microsoft.AspNetCore.Hosting.Abstractions/2.1.1": { - "dependencies": { - "Microsoft.AspNetCore.Hosting.Server.Abstractions": "2.1.1", - "Microsoft.AspNetCore.Http.Abstractions": "2.1.1", - "Microsoft.Extensions.Hosting.Abstractions": "2.1.1" - } - }, - "Microsoft.AspNetCore.Hosting.Server.Abstractions/2.1.1": { - "dependencies": { - "Microsoft.AspNetCore.Http.Features": "2.1.1", - "Microsoft.Extensions.Configuration.Abstractions": "2.1.1" - } - }, - "Microsoft.AspNetCore.Http/2.1.1": { - "dependencies": { - "Microsoft.AspNetCore.Http.Abstractions": "2.1.1", - "Microsoft.AspNetCore.WebUtilities": "2.1.1", - "Microsoft.Extensions.ObjectPool": "2.1.1", - "Microsoft.Extensions.Options": "2.1.1", - "Microsoft.Net.Http.Headers": "2.1.1" - } - }, - "Microsoft.AspNetCore.Http.Abstractions/2.1.1": { - "dependencies": { - "Microsoft.AspNetCore.Http.Features": "2.1.1", - "System.Text.Encodings.Web": "4.5.0" - } - }, - "Microsoft.AspNetCore.Http.Extensions/2.1.1": { - "dependencies": { - "Microsoft.AspNetCore.Http.Abstractions": "2.1.1", - "Microsoft.Extensions.FileProviders.Abstractions": "2.1.1", - "Microsoft.Net.Http.Headers": "2.1.1", - "System.Buffers": "4.5.0" - } - }, - "Microsoft.AspNetCore.Http.Features/2.1.1": { - "dependencies": { - "Microsoft.Extensions.Primitives": "2.1.1" - } - }, - "Microsoft.AspNetCore.WebUtilities/2.1.1": { - "dependencies": { - "Microsoft.Net.Http.Headers": "2.1.1", - "System.Text.Encodings.Web": "4.5.0" - } - }, - "Microsoft.Bcl.AsyncInterfaces/1.1.0": { - "runtime": { - "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { - "assemblyVersion": "1.0.0.0", - "fileVersion": "4.700.19.56404" - } - }, - "compile": { - "ref/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": {} - } - }, - "Microsoft.CSharp/4.7.0": {}, - "Microsoft.Extensions.Configuration.Abstractions/2.1.1": { - "dependencies": { - "Microsoft.Extensions.Primitives": "2.1.1" - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/2.1.1": {}, - "Microsoft.Extensions.FileProviders.Abstractions/2.1.1": { - "dependencies": { - "Microsoft.Extensions.Primitives": "2.1.1" - } - }, - "Microsoft.Extensions.Hosting.Abstractions/2.1.1": { - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "2.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.1", - "Microsoft.Extensions.FileProviders.Abstractions": "2.1.1", - "Microsoft.Extensions.Logging.Abstractions": "2.1.1" - } - }, - "Microsoft.Extensions.Logging.Abstractions/2.1.1": {}, - "Microsoft.Extensions.ObjectPool/2.1.1": {}, - "Microsoft.Extensions.Options/2.1.1": { - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.1", - "Microsoft.Extensions.Primitives": "2.1.1" - } - }, - "Microsoft.Extensions.Primitives/2.1.1": { - "dependencies": { - "System.Memory": "4.5.4", - "System.Runtime.CompilerServices.Unsafe": "4.5.1" - } - }, - "Microsoft.Extensions.WebEncoders/2.1.1": { - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.1", - "Microsoft.Extensions.Options": "2.1.1", - "System.Text.Encodings.Web": "4.5.0" - } - }, - "Microsoft.IdentityModel.Logging/5.2.0": { - "dependencies": { - "NETStandard.Library": "1.6.1", - "System.Diagnostics.Tracing": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.IO.FileSystem": "4.3.0" - }, - "runtime": { - "lib/netstandard1.4/Microsoft.IdentityModel.Logging.dll": { - "assemblyVersion": "5.2.0.0", - "fileVersion": "5.2.0.50129" - } - }, - "compile": { - "lib/netstandard1.4/Microsoft.IdentityModel.Logging.dll": {} - } - }, - "Microsoft.IdentityModel.Protocols/5.2.0": { - "dependencies": { - "Microsoft.IdentityModel.Logging": "5.2.0", - "Microsoft.IdentityModel.Tokens": "5.2.0", - "NETStandard.Library": "1.6.1", - "System.Collections.Specialized": "4.3.0", - "System.Diagnostics.Contracts": "4.3.0", - "System.Net.Http": "4.3.0" - }, - "runtime": { - "lib/netstandard1.4/Microsoft.IdentityModel.Protocols.dll": { - "assemblyVersion": "5.2.0.0", - "fileVersion": "5.2.0.50129" - } - }, - "compile": { - "lib/netstandard1.4/Microsoft.IdentityModel.Protocols.dll": {} - } - }, - "Microsoft.IdentityModel.Protocols.OpenIdConnect/5.2.0": { - "dependencies": { - "Microsoft.IdentityModel.Protocols": "5.2.0", - "NETStandard.Library": "1.6.1", - "Newtonsoft.Json": "12.0.3", - "System.Dynamic.Runtime": "4.3.0", - "System.IdentityModel.Tokens.Jwt": "5.2.0" - }, - "runtime": { - "lib/netstandard1.4/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll": { - "assemblyVersion": "5.2.0.0", - "fileVersion": "5.2.0.50129" - } - }, - "compile": { - "lib/netstandard1.4/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll": {} - } - }, - "Microsoft.IdentityModel.Tokens/5.2.0": { - "dependencies": { - "Microsoft.IdentityModel.Logging": "5.2.0", - "NETStandard.Library": "1.6.1", - "Newtonsoft.Json": "12.0.3", - "System.Collections": "4.3.0", - "System.Diagnostics.Tools": "4.3.0", - "System.Runtime": "4.3.1", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.InteropServices.RuntimeInformation": "4.3.0", - "System.Runtime.Serialization.Xml": "4.3.0", - "System.Security.Claims": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.X509Certificates": "4.3.0", - "System.Text.RegularExpressions": "4.3.0", - "System.Threading": "4.3.0" - }, - "runtime": { - "lib/netstandard1.4/Microsoft.IdentityModel.Tokens.dll": { - "assemblyVersion": "5.2.0.0", - "fileVersion": "5.2.0.50129" - } - }, - "compile": { - "lib/netstandard1.4/Microsoft.IdentityModel.Tokens.dll": {} - } - }, - "Microsoft.Net.Http.Headers/2.1.1": { - "dependencies": { - "Microsoft.Extensions.Primitives": "2.1.1", - "System.Buffers": "4.5.0" - } - }, - "Microsoft.NETCore.Platforms/2.0.0": {}, - "Microsoft.NETCore.Targets/1.1.3": {}, - "Microsoft.Win32.Primitives/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "Microsoft.NETCore.Targets": "1.1.3", - "System.Runtime": "4.3.1" - } - }, - "Microsoft.Win32.Registry/4.5.0": { - "dependencies": { - "System.Security.AccessControl": "4.5.0", - "System.Security.Principal.Windows": "4.5.0" - } - }, - "NETStandard.Library/1.6.1": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "Microsoft.Win32.Primitives": "4.3.0", - "System.AppContext": "4.3.0", - "System.Collections": "4.3.0", - "System.Collections.Concurrent": "4.3.0", - "System.Console": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.Tools": "4.3.0", - "System.Diagnostics.Tracing": "4.3.0", - "System.Globalization": "4.3.0", - "System.Globalization.Calendars": "4.3.0", - "System.IO": "4.3.0", - "System.IO.Compression": "4.3.0", - "System.IO.Compression.ZipFile": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Linq": "4.3.0", - "System.Linq.Expressions": "4.3.0", - "System.Net.Http": "4.3.0", - "System.Net.Primitives": "4.3.0", - "System.Net.Sockets": "4.3.0", - "System.ObjectModel": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.1", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.InteropServices.RuntimeInformation": "4.3.0", - "System.Runtime.Numerics": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Security.Cryptography.X509Certificates": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Text.Encoding.Extensions": "4.3.0", - "System.Text.RegularExpressions": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0", - "System.Threading.Timer": "4.3.0", - "System.Xml.ReaderWriter": "4.3.0", - "System.Xml.XDocument": "4.3.0" - } - }, - "Newtonsoft.Json/12.0.3": { - "runtime": { - "lib/netstandard2.0/Newtonsoft.Json.dll": { - "assemblyVersion": "12.0.0.0", - "fileVersion": "12.0.3.23909" - } - }, - "compile": { - "lib/netstandard2.0/Newtonsoft.Json.dll": {} - } - }, - "OpenActive.DatasetSite.NET/7.0.1": { - "dependencies": { - "OpenActive.NET": "15.2.21", - "Stubble.Core": "1.9.3", - "Stubble.Extensions.JsonNet": "1.2.3" - }, - "runtime": { - "lib/netstandard2.0/OpenActive.DatasetSite.NET.dll": { - "assemblyVersion": "7.0.0.0", - "fileVersion": "7.0.1.21267" - } - }, - "compile": { - "lib/netstandard2.0/OpenActive.DatasetSite.NET.dll": {} - } - }, - "OpenActive.NET/15.2.21": { - "dependencies": { - "Schema.NET": "7.0.1" - }, - "runtime": { - "lib/netstandard2.0/OpenActive.NET.dll": { - "assemblyVersion": "15.2.0.0", - "fileVersion": "15.2.21.36668" - } - }, - "compile": { - "lib/netstandard2.0/OpenActive.NET.dll": {} - } - }, - "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, - "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, - "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, - "runtime.native.System/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "Microsoft.NETCore.Targets": "1.1.3" - } - }, - "runtime.native.System.IO.Compression/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "Microsoft.NETCore.Targets": "1.1.3" - } - }, - "runtime.native.System.Net.Http/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "Microsoft.NETCore.Targets": "1.1.3" - } - }, - "runtime.native.System.Security.Cryptography.Apple/4.3.0": { - "dependencies": { - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "4.3.0" - } - }, - "runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "dependencies": { - "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - } - }, - "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, - "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": {}, - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, - "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, - "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, - "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, - "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, - "Schema.NET/7.0.1": { - "dependencies": { - "Newtonsoft.Json": "12.0.3", - "System.Memory": "4.5.4" - }, - "runtime": { - "lib/netstandard2.0/Schema.NET.dll": { - "assemblyVersion": "7.0.1.0", - "fileVersion": "7.0.1.0" - } - }, - "compile": { - "lib/netstandard2.0/Schema.NET.dll": {} - } - }, - "ServiceStack.Common.Core/5.11.0": { - "dependencies": { - "ServiceStack.Interfaces.Core": "5.11.0", - "ServiceStack.Text.Core": "5.11.0", - "System.ComponentModel.Primitives": "4.3.0", - "System.Data.Common": "4.3.0", - "System.Dynamic.Runtime": "4.3.0", - "System.Memory": "4.5.4", - "System.Net.NetworkInformation": "4.3.0", - "System.Net.Requests": "4.3.0", - "System.Reflection.TypeExtensions": "4.5.0", - "System.Runtime.Serialization.Primitives": "4.3.0" - }, - "runtime": { - "lib/netstandard2.0/ServiceStack.Common.dll": { - "assemblyVersion": "5.0.0.0", - "fileVersion": "5.11.0.0" - } - }, - "compile": { - "lib/netstandard2.0/ServiceStack.Common.dll": {} - } - }, - "ServiceStack.Interfaces.Core/5.11.0": { - "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "1.1.0", - "System.Runtime.Serialization.Primitives": "4.3.0", - "System.Threading.Tasks.Extensions": "4.5.4" - }, - "runtime": { - "lib/netstandard2.0/ServiceStack.Interfaces.dll": { - "assemblyVersion": "5.0.0.0", - "fileVersion": "5.11.0.0" - } - }, - "compile": { - "lib/netstandard2.0/ServiceStack.Interfaces.dll": {} - } - }, - "ServiceStack.OrmLite.Core/5.11.0": { - "dependencies": { - "ServiceStack.Common.Core": "5.11.0", - "System.Collections.NonGeneric": "4.3.0", - "System.ComponentModel.Annotations": "4.7.0", - "System.ComponentModel.Primitives": "4.3.0", - "System.Dynamic.Runtime": "4.3.0", - "System.Memory": "4.5.4", - "System.Reflection.Emit": "4.3.0", - "System.Reflection.Emit.Lightweight": "4.3.0", - "System.Reflection.TypeExtensions": "4.5.0", - "System.Xml.XmlDocument": "4.3.0" - }, - "runtime": { - "lib/netstandard2.0/ServiceStack.OrmLite.dll": { - "assemblyVersion": "5.0.0.0", - "fileVersion": "5.0.0.0" - } - }, - "compile": { - "lib/netstandard2.0/ServiceStack.OrmLite.dll": {} - } - }, - "ServiceStack.OrmLite.Sqlite.Core/5.11.0": { - "dependencies": { - "ServiceStack.Common.Core": "5.11.0", - "ServiceStack.OrmLite.Core": "5.11.0", - "System.Data.SQLite.Core": "1.0.113.7" - }, - "runtime": { - "lib/netstandard2.0/ServiceStack.OrmLite.Sqlite.dll": { - "assemblyVersion": "5.0.0.0", - "fileVersion": "5.0.0.0" - } - }, - "compile": { - "lib/netstandard2.0/ServiceStack.OrmLite.Sqlite.dll": {} - } - }, - "ServiceStack.Text.Core/5.11.0": { - "dependencies": { - "Microsoft.CSharp": "4.7.0", - "System.Memory": "4.5.4", - "System.Reflection.Emit": "4.3.0", - "System.Reflection.Emit.Lightweight": "4.3.0", - "System.Runtime": "4.3.1" - }, - "runtime": { - "lib/netcoreapp2.1/ServiceStack.Text.dll": { - "assemblyVersion": "5.0.0.0", - "fileVersion": "5.11.0.0" - } - }, - "compile": { - "lib/netcoreapp2.1/ServiceStack.Text.dll": {} - } - }, - "Stub.System.Data.SQLite.Core.NetStandard/1.0.113.2": { - "runtime": { - "lib/netstandard2.1/System.Data.SQLite.dll": { - "assemblyVersion": "1.0.113.0", - "fileVersion": "1.0.113.0" - } - }, - "runtimeTargets": { - "runtimes/linux-x64/native/SQLite.Interop.dll": { - "rid": "linux-x64", - "assetType": "native", - "fileVersion": "0.0.0.0" - }, - "runtimes/osx-x64/native/SQLite.Interop.dll": { - "rid": "osx-x64", - "assetType": "native", - "fileVersion": "0.0.0.0" - }, - "runtimes/win-x64/native/SQLite.Interop.dll": { - "rid": "win-x64", - "assetType": "native", - "fileVersion": "0.0.0.0" - }, - "runtimes/win-x86/native/SQLite.Interop.dll": { - "rid": "win-x86", - "assetType": "native", - "fileVersion": "0.0.0.0" - } - }, - "compile": { - "lib/netstandard2.1/System.Data.SQLite.dll": {} - } - }, - "Stubble.Core/1.9.3": { - "dependencies": { - "Microsoft.CSharp": "4.7.0", - "System.Collections.Immutable": "1.5.0", - "System.Threading.Tasks.Extensions": "4.5.4" - }, - "runtime": { - "lib/netstandard2.0/Stubble.Core.dll": { - "assemblyVersion": "1.9.0.0", - "fileVersion": "1.9.3.56947" - } - }, - "compile": { - "lib/netstandard2.0/Stubble.Core.dll": {} - } - }, - "Stubble.Extensions.JsonNet/1.2.3": { - "dependencies": { - "Newtonsoft.Json": "12.0.3", - "Stubble.Core": "1.9.3" - }, - "runtime": { - "lib/netstandard2.0/Stubble.Extensions.JsonNet.dll": { - "assemblyVersion": "1.2.0.0", - "fileVersion": "1.2.3.48882" - } - }, - "compile": { - "lib/netstandard2.0/Stubble.Extensions.JsonNet.dll": {} - } - }, - "System.AppContext/4.3.0": { - "dependencies": { - "System.Runtime": "4.3.1" - } - }, - "System.Buffers/4.5.0": {}, - "System.Collections/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "Microsoft.NETCore.Targets": "1.1.3", - "System.Runtime": "4.3.1" - } - }, - "System.Collections.Concurrent/4.3.0": { - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.Tracing": "4.3.0", - "System.Globalization": "4.3.0", - "System.Reflection": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.1", - "System.Runtime.Extensions": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.Collections.Immutable/1.5.0": {}, - "System.Collections.NonGeneric/4.3.0": { - "dependencies": { - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.1", - "System.Runtime.Extensions": "4.3.0", - "System.Threading": "4.3.0" - } - }, - "System.Collections.Specialized/4.3.0": { - "dependencies": { - "System.Collections.NonGeneric": "4.3.0", - "System.Globalization": "4.3.0", - "System.Globalization.Extensions": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.1", - "System.Runtime.Extensions": "4.3.0", - "System.Threading": "4.3.0" - } - }, - "System.ComponentModel/4.3.0": { - "dependencies": { - "System.Runtime": "4.3.1" - } - }, - "System.ComponentModel.Annotations/4.7.0": {}, - "System.ComponentModel.Primitives/4.3.0": { - "dependencies": { - "System.ComponentModel": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.1" - } - }, - "System.Console/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "Microsoft.NETCore.Targets": "1.1.3", - "System.IO": "4.3.0", - "System.Runtime": "4.3.1", - "System.Text.Encoding": "4.3.0" - } - }, - "System.Data.Common/4.3.0": { - "dependencies": { - "System.Collections": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.1", - "System.Runtime.Extensions": "4.3.0", - "System.Text.RegularExpressions": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.Data.SQLite.Core/1.0.113.7": { - "dependencies": { - "Stub.System.Data.SQLite.Core.NetStandard": "1.0.113.2" - } - }, - "System.Diagnostics.Contracts/4.3.0": { - "dependencies": { - "System.Runtime": "4.3.1" - } - }, - "System.Diagnostics.Debug/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "Microsoft.NETCore.Targets": "1.1.3", - "System.Runtime": "4.3.1" - } - }, - "System.Diagnostics.DiagnosticSource/4.3.0": { - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Tracing": "4.3.0", - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.1", - "System.Threading": "4.3.0" - } - }, - "System.Diagnostics.Tools/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "Microsoft.NETCore.Targets": "1.1.3", - "System.Runtime": "4.3.1" - } - }, - "System.Diagnostics.Tracing/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "Microsoft.NETCore.Targets": "1.1.3", - "System.Runtime": "4.3.1" - } - }, - "System.Dynamic.Runtime/4.3.0": { - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Linq": "4.3.0", - "System.Linq.Expressions": "4.3.0", - "System.ObjectModel": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Emit": "4.3.0", - "System.Reflection.Emit.ILGeneration": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Reflection.TypeExtensions": "4.5.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.1", - "System.Runtime.Extensions": "4.3.0", - "System.Threading": "4.3.0" - } - }, - "System.Globalization/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "Microsoft.NETCore.Targets": "1.1.3", - "System.Runtime": "4.3.1" - } - }, - "System.Globalization.Calendars/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "Microsoft.NETCore.Targets": "1.1.3", - "System.Globalization": "4.3.0", - "System.Runtime": "4.3.1" - } - }, - "System.Globalization.Extensions/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "System.Globalization": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.1", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.InteropServices": "4.3.0" - } - }, - "System.IdentityModel.Tokens.Jwt/5.2.0": { - "dependencies": { - "Microsoft.IdentityModel.Tokens": "5.2.0", - "NETStandard.Library": "1.6.1", - "Newtonsoft.Json": "12.0.3" - }, - "runtime": { - "lib/netstandard1.4/System.IdentityModel.Tokens.Jwt.dll": { - "assemblyVersion": "5.2.0.0", - "fileVersion": "5.2.0.50129" - } - }, - "compile": { - "lib/netstandard1.4/System.IdentityModel.Tokens.Jwt.dll": {} - } - }, - "System.IO/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "Microsoft.NETCore.Targets": "1.1.3", - "System.Runtime": "4.3.1", - "System.Text.Encoding": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.IO.Compression/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "System.Buffers": "4.5.0", - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.1", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0", - "runtime.native.System": "4.3.0", - "runtime.native.System.IO.Compression": "4.3.0" - } - }, - "System.IO.Compression.ZipFile/4.3.0": { - "dependencies": { - "System.Buffers": "4.5.0", - "System.IO": "4.3.0", - "System.IO.Compression": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.1", - "System.Runtime.Extensions": "4.3.0", - "System.Text.Encoding": "4.3.0" - } - }, - "System.IO.FileSystem/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "Microsoft.NETCore.Targets": "1.1.3", - "System.IO": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Runtime": "4.3.1", - "System.Runtime.Handles": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.IO.FileSystem.Primitives/4.3.0": { - "dependencies": { - "System.Runtime": "4.3.1" - } - }, - "System.Linq/4.3.0": { - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.1", - "System.Runtime.Extensions": "4.3.0" - } - }, - "System.Linq.Expressions/4.3.0": { - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Linq": "4.3.0", - "System.ObjectModel": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Emit": "4.3.0", - "System.Reflection.Emit.ILGeneration": "4.3.0", - "System.Reflection.Emit.Lightweight": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Reflection.TypeExtensions": "4.5.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.1", - "System.Runtime.Extensions": "4.3.0", - "System.Threading": "4.3.0" - } - }, - "System.Memory/4.5.4": {}, - "System.Net.Http/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.DiagnosticSource": "4.3.0", - "System.Diagnostics.Tracing": "4.3.0", - "System.Globalization": "4.3.0", - "System.Globalization.Extensions": "4.3.0", - "System.IO": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.Net.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.1", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.OpenSsl": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Security.Cryptography.X509Certificates": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0", - "runtime.native.System": "4.3.0", - "runtime.native.System.Net.Http": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - } - }, - "System.Net.NetworkInformation/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "Microsoft.Win32.Primitives": "4.3.0", - "System.Collections": "4.3.0", - "System.Diagnostics.Tracing": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Linq": "4.3.0", - "System.Net.Primitives": "4.3.0", - "System.Net.Sockets": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.1", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Security.Principal.Windows": "4.5.0", - "System.Threading": "4.3.0", - "System.Threading.Overlapped": "4.3.0", - "System.Threading.Tasks": "4.3.0", - "System.Threading.Thread": "4.3.0", - "System.Threading.ThreadPool": "4.3.0", - "runtime.native.System": "4.3.0" - } - }, - "System.Net.Primitives/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "Microsoft.NETCore.Targets": "1.1.3", - "System.Runtime": "4.3.1", - "System.Runtime.Handles": "4.3.0" - } - }, - "System.Net.Requests/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.Tracing": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Net.Http": "4.3.0", - "System.Net.Primitives": "4.3.0", - "System.Net.WebHeaderCollection": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.1", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.Net.Sockets/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "Microsoft.NETCore.Targets": "1.1.3", - "System.IO": "4.3.0", - "System.Net.Primitives": "4.3.0", - "System.Runtime": "4.3.1", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.Net.WebHeaderCollection/4.3.0": { - "dependencies": { - "System.Collections": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.1", - "System.Runtime.Extensions": "4.3.0" - } - }, - "System.ObjectModel/4.3.0": { - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.1", - "System.Threading": "4.3.0" - } - }, - "System.Private.DataContractSerialization/4.3.0": { - "dependencies": { - "System.Collections": "4.3.0", - "System.Collections.Concurrent": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Linq": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Emit.ILGeneration": "4.3.0", - "System.Reflection.Emit.Lightweight": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Reflection.TypeExtensions": "4.5.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.1", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Serialization.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Text.Encoding.Extensions": "4.3.0", - "System.Text.RegularExpressions": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0", - "System.Xml.ReaderWriter": "4.3.0", - "System.Xml.XDocument": "4.3.0", - "System.Xml.XmlDocument": "4.3.0", - "System.Xml.XmlSerializer": "4.3.0" - } - }, - "System.Reflection/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "Microsoft.NETCore.Targets": "1.1.3", - "System.IO": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.1" - } - }, - "System.Reflection.Emit/4.3.0": { - "dependencies": { - "System.IO": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Emit.ILGeneration": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.1" - } - }, - "System.Reflection.Emit.ILGeneration/4.3.0": { - "dependencies": { - "System.Reflection": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.1" - } - }, - "System.Reflection.Emit.Lightweight/4.3.0": { - "dependencies": { - "System.Reflection": "4.3.0", - "System.Reflection.Emit.ILGeneration": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.1" - } - }, - "System.Reflection.Extensions/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "Microsoft.NETCore.Targets": "1.1.3", - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.1" - } - }, - "System.Reflection.Primitives/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "Microsoft.NETCore.Targets": "1.1.3", - "System.Runtime": "4.3.1" - } - }, - "System.Reflection.TypeExtensions/4.5.0": {}, - "System.Resources.ResourceManager/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "Microsoft.NETCore.Targets": "1.1.3", - "System.Globalization": "4.3.0", - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.1" - } - }, - "System.Runtime/4.3.1": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "Microsoft.NETCore.Targets": "1.1.3" - } - }, - "System.Runtime.CompilerServices.Unsafe/4.5.1": {}, - "System.Runtime.Extensions/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "Microsoft.NETCore.Targets": "1.1.3", - "System.Runtime": "4.3.1" - } - }, - "System.Runtime.Handles/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "Microsoft.NETCore.Targets": "1.1.3", - "System.Runtime": "4.3.1" - } - }, - "System.Runtime.InteropServices/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "Microsoft.NETCore.Targets": "1.1.3", - "System.Reflection": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.1", - "System.Runtime.Handles": "4.3.0" - } - }, - "System.Runtime.InteropServices.RuntimeInformation/4.3.0": { - "dependencies": { - "System.Reflection": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.1", - "System.Runtime.InteropServices": "4.3.0", - "System.Threading": "4.3.0", - "runtime.native.System": "4.3.0" - } - }, - "System.Runtime.Numerics/4.3.0": { - "dependencies": { - "System.Globalization": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.1", - "System.Runtime.Extensions": "4.3.0" - } - }, - "System.Runtime.Serialization.Primitives/4.3.0": { - "dependencies": { - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.1" - } - }, - "System.Runtime.Serialization.Xml/4.3.0": { - "dependencies": { - "System.IO": "4.3.0", - "System.Private.DataContractSerialization": "4.3.0", - "System.Runtime": "4.3.1", - "System.Runtime.Serialization.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Xml.ReaderWriter": "4.3.0" - } - }, - "System.Security.AccessControl/4.5.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "System.Security.Principal.Windows": "4.5.0" - } - }, - "System.Security.Claims/4.3.0": { - "dependencies": { - "System.Collections": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.1", - "System.Runtime.Extensions": "4.3.0", - "System.Security.Principal": "4.3.0" - } - }, - "System.Security.Cryptography.Algorithms/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "System.Collections": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.1", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.Numerics": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "runtime.native.System.Security.Cryptography.Apple": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - } - }, - "System.Security.Cryptography.Cng/4.5.0": {}, - "System.Security.Cryptography.Csp/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "System.IO": "4.3.0", - "System.Reflection": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.1", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0" - } - }, - "System.Security.Cryptography.Encoding/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "System.Collections": "4.3.0", - "System.Collections.Concurrent": "4.3.0", - "System.Linq": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.1", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - } - }, - "System.Security.Cryptography.OpenSsl/4.3.0": { - "dependencies": { - "System.Collections": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.1", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.Numerics": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - } - }, - "System.Security.Cryptography.Pkcs/4.5.0": { - "dependencies": { - "System.Security.Cryptography.Cng": "4.5.0" - } - }, - "System.Security.Cryptography.Primitives/4.3.0": { - "dependencies": { - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.1", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.Security.Cryptography.X509Certificates/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.Globalization.Calendars": "4.3.0", - "System.IO": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.1", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.Numerics": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Cng": "4.5.0", - "System.Security.Cryptography.Csp": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.OpenSsl": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0", - "runtime.native.System": "4.3.0", - "runtime.native.System.Net.Http": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - } - }, - "System.Security.Cryptography.Xml/4.5.0": { - "dependencies": { - "System.Security.Cryptography.Pkcs": "4.5.0", - "System.Security.Permissions": "4.5.0" - } - }, - "System.Security.Permissions/4.5.0": { - "dependencies": { - "System.Security.AccessControl": "4.5.0" - } - }, - "System.Security.Principal/4.3.0": { - "dependencies": { - "System.Runtime": "4.3.1" - } - }, - "System.Security.Principal.Windows/4.5.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0" - } - }, - "System.Text.Encoding/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "Microsoft.NETCore.Targets": "1.1.3", - "System.Runtime": "4.3.1" - } - }, - "System.Text.Encoding.Extensions/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "Microsoft.NETCore.Targets": "1.1.3", - "System.Runtime": "4.3.1", - "System.Text.Encoding": "4.3.0" - } - }, - "System.Text.Encodings.Web/4.5.0": {}, - "System.Text.RegularExpressions/4.3.0": { - "dependencies": { - "System.Runtime": "4.3.1" - } - }, - "System.Threading/4.3.0": { - "dependencies": { - "System.Runtime": "4.3.1", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.Threading.Overlapped/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.1", - "System.Runtime.Handles": "4.3.0" - } - }, - "System.Threading.Tasks/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "Microsoft.NETCore.Targets": "1.1.3", - "System.Runtime": "4.3.1" - } - }, - "System.Threading.Tasks.Extensions/4.5.4": {}, - "System.Threading.Thread/4.3.0": { - "dependencies": { - "System.Runtime": "4.3.1" - } - }, - "System.Threading.ThreadPool/4.3.0": { - "dependencies": { - "System.Runtime": "4.3.1", - "System.Runtime.Handles": "4.3.0" - } - }, - "System.Threading.Timer/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "Microsoft.NETCore.Targets": "1.1.3", - "System.Runtime": "4.3.1" - } - }, - "System.ValueTuple/4.5.0": {}, - "System.Xml.ReaderWriter/4.3.0": { - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.1", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Text.Encoding.Extensions": "4.3.0", - "System.Text.RegularExpressions": "4.3.0", - "System.Threading.Tasks": "4.3.0", - "System.Threading.Tasks.Extensions": "4.5.4" - } - }, - "System.Xml.XDocument/4.3.0": { - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.Tools": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Reflection": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.1", - "System.Runtime.Extensions": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0", - "System.Xml.ReaderWriter": "4.3.0" - } - }, - "System.Xml.XmlDocument/4.3.0": { - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.1", - "System.Runtime.Extensions": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0", - "System.Xml.ReaderWriter": "4.3.0" - } - }, - "System.Xml.XmlSerializer/4.3.0": { - "dependencies": { - "System.Collections": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Linq": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Emit": "4.3.0", - "System.Reflection.Emit.ILGeneration": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Reflection.TypeExtensions": "4.5.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.1", - "System.Runtime.Extensions": "4.3.0", - "System.Text.RegularExpressions": "4.3.0", - "System.Threading": "4.3.0", - "System.Xml.ReaderWriter": "4.3.0", - "System.Xml.XmlDocument": "4.3.0" - } - }, - "UriTemplate.Core/1.0.2": { - "dependencies": { - "NETStandard.Library": "1.6.1" - }, - "runtime": { - "lib/netstandard1.6/UriTemplate.Core.dll": { - "assemblyVersion": "1.0.2.0", - "fileVersion": "1.0.2.0" - } - }, - "compile": { - "lib/netstandard1.6/UriTemplate.Core.dll": {} - } - }, - "OpenActive.FakeDatabase.NET/0.11.0": { - "dependencies": { - "Bogus": "33.0.2", - "Newtonsoft.Json": "12.0.3", - "OpenActive.NET": "15.2.21", - "ServiceStack.OrmLite.Sqlite.Core": "5.11.0", - "System.ValueTuple": "4.5.0" - }, - "runtime": { - "OpenActive.FakeDatabase.NET.dll": {} - }, - "compile": { - "OpenActive.FakeDatabase.NET.dll": {} - } - }, - "OpenActive.Server.NET/0.11.0": { - "dependencies": { - "OpenActive.DatasetSite.NET": "7.0.1", - "OpenActive.NET": "15.2.21", - "UriTemplate.Core": "1.0.2" - }, - "runtime": { - "OpenActive.Server.NET.dll": {} - }, - "compile": { - "OpenActive.Server.NET.dll": {} - } - }, - "Microsoft.AspNetCore.Antiforgery/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Antiforgery.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Authentication.Abstractions.Reference/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Authentication.Abstractions.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Authentication.Cookies/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Authentication.Cookies.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Authentication.Core.Reference/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Authentication.Core.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Authentication.Reference/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Authentication.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Authentication.OAuth/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Authentication.OAuth.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Authorization/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Authorization.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Authorization.Policy/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Authorization.Policy.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Components.Authorization/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Components.Authorization.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Components/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Components.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Components.Forms/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Components.Forms.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Components.Server/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Components.Server.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Components.Web/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Components.Web.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Connections.Abstractions/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Connections.Abstractions.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.CookiePolicy/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.CookiePolicy.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Cors/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Cors.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Cryptography.Internal.Reference/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Cryptography.Internal.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Cryptography.KeyDerivation/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Cryptography.KeyDerivation.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.DataProtection.Abstractions.Reference/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.DataProtection.Abstractions.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.DataProtection.Reference/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.DataProtection.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.DataProtection.Extensions/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.DataProtection.Extensions.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Diagnostics.Abstractions/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Diagnostics.Abstractions.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Diagnostics/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Diagnostics.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Diagnostics.HealthChecks/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Diagnostics.HealthChecks.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.HostFiltering/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.HostFiltering.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Hosting.Abstractions.Reference/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Hosting.Abstractions.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Hosting/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Hosting.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Hosting.Server.Abstractions.Reference/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Hosting.Server.Abstractions.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Html.Abstractions/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Html.Abstractions.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Http.Abstractions.Reference/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Http.Abstractions.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Http.Connections.Common/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Http.Connections.Common.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Http.Connections/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Http.Connections.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Http.Reference/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Http.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Http.Extensions.Reference/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Http.Extensions.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Http.Features.Reference/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Http.Features.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.HttpOverrides/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.HttpOverrides.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.HttpsPolicy/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.HttpsPolicy.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Identity/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Identity.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Localization/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Localization.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Localization.Routing/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Localization.Routing.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Metadata/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Metadata.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Mvc.Abstractions/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Mvc.Abstractions.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Mvc.ApiExplorer/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Mvc.ApiExplorer.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Mvc.Core/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Mvc.Core.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Mvc.Cors/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Mvc.Cors.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Mvc.DataAnnotations/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Mvc.DataAnnotations.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Mvc/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Mvc.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Mvc.Formatters.Json/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Mvc.Formatters.Json.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Mvc.Formatters.Xml/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Mvc.Formatters.Xml.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Mvc.Localization/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Mvc.Localization.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Mvc.Razor/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Mvc.Razor.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Mvc.RazorPages/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Mvc.RazorPages.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Mvc.TagHelpers/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Mvc.TagHelpers.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Mvc.ViewFeatures/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Mvc.ViewFeatures.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Razor/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Razor.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Razor.Runtime/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Razor.Runtime.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.ResponseCaching.Abstractions/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.ResponseCaching.Abstractions.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.ResponseCaching/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.ResponseCaching.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.ResponseCompression/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.ResponseCompression.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Rewrite/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Rewrite.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Routing.Abstractions/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Routing.Abstractions.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Routing/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Routing.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Server.HttpSys/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Server.HttpSys.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Server.IIS/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Server.IIS.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Server.IISIntegration/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Server.IISIntegration.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Server.Kestrel.Core/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Server.Kestrel.Core.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Server.Kestrel/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Server.Kestrel.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.Session/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.Session.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.SignalR.Common/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.SignalR.Common.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.SignalR.Core/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.SignalR.Core.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.SignalR/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.SignalR.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.SignalR.Protocols.Json/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.SignalR.Protocols.Json.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.StaticFiles/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.StaticFiles.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.WebSockets/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.WebSockets.dll": {} - }, - "compileOnly": true - }, - "Microsoft.AspNetCore.WebUtilities.Reference/3.1.0.0": { - "compile": { - "Microsoft.AspNetCore.WebUtilities.dll": {} - }, - "compileOnly": true - }, - "Microsoft.CSharp.Reference/4.0.0.0": { - "compile": { - "Microsoft.CSharp.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.Caching.Abstractions/3.1.0.0": { - "compile": { - "Microsoft.Extensions.Caching.Abstractions.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.Caching.Memory/3.1.0.0": { - "compile": { - "Microsoft.Extensions.Caching.Memory.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.Configuration.Abstractions.Reference/3.1.0.0": { - "compile": { - "Microsoft.Extensions.Configuration.Abstractions.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.Configuration.Binder/3.1.0.0": { - "compile": { - "Microsoft.Extensions.Configuration.Binder.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.Configuration.CommandLine/3.1.0.0": { - "compile": { - "Microsoft.Extensions.Configuration.CommandLine.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.Configuration/3.1.0.0": { - "compile": { - "Microsoft.Extensions.Configuration.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.Configuration.EnvironmentVariables/3.1.0.0": { - "compile": { - "Microsoft.Extensions.Configuration.EnvironmentVariables.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.Configuration.FileExtensions/3.1.0.0": { - "compile": { - "Microsoft.Extensions.Configuration.FileExtensions.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.Configuration.Ini/3.1.0.0": { - "compile": { - "Microsoft.Extensions.Configuration.Ini.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.Configuration.Json/3.1.0.0": { - "compile": { - "Microsoft.Extensions.Configuration.Json.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.Configuration.KeyPerFile/3.1.0.0": { - "compile": { - "Microsoft.Extensions.Configuration.KeyPerFile.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.Configuration.UserSecrets/3.1.0.0": { - "compile": { - "Microsoft.Extensions.Configuration.UserSecrets.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.Configuration.Xml/3.1.0.0": { - "compile": { - "Microsoft.Extensions.Configuration.Xml.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.DependencyInjection.Abstractions.Reference/3.1.0.0": { - "compile": { - "Microsoft.Extensions.DependencyInjection.Abstractions.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.DependencyInjection/3.1.0.0": { - "compile": { - "Microsoft.Extensions.DependencyInjection.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions/3.1.0.0": { - "compile": { - "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.Diagnostics.HealthChecks/3.1.0.0": { - "compile": { - "Microsoft.Extensions.Diagnostics.HealthChecks.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.FileProviders.Abstractions.Reference/3.1.0.0": { - "compile": { - "Microsoft.Extensions.FileProviders.Abstractions.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.FileProviders.Composite/3.1.0.0": { - "compile": { - "Microsoft.Extensions.FileProviders.Composite.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.FileProviders.Embedded/3.1.0.0": { - "compile": { - "Microsoft.Extensions.FileProviders.Embedded.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.FileProviders.Physical/3.1.0.0": { - "compile": { - "Microsoft.Extensions.FileProviders.Physical.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.FileSystemGlobbing/3.1.0.0": { - "compile": { - "Microsoft.Extensions.FileSystemGlobbing.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.Hosting.Abstractions.Reference/3.1.0.0": { - "compile": { - "Microsoft.Extensions.Hosting.Abstractions.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.Hosting/3.1.0.0": { - "compile": { - "Microsoft.Extensions.Hosting.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.Http/3.1.0.0": { - "compile": { - "Microsoft.Extensions.Http.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.Identity.Core/3.1.0.0": { - "compile": { - "Microsoft.Extensions.Identity.Core.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.Identity.Stores/3.1.0.0": { - "compile": { - "Microsoft.Extensions.Identity.Stores.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.Localization.Abstractions/3.1.0.0": { - "compile": { - "Microsoft.Extensions.Localization.Abstractions.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.Localization/3.1.0.0": { - "compile": { - "Microsoft.Extensions.Localization.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.Logging.Abstractions.Reference/3.1.0.0": { - "compile": { - "Microsoft.Extensions.Logging.Abstractions.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.Logging.Configuration/3.1.0.0": { - "compile": { - "Microsoft.Extensions.Logging.Configuration.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.Logging.Console/3.1.0.0": { - "compile": { - "Microsoft.Extensions.Logging.Console.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.Logging.Debug/3.1.0.0": { - "compile": { - "Microsoft.Extensions.Logging.Debug.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.Logging/3.1.0.0": { - "compile": { - "Microsoft.Extensions.Logging.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.Logging.EventLog/3.1.0.0": { - "compile": { - "Microsoft.Extensions.Logging.EventLog.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.Logging.EventSource/3.1.0.0": { - "compile": { - "Microsoft.Extensions.Logging.EventSource.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.Logging.TraceSource/3.1.0.0": { - "compile": { - "Microsoft.Extensions.Logging.TraceSource.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.ObjectPool.Reference/3.1.0.0": { - "compile": { - "Microsoft.Extensions.ObjectPool.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.Options.ConfigurationExtensions/3.1.0.0": { - "compile": { - "Microsoft.Extensions.Options.ConfigurationExtensions.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.Options.DataAnnotations/3.1.0.0": { - "compile": { - "Microsoft.Extensions.Options.DataAnnotations.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.Options.Reference/3.1.0.0": { - "compile": { - "Microsoft.Extensions.Options.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.Primitives.Reference/3.1.0.0": { - "compile": { - "Microsoft.Extensions.Primitives.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Extensions.WebEncoders.Reference/3.1.0.0": { - "compile": { - "Microsoft.Extensions.WebEncoders.dll": {} - }, - "compileOnly": true - }, - "Microsoft.JSInterop/3.1.0.0": { - "compile": { - "Microsoft.JSInterop.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Net.Http.Headers.Reference/3.1.0.0": { - "compile": { - "Microsoft.Net.Http.Headers.dll": {} - }, - "compileOnly": true - }, - "Microsoft.VisualBasic.Core/10.0.5.0": { - "compile": { - "Microsoft.VisualBasic.Core.dll": {} - }, - "compileOnly": true - }, - "Microsoft.VisualBasic/10.0.0.0": { - "compile": { - "Microsoft.VisualBasic.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Win32.Primitives.Reference/4.1.2.0": { - "compile": { - "Microsoft.Win32.Primitives.dll": {} - }, - "compileOnly": true - }, - "Microsoft.Win32.Registry.Reference/4.1.3.0": { - "compile": { - "Microsoft.Win32.Registry.dll": {} - }, - "compileOnly": true - }, - "mscorlib/4.0.0.0": { - "compile": { - "mscorlib.dll": {} - }, - "compileOnly": true - }, - "netstandard/2.1.0.0": { - "compile": { - "netstandard.dll": {} - }, - "compileOnly": true - }, - "System.AppContext.Reference/4.2.2.0": { - "compile": { - "System.AppContext.dll": {} - }, - "compileOnly": true - }, - "System.Buffers.Reference/4.0.2.0": { - "compile": { - "System.Buffers.dll": {} - }, - "compileOnly": true - }, - "System.Collections.Concurrent.Reference/4.0.15.0": { - "compile": { - "System.Collections.Concurrent.dll": {} - }, - "compileOnly": true - }, - "System.Collections.Reference/4.1.2.0": { - "compile": { - "System.Collections.dll": {} - }, - "compileOnly": true - }, - "System.Collections.Immutable.Reference/1.2.5.0": { - "compile": { - "System.Collections.Immutable.dll": {} - }, - "compileOnly": true - }, - "System.Collections.NonGeneric.Reference/4.1.2.0": { - "compile": { - "System.Collections.NonGeneric.dll": {} - }, - "compileOnly": true - }, - "System.Collections.Specialized.Reference/4.1.2.0": { - "compile": { - "System.Collections.Specialized.dll": {} - }, - "compileOnly": true - }, - "System.ComponentModel.Annotations.Reference/4.3.1.0": { - "compile": { - "System.ComponentModel.Annotations.dll": {} - }, - "compileOnly": true - }, - "System.ComponentModel.DataAnnotations/4.0.0.0": { - "compile": { - "System.ComponentModel.DataAnnotations.dll": {} - }, - "compileOnly": true - }, - "System.ComponentModel.Reference/4.0.4.0": { - "compile": { - "System.ComponentModel.dll": {} - }, - "compileOnly": true - }, - "System.ComponentModel.EventBasedAsync/4.1.2.0": { - "compile": { - "System.ComponentModel.EventBasedAsync.dll": {} - }, - "compileOnly": true - }, - "System.ComponentModel.Primitives.Reference/4.2.2.0": { - "compile": { - "System.ComponentModel.Primitives.dll": {} - }, - "compileOnly": true - }, - "System.ComponentModel.TypeConverter/4.2.2.0": { - "compile": { - "System.ComponentModel.TypeConverter.dll": {} - }, - "compileOnly": true - }, - "System.Configuration/4.0.0.0": { - "compile": { - "System.Configuration.dll": {} - }, - "compileOnly": true - }, - "System.Console.Reference/4.1.2.0": { - "compile": { - "System.Console.dll": {} - }, - "compileOnly": true - }, - "System.Core/4.0.0.0": { - "compile": { - "System.Core.dll": {} - }, - "compileOnly": true - }, - "System.Data.Common.Reference/4.2.2.0": { - "compile": { - "System.Data.Common.dll": {} - }, - "compileOnly": true - }, - "System.Data.DataSetExtensions/4.0.1.0": { - "compile": { - "System.Data.DataSetExtensions.dll": {} - }, - "compileOnly": true - }, - "System.Data/4.0.0.0": { - "compile": { - "System.Data.dll": {} - }, - "compileOnly": true - }, - "System.Diagnostics.Contracts.Reference/4.0.4.0": { - "compile": { - "System.Diagnostics.Contracts.dll": {} - }, - "compileOnly": true - }, - "System.Diagnostics.Debug.Reference/4.1.2.0": { - "compile": { - "System.Diagnostics.Debug.dll": {} - }, - "compileOnly": true - }, - "System.Diagnostics.DiagnosticSource.Reference/4.0.5.0": { - "compile": { - "System.Diagnostics.DiagnosticSource.dll": {} - }, - "compileOnly": true - }, - "System.Diagnostics.EventLog/4.0.2.0": { - "compile": { - "System.Diagnostics.EventLog.dll": {} - }, - "compileOnly": true - }, - "System.Diagnostics.FileVersionInfo/4.0.4.0": { - "compile": { - "System.Diagnostics.FileVersionInfo.dll": {} - }, - "compileOnly": true - }, - "System.Diagnostics.Process/4.2.2.0": { - "compile": { - "System.Diagnostics.Process.dll": {} - }, - "compileOnly": true - }, - "System.Diagnostics.StackTrace/4.1.2.0": { - "compile": { - "System.Diagnostics.StackTrace.dll": {} - }, - "compileOnly": true - }, - "System.Diagnostics.TextWriterTraceListener/4.1.2.0": { - "compile": { - "System.Diagnostics.TextWriterTraceListener.dll": {} - }, - "compileOnly": true - }, - "System.Diagnostics.Tools.Reference/4.1.2.0": { - "compile": { - "System.Diagnostics.Tools.dll": {} - }, - "compileOnly": true - }, - "System.Diagnostics.TraceSource/4.1.2.0": { - "compile": { - "System.Diagnostics.TraceSource.dll": {} - }, - "compileOnly": true - }, - "System.Diagnostics.Tracing.Reference/4.2.2.0": { - "compile": { - "System.Diagnostics.Tracing.dll": {} - }, - "compileOnly": true - }, - "System/4.0.0.0": { - "compile": { - "System.dll": {} - }, - "compileOnly": true - }, - "System.Drawing/4.0.0.0": { - "compile": { - "System.Drawing.dll": {} - }, - "compileOnly": true - }, - "System.Drawing.Primitives/4.2.1.0": { - "compile": { - "System.Drawing.Primitives.dll": {} - }, - "compileOnly": true - }, - "System.Dynamic.Runtime.Reference/4.1.2.0": { - "compile": { - "System.Dynamic.Runtime.dll": {} - }, - "compileOnly": true - }, - "System.Globalization.Calendars.Reference/4.1.2.0": { - "compile": { - "System.Globalization.Calendars.dll": {} - }, - "compileOnly": true - }, - "System.Globalization.Reference/4.1.2.0": { - "compile": { - "System.Globalization.dll": {} - }, - "compileOnly": true - }, - "System.Globalization.Extensions.Reference/4.1.2.0": { - "compile": { - "System.Globalization.Extensions.dll": {} - }, - "compileOnly": true - }, - "System.IO.Compression.Brotli/4.2.2.0": { - "compile": { - "System.IO.Compression.Brotli.dll": {} - }, - "compileOnly": true - }, - "System.IO.Compression.Reference/4.2.2.0": { - "compile": { - "System.IO.Compression.dll": {} - }, - "compileOnly": true - }, - "System.IO.Compression.FileSystem/4.0.0.0": { - "compile": { - "System.IO.Compression.FileSystem.dll": {} - }, - "compileOnly": true - }, - "System.IO.Compression.ZipFile.Reference/4.0.5.0": { - "compile": { - "System.IO.Compression.ZipFile.dll": {} - }, - "compileOnly": true - }, - "System.IO.Reference/4.2.2.0": { - "compile": { - "System.IO.dll": {} - }, - "compileOnly": true - }, - "System.IO.FileSystem.Reference/4.1.2.0": { - "compile": { - "System.IO.FileSystem.dll": {} - }, - "compileOnly": true - }, - "System.IO.FileSystem.DriveInfo/4.1.2.0": { - "compile": { - "System.IO.FileSystem.DriveInfo.dll": {} - }, - "compileOnly": true - }, - "System.IO.FileSystem.Primitives.Reference/4.1.2.0": { - "compile": { - "System.IO.FileSystem.Primitives.dll": {} - }, - "compileOnly": true - }, - "System.IO.FileSystem.Watcher/4.1.2.0": { - "compile": { - "System.IO.FileSystem.Watcher.dll": {} - }, - "compileOnly": true - }, - "System.IO.IsolatedStorage/4.1.2.0": { - "compile": { - "System.IO.IsolatedStorage.dll": {} - }, - "compileOnly": true - }, - "System.IO.MemoryMappedFiles/4.1.2.0": { - "compile": { - "System.IO.MemoryMappedFiles.dll": {} - }, - "compileOnly": true - }, - "System.IO.Pipelines/4.0.2.0": { - "compile": { - "System.IO.Pipelines.dll": {} - }, - "compileOnly": true - }, - "System.IO.Pipes/4.1.2.0": { - "compile": { - "System.IO.Pipes.dll": {} - }, - "compileOnly": true - }, - "System.IO.UnmanagedMemoryStream/4.1.2.0": { - "compile": { - "System.IO.UnmanagedMemoryStream.dll": {} - }, - "compileOnly": true - }, - "System.Linq.Reference/4.2.2.0": { - "compile": { - "System.Linq.dll": {} - }, - "compileOnly": true - }, - "System.Linq.Expressions.Reference/4.2.2.0": { - "compile": { - "System.Linq.Expressions.dll": {} - }, - "compileOnly": true - }, - "System.Linq.Parallel/4.0.4.0": { - "compile": { - "System.Linq.Parallel.dll": {} - }, - "compileOnly": true - }, - "System.Linq.Queryable/4.0.4.0": { - "compile": { - "System.Linq.Queryable.dll": {} - }, - "compileOnly": true - }, - "System.Memory.Reference/4.2.1.0": { - "compile": { - "System.Memory.dll": {} - }, - "compileOnly": true - }, - "System.Net/4.0.0.0": { - "compile": { - "System.Net.dll": {} - }, - "compileOnly": true - }, - "System.Net.Http.Reference/4.2.2.0": { - "compile": { - "System.Net.Http.dll": {} - }, - "compileOnly": true - }, - "System.Net.HttpListener/4.0.2.0": { - "compile": { - "System.Net.HttpListener.dll": {} - }, - "compileOnly": true - }, - "System.Net.Mail/4.0.2.0": { - "compile": { - "System.Net.Mail.dll": {} - }, - "compileOnly": true - }, - "System.Net.NameResolution/4.1.2.0": { - "compile": { - "System.Net.NameResolution.dll": {} - }, - "compileOnly": true - }, - "System.Net.NetworkInformation.Reference/4.2.2.0": { - "compile": { - "System.Net.NetworkInformation.dll": {} - }, - "compileOnly": true - }, - "System.Net.Ping/4.1.2.0": { - "compile": { - "System.Net.Ping.dll": {} - }, - "compileOnly": true - }, - "System.Net.Primitives.Reference/4.1.2.0": { - "compile": { - "System.Net.Primitives.dll": {} - }, - "compileOnly": true - }, - "System.Net.Requests.Reference/4.1.2.0": { - "compile": { - "System.Net.Requests.dll": {} - }, - "compileOnly": true - }, - "System.Net.Security/4.1.2.0": { - "compile": { - "System.Net.Security.dll": {} - }, - "compileOnly": true - }, - "System.Net.ServicePoint/4.0.2.0": { - "compile": { - "System.Net.ServicePoint.dll": {} - }, - "compileOnly": true - }, - "System.Net.Sockets.Reference/4.2.2.0": { - "compile": { - "System.Net.Sockets.dll": {} - }, - "compileOnly": true - }, - "System.Net.WebClient/4.0.2.0": { - "compile": { - "System.Net.WebClient.dll": {} - }, - "compileOnly": true - }, - "System.Net.WebHeaderCollection.Reference/4.1.2.0": { - "compile": { - "System.Net.WebHeaderCollection.dll": {} - }, - "compileOnly": true - }, - "System.Net.WebProxy/4.0.2.0": { - "compile": { - "System.Net.WebProxy.dll": {} - }, - "compileOnly": true - }, - "System.Net.WebSockets.Client/4.1.2.0": { - "compile": { - "System.Net.WebSockets.Client.dll": {} - }, - "compileOnly": true - }, - "System.Net.WebSockets/4.1.2.0": { - "compile": { - "System.Net.WebSockets.dll": {} - }, - "compileOnly": true - }, - "System.Numerics/4.0.0.0": { - "compile": { - "System.Numerics.dll": {} - }, - "compileOnly": true - }, - "System.Numerics.Vectors/4.1.6.0": { - "compile": { - "System.Numerics.Vectors.dll": {} - }, - "compileOnly": true - }, - "System.ObjectModel.Reference/4.1.2.0": { - "compile": { - "System.ObjectModel.dll": {} - }, - "compileOnly": true - }, - "System.Reflection.DispatchProxy/4.0.6.0": { - "compile": { - "System.Reflection.DispatchProxy.dll": {} - }, - "compileOnly": true - }, - "System.Reflection.Reference/4.2.2.0": { - "compile": { - "System.Reflection.dll": {} - }, - "compileOnly": true - }, - "System.Reflection.Emit.Reference/4.1.2.0": { - "compile": { - "System.Reflection.Emit.dll": {} - }, - "compileOnly": true - }, - "System.Reflection.Emit.ILGeneration.Reference/4.1.1.0": { - "compile": { - "System.Reflection.Emit.ILGeneration.dll": {} - }, - "compileOnly": true - }, - "System.Reflection.Emit.Lightweight.Reference/4.1.1.0": { - "compile": { - "System.Reflection.Emit.Lightweight.dll": {} - }, - "compileOnly": true - }, - "System.Reflection.Extensions.Reference/4.1.2.0": { - "compile": { - "System.Reflection.Extensions.dll": {} - }, - "compileOnly": true - }, - "System.Reflection.Metadata/1.4.5.0": { - "compile": { - "System.Reflection.Metadata.dll": {} - }, - "compileOnly": true - }, - "System.Reflection.Primitives.Reference/4.1.2.0": { - "compile": { - "System.Reflection.Primitives.dll": {} - }, - "compileOnly": true - }, - "System.Reflection.TypeExtensions.Reference/4.1.2.0": { - "compile": { - "System.Reflection.TypeExtensions.dll": {} - }, - "compileOnly": true - }, - "System.Resources.Reader/4.1.2.0": { - "compile": { - "System.Resources.Reader.dll": {} - }, - "compileOnly": true - }, - "System.Resources.ResourceManager.Reference/4.1.2.0": { - "compile": { - "System.Resources.ResourceManager.dll": {} - }, - "compileOnly": true - }, - "System.Resources.Writer/4.1.2.0": { - "compile": { - "System.Resources.Writer.dll": {} - }, - "compileOnly": true - }, - "System.Runtime.CompilerServices.Unsafe.Reference/4.0.6.0": { - "compile": { - "System.Runtime.CompilerServices.Unsafe.dll": {} - }, - "compileOnly": true - }, - "System.Runtime.CompilerServices.VisualC/4.1.2.0": { - "compile": { - "System.Runtime.CompilerServices.VisualC.dll": {} - }, - "compileOnly": true - }, - "System.Runtime.Reference/4.2.2.0": { - "compile": { - "System.Runtime.dll": {} - }, - "compileOnly": true - }, - "System.Runtime.Extensions.Reference/4.2.2.0": { - "compile": { - "System.Runtime.Extensions.dll": {} - }, - "compileOnly": true - }, - "System.Runtime.Handles.Reference/4.1.2.0": { - "compile": { - "System.Runtime.Handles.dll": {} - }, - "compileOnly": true - }, - "System.Runtime.InteropServices.Reference/4.2.2.0": { - "compile": { - "System.Runtime.InteropServices.dll": {} - }, - "compileOnly": true - }, - "System.Runtime.InteropServices.RuntimeInformation.Reference/4.0.4.0": { - "compile": { - "System.Runtime.InteropServices.RuntimeInformation.dll": {} - }, - "compileOnly": true - }, - "System.Runtime.InteropServices.WindowsRuntime/4.0.4.0": { - "compile": { - "System.Runtime.InteropServices.WindowsRuntime.dll": {} - }, - "compileOnly": true - }, - "System.Runtime.Intrinsics/4.0.1.0": { - "compile": { - "System.Runtime.Intrinsics.dll": {} - }, - "compileOnly": true - }, - "System.Runtime.Loader/4.1.1.0": { - "compile": { - "System.Runtime.Loader.dll": {} - }, - "compileOnly": true - }, - "System.Runtime.Numerics.Reference/4.1.2.0": { - "compile": { - "System.Runtime.Numerics.dll": {} - }, - "compileOnly": true - }, - "System.Runtime.Serialization/4.0.0.0": { - "compile": { - "System.Runtime.Serialization.dll": {} - }, - "compileOnly": true - }, - "System.Runtime.Serialization.Formatters/4.0.4.0": { - "compile": { - "System.Runtime.Serialization.Formatters.dll": {} - }, - "compileOnly": true - }, - "System.Runtime.Serialization.Json/4.0.5.0": { - "compile": { - "System.Runtime.Serialization.Json.dll": {} - }, - "compileOnly": true - }, - "System.Runtime.Serialization.Primitives.Reference/4.2.2.0": { - "compile": { - "System.Runtime.Serialization.Primitives.dll": {} - }, - "compileOnly": true - }, - "System.Runtime.Serialization.Xml.Reference/4.1.5.0": { - "compile": { - "System.Runtime.Serialization.Xml.dll": {} - }, - "compileOnly": true - }, - "System.Security.AccessControl.Reference/4.1.1.0": { - "compile": { - "System.Security.AccessControl.dll": {} - }, - "compileOnly": true - }, - "System.Security.Claims.Reference/4.1.2.0": { - "compile": { - "System.Security.Claims.dll": {} - }, - "compileOnly": true - }, - "System.Security.Cryptography.Algorithms.Reference/4.3.2.0": { - "compile": { - "System.Security.Cryptography.Algorithms.dll": {} - }, - "compileOnly": true - }, - "System.Security.Cryptography.Cng.Reference/4.3.3.0": { - "compile": { - "System.Security.Cryptography.Cng.dll": {} - }, - "compileOnly": true - }, - "System.Security.Cryptography.Csp.Reference/4.1.2.0": { - "compile": { - "System.Security.Cryptography.Csp.dll": {} - }, - "compileOnly": true - }, - "System.Security.Cryptography.Encoding.Reference/4.1.2.0": { - "compile": { - "System.Security.Cryptography.Encoding.dll": {} - }, - "compileOnly": true - }, - "System.Security.Cryptography.Primitives.Reference/4.1.2.0": { - "compile": { - "System.Security.Cryptography.Primitives.dll": {} - }, - "compileOnly": true - }, - "System.Security.Cryptography.X509Certificates.Reference/4.2.2.0": { - "compile": { - "System.Security.Cryptography.X509Certificates.dll": {} - }, - "compileOnly": true - }, - "System.Security.Cryptography.Xml.Reference/4.0.3.0": { - "compile": { - "System.Security.Cryptography.Xml.dll": {} - }, - "compileOnly": true - }, - "System.Security/4.0.0.0": { - "compile": { - "System.Security.dll": {} - }, - "compileOnly": true - }, - "System.Security.Permissions.Reference/4.0.3.0": { - "compile": { - "System.Security.Permissions.dll": {} - }, - "compileOnly": true - }, - "System.Security.Principal.Reference/4.1.2.0": { - "compile": { - "System.Security.Principal.dll": {} - }, - "compileOnly": true - }, - "System.Security.Principal.Windows.Reference/4.1.1.0": { - "compile": { - "System.Security.Principal.Windows.dll": {} - }, - "compileOnly": true - }, - "System.Security.SecureString/4.1.2.0": { - "compile": { - "System.Security.SecureString.dll": {} - }, - "compileOnly": true - }, - "System.ServiceModel.Web/4.0.0.0": { - "compile": { - "System.ServiceModel.Web.dll": {} - }, - "compileOnly": true - }, - "System.ServiceProcess/4.0.0.0": { - "compile": { - "System.ServiceProcess.dll": {} - }, - "compileOnly": true - }, - "System.Text.Encoding.CodePages/4.1.3.0": { - "compile": { - "System.Text.Encoding.CodePages.dll": {} - }, - "compileOnly": true - }, - "System.Text.Encoding.Reference/4.1.2.0": { - "compile": { - "System.Text.Encoding.dll": {} - }, - "compileOnly": true - }, - "System.Text.Encoding.Extensions.Reference/4.1.2.0": { - "compile": { - "System.Text.Encoding.Extensions.dll": {} - }, - "compileOnly": true - }, - "System.Text.Encodings.Web.Reference/4.0.5.0": { - "compile": { - "System.Text.Encodings.Web.dll": {} - }, - "compileOnly": true - }, - "System.Text.Json/4.0.1.0": { - "compile": { - "System.Text.Json.dll": {} - }, - "compileOnly": true - }, - "System.Text.RegularExpressions.Reference/4.2.2.0": { - "compile": { - "System.Text.RegularExpressions.dll": {} - }, - "compileOnly": true - }, - "System.Threading.Channels/4.0.2.0": { - "compile": { - "System.Threading.Channels.dll": {} - }, - "compileOnly": true - }, - "System.Threading.Reference/4.1.2.0": { - "compile": { - "System.Threading.dll": {} - }, - "compileOnly": true - }, - "System.Threading.Overlapped.Reference/4.1.2.0": { - "compile": { - "System.Threading.Overlapped.dll": {} - }, - "compileOnly": true - }, - "System.Threading.Tasks.Dataflow/4.6.5.0": { - "compile": { - "System.Threading.Tasks.Dataflow.dll": {} - }, - "compileOnly": true - }, - "System.Threading.Tasks.Reference/4.1.2.0": { - "compile": { - "System.Threading.Tasks.dll": {} - }, - "compileOnly": true - }, - "System.Threading.Tasks.Extensions.Reference/4.3.1.0": { - "compile": { - "System.Threading.Tasks.Extensions.dll": {} - }, - "compileOnly": true - }, - "System.Threading.Tasks.Parallel/4.0.4.0": { - "compile": { - "System.Threading.Tasks.Parallel.dll": {} - }, - "compileOnly": true - }, - "System.Threading.Thread.Reference/4.1.2.0": { - "compile": { - "System.Threading.Thread.dll": {} - }, - "compileOnly": true - }, - "System.Threading.ThreadPool.Reference/4.1.2.0": { - "compile": { - "System.Threading.ThreadPool.dll": {} - }, - "compileOnly": true - }, - "System.Threading.Timer.Reference/4.1.2.0": { - "compile": { - "System.Threading.Timer.dll": {} - }, - "compileOnly": true - }, - "System.Transactions/4.0.0.0": { - "compile": { - "System.Transactions.dll": {} - }, - "compileOnly": true - }, - "System.Transactions.Local/4.0.2.0": { - "compile": { - "System.Transactions.Local.dll": {} - }, - "compileOnly": true - }, - "System.ValueTuple.Reference/4.0.3.0": { - "compile": { - "System.ValueTuple.dll": {} - }, - "compileOnly": true - }, - "System.Web/4.0.0.0": { - "compile": { - "System.Web.dll": {} - }, - "compileOnly": true - }, - "System.Web.HttpUtility/4.0.2.0": { - "compile": { - "System.Web.HttpUtility.dll": {} - }, - "compileOnly": true - }, - "System.Windows/4.0.0.0": { - "compile": { - "System.Windows.dll": {} - }, - "compileOnly": true - }, - "System.Windows.Extensions/4.0.1.0": { - "compile": { - "System.Windows.Extensions.dll": {} - }, - "compileOnly": true - }, - "System.Xml/4.0.0.0": { - "compile": { - "System.Xml.dll": {} - }, - "compileOnly": true - }, - "System.Xml.Linq/4.0.0.0": { - "compile": { - "System.Xml.Linq.dll": {} - }, - "compileOnly": true - }, - "System.Xml.ReaderWriter.Reference/4.2.2.0": { - "compile": { - "System.Xml.ReaderWriter.dll": {} - }, - "compileOnly": true - }, - "System.Xml.Serialization/4.0.0.0": { - "compile": { - "System.Xml.Serialization.dll": {} - }, - "compileOnly": true - }, - "System.Xml.XDocument.Reference/4.1.2.0": { - "compile": { - "System.Xml.XDocument.dll": {} - }, - "compileOnly": true - }, - "System.Xml.XmlDocument.Reference/4.1.2.0": { - "compile": { - "System.Xml.XmlDocument.dll": {} - }, - "compileOnly": true - }, - "System.Xml.XmlSerializer.Reference/4.1.2.0": { - "compile": { - "System.Xml.XmlSerializer.dll": {} - }, - "compileOnly": true - }, - "System.Xml.XPath/4.1.2.0": { - "compile": { - "System.Xml.XPath.dll": {} - }, - "compileOnly": true - }, - "System.Xml.XPath.XDocument/4.1.2.0": { - "compile": { - "System.Xml.XPath.XDocument.dll": {} - }, - "compileOnly": true - }, - "WindowsBase/4.0.0.0": { - "compile": { - "WindowsBase.dll": {} - }, - "compileOnly": true - } - } - }, - "libraries": { - "BookingSystem.AspNetCore/1.0.0": { - "type": "project", - "serviceable": false, - "sha512": "" - }, - "Bogus/33.0.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-92CcSgl7KLEw7lerMytjY504IPnhmYqDkCgIPm5GVfiZPslRWUcgWvtoNYhKbSU4m/Ms7giKP8OxPAFTFBgC3w==", - "path": "bogus/33.0.2", - "hashPath": "bogus.33.0.2.nupkg.sha512" - }, - "Microsoft.AspNetCore.Authentication/2.1.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-RYM3HHMm/MNwsbUh1xnrhosAGNeZV2Q/FmNQrblgytIK1HIZ6UqNMorFI+kz2MW7gNKHKn6TBLTUXPRmqC6iRQ==", - "path": "microsoft.aspnetcore.authentication/2.1.2", - "hashPath": "microsoft.aspnetcore.authentication.2.1.2.nupkg.sha512" - }, - "Microsoft.AspNetCore.Authentication.Abstractions/2.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-Smj5TGeE9629+hGHPk/DZUfCMYGvQwCajAsU/OVExRb8JXfeua4uXZFzT9Kh3pJY2MThPSt1lbDnkL2KaDyw/A==", - "path": "microsoft.aspnetcore.authentication.abstractions/2.1.1", - "hashPath": "microsoft.aspnetcore.authentication.abstractions.2.1.1.nupkg.sha512" - }, - "Microsoft.AspNetCore.Authentication.Core/2.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-Zo6SLzqxrW0PFg1AB0xSb+Rta4hCuX8hgOY425ldhFq4kKcmw45oJQ2zOIeeW/6EuBtEy+hwDB96baxTmXtfeA==", - "path": "microsoft.aspnetcore.authentication.core/2.1.1", - "hashPath": "microsoft.aspnetcore.authentication.core.2.1.1.nupkg.sha512" - }, - "Microsoft.AspNetCore.Authentication.JwtBearer/2.1.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-hedJ6YxyZRIJPXC2olml9YM5t3+yIFt9hcyBXp/q5+z4XpJMY5gUwbc1F5QRGEdcvwSCpFmmRLVaPPh4Kiaq0g==", - "path": "microsoft.aspnetcore.authentication.jwtbearer/2.1.2", - "hashPath": "microsoft.aspnetcore.authentication.jwtbearer.2.1.2.nupkg.sha512" - }, - "Microsoft.AspNetCore.Cryptography.Internal/2.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-guY3jMNkcUi2hrMJ4/vPnUUFwudxTVSJ809gCfpq+xR0UgV6P9ZHZLOI5q/07QHDZY+kKPXxipXGyJXQpq2k0g==", - "path": "microsoft.aspnetcore.cryptography.internal/2.1.1", - "hashPath": "microsoft.aspnetcore.cryptography.internal.2.1.1.nupkg.sha512" - }, - "Microsoft.AspNetCore.DataProtection/2.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-OPZDPAAL3OwOCrz870F9goq//NJOmPl4Lv3dz+v0cRQe8EpsbCe0c6IRI8vdlFwM13Qy57D5rLQlysb+tLpENA==", - "path": "microsoft.aspnetcore.dataprotection/2.1.1", - "hashPath": "microsoft.aspnetcore.dataprotection.2.1.1.nupkg.sha512" - }, - "Microsoft.AspNetCore.DataProtection.Abstractions/2.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-dcH52SMIIUOwBeDZ2QQEY3hWXJz50Dk2YzC/B2hxDLB78Il75BHGOhClIw6/0H+dKZCwItUytxoMNYtCSmG+aQ==", - "path": "microsoft.aspnetcore.dataprotection.abstractions/2.1.1", - "hashPath": "microsoft.aspnetcore.dataprotection.abstractions.2.1.1.nupkg.sha512" - }, - "Microsoft.AspNetCore.Hosting.Abstractions/2.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-76cKcp2pWhvdV2TXTqMg/DyW7N6cDzTEhtL8vVWFShQN+Ylwv3eO/vUQr2BS3Hz4IZHEpL+FOo2T+MtymHDqDQ==", - "path": "microsoft.aspnetcore.hosting.abstractions/2.1.1", - "hashPath": "microsoft.aspnetcore.hosting.abstractions.2.1.1.nupkg.sha512" - }, - "Microsoft.AspNetCore.Hosting.Server.Abstractions/2.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-+vD7HJYzAXNq17t+NgRkpS38cxuAyOBu8ixruOiA3nWsybozolUdALWiZ5QFtGRzajSLPFA2YsbO3NPcqoUwcw==", - "path": "microsoft.aspnetcore.hosting.server.abstractions/2.1.1", - "hashPath": "microsoft.aspnetcore.hosting.server.abstractions.2.1.1.nupkg.sha512" - }, - "Microsoft.AspNetCore.Http/2.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-pPDcCW8spnyibK3krpxrOpaFHf5fjV6k1Hsl6gfh77N/8gRYlLU7MOQDUnjpEwdlHmtxwJKQJNxZqVQOmJGRUw==", - "path": "microsoft.aspnetcore.http/2.1.1", - "hashPath": "microsoft.aspnetcore.http.2.1.1.nupkg.sha512" - }, - "Microsoft.AspNetCore.Http.Abstractions/2.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-kQUEVOU4loc8CPSb2WoHFTESqwIa8Ik7ysCBfTwzHAd0moWovc9JQLmhDIHlYLjHbyexqZAlkq/FPRUZqokebw==", - "path": "microsoft.aspnetcore.http.abstractions/2.1.1", - "hashPath": "microsoft.aspnetcore.http.abstractions.2.1.1.nupkg.sha512" - }, - "Microsoft.AspNetCore.Http.Extensions/2.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ncAgV+cqsWSqjLXFUTyObGh4Tr7ShYYs3uW8Q/YpRwZn7eLV7dux5Z6GLY+rsdzmIHiia3Q2NWbLULQi7aziHw==", - "path": "microsoft.aspnetcore.http.extensions/2.1.1", - "hashPath": "microsoft.aspnetcore.http.extensions.2.1.1.nupkg.sha512" - }, - "Microsoft.AspNetCore.Http.Features/2.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-VklZ7hWgSvHBcDtwYYkdMdI/adlf7ebxTZ9kdzAhX+gUs5jSHE9mZlTamdgf9miSsxc1QjNazHXTDJdVPZKKTw==", - "path": "microsoft.aspnetcore.http.features/2.1.1", - "hashPath": "microsoft.aspnetcore.http.features.2.1.1.nupkg.sha512" - }, - "Microsoft.AspNetCore.WebUtilities/2.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-PGKIZt4+412Z/XPoSjvYu/QIbTxcAQuEFNoA1Pw8a9mgmO0ZhNBmfaNyhgXFf7Rq62kP0tT/2WXpxdcQhkFUPA==", - "path": "microsoft.aspnetcore.webutilities/2.1.1", - "hashPath": "microsoft.aspnetcore.webutilities.2.1.1.nupkg.sha512" - }, - "Microsoft.Bcl.AsyncInterfaces/1.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-1Am6l4Vpn3/K32daEqZI+FFr96OlZkgwK2LcT3pZ2zWubR5zTPW3/FkO1Rat9kb7oQOa4rxgl9LJHc5tspCWfg==", - "path": "microsoft.bcl.asyncinterfaces/1.1.0", - "hashPath": "microsoft.bcl.asyncinterfaces.1.1.0.nupkg.sha512" - }, - "Microsoft.CSharp/4.7.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", - "path": "microsoft.csharp/4.7.0", - "hashPath": "microsoft.csharp.4.7.0.nupkg.sha512" - }, - "Microsoft.Extensions.Configuration.Abstractions/2.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-VfuZJNa0WUshZ/+8BFZAhwFKiKuu/qOUCFntfdLpHj7vcRnsGHqd3G2Hse78DM+pgozczGM63lGPRLmy+uhUOA==", - "path": "microsoft.extensions.configuration.abstractions/2.1.1", - "hashPath": "microsoft.extensions.configuration.abstractions.2.1.1.nupkg.sha512" - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/2.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-MgYpU5cwZohUMKKg3sbPhvGG+eAZ/59E9UwPwlrUkyXU+PGzqwZg9yyQNjhxuAWmoNoFReoemeCku50prYSGzA==", - "path": "microsoft.extensions.dependencyinjection.abstractions/2.1.1", - "hashPath": "microsoft.extensions.dependencyinjection.abstractions.2.1.1.nupkg.sha512" - }, - "Microsoft.Extensions.FileProviders.Abstractions/2.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-UEQB5/QPuLYaCvScZQ9llhcks5xyEUKh41D615FoehRAF9UgGVmXHcCSOH8idHHLRoKm+OJJjEy1oywvuaL33w==", - "path": "microsoft.extensions.fileproviders.abstractions/2.1.1", - "hashPath": "microsoft.extensions.fileproviders.abstractions.2.1.1.nupkg.sha512" - }, - "Microsoft.Extensions.Hosting.Abstractions/2.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-kVVdHnOFJbcXxgZzrT6nwkrWZTHL+47LT59S9J2Jp0BNO3EQWNEZHUUZMb/kKFV7LtW+bp+EuAOPNUqEcqI++Q==", - "path": "microsoft.extensions.hosting.abstractions/2.1.1", - "hashPath": "microsoft.extensions.hosting.abstractions.2.1.1.nupkg.sha512" - }, - "Microsoft.Extensions.Logging.Abstractions/2.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-XRzK7ZF+O6FzdfWrlFTi1Rgj2080ZDsd46vzOjadHUB0Cz5kOvDG8vI7caa5YFrsHQpcfn0DxtjS4E46N4FZsA==", - "path": "microsoft.extensions.logging.abstractions/2.1.1", - "hashPath": "microsoft.extensions.logging.abstractions.2.1.1.nupkg.sha512" - }, - "Microsoft.Extensions.ObjectPool/2.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-SErON45qh4ogDp6lr6UvVmFYW0FERihW+IQ+2JyFv1PUyWktcJytFaWH5zarufJvZwhci7Rf1IyGXr9pVEadTw==", - "path": "microsoft.extensions.objectpool/2.1.1", - "hashPath": "microsoft.extensions.objectpool.2.1.1.nupkg.sha512" - }, - "Microsoft.Extensions.Options/2.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-V7lXCU78lAbzaulCGFKojcCyG8RTJicEbiBkPJjFqiqXwndEBBIehdXRMWEVU3UtzQ1yDvphiWUL9th6/4gJ7w==", - "path": "microsoft.extensions.options/2.1.1", - "hashPath": "microsoft.extensions.options.2.1.1.nupkg.sha512" - }, - "Microsoft.Extensions.Primitives/2.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-scJ1GZNIxMmjpENh0UZ8XCQ6vzr/LzeF9WvEA51Ix2OQGAs9WPgPu8ABVUdvpKPLuor/t05gm6menJK3PwqOXg==", - "path": "microsoft.extensions.primitives/2.1.1", - "hashPath": "microsoft.extensions.primitives.2.1.1.nupkg.sha512" - }, - "Microsoft.Extensions.WebEncoders/2.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-XIuJXPNUAX/ZV/onarixNoq3kO7Q9/RXXOY8hhYydsDwHI9PqPeJH6WE3LmPJJDmB+7y3+MT6ZmW78gZZDApBA==", - "path": "microsoft.extensions.webencoders/2.1.1", - "hashPath": "microsoft.extensions.webencoders.2.1.1.nupkg.sha512" - }, - "Microsoft.IdentityModel.Logging/5.2.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-OgiaeDGsuTpXrx77a4gyN6Flp4y7jro4La92UtVEEVxnRb+TnRxawVYY3Z5EVme5fSwvE31vo2iNAwI/jBKjPg==", - "path": "microsoft.identitymodel.logging/5.2.0", - "hashPath": "microsoft.identitymodel.logging.5.2.0.nupkg.sha512" - }, - "Microsoft.IdentityModel.Protocols/5.2.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-pakGqbE3FRort3vb0qqWI0Qfy84IOXs8sG7ygANUpoRT+544svQ62JfvCX4UPnqf5bCUpSxVc3rDh8yCQBtc7w==", - "path": "microsoft.identitymodel.protocols/5.2.0", - "hashPath": "microsoft.identitymodel.protocols.5.2.0.nupkg.sha512" - }, - "Microsoft.IdentityModel.Protocols.OpenIdConnect/5.2.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-hMjsfdvgI/Gk/HWPgyVnju6fy3iULralgn1XU6eL17KkkFN2rJ1fDzJX3RKrjr888Y5S+hTSQAUcGzb4Fe3aBA==", - "path": "microsoft.identitymodel.protocols.openidconnect/5.2.0", - "hashPath": "microsoft.identitymodel.protocols.openidconnect.5.2.0.nupkg.sha512" - }, - "Microsoft.IdentityModel.Tokens/5.2.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-Uz1Dk5Gw/jgIHEzac9cXhq7pH0Hf5P73vf23hR6QJn0IamLbPG4qoHnGyPMn9qQXc+jDb/j3fWOhvWGrteJXtA==", - "path": "microsoft.identitymodel.tokens/5.2.0", - "hashPath": "microsoft.identitymodel.tokens.5.2.0.nupkg.sha512" - }, - "Microsoft.Net.Http.Headers/2.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-lPNIphl8b2EuhOE9dMH6EZDmu7pS882O+HMi5BJNsigxHaWlBrYxZHFZgE18cyaPp6SSZcTkKkuzfjV/RRQKlA==", - "path": "microsoft.net.http.headers/2.1.1", - "hashPath": "microsoft.net.http.headers.2.1.1.nupkg.sha512" - }, - "Microsoft.NETCore.Platforms/2.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-VdLJOCXhZaEMY7Hm2GKiULmn7IEPFE4XC5LPSfBVCUIA8YLZVh846gtfBJalsPQF2PlzdD7ecX7DZEulJ402ZQ==", - "path": "microsoft.netcore.platforms/2.0.0", - "hashPath": "microsoft.netcore.platforms.2.0.0.nupkg.sha512" - }, - "Microsoft.NETCore.Targets/1.1.3": { - "type": "package", - "serviceable": true, - "sha512": "sha512-3Wrmi0kJDzClwAC+iBdUBpEKmEle8FQNsCs77fkiOIw/9oYA07bL1EZNX0kQ2OMN3xpwvl0vAtOCYY3ndDNlhQ==", - "path": "microsoft.netcore.targets/1.1.3", - "hashPath": "microsoft.netcore.targets.1.1.3.nupkg.sha512" - }, - "Microsoft.Win32.Primitives/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-DUSaqvfCvy+ycQdwNZ6s2pOiUss910yMOp77aDoUszsWZ8GhtAAhLqKGSMhBi3g28ktr4M7WEMmGJKjPtuT8YA==", - "path": "microsoft.win32.primitives/4.3.0", - "hashPath": "microsoft.win32.primitives.4.3.0.nupkg.sha512" - }, - "Microsoft.Win32.Registry/4.5.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-+FWlwd//+Tt56316p00hVePBCouXyEzT86Jb3+AuRotTND0IYn0OO3obs1gnQEs/txEnt+rF2JBGLItTG+Be6A==", - "path": "microsoft.win32.registry/4.5.0", - "hashPath": "microsoft.win32.registry.4.5.0.nupkg.sha512" - }, - "NETStandard.Library/1.6.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ZpICg0GKwGPpWmlmV1MawlaODQNVI/vNY/YCWKMn+erI32h12RdSE+p9Aeb7j89lAVPQ0QSBRO5fiBbN+hg71Q==", - "path": "netstandard.library/1.6.1", - "hashPath": "netstandard.library.1.6.1.nupkg.sha512" - }, - "Newtonsoft.Json/12.0.3": { - "type": "package", - "serviceable": true, - "sha512": "sha512-6mgjfnRB4jKMlzHSl+VD+oUc1IebOZabkbyWj2RiTgWwYPPuaK1H97G1sHqGwPlS5npiF5Q0OrxN1wni2n5QWg==", - "path": "newtonsoft.json/12.0.3", - "hashPath": "newtonsoft.json.12.0.3.nupkg.sha512" - }, - "OpenActive.DatasetSite.NET/7.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-7jqgGdF+Nsi/fzCGIPoGriJnwO/TEcsi2emydtW6/edwL6fGXpi3j3cFHCt7/irkn+fi5PBC+7fh633Y29I7Wg==", - "path": "openactive.datasetsite.net/7.0.1", - "hashPath": "openactive.datasetsite.net.7.0.1.nupkg.sha512" - }, - "OpenActive.NET/15.2.21": { - "type": "package", - "serviceable": true, - "sha512": "sha512-PsYpSzfSDzT+f/xt3ONYz3HBk+prlyXTcIc49ivQZhIgnr6sdnNj9bBwpaX/xNkR4uBtXtNVHkcdeA16rg2ZVA==", - "path": "openactive.net/15.2.21", - "hashPath": "openactive.net.15.2.21.nupkg.sha512" - }, - "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ccldagrPUuKkuO07iWyEsG/W8cn8XmCln8CZkiKNsVjA8ruvRbOv7W3/rKh6O8TBnHyOlkyc1BGJi7EBFLZ0Xg==", - "path": "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "hashPath": "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" - }, - "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-TPHFldd6dZHFN7uRn4qzVRgrYx21GJ2pHiuRQVC1vB1pbamUhGRNA/zR5AuE9WezG1UhuD5ttUaXZVeyXmIJHg==", - "path": "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "hashPath": "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" - }, - "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-i9mfB7EFeOTyiIOAT5jMHsFRcJYCr7TcIV3EAqV0p+syv/KN57/U19gZjAdKkm0/eQE6joscOuT6MvNC6MDndw==", - "path": "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "hashPath": "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" - }, - "runtime.native.System/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-jkuinalr62+uHlkOx4D/RgA6OnPFc8edkltiyVRR/iK/O3mbCE8aVvxHLu8Iz/rHNMCZLm49brb0IJ+t5nFHUw==", - "path": "runtime.native.system/4.3.0", - "hashPath": "runtime.native.system.4.3.0.nupkg.sha512" - }, - "runtime.native.System.IO.Compression/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-i6dNVyimlLGSOvPmtO/L/IdKMdZm+xAEutkwpQd0Y/YW08BZUzUJXvxE7gCny868/17GH8fwKPoerV//1pa1uw==", - "path": "runtime.native.system.io.compression/4.3.0", - "hashPath": "runtime.native.system.io.compression.4.3.0.nupkg.sha512" - }, - "runtime.native.System.Net.Http/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-pvqS79iQeodVJhWy38b2PPpbA3udtcLsjjIAJ1q2s6R2j0+jxdWeGWRFsJiwZpthlgdTXsu7UbN8T8KZCMU0WQ==", - "path": "runtime.native.system.net.http/4.3.0", - "hashPath": "runtime.native.system.net.http.4.3.0.nupkg.sha512" - }, - "runtime.native.System.Security.Cryptography.Apple/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-Wb/lt9yItFreeEmFtWn2ynCGpcqhsdlVaG39be9b1QZjd4E+/6I+qv649rWgJPtT8gTgRRX3dL1Yo/Sl8/VgrA==", - "path": "runtime.native.system.security.cryptography.apple/4.3.0", - "hashPath": "runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512" - }, - "runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-oFR3jybzAc6U2H7rOsfqX24j1hNFbpR7kJKaVsSp57jUxiBDYnqGM/D2O8GJA9uMSD2TCJ7Q68vFLM+3DYRXig==", - "path": "runtime.native.system.security.cryptography.openssl/4.3.0", - "hashPath": "runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" - }, - "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-nd0A3sPzuurLCQ/jATCS129mY9Cd8XnK/WNdKLWr8Kst5pdR9WWICl4feQa0s5ImuXvZEeBpb2DT+iRm2mXOZQ==", - "path": "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "hashPath": "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" - }, - "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-SRhfabdgcEjl8AwTyQYiE/OJLzsqS4+hsolESJCIWE0mAm8mNOzUzjOC3g4Ysx1OIgcyiGTlxiwAPwbPXJn8Zw==", - "path": "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "hashPath": "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" - }, - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-uY4xXeMraB4M1GW0iOBI7fhS703fEiEi0VqtUadsn5qaFGEeO3aWz/LXbxIDr+w8BsN8INM9qIs+JUprGH7uzg==", - "path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple/4.3.0", - "hashPath": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512" - }, - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ow4F2xA/PUU+yC5fVDO0H3ChGiaDLYYscqn/yW637pIBgY6vRwbR6bKzb8KMvF1L94c8m/PW2IWMgJkwysSC7w==", - "path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "hashPath": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" - }, - "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-SUML5JiwV/bWIwu0WxNNTmN1rCJPsvCmlq3960dRIjSujpH7+qrC4N8/m6Qz3MuxNbtgna7fVNfabDRJjdea8Q==", - "path": "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "hashPath": "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" - }, - "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-C1DM/8SlQB8zjC0fQUOu5VBNHxXavlpZwq83Y643hweR0llmPNhWH9ZBpYqAVQdup/I69fXlDKEk1qtTcJ9peQ==", - "path": "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "hashPath": "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" - }, - "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-q5AkXAQUAnyLOk7rTEwj7ufrC0mlOFH0HNGa7XqcFaRMgCdL074cdX2Ykh9C2tQA5VMYunLGmbWxeAs4RvRpMg==", - "path": "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "hashPath": "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" - }, - "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-9BmjLgu9ZLG33D/hWN5VtKOdRwNDxBoJccKdo+oIb8qWDIZSbR86sSiQNfopzAnET5BAg2gR6qaN/Ioj0Pt/mA==", - "path": "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "hashPath": "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" - }, - "Schema.NET/7.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-DnnNw9h9WChXyEiyBQa3iRbwXb0gNaV7DGjL4nxsVlTZIZP4HAf6KD77nSgxW3wziIkS6DZbGjZosfjs0OUWXQ==", - "path": "schema.net/7.0.1", - "hashPath": "schema.net.7.0.1.nupkg.sha512" - }, - "ServiceStack.Common.Core/5.11.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-+rurE8CXJYhSgf+Zc92SkKc1H0D7V9zXCw/uTILk+e1nfaSL8XUNgK7ZxQFi3ysL1clRy/rfkxWXXaqiIOsURw==", - "path": "servicestack.common.core/5.11.0", - "hashPath": "servicestack.common.core.5.11.0.nupkg.sha512" - }, - "ServiceStack.Interfaces.Core/5.11.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-Kp2/ngTM7ZnfREgD05C7qdBFa7GJkw0W7k/aNNYLtMWb4a70Ga311GcrR1Y/7ytyZu3ovD/J9l8V1FXWxJ+nZA==", - "path": "servicestack.interfaces.core/5.11.0", - "hashPath": "servicestack.interfaces.core.5.11.0.nupkg.sha512" - }, - "ServiceStack.OrmLite.Core/5.11.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-L4o3I6wxL2P4EIdYYx1c8JzXUieo+u3akJkq5RIq1tobKPeI+5ykaZg+LBP66Hd6XpxQBgVm/Kpo0sGorhOXmQ==", - "path": "servicestack.ormlite.core/5.11.0", - "hashPath": "servicestack.ormlite.core.5.11.0.nupkg.sha512" - }, - "ServiceStack.OrmLite.Sqlite.Core/5.11.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-FUYNGEFwa4l9rQR1y3LtPVDeQLYtQuDA5ij3OlXPv8Eriu5Env8y+h2K0YeKNfZGu7bcDDMtBuRAeLjg5p3R8g==", - "path": "servicestack.ormlite.sqlite.core/5.11.0", - "hashPath": "servicestack.ormlite.sqlite.core.5.11.0.nupkg.sha512" - }, - "ServiceStack.Text.Core/5.11.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-tymiK9/jsOf4iTL5yRm1BrRw8zhD/og75eLHwAmjrkqsipAPnhUm+T1pGQWMWo3FOR+3vg6LS2SNhMwf5IJ84w==", - "path": "servicestack.text.core/5.11.0", - "hashPath": "servicestack.text.core.5.11.0.nupkg.sha512" - }, - "Stub.System.Data.SQLite.Core.NetStandard/1.0.113.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-yGIM9xFyPHl79HluNTSQarvAOIJ68pmzmlMayVN6Nivu/7TiaHt7WqptolvwmuKdAXei8OzENh9RNdh7d6evjQ==", - "path": "stub.system.data.sqlite.core.netstandard/1.0.113.2", - "hashPath": "stub.system.data.sqlite.core.netstandard.1.0.113.2.nupkg.sha512" - }, - "Stubble.Core/1.9.3": { - "type": "package", - "serviceable": true, - "sha512": "sha512-wwE2Qns+oa/vDm9iR8FczayefGE+1smW/B3SvtXfowxYJn3f0NUyYC4bcn+HSy7+EFk0jiTlVZNfK7BgAG0tsQ==", - "path": "stubble.core/1.9.3", - "hashPath": "stubble.core.1.9.3.nupkg.sha512" - }, - "Stubble.Extensions.JsonNet/1.2.3": { - "type": "package", - "serviceable": true, - "sha512": "sha512-6MGNY+t8Okr7FT5RYqO8dT7P6FlA6wQKBT/FEX32lzQafh0NzXKJVCfF46sNLqMRd8gPeF55bju8w7EEkK7Apg==", - "path": "stubble.extensions.jsonnet/1.2.3", - "hashPath": "stubble.extensions.jsonnet.1.2.3.nupkg.sha512" - }, - "System.AppContext/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-kRs1br8EIBRTVSpj7HIaUflCzzbygLOBy5daUvCfepvPfmshLlcL9RoQUayejiJ1djmqfwJpsdiYWVrpWmz4kA==", - "path": "system.appcontext/4.3.0", - "hashPath": "system.appcontext.4.3.0.nupkg.sha512" - }, - "System.Buffers/4.5.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-pL2ChpaRRWI/p4LXyy4RgeWlYF2sgfj/pnVMvBqwNFr5cXg7CXNnWZWxrOONLg8VGdFB8oB+EG2Qw4MLgTOe+A==", - "path": "system.buffers/4.5.0", - "hashPath": "system.buffers.4.5.0.nupkg.sha512" - }, - "System.Collections/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-c56uUazaMOgJZ6Q1Y5CbXYK/dBauX5+9Vhp8nfRQrIM5XUTZx1d1cerV4SCfwazbRr9h1hMhzs6nDHXGk0GvIg==", - "path": "system.collections/4.3.0", - "hashPath": "system.collections.4.3.0.nupkg.sha512" - }, - "System.Collections.Concurrent/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-Md+Q1XSlrRnFr2KUSRlaBFSFy9A5ty7ArFgvMmWyu1jSXtJ+zVRDz1CPQMak53S4/EK+WzTLDvYISciZBJ2g0w==", - "path": "system.collections.concurrent/4.3.0", - "hashPath": "system.collections.concurrent.4.3.0.nupkg.sha512" - }, - "System.Collections.Immutable/1.5.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-EXKiDFsChZW0RjrZ4FYHu9aW6+P4MCgEDCklsVseRfhoO0F+dXeMSsMRAlVXIo06kGJ/zv+2w1a2uc2+kxxSaQ==", - "path": "system.collections.immutable/1.5.0", - "hashPath": "system.collections.immutable.1.5.0.nupkg.sha512" - }, - "System.Collections.NonGeneric/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-prtjIEMhGUnQq6RnPEYLpFt8AtLbp9yq2zxOSrY7KJJZrw25Fi97IzBqY7iqssbM61Ek5b8f3MG/sG1N2sN5KA==", - "path": "system.collections.nongeneric/4.3.0", - "hashPath": "system.collections.nongeneric.4.3.0.nupkg.sha512" - }, - "System.Collections.Specialized/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-Epx8PoVZR0iuOnJJDzp7pWvdfMMOAvpUo95pC4ScH2mJuXkKA2Y4aR3cG9qt2klHgSons1WFh4kcGW7cSXvrxg==", - "path": "system.collections.specialized/4.3.0", - "hashPath": "system.collections.specialized.4.3.0.nupkg.sha512" - }, - "System.ComponentModel/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ncKuQZShSKcR565Nmrf6lYOZuPYh8xja+iHxQ+9eeIhuwh1HNW68ZcF8AkASlNcNoAiX1BS3ajDD2H5msfPwDQ==", - "path": "system.componentmodel/4.3.0", - "hashPath": "system.componentmodel.4.3.0.nupkg.sha512" - }, - "System.ComponentModel.Annotations/4.7.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-0YFqjhp/mYkDGpU0Ye1GjE53HMp9UVfGN7seGpAMttAC0C40v5gw598jCgpbBLMmCo0E5YRLBv5Z2doypO49ZQ==", - "path": "system.componentmodel.annotations/4.7.0", - "hashPath": "system.componentmodel.annotations.4.7.0.nupkg.sha512" - }, - "System.ComponentModel.Primitives/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-j8GUkCpM8V4d4vhLIIoBLGey2Z5bCkMVNjEZseyAlm4n5arcsJOeI3zkUP+zvZgzsbLTYh4lYeP/ZD/gdIAPrw==", - "path": "system.componentmodel.primitives/4.3.0", - "hashPath": "system.componentmodel.primitives.4.3.0.nupkg.sha512" - }, - "System.Console/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-QhgcrulIve3cxH0Kd3n8ONtOA7Ixid4d7zLrTNet4OCU3HgP4YgAUjyXtYmyji1ab0YllGlk8EDJwPsbEe1dmg==", - "path": "system.console/4.3.0", - "hashPath": "system.console.4.3.0.nupkg.sha512" - }, - "System.Data.Common/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-lm6E3T5u7BOuEH0u18JpbJHxBfOJPuCyl4Kg1RH10ktYLp5uEEE1xKrHW56/We4SnZpGAuCc9N0MJpSDhTHZGQ==", - "path": "system.data.common/4.3.0", - "hashPath": "system.data.common.4.3.0.nupkg.sha512" - }, - "System.Data.SQLite.Core/1.0.113.7": { - "type": "package", - "serviceable": true, - "sha512": "sha512-2DKMIxfZpIVzdMfx1dj9qvTm+0m0Mx6sN6CZXMQDNytU7Sk/JKo0Ox6mvHAicfHrQgqZbUZMzMMtLXD0kwmFfg==", - "path": "system.data.sqlite.core/1.0.113.7", - "hashPath": "system.data.sqlite.core.1.0.113.7.nupkg.sha512" - }, - "System.Diagnostics.Contracts/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-eelRRbnm+OloiQvp9CXS0ixjNQldjjkHO4iIkR5XH2VIP8sUB/SIpa1TdUW6/+HDcQ+MlhP3pNa1u5SbzYuWGA==", - "path": "system.diagnostics.contracts/4.3.0", - "hashPath": "system.diagnostics.contracts.4.3.0.nupkg.sha512" - }, - "System.Diagnostics.Debug/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-u+8PwTDBwB/e46+uzYOAJXjsqqq0IOiUqbrzO0rT9cmgY90WV7XWVxt0WtE/7/IMluDA6nPVpq7Xq/wkwX3rSg==", - "path": "system.diagnostics.debug/4.3.0", - "hashPath": "system.diagnostics.debug.4.3.0.nupkg.sha512" - }, - "System.Diagnostics.DiagnosticSource/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-VMvyp0CTU1/2LB7qun+71/tjaKQ4mh7un19QmiglDTaWJRsoNR3PHr2Db7qohlaGibJytkL80hBvSdhuWp87pg==", - "path": "system.diagnostics.diagnosticsource/4.3.0", - "hashPath": "system.diagnostics.diagnosticsource.4.3.0.nupkg.sha512" - }, - "System.Diagnostics.Tools/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-txQ+yJ7tpX8Y9JV4YXWnd30tBi+tGZPkk+R+ASb88/3ibHWMQSuK/DGVlOqcr6RNCBueLcLXKO9S9M/XuqG3mw==", - "path": "system.diagnostics.tools/4.3.0", - "hashPath": "system.diagnostics.tools.4.3.0.nupkg.sha512" - }, - "System.Diagnostics.Tracing/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-tEmmBXZJM/Fl3mY6i9dr5NIxqX4zdaXS1sFyNKTpcE2Vl65iyT6GyubGfOLQP/hiD0BE+S1XqhNjh7LFSFaS4Q==", - "path": "system.diagnostics.tracing/4.3.0", - "hashPath": "system.diagnostics.tracing.4.3.0.nupkg.sha512" - }, - "System.Dynamic.Runtime/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-HDm21dNeNrj7UgQY9MZUBxThvZ5VkcbaJFciHjvVA6jt5Edjgsv5O9PiT+ydAml/kgySCZ1JtqpEbEotKFFZAA==", - "path": "system.dynamic.runtime/4.3.0", - "hashPath": "system.dynamic.runtime.4.3.0.nupkg.sha512" - }, - "System.Globalization/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-kfm+p0nJhqCe8oBrLsLvcFKvrmo8C2t0m6lm7wc/p8KPKQu6M4/4OZJCbVc+MP0vsEdOhIRCL1fVxAzscfGQRw==", - "path": "system.globalization/4.3.0", - "hashPath": "system.globalization.4.3.0.nupkg.sha512" - }, - "System.Globalization.Calendars/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-I1R84HE9BOc0APJxfJfitZhhc5GeV3FuSduVSVMiJQtirGFi0UHrF8v6I5HxQbN/ED3YTIZ/eEIEO6re+ZguWw==", - "path": "system.globalization.calendars/4.3.0", - "hashPath": "system.globalization.calendars.4.3.0.nupkg.sha512" - }, - "System.Globalization.Extensions/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-loRwVPTCkXNUiSi5XDlDKMG+bTs/lgVFIAkIM9TanmVuBhPOEa5+nao2IBH2Ciu/LpdnXOixHwlTFwGSUwx/Ug==", - "path": "system.globalization.extensions/4.3.0", - "hashPath": "system.globalization.extensions.4.3.0.nupkg.sha512" - }, - "System.IdentityModel.Tokens.Jwt/5.2.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-E8tNMfMWPvlSF5fvmMIVZZHlGuIZzE5uktuR+GN2gFdngh0k6xoZquxfjKC02d0NqfsshNQVTCdSKXD5e9/lpA==", - "path": "system.identitymodel.tokens.jwt/5.2.0", - "hashPath": "system.identitymodel.tokens.jwt.5.2.0.nupkg.sha512" - }, - "System.IO/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-hs9ChHEbZ6D/DJzkHakhRkmjQDKcw83WthMJmeDwWOYY7h6I3Hbjq79ZqLdsI3u9mNVjX8atprBhgRP685hAfg==", - "path": "system.io/4.3.0", - "hashPath": "system.io.4.3.0.nupkg.sha512" - }, - "System.IO.Compression/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-6xzzTfbSiPpI0/ZTTYKCvuwNcc96xw23wJuxnC1tV8o2pLbtK+P8ccTsK94FT5JrmuTJgYuRNWMf+OZfAl44Dw==", - "path": "system.io.compression/4.3.0", - "hashPath": "system.io.compression.4.3.0.nupkg.sha512" - }, - "System.IO.Compression.ZipFile/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-nK5KbMHzUan0Wv3JP0sBeI8gK8QF+758P0HPSSIFlcKrbFIvu08XGW5mCGrJwvolfRU8MOj4t+BTX/yIEw8e5w==", - "path": "system.io.compression.zipfile/4.3.0", - "hashPath": "system.io.compression.zipfile.4.3.0.nupkg.sha512" - }, - "System.IO.FileSystem/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-CNfD5MoSTTthNNKBwIIJOI9wks15w8tkR+k+ezlpxbMf03YhFcaPSejHKIldR8FWCxC5qwXVfKkYvqNgyqakww==", - "path": "system.io.filesystem/4.3.0", - "hashPath": "system.io.filesystem.4.3.0.nupkg.sha512" - }, - "System.IO.FileSystem.Primitives/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-QDszKCMEgZ+SeOiVhXfVpzsuED014JKT+X2TLM9lDEweJZdOTSFzfhZjttPJ3ep6RzmwlrRBC8uvb862E38eXA==", - "path": "system.io.filesystem.primitives/4.3.0", - "hashPath": "system.io.filesystem.primitives.4.3.0.nupkg.sha512" - }, - "System.Linq/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-pZ6xMu98sq9GDg+F72evJ9jwVim+7XelVG8I5qnm6sZph7s2uvAgYcwEoJuOqenUzliLmAlwrHNxb2W6l56LxA==", - "path": "system.linq/4.3.0", - "hashPath": "system.linq.4.3.0.nupkg.sha512" - }, - "System.Linq.Expressions/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ot4350Gi+bAkeC9NYjkT6lHulLy8xSdyh5Djw4KyQpmO+sUo7oQw3+VCLWh4r2nj8Shor2Xlznk3V3yH2RQWqQ==", - "path": "system.linq.expressions/4.3.0", - "hashPath": "system.linq.expressions.4.3.0.nupkg.sha512" - }, - "System.Memory/4.5.4": { - "type": "package", - "serviceable": true, - "sha512": "sha512-1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==", - "path": "system.memory/4.5.4", - "hashPath": "system.memory.4.5.4.nupkg.sha512" - }, - "System.Net.Http/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-urB+ZYpEFPP/i0zSfGf4V5QspbBArq0v3cGKmHT34hqA9gNx9eMyXn6qfEXq0tuG/WecpwimXjHsU7J1ENBTQw==", - "path": "system.net.http/4.3.0", - "hashPath": "system.net.http.4.3.0.nupkg.sha512" - }, - "System.Net.NetworkInformation/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-zNVmWVry0pAu7lcrRBhwwU96WUdbsrGL3azyzsbXmVNptae1+Za+UgOe9Z6s8iaWhPn7/l4wQqhC56HZWq7tkg==", - "path": "system.net.networkinformation/4.3.0", - "hashPath": "system.net.networkinformation.4.3.0.nupkg.sha512" - }, - "System.Net.Primitives/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-mVDJ+0i6cFaDF6svmfHFJ1TZX6gnPIk4XuxSckn3fuSGLBFraBVIgrOYiHQ6KPskrvnvncz5yBebz0A4X0SwQQ==", - "path": "system.net.primitives/4.3.0", - "hashPath": "system.net.primitives.4.3.0.nupkg.sha512" - }, - "System.Net.Requests/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-/nDnnsFpY+ND9eobJNdjP74z6P2LeFQwgu6zPfzOiJ9Vy6c/qRNYIUSE/EofzgvcytYXpU62RYJK5EX5nBEudg==", - "path": "system.net.requests/4.3.0", - "hashPath": "system.net.requests.4.3.0.nupkg.sha512" - }, - "System.Net.Sockets/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-xx57aDFYf4xcsLYimnbno2IS78YIh6NBKxWgVSZfWgSPSDZS4aosDJ9yUWT6Rc25BbjNxV0/QmTftl60q30ASA==", - "path": "system.net.sockets/4.3.0", - "hashPath": "system.net.sockets.4.3.0.nupkg.sha512" - }, - "System.Net.WebHeaderCollection/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-Cz30V43ax7GLlWu5RrrbQaNTJlhVova6m6fixejhMNPPqLBUOc6vZJkhfvSS6uI5cb0U4hQBvFcA9Bc+m8jYFw==", - "path": "system.net.webheadercollection/4.3.0", - "hashPath": "system.net.webheadercollection.4.3.0.nupkg.sha512" - }, - "System.ObjectModel/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-NOkp6KHybZE1luclcJa5IOUZuFRq6VN2KcrqwvLeG1SMLv59a1bMvK3cU2ZFZrl3F1ghQfOpZwavL7WG5Bf5qw==", - "path": "system.objectmodel/4.3.0", - "hashPath": "system.objectmodel.4.3.0.nupkg.sha512" - }, - "System.Private.DataContractSerialization/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-yDaJ2x3mMmjdZEDB4IbezSnCsnjQ4BxinKhRAaP6kEgL6Bb6jANWphs5SzyD8imqeC/3FxgsuXT6ykkiH1uUmA==", - "path": "system.private.datacontractserialization/4.3.0", - "hashPath": "system.private.datacontractserialization.4.3.0.nupkg.sha512" - }, - "System.Reflection/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-j48C9v2e/nxeO5a/uSufchki88/PPqwJ+BD7TiMhVMGT9uaAPsfH9Ctl+88aIbNz7Osd5ogWDcnh8Qa0lKA5OQ==", - "path": "system.reflection/4.3.0", - "hashPath": "system.reflection.4.3.0.nupkg.sha512" - }, - "System.Reflection.Emit/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-EgoKSu83k5MIPpV6b5CjQPJ/izgVdVjqSG7eECDOqwlM11pjXiZRG9W8yUZ8OZHjrNr4wMRrEMWeHob62TuJTw==", - "path": "system.reflection.emit/4.3.0", - "hashPath": "system.reflection.emit.4.3.0.nupkg.sha512" - }, - "System.Reflection.Emit.ILGeneration/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-CX9UPZXV8/fsE/0LE8/2hcCumsx4MnRJLRKWJbNOfTYqnrTz9fN3oqen+6I8tR09KxOmGOciQqf4rWx0nyqgKw==", - "path": "system.reflection.emit.ilgeneration/4.3.0", - "hashPath": "system.reflection.emit.ilgeneration.4.3.0.nupkg.sha512" - }, - "System.Reflection.Emit.Lightweight/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-Z3SDop03AYgltFFUgiSBX6X5Eu0SZd5pfOlLgyMfFfW68PhJ6iQ37f4SEPvJ1LzLgP+XfdLBfY9JiPhdLukEmw==", - "path": "system.reflection.emit.lightweight/4.3.0", - "hashPath": "system.reflection.emit.lightweight.4.3.0.nupkg.sha512" - }, - "System.Reflection.Extensions/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-XLwyag2x/KKqWbBI9eVi9s6/Hzo8/LzL3ObGKt0m2dBKqf2qyLdeGa9R/lP/a3oVoe4o/h8tAIpG7G3IHY3w3w==", - "path": "system.reflection.extensions/4.3.0", - "hashPath": "system.reflection.extensions.4.3.0.nupkg.sha512" - }, - "System.Reflection.Primitives/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-an+m4Mh4Q/AjApRaK+nZbeACZB9vKw8dxn6YsVCDENJFbr+aYND/90CPPP85otZlId4pq6uVPGHUOd1EQMAUaA==", - "path": "system.reflection.primitives/4.3.0", - "hashPath": "system.reflection.primitives.4.3.0.nupkg.sha512" - }, - "System.Reflection.TypeExtensions/4.5.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-dYSKm+jBVh/I9RQP6AaBiyd92Y6Ml9vEEcTSougcAMSt9X9QQHTGJo0p/uH4uSgODZe+5cuOkgg8wg02NuM0VQ==", - "path": "system.reflection.typeextensions/4.5.0", - "hashPath": "system.reflection.typeextensions.4.5.0.nupkg.sha512" - }, - "System.Resources.ResourceManager/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-yPcLZCSVuQUqM+49bJiBc5YOxXah/PX8Wp1UANzNeni2V0JpeLKZF1Vzl9NmmxYZbG5eVyG8FWlrzvc/D0eAuQ==", - "path": "system.resources.resourcemanager/4.3.0", - "hashPath": "system.resources.resourcemanager.4.3.0.nupkg.sha512" - }, - "System.Runtime/4.3.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-abhfv1dTK6NXOmu4bgHIONxHyEqFjW8HwXPmpY9gmll+ix9UNo4XDcmzJn6oLooftxNssVHdJC1pGT9jkSynQg==", - "path": "system.runtime/4.3.1", - "hashPath": "system.runtime.4.3.1.nupkg.sha512" - }, - "System.Runtime.CompilerServices.Unsafe/4.5.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-Zh8t8oqolRaFa9vmOZfdQm/qKejdqz0J9kr7o2Fu0vPeoH3BL1EOXipKWwkWtLT1JPzjByrF19fGuFlNbmPpiw==", - "path": "system.runtime.compilerservices.unsafe/4.5.1", - "hashPath": "system.runtime.compilerservices.unsafe.4.5.1.nupkg.sha512" - }, - "System.Runtime.Extensions/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-0M02o8QlVw2sqnZqV3BDRQXhN8o+eUAUaebVEzQgFGfC7EI+Yau46QPy/Y9QtbzEBEJ2d1/f4EdiyXJrsU6tCw==", - "path": "system.runtime.extensions/4.3.0", - "hashPath": "system.runtime.extensions.4.3.0.nupkg.sha512" - }, - "System.Runtime.Handles/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-rmsiMHN8mZ3M37dV4yTZIXFxVIQy5WaN+lqfwQscGDoEBMY5DPfkOu2e6zTih0MV20dTkf6Inv+PKdMU9GJz1w==", - "path": "system.runtime.handles/4.3.0", - "hashPath": "system.runtime.handles.4.3.0.nupkg.sha512" - }, - "System.Runtime.InteropServices/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ALoozDG5aakwHVI1MbEYXYDqW9JQsM1OO/8mB5hg9V5vYdB9k5dBkJPOmSKFqKU7WBJCeUZBOUZMJETQYfFgHw==", - "path": "system.runtime.interopservices/4.3.0", - "hashPath": "system.runtime.interopservices.4.3.0.nupkg.sha512" - }, - "System.Runtime.InteropServices.RuntimeInformation/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-jbVtvqrbuNeWhZastGXPaFiKMfhXQK0iekQOzuTw6aVvsxaUCut6uQuyB0yTVUqBF6Ydtnd1bRtmku4Kfw624w==", - "path": "system.runtime.interopservices.runtimeinformation/4.3.0", - "hashPath": "system.runtime.interopservices.runtimeinformation.4.3.0.nupkg.sha512" - }, - "System.Runtime.Numerics/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-QR+tk2JokgEhuguFA3lSxIURSqWAp3VM7rliz0Ss9fjhtTf+vuQP0zvDzgqBVDc9pT73Q1N74qNY5MINr28hxg==", - "path": "system.runtime.numerics/4.3.0", - "hashPath": "system.runtime.numerics.4.3.0.nupkg.sha512" - }, - "System.Runtime.Serialization.Primitives/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-Wz+0KOukJGAlXjtKr+5Xpuxf8+c8739RI1C+A2BoQZT+wMCCoMDDdO8/4IRHfaVINqL78GO8dW8G2lW/e45Mcw==", - "path": "system.runtime.serialization.primitives/4.3.0", - "hashPath": "system.runtime.serialization.primitives.4.3.0.nupkg.sha512" - }, - "System.Runtime.Serialization.Xml/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-nUQx/5OVgrqEba3+j7OdiofvVq9koWZAC7Z3xGI8IIViZqApWnZ5+lLcwYgTlbkobrl/Rat+Jb8GeD4WQESD2A==", - "path": "system.runtime.serialization.xml/4.3.0", - "hashPath": "system.runtime.serialization.xml.4.3.0.nupkg.sha512" - }, - "System.Security.AccessControl/4.5.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-vW8Eoq0TMyz5vAG/6ce483x/CP83fgm4SJe5P8Tb1tZaobcvPrbMEL7rhH1DRdrYbbb6F0vq3OlzmK0Pkwks5A==", - "path": "system.security.accesscontrol/4.5.0", - "hashPath": "system.security.accesscontrol.4.5.0.nupkg.sha512" - }, - "System.Security.Claims/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-B83I4k8mCTjs24tCTWzmLBnjn8VVVn3ZQ/7rrGiuyL0FRqFx8RPWJgzjQuHnt4+AoS8TmfsZpfQSxK5hAFJolg==", - "path": "system.security.claims/4.3.0", - "hashPath": "system.security.claims.4.3.0.nupkg.sha512" - }, - "System.Security.Cryptography.Algorithms/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-iY2cPv+0Y8K/UeE1zIdmG0aD7mmz+tqyKncQnyzOKaomihtDK/97R7m9w/tb0gL3swBozRW0dEDxs7SN/Yhb8Q==", - "path": "system.security.cryptography.algorithms/4.3.0", - "hashPath": "system.security.cryptography.algorithms.4.3.0.nupkg.sha512" - }, - "System.Security.Cryptography.Cng/4.5.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-WG3r7EyjUe9CMPFSs6bty5doUqT+q9pbI80hlNzo2SkPkZ4VTuZkGWjpp77JB8+uaL4DFPRdBsAY+DX3dBK92A==", - "path": "system.security.cryptography.cng/4.5.0", - "hashPath": "system.security.cryptography.cng.4.5.0.nupkg.sha512" - }, - "System.Security.Cryptography.Csp/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-E8O2c+SNUhT14QYc3DwOPi7nO8GL4+s7Tt78sNm+qx0le0umSm13EZHMRrl1iVwlt/0GTDEOpUj/Vx1NXs7O0w==", - "path": "system.security.cryptography.csp/4.3.0", - "hashPath": "system.security.cryptography.csp.4.3.0.nupkg.sha512" - }, - "System.Security.Cryptography.Encoding/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-adhMM0mdHMrj4AQ5sO1wR/wybGdRsf2+xpI4z19REGA3MQcFRLJPTYr3AISKp4ytxrumQB6GG4s9RT6a4XTGRg==", - "path": "system.security.cryptography.encoding/4.3.0", - "hashPath": "system.security.cryptography.encoding.4.3.0.nupkg.sha512" - }, - "System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-scSd2l3zOpqW6k1gmXlsmgahvvAu1LMjc8DGxFolEQCO4Hz88yHpkolcwPMI86ylol72jEDlsUt9m/Ic8t6EXw==", - "path": "system.security.cryptography.openssl/4.3.0", - "hashPath": "system.security.cryptography.openssl.4.3.0.nupkg.sha512" - }, - "System.Security.Cryptography.Pkcs/4.5.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-TGQX51gxpY3K3I6LJlE2LAftVlIMqJf0cBGhz68Y89jjk3LJCB6SrwiD+YN1fkqemBvWGs+GjyMJukl6d6goyQ==", - "path": "system.security.cryptography.pkcs/4.5.0", - "hashPath": "system.security.cryptography.pkcs.4.5.0.nupkg.sha512" - }, - "System.Security.Cryptography.Primitives/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-oCBDE+cu2sA8F43x8eANYjGv3GxXgZwq5hy1LHdkbD7tDnEB8SAKTeTKbGFTlKaAHB1sJT4LyXkRqMf7bgTTpQ==", - "path": "system.security.cryptography.primitives/4.3.0", - "hashPath": "system.security.cryptography.primitives.4.3.0.nupkg.sha512" - }, - "System.Security.Cryptography.X509Certificates/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-5O32HopnByBM3Wn7qJedHWd+GnTBM4WInS8l7hjT8BqVt3gW6w/yKYiGPZVpucSJYH9L30LTL3QvYzLTUXGJbw==", - "path": "system.security.cryptography.x509certificates/4.3.0", - "hashPath": "system.security.cryptography.x509certificates.4.3.0.nupkg.sha512" - }, - "System.Security.Cryptography.Xml/4.5.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-i2Jn6rGXR63J0zIklImGRkDIJL4b1NfPSEbIVHBlqoIb12lfXIigCbDRpDmIEzwSo/v1U5y/rYJdzZYSyCWxvg==", - "path": "system.security.cryptography.xml/4.5.0", - "hashPath": "system.security.cryptography.xml.4.5.0.nupkg.sha512" - }, - "System.Security.Permissions/4.5.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-9gdyuARhUR7H+p5CjyUB/zPk7/Xut3wUSP8NJQB6iZr8L3XUXTMdoLeVAg9N4rqF8oIpE7MpdqHdDHQ7XgJe0g==", - "path": "system.security.permissions/4.5.0", - "hashPath": "system.security.permissions.4.5.0.nupkg.sha512" - }, - "System.Security.Principal/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-g+69qUiwViXUQm3SHumMvyiJhJgcf4UWiwnKIAXrRcnFcVx79zhtuAPi8+lq+VnMdFYGcruoucaXh88u4DeTFQ==", - "path": "system.security.principal/4.3.0", - "hashPath": "system.security.principal.4.3.0.nupkg.sha512" - }, - "System.Security.Principal.Windows/4.5.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-U77HfRXlZlOeIXd//Yoj6Jnk8AXlbeisf1oq1os+hxOGVnuG+lGSfGqTwTZBoORFF6j/0q7HXIl8cqwQ9aUGqQ==", - "path": "system.security.principal.windows/4.5.0", - "hashPath": "system.security.principal.windows.4.5.0.nupkg.sha512" - }, - "System.Text.Encoding/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-6/0SXGxtbgHCK2shPtwWpEA2fiC5AyY0DPPn0QLyS7PBIPgp31UJK2JdfoULMA33lhJ/lKqDgLNLw6Z11OS3JQ==", - "path": "system.text.encoding/4.3.0", - "hashPath": "system.text.encoding.4.3.0.nupkg.sha512" - }, - "System.Text.Encoding.Extensions/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-Ozf3m66Pz9Wzk4Er5Me/9ulUAXw/kTn14VfShZFsydyJgAVO9DpI7Z1tvQHgFd3mo3/Pt/56kFaegnbuxIBUgQ==", - "path": "system.text.encoding.extensions/4.3.0", - "hashPath": "system.text.encoding.extensions.4.3.0.nupkg.sha512" - }, - "System.Text.Encodings.Web/4.5.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-Xg4G4Indi4dqP1iuAiMSwpiWS54ZghzR644OtsRCm/m/lBMG8dUBhLVN7hLm8NNrNTR+iGbshCPTwrvxZPlm4g==", - "path": "system.text.encodings.web/4.5.0", - "hashPath": "system.text.encodings.web.4.5.0.nupkg.sha512" - }, - "System.Text.RegularExpressions/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-a/JmRFhqmrjAJ+5i29dRbogmfr7jlH7TIkbOjnNPr+9ANNjnEjUEQR/fe9Y4w1V8dPwWK8szaBDivQssEaN8/A==", - "path": "system.text.regularexpressions/4.3.0", - "hashPath": "system.text.regularexpressions.4.3.0.nupkg.sha512" - }, - "System.Threading/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-7IcVuEHUoYWvZ781Ue2G3t2zbSI5nMTxGvrbGOVvuLo+O4PHyTbftmIvbAVHvQFpeU6NY8LH20T65fr91OCLQQ==", - "path": "system.threading/4.3.0", - "hashPath": "system.threading.4.3.0.nupkg.sha512" - }, - "System.Threading.Overlapped/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-mA9S1wcCZL/BvQruqzNRrm8A+kuOXvn0j8UuIG+oIpIBkVzRZ32yaEsLXcNTAxz1ThwD3nZWE1MKBmo6ICfp+g==", - "path": "system.threading.overlapped/4.3.0", - "hashPath": "system.threading.overlapped.4.3.0.nupkg.sha512" - }, - "System.Threading.Tasks/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-LOt/NVXWzQN4H4eWMovI7ODQ+yEZ0GuXeqwYF1ottWiXnWpVdY2Xl5H09nEir94+iCICsd69+0+gWImkFv03qw==", - "path": "system.threading.tasks/4.3.0", - "hashPath": "system.threading.tasks.4.3.0.nupkg.sha512" - }, - "System.Threading.Tasks.Extensions/4.5.4": { - "type": "package", - "serviceable": true, - "sha512": "sha512-zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==", - "path": "system.threading.tasks.extensions/4.5.4", - "hashPath": "system.threading.tasks.extensions.4.5.4.nupkg.sha512" - }, - "System.Threading.Thread/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-7DHjy+5Y5nu3dclRRTva4JcTTRHwt/wNdyHhEMOaYqWhmb6vK4ogMzjuC9/hb9t6OEQGt/w6PH3eIk9cbMvInQ==", - "path": "system.threading.thread/4.3.0", - "hashPath": "system.threading.thread.4.3.0.nupkg.sha512" - }, - "System.Threading.ThreadPool/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-GGzl0VTE4hvAfEBt/ZTtIGlY+o0ejFiZJjbDfl5VQXMBTlgovESXCrmygBOfi8cYzAIGLc2Hrmo5a48J7xToLw==", - "path": "system.threading.threadpool/4.3.0", - "hashPath": "system.threading.threadpool.4.3.0.nupkg.sha512" - }, - "System.Threading.Timer/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-XOys8f+om36iBHwibUWr254twLF0tGLK9H4StDmIs8G7Wy9XC4X3gqpqfa59AB9WJEyt4zJHjL+ZWI33P6iAlw==", - "path": "system.threading.timer/4.3.0", - "hashPath": "system.threading.timer.4.3.0.nupkg.sha512" - }, - "System.ValueTuple/4.5.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-okurQJO6NRE/apDIP23ajJ0hpiNmJ+f0BwOlB/cSqTLQlw5upkf+5+96+iG2Jw40G1fCVCyPz/FhIABUjMR+RQ==", - "path": "system.valuetuple/4.5.0", - "hashPath": "system.valuetuple.4.5.0.nupkg.sha512" - }, - "System.Xml.ReaderWriter/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-W6kL1cxWX85DE/V+ho/nrnDdbpjYnPsBcnyuAk3HciJ8uD20uzDGw3Jk48TT7svs5FloV6bwLZ/bFE7Vz2e8kw==", - "path": "system.xml.readerwriter/4.3.0", - "hashPath": "system.xml.readerwriter.4.3.0.nupkg.sha512" - }, - "System.Xml.XDocument/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-6DlEHBo8+ltXTnBsZuHL12h0RNlVtHHp1GJsiOSQz0WUvONAauRJXd6KNz+9P7a3JCFzxeQTI7TeODLNlIkoaw==", - "path": "system.xml.xdocument/4.3.0", - "hashPath": "system.xml.xdocument.4.3.0.nupkg.sha512" - }, - "System.Xml.XmlDocument/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-lJ8AxvkX7GQxpC6GFCeBj8ThYVyQczx2+f/cWHJU8tjS7YfI6Cv6bon70jVEgs2CiFbmmM8b9j1oZVx0dSI2Ww==", - "path": "system.xml.xmldocument/4.3.0", - "hashPath": "system.xml.xmldocument.4.3.0.nupkg.sha512" - }, - "System.Xml.XmlSerializer/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-MYoTCP7EZ98RrANESW05J5ZwskKDoN0AuZ06ZflnowE50LTpbR5yRg3tHckTVm5j/m47stuGgCrCHWePyHS70Q==", - "path": "system.xml.xmlserializer/4.3.0", - "hashPath": "system.xml.xmlserializer.4.3.0.nupkg.sha512" - }, - "UriTemplate.Core/1.0.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-Khgt2USxdObtFRnZndvSjHT3v3obmIvqTLi8NtXzabd0M9jUHd766aRWYqFnQixyKTwwrcn5h40/StUO/RfDuQ==", - "path": "uritemplate.core/1.0.2", - "hashPath": "uritemplate.core.1.0.2.nupkg.sha512" - }, - "OpenActive.FakeDatabase.NET/0.11.0": { - "type": "project", - "serviceable": false, - "sha512": "" - }, - "OpenActive.Server.NET/0.11.0": { - "type": "project", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Antiforgery/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Authentication.Abstractions.Reference/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Authentication.Cookies/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Authentication.Core.Reference/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Authentication.Reference/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Authentication.OAuth/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Authorization/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Authorization.Policy/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Components.Authorization/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Components/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Components.Forms/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Components.Server/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Components.Web/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Connections.Abstractions/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.CookiePolicy/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Cors/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Cryptography.Internal.Reference/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Cryptography.KeyDerivation/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.DataProtection.Abstractions.Reference/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.DataProtection.Reference/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.DataProtection.Extensions/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Diagnostics.Abstractions/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Diagnostics/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Diagnostics.HealthChecks/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.HostFiltering/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Hosting.Abstractions.Reference/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Hosting/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Hosting.Server.Abstractions.Reference/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Html.Abstractions/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Http.Abstractions.Reference/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Http.Connections.Common/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Http.Connections/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Http.Reference/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Http.Extensions.Reference/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Http.Features.Reference/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.HttpOverrides/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.HttpsPolicy/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Identity/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Localization/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Localization.Routing/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Metadata/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Mvc.Abstractions/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Mvc.ApiExplorer/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Mvc.Core/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Mvc.Cors/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Mvc.DataAnnotations/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Mvc/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Mvc.Formatters.Json/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Mvc.Formatters.Xml/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Mvc.Localization/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Mvc.Razor/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Mvc.RazorPages/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Mvc.TagHelpers/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Mvc.ViewFeatures/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Razor/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Razor.Runtime/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.ResponseCaching.Abstractions/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.ResponseCaching/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.ResponseCompression/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Rewrite/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Routing.Abstractions/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Routing/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Server.HttpSys/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Server.IIS/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Server.IISIntegration/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Server.Kestrel.Core/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Server.Kestrel/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Session/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.SignalR.Common/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.SignalR.Core/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.SignalR/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.SignalR.Protocols.Json/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.StaticFiles/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.WebSockets/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.WebUtilities.Reference/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.CSharp.Reference/4.0.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.Caching.Abstractions/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.Caching.Memory/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.Configuration.Abstractions.Reference/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.Configuration.Binder/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.Configuration.CommandLine/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.Configuration/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.Configuration.EnvironmentVariables/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.Configuration.FileExtensions/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.Configuration.Ini/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.Configuration.Json/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.Configuration.KeyPerFile/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.Configuration.UserSecrets/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.Configuration.Xml/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.DependencyInjection.Abstractions.Reference/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.DependencyInjection/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.Diagnostics.HealthChecks/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.FileProviders.Abstractions.Reference/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.FileProviders.Composite/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.FileProviders.Embedded/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.FileProviders.Physical/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.FileSystemGlobbing/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.Hosting.Abstractions.Reference/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.Hosting/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.Http/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.Identity.Core/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.Identity.Stores/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.Localization.Abstractions/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.Localization/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.Logging.Abstractions.Reference/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.Logging.Configuration/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.Logging.Console/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.Logging.Debug/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.Logging/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.Logging.EventLog/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.Logging.EventSource/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.Logging.TraceSource/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.ObjectPool.Reference/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.Options.ConfigurationExtensions/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.Options.DataAnnotations/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.Options.Reference/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.Primitives.Reference/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Extensions.WebEncoders.Reference/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.JSInterop/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Net.Http.Headers.Reference/3.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.VisualBasic.Core/10.0.5.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.VisualBasic/10.0.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Win32.Primitives.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Win32.Registry.Reference/4.1.3.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "mscorlib/4.0.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "netstandard/2.1.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.AppContext.Reference/4.2.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Buffers.Reference/4.0.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Collections.Concurrent.Reference/4.0.15.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Collections.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Collections.Immutable.Reference/1.2.5.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Collections.NonGeneric.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Collections.Specialized.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.ComponentModel.Annotations.Reference/4.3.1.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.ComponentModel.DataAnnotations/4.0.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.ComponentModel.Reference/4.0.4.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.ComponentModel.EventBasedAsync/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.ComponentModel.Primitives.Reference/4.2.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.ComponentModel.TypeConverter/4.2.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Configuration/4.0.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Console.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Core/4.0.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Data.Common.Reference/4.2.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Data.DataSetExtensions/4.0.1.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Data/4.0.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Diagnostics.Contracts.Reference/4.0.4.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Diagnostics.Debug.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Diagnostics.DiagnosticSource.Reference/4.0.5.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Diagnostics.EventLog/4.0.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Diagnostics.FileVersionInfo/4.0.4.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Diagnostics.Process/4.2.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Diagnostics.StackTrace/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Diagnostics.TextWriterTraceListener/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Diagnostics.Tools.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Diagnostics.TraceSource/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Diagnostics.Tracing.Reference/4.2.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System/4.0.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Drawing/4.0.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Drawing.Primitives/4.2.1.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Dynamic.Runtime.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Globalization.Calendars.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Globalization.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Globalization.Extensions.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.IO.Compression.Brotli/4.2.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.IO.Compression.Reference/4.2.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.IO.Compression.FileSystem/4.0.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.IO.Compression.ZipFile.Reference/4.0.5.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.IO.Reference/4.2.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.IO.FileSystem.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.IO.FileSystem.DriveInfo/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.IO.FileSystem.Primitives.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.IO.FileSystem.Watcher/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.IO.IsolatedStorage/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.IO.MemoryMappedFiles/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.IO.Pipelines/4.0.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.IO.Pipes/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.IO.UnmanagedMemoryStream/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Linq.Reference/4.2.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Linq.Expressions.Reference/4.2.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Linq.Parallel/4.0.4.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Linq.Queryable/4.0.4.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Memory.Reference/4.2.1.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Net/4.0.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Net.Http.Reference/4.2.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Net.HttpListener/4.0.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Net.Mail/4.0.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Net.NameResolution/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Net.NetworkInformation.Reference/4.2.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Net.Ping/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Net.Primitives.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Net.Requests.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Net.Security/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Net.ServicePoint/4.0.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Net.Sockets.Reference/4.2.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Net.WebClient/4.0.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Net.WebHeaderCollection.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Net.WebProxy/4.0.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Net.WebSockets.Client/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Net.WebSockets/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Numerics/4.0.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Numerics.Vectors/4.1.6.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.ObjectModel.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Reflection.DispatchProxy/4.0.6.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Reflection.Reference/4.2.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Reflection.Emit.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Reflection.Emit.ILGeneration.Reference/4.1.1.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Reflection.Emit.Lightweight.Reference/4.1.1.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Reflection.Extensions.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Reflection.Metadata/1.4.5.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Reflection.Primitives.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Reflection.TypeExtensions.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Resources.Reader/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Resources.ResourceManager.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Resources.Writer/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Runtime.CompilerServices.Unsafe.Reference/4.0.6.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Runtime.CompilerServices.VisualC/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Runtime.Reference/4.2.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Runtime.Extensions.Reference/4.2.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Runtime.Handles.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Runtime.InteropServices.Reference/4.2.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Runtime.InteropServices.RuntimeInformation.Reference/4.0.4.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Runtime.InteropServices.WindowsRuntime/4.0.4.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Runtime.Intrinsics/4.0.1.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Runtime.Loader/4.1.1.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Runtime.Numerics.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Runtime.Serialization/4.0.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Runtime.Serialization.Formatters/4.0.4.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Runtime.Serialization.Json/4.0.5.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Runtime.Serialization.Primitives.Reference/4.2.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Runtime.Serialization.Xml.Reference/4.1.5.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Security.AccessControl.Reference/4.1.1.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Security.Claims.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Security.Cryptography.Algorithms.Reference/4.3.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Security.Cryptography.Cng.Reference/4.3.3.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Security.Cryptography.Csp.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Security.Cryptography.Encoding.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Security.Cryptography.Primitives.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Security.Cryptography.X509Certificates.Reference/4.2.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Security.Cryptography.Xml.Reference/4.0.3.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Security/4.0.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Security.Permissions.Reference/4.0.3.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Security.Principal.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Security.Principal.Windows.Reference/4.1.1.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Security.SecureString/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.ServiceModel.Web/4.0.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.ServiceProcess/4.0.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Text.Encoding.CodePages/4.1.3.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Text.Encoding.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Text.Encoding.Extensions.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Text.Encodings.Web.Reference/4.0.5.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Text.Json/4.0.1.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Text.RegularExpressions.Reference/4.2.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Threading.Channels/4.0.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Threading.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Threading.Overlapped.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Threading.Tasks.Dataflow/4.6.5.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Threading.Tasks.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Threading.Tasks.Extensions.Reference/4.3.1.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Threading.Tasks.Parallel/4.0.4.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Threading.Thread.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Threading.ThreadPool.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Threading.Timer.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Transactions/4.0.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Transactions.Local/4.0.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.ValueTuple.Reference/4.0.3.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Web/4.0.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Web.HttpUtility/4.0.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Windows/4.0.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Windows.Extensions/4.0.1.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Xml/4.0.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Xml.Linq/4.0.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Xml.ReaderWriter.Reference/4.2.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Xml.Serialization/4.0.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Xml.XDocument.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Xml.XmlDocument.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Xml.XmlSerializer.Reference/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Xml.XPath/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "System.Xml.XPath.XDocument/4.1.2.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - }, - "WindowsBase/4.0.0.0": { - "type": "referenceassembly", - "serviceable": false, - "sha512": "" - } - } -} \ No newline at end of file diff --git a/web-app-package/BookingSystem.AspNetCore/BookingSystem.AspNetCore.dll b/web-app-package/BookingSystem.AspNetCore/BookingSystem.AspNetCore.dll deleted file mode 100644 index 15c6e008..00000000 Binary files a/web-app-package/BookingSystem.AspNetCore/BookingSystem.AspNetCore.dll and /dev/null differ diff --git a/web-app-package/BookingSystem.AspNetCore/BookingSystem.AspNetCore.runtimeconfig.json b/web-app-package/BookingSystem.AspNetCore/BookingSystem.AspNetCore.runtimeconfig.json deleted file mode 100644 index 0a381c01..00000000 --- a/web-app-package/BookingSystem.AspNetCore/BookingSystem.AspNetCore.runtimeconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "runtimeOptions": { - "tfm": "netcoreapp3.1", - "framework": { - "name": "Microsoft.AspNetCore.App", - "version": "3.1.0" - }, - "configProperties": { - "System.GC.Server": true, - "System.Reflection.Metadata.MetadataUpdater.IsSupported": false, - "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false - } - } -} \ No newline at end of file diff --git a/web-app-package/BookingSystem.AspNetCore/Microsoft.AspNetCore.Authentication.JwtBearer.dll b/web-app-package/BookingSystem.AspNetCore/Microsoft.AspNetCore.Authentication.JwtBearer.dll deleted file mode 100755 index 89dd014f..00000000 Binary files a/web-app-package/BookingSystem.AspNetCore/Microsoft.AspNetCore.Authentication.JwtBearer.dll and /dev/null differ diff --git a/web-app-package/BookingSystem.AspNetCore/Microsoft.Bcl.AsyncInterfaces.dll b/web-app-package/BookingSystem.AspNetCore/Microsoft.Bcl.AsyncInterfaces.dll deleted file mode 100755 index c695bdd5..00000000 Binary files a/web-app-package/BookingSystem.AspNetCore/Microsoft.Bcl.AsyncInterfaces.dll and /dev/null differ diff --git a/web-app-package/BookingSystem.AspNetCore/Microsoft.IdentityModel.Logging.dll b/web-app-package/BookingSystem.AspNetCore/Microsoft.IdentityModel.Logging.dll deleted file mode 100755 index 12fdde97..00000000 Binary files a/web-app-package/BookingSystem.AspNetCore/Microsoft.IdentityModel.Logging.dll and /dev/null differ diff --git a/web-app-package/BookingSystem.AspNetCore/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll b/web-app-package/BookingSystem.AspNetCore/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll deleted file mode 100755 index d9684e18..00000000 Binary files a/web-app-package/BookingSystem.AspNetCore/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll and /dev/null differ diff --git a/web-app-package/BookingSystem.AspNetCore/Microsoft.IdentityModel.Protocols.dll b/web-app-package/BookingSystem.AspNetCore/Microsoft.IdentityModel.Protocols.dll deleted file mode 100755 index 8b02008b..00000000 Binary files a/web-app-package/BookingSystem.AspNetCore/Microsoft.IdentityModel.Protocols.dll and /dev/null differ diff --git a/web-app-package/BookingSystem.AspNetCore/Microsoft.IdentityModel.Tokens.dll b/web-app-package/BookingSystem.AspNetCore/Microsoft.IdentityModel.Tokens.dll deleted file mode 100755 index a4bc531a..00000000 Binary files a/web-app-package/BookingSystem.AspNetCore/Microsoft.IdentityModel.Tokens.dll and /dev/null differ diff --git a/web-app-package/BookingSystem.AspNetCore/Newtonsoft.Json.dll b/web-app-package/BookingSystem.AspNetCore/Newtonsoft.Json.dll deleted file mode 100755 index b501fb6a..00000000 Binary files a/web-app-package/BookingSystem.AspNetCore/Newtonsoft.Json.dll and /dev/null differ diff --git a/web-app-package/BookingSystem.AspNetCore/OpenActive.DatasetSite.NET.dll b/web-app-package/BookingSystem.AspNetCore/OpenActive.DatasetSite.NET.dll deleted file mode 100755 index 23eabac9..00000000 Binary files a/web-app-package/BookingSystem.AspNetCore/OpenActive.DatasetSite.NET.dll and /dev/null differ diff --git a/web-app-package/BookingSystem.AspNetCore/OpenActive.FakeDatabase.NET.dll b/web-app-package/BookingSystem.AspNetCore/OpenActive.FakeDatabase.NET.dll deleted file mode 100644 index 01951e72..00000000 Binary files a/web-app-package/BookingSystem.AspNetCore/OpenActive.FakeDatabase.NET.dll and /dev/null differ diff --git a/web-app-package/BookingSystem.AspNetCore/OpenActive.FakeDatabase.NET.xml b/web-app-package/BookingSystem.AspNetCore/OpenActive.FakeDatabase.NET.xml deleted file mode 100644 index 62177e1a..00000000 --- a/web-app-package/BookingSystem.AspNetCore/OpenActive.FakeDatabase.NET.xml +++ /dev/null @@ -1,109 +0,0 @@ - - - - OpenActive.FakeDatabase.NET - - - - - This class models the database schema within an actual booking system. - It is designed to simulate the database that woFuld be available in a full implementation. - - - - - Extension methods for hashing strings and byte arrays - - - - - Creates a SHA256 hash of the specified input. - - The input. - A hash - - - - Result of deleting (or attempting to delete) an Order in a FakeDatabase - - - - - Result of getting (or attempting to get) an Order in a FakeDatabase - - - - - Result of booking (or attempting to book) an OrderProposal in a FakeDatabase - - - - - Result of booking (or attempting to book) an OrderProposal in a FakeDatabase - - - - - TODO: Call this on a schedule from both .NET Core and .NET Framework reference implementations - - - - - Update logistics data for FacilityUse to trigger logistics change notification - - - - - - - - Update logistics data for Slot to trigger logistics change notification - - - - - - - - Update location based logistics data for FacilityUse to trigger logistics change notification - - - - - - - - - Update name logistics data for SessionSeries to trigger logistics change notification - - - - - - - - Update time based logistics data for ScheduledSession to trigger logistics change notification - - - - - - - - Update location based logistics data for SessionSeries to trigger logistics change notification - - - - - - - - - Used to generate random data. - - - - Note string type is used for the OrderId instead of Guid type to allow for correct ordering of GUIDs for the RPDE feed - - - diff --git a/web-app-package/BookingSystem.AspNetCore/OpenActive.NET.dll b/web-app-package/BookingSystem.AspNetCore/OpenActive.NET.dll deleted file mode 100755 index 5a07b8f3..00000000 Binary files a/web-app-package/BookingSystem.AspNetCore/OpenActive.NET.dll and /dev/null differ diff --git a/web-app-package/BookingSystem.AspNetCore/OpenActive.Server.NET.dll b/web-app-package/BookingSystem.AspNetCore/OpenActive.Server.NET.dll deleted file mode 100644 index 9578d61e..00000000 Binary files a/web-app-package/BookingSystem.AspNetCore/OpenActive.Server.NET.dll and /dev/null differ diff --git a/web-app-package/BookingSystem.AspNetCore/OpenActive.Server.NET.xml b/web-app-package/BookingSystem.AspNetCore/OpenActive.Server.NET.xml deleted file mode 100644 index ee162bb3..00000000 --- a/web-app-package/BookingSystem.AspNetCore/OpenActive.Server.NET.xml +++ /dev/null @@ -1,597 +0,0 @@ - - - - OpenActive.Server.NET - - - - - The AbstractBookingEngine provides a simple, basic and extremely flexible implementation of Open Booking API. - - It is designed for systems where their needs are not met by StoreBookingEngine to provide a solid foundation for their implementations. - - Methods of this class will return OpenActive POCO models that can be rendered using ToOpenActiveString(), - and throw exceptions that subclass OpenActiveException, on which GetHttpStatusCode() and ToOpenActiveString() can - be called to construct a response. - - - - - In this mode, the Booking Engine also handles generation of open data feeds and the dataset site - - Note this is also the mode used by the StoreBookingEngine - - In order to use RenderDatasetSite, DatasetSiteGeneratorSettings must be provided - - - - - - - In this mode, the Booking Engine additionally handles generation of open data feeds, but the dataset site is handled manually - - In order to generate open data RPDE pages, OpenDataFeedBaseUrl must be provided - - - - - - - - In this mode, the Booking Engine does not handle open data feeds or dataset site rendering, and these must both be handled manually - - - - - - - Handler for Dataset Site endpoint - - - - - - Handler for an RPDE endpoint - string only version - Designed to be used on a single controller method with a "feedname" parameter, - for uses in situations where the framework does not automatically validate numeric values - - The final component of the path of the feed, i.e. https://example.com/feeds/{feedname} - The "afterTimestamp" parameter from the URL - The "afterId" parameter from the URL - The "afterChangeNumber" parameter from the URL - - - - - Handler for an RPDE endpoint - Designed to be used on a single controller method with a "feedname" parameter, - for uses in situations where the framework does not automatically validate numeric values - - The final component of the path of the feed, i.e. https://example.com/feeds/{feedname} - The "afterTimestamp" parameter from the URL - The "afterId" parameter from the URL - The "afterChangeNumber" parameter from the URL - - - - - Handler for an RPDE endpoint - Designed to be used on a single controller method with a "feedname" parameter - - The final component of the path of the feed, i.e. https://example.com/feeds/{feedname} - The "afterTimestamp" parameter from the URL - The "afterId" parameter from the URL - The "afterChangeNumber" parameter from the URL - - - - - Handler for an Orders RPDE endpoint (separate to the open data endpoint for security) - string only version - for uses in situations where the framework does not automatically validate numeric values - - Token designating the specific authenticated party for which the feed is intended - The "afterTimestamp" parameter from the URL - The "afterId" parameter from the URL - The "afterChangeNumber" parameter from the URL - - - - - Handler for an Orders RPDE endpoint (separate to the open data endpoint for security) - For uses in situations where the framework does not automatically validate numeric values - - Token designating the specific authenticated party for which the feed is intended - The "afterTimestamp" parameter from the URL - The "afterId" parameter from the URL - The "afterChangeNumber" parameter from the URL - - - - - Handler for an Order Proposals RPDE endpoint (separate to the open data endpoint for security) - string only version - for uses in situations where the framework does not automatically validate numeric values - - Token designating the specific authenticated party for which the feed is intended - The "afterTimestamp" parameter from the URL - The "afterId" parameter from the URL - The "afterChangeNumber" parameter from the URL - - - - - Handler for an Order Proposals RPDE endpoint (separate to the open data endpoint for security) - For uses in situations where the framework does not automatically validate numeric values - - Token designating the specific authenticated party for which the feed is intended - The "afterTimestamp" parameter from the URL - The "afterId" parameter from the URL - The "afterChangeNumber" parameter from the URL - - - - - Handler for Orders RPDE endpoint - - Type of feed to render - Token designating the specific authenticated party for which the feed is intended - The "afterTimestamp" parameter from the URL - The "afterId" parameter from the URL - The "afterChangeNumber" parameter from the URL - - - - - This is the interface between the BookingEngine and the Web Framework (e.g. ASP.NET Core). - - Note that this interface expects JSON requests to be supplied as strings, and provides JSON responses as strings. - This ensures that deserialisation is always correct, regardless of the configuration of the web framework. - It also removes the need to expose OpenActive (de)serialisation settings and parsers to the implementer, and makes - this interface more maintainble as OpenActive.NET will likely upgrade to use the new System.Text.Json in time. - - - - - Gets the "sub" claim from the JWT - - - - - - - Gets the ClientId custom claim from the JWT - - - - - - - Gets the SellerId custom claim from the JWT - - - - - - - Gets the GetCustomerAccountId custom claim from the JWT - - - - - - - Gets the SellerId and ClientId custom claims from the JWT - - - - - - - Gets the ClientId custom claim from the JWT - - - - - - - Test Interface Booking Partner Client Id Header - - - - - Test Interface Seller Id Header - - - - - Client Id Custom Claim Name - - - - - Seller Id Custom Claim Name - - - - - Customer Account Id Custom Claim Name - - - - - Orders Feed endpoint scope - - - - - Open Booking endpoint scope - - - - - Seller identity scope - - - - - Customer Account endpoint scope - - - - - Customer Accoun query endpoint scope - - - - - This is a .NET version agnostic representation of a result from the Booking Engine - It includes a .NET version-specific helper functions that simplify integration with .NET Framework MVC - A .NET Core MVC helper extension is also available at TODO: [Add URL] - - - - - Serializer settings used when deserializing. - - - - - Returns the JSON representation of a ClientRegistrationModel. - - - A that represents the JSON representation of the ClientRegistrationModel. - - - - - Returns a strongly typed model of the JSON representation provided. - - Note this will return null if the deserialized JSON-LD class cannot be assigned to `T`. - - ClientRegistrationModel to deserialize - JSON string - Strongly typed ClientRegistrationModel - - - REQUIRED. Informs the Authorization Server that the Client is making an OpenID Connect request. If the openid scope value is not present, the behavior is entirely unspecified. - - - OPTIONAL. This scope value requests access to the End-User's default profile Claims, which are: name, family_name, given_name, middle_name, nickname, preferred_username, profile, picture, website, gender, birthdate, zoneinfo, locale, and updated_at. - - - OPTIONAL. This scope value requests access to the email and email_verified Claims. - - - OPTIONAL. This scope value requests access to the address Claim. - - - OPTIONAL. This scope value requests access to the phone_number and phone_number_verified Claims. - - - This scope value MUST NOT be used with the OpenID Connect Implicit Client Implementer's Guide 1.0. See the OpenID Connect Basic Client Implementer's Guide 1.0 (http://openid.net/specs/openid-connect-implicit-1_0.html#OpenID.Basic) for its usage in that subset of OpenID Connect. - - - - All internal errors, caused by unexpected system behaviour, thrown within OpenActive.Server.NET will subclass InternalOpenBookingException, - This allows them to be caught and logged separately to OpenBookingException. - - The InternalOpenBookingError classes from OpenActive.NET provide OpenActive-compliant names and response codes - - - - - Create an InternalOpenBookingError - - Note that error.Name and error.StatusCode are set automatically by OpenActive.NET for each error type. - - The appropriate InternalOpenBookingError - - - - Create an InternalOpenBookingError with a message specific to the instance of the problem - - Note that error.Name and error.StatusCode are set automatically by OpenActive.NET for each error type. - - The appropriate InternalOpenBookingError - A message that overwrites the the `Description` property of the supplied error - - - - Create an InternalOpenBookingError with a message specific to the instance of the problem, while maintaining any source exception. - - Note that error.Name and error.StatusCode are set automatically by OpenActive.NET for each error type. - - The appropriate InternalOpenBookingError - A message that overwrites the the `Description` property of the supplied error - The source exception - - - - All errors thrown within OpenActive.Server.NET will subclass OpenBookingException, - Which allows them to be rendered as a reponse using ToOpenActiveString() and GetHttpStatusCode(). - - The OpenBookingError classes from OpenActive.NET provide OpenActive-compliant names and response codes - - - - - Create an OpenBookingError - - Note that error.Name and error.StatusCode are set automatically by OpenActive.NET for each error type. - - The appropriate OpenBookingError - - - - Create an OpenBookingError with a message specific to the instance of the problem - - Note that error.Name and error.StatusCode are set automatically by OpenActive.NET for each error type. - - The appropriate OpenBookingError - A message that overwrites the the `Description` property of the supplied error - - - - Create an OpenBookingError with a message specific to the instance of the problem, while maintaining any source exception. - - Note that error.Name and error.StatusCode are set automatically by OpenActive.NET for each error type. - - The appropriate OpenBookingError - A message that overwrites the the `Description` property of the supplied error - The source exception - - - - Serialised the associated error to OpenActive compliant s JSON-LD - - TODO: Should this just return the type, to allow it to be serialised by the application? Requires json type - - OpenActive compliant serialised JSON-LD - - - - Get the HTTP status code assocaited with this error - - Associated status code - - - - This will check the returned - by a method and ensure it didn't run any async methods. - It then calls GetAwaiter().GetResult() which will - bubble up an exception if there is one - - The ValueTask from a method that didn't call any async methods - - - - This will check the returned - by a method and ensure it didn't run any async methods. - It then calls GetAwaiter().GetResult() to return the result - Calling .GetResult() will also bubble up an exception if there is one - - The ValueTask from a method that didn't call any async methods - The result returned by the method - - - - Implements the operator ==. - - The left. - The right. - - The result of the operator. - - - - - Implements the operator !=. - - The left. - The right. - - The result of the operator. - - - - - Determines whether the specified , is equal to this instance. - - The to compare with this instance. - - true if the specified is equal to this instance; otherwise, false. - - - - - Returns a hash code for this instance. - - - A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. - - - - - Class to represent unrecognised OrderItems - - - - - This is used by the booking engine to resolve an OrderItem to its components, using only opportunityId and Uri offerId - - - - Null if either ID does not match the template for the Opportunity, with its own Offer or the Offer of its parent - - - - This is used by the booking engine to resolve an OrderItem to its components, using only opportunityId and Uri offerId - - - - Null if either ID does not match the template - - - - This is used by the booking engine to resolve a bookable Opportunity ID to its components - - - Null if the ID does not match the template - - - - Id transforms provide strongly typed - - - - - If the RequiredBaseUrl is set, an exception is thrown where the {BaseUrl} does not match this value. - - - - - - - - - - - - - Use OpportunityType from components - - - - - - - Use OpportunityType from components - - - - - - - This class is not designed to be used outside of the library, one of its subclasses must be used instead - - - - - This class is not designed to be used outside of the library, one of its subclasses must be used instead - - - - - This method provides simple routing for the RPDE generator based on the subclasses defined - - - - - - - - - - - QUESTION: Should this be an interface? How do we use the settings pattern? - - - - - This Dictionary maps pairs of JSON-LD IDs to strongly typed classes containing their components. - It is used by the booking engine to validate and transform IDs provided by the Broker. - - The classes are POCO simply implementing the IBookablePairIdTemplate interface. - - The first ID is for the opportunity, the second ID is for the offer. - - - - - TTL in the Cache-Control header for all RPDE pages that contain greater than zero items - See https://developer.openactive.io/publishing-data/data-feeds/scaling-feeds for CDN configuration instructions - - - - - TTL in the Cache-Control header for all RPDE pages that contain zero items - See https://developer.openactive.io/publishing-data/data-feeds/scaling-feeds for CDN configuration instructions - - - - - TTL in the Cache-Control header for the dataset site - See https://developer.openactive.io/publishing-data/data-feeds/scaling-feeds for CDN configuration instructions - - - - - Useful for passing state through the flow - - - - - The StoreBookingEngine provides a more opinionated implementation of the Open Booking API on top of AbstractBookingEngine. - This is designed to be quick to implement, but may not fit the needs of more complex systems. - - It is not designed to be subclassed (it could be sealed?), but instead the implementer is encouraged - to implement and provide an IOpenBookingStore on instantiation. - - - - - Simple constructor - - settings are used exclusively by the AbstractBookingEngine - datasetSettings are used exclusively by the DatasetSiteGenerator - storeBookingEngineSettings used exclusively by the StoreBookingEngine - - - - BookOrderItems will always succeed or throw an error on failure. - Note that responseOrderItems provided by GetOrderItems are supplied for cases where Sales Invoices or other audit records - need to be written that require prices. As GetOrderItems occurs outside of the transaction. - - - - - ProposeOrderItems will always succeed or throw an error on failure. - Note that responseOrderItems provided by GetOrderItems are supplied for cases where Sales Invoices or other audit records - need to be written that require prices. As GetOrderItems occurs outside of the transaction. - - - - - Result of deleting (or attempting to delete) an Order in a store - - - - - Stage is provided as it depending on the implementation (e.g. what level of leasing is applied) - it might not be appropriate to create transactions for all stages. - Null can be returned in the case that a transaction has not been created. - - - - - - diff --git a/web-app-package/BookingSystem.AspNetCore/Schema.NET.dll b/web-app-package/BookingSystem.AspNetCore/Schema.NET.dll deleted file mode 100755 index 11d5cdf9..00000000 Binary files a/web-app-package/BookingSystem.AspNetCore/Schema.NET.dll and /dev/null differ diff --git a/web-app-package/BookingSystem.AspNetCore/ServiceStack.Common.dll b/web-app-package/BookingSystem.AspNetCore/ServiceStack.Common.dll deleted file mode 100755 index e43ffdf7..00000000 Binary files a/web-app-package/BookingSystem.AspNetCore/ServiceStack.Common.dll and /dev/null differ diff --git a/web-app-package/BookingSystem.AspNetCore/ServiceStack.Interfaces.dll b/web-app-package/BookingSystem.AspNetCore/ServiceStack.Interfaces.dll deleted file mode 100755 index 0ca9d4af..00000000 Binary files a/web-app-package/BookingSystem.AspNetCore/ServiceStack.Interfaces.dll and /dev/null differ diff --git a/web-app-package/BookingSystem.AspNetCore/ServiceStack.OrmLite.Sqlite.dll b/web-app-package/BookingSystem.AspNetCore/ServiceStack.OrmLite.Sqlite.dll deleted file mode 100755 index d17ceae8..00000000 Binary files a/web-app-package/BookingSystem.AspNetCore/ServiceStack.OrmLite.Sqlite.dll and /dev/null differ diff --git a/web-app-package/BookingSystem.AspNetCore/ServiceStack.OrmLite.dll b/web-app-package/BookingSystem.AspNetCore/ServiceStack.OrmLite.dll deleted file mode 100755 index 7a9eac4b..00000000 Binary files a/web-app-package/BookingSystem.AspNetCore/ServiceStack.OrmLite.dll and /dev/null differ diff --git a/web-app-package/BookingSystem.AspNetCore/ServiceStack.Text.dll b/web-app-package/BookingSystem.AspNetCore/ServiceStack.Text.dll deleted file mode 100755 index a5c8b1d0..00000000 Binary files a/web-app-package/BookingSystem.AspNetCore/ServiceStack.Text.dll and /dev/null differ diff --git a/web-app-package/BookingSystem.AspNetCore/Stubble.Core.dll b/web-app-package/BookingSystem.AspNetCore/Stubble.Core.dll deleted file mode 100755 index e1a802d5..00000000 Binary files a/web-app-package/BookingSystem.AspNetCore/Stubble.Core.dll and /dev/null differ diff --git a/web-app-package/BookingSystem.AspNetCore/Stubble.Extensions.JsonNet.dll b/web-app-package/BookingSystem.AspNetCore/Stubble.Extensions.JsonNet.dll deleted file mode 100755 index ad03ec03..00000000 Binary files a/web-app-package/BookingSystem.AspNetCore/Stubble.Extensions.JsonNet.dll and /dev/null differ diff --git a/web-app-package/BookingSystem.AspNetCore/System.Data.SQLite.dll b/web-app-package/BookingSystem.AspNetCore/System.Data.SQLite.dll deleted file mode 100755 index e0ce3bad..00000000 Binary files a/web-app-package/BookingSystem.AspNetCore/System.Data.SQLite.dll and /dev/null differ diff --git a/web-app-package/BookingSystem.AspNetCore/System.IdentityModel.Tokens.Jwt.dll b/web-app-package/BookingSystem.AspNetCore/System.IdentityModel.Tokens.Jwt.dll deleted file mode 100755 index 71a6437c..00000000 Binary files a/web-app-package/BookingSystem.AspNetCore/System.IdentityModel.Tokens.Jwt.dll and /dev/null differ diff --git a/web-app-package/BookingSystem.AspNetCore/UriTemplate.Core.dll b/web-app-package/BookingSystem.AspNetCore/UriTemplate.Core.dll deleted file mode 100755 index fe96e139..00000000 Binary files a/web-app-package/BookingSystem.AspNetCore/UriTemplate.Core.dll and /dev/null differ diff --git a/web-app-package/BookingSystem.AspNetCore/appsettings.Development.json b/web-app-package/BookingSystem.AspNetCore/appsettings.Development.json deleted file mode 100644 index e203e940..00000000 --- a/web-app-package/BookingSystem.AspNetCore/appsettings.Development.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "Logging": { - "LogLevel": { - "Default": "Debug", - "System": "Information", - "Microsoft": "Information" - } - } -} diff --git a/web-app-package/BookingSystem.AspNetCore/appsettings.all-features.json b/web-app-package/BookingSystem.AspNetCore/appsettings.all-features.json deleted file mode 100644 index 2c63c085..00000000 --- a/web-app-package/BookingSystem.AspNetCore/appsettings.all-features.json +++ /dev/null @@ -1,2 +0,0 @@ -{ -} diff --git a/web-app-package/BookingSystem.AspNetCore/appsettings.facilityuse-has-slots.json b/web-app-package/BookingSystem.AspNetCore/appsettings.facilityuse-has-slots.json deleted file mode 100644 index a7067328..00000000 --- a/web-app-package/BookingSystem.AspNetCore/appsettings.facilityuse-has-slots.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "FeatureFlags": { - "FacilityUseHasSlots": true - } -} diff --git a/web-app-package/BookingSystem.AspNetCore/appsettings.json b/web-app-package/BookingSystem.AspNetCore/appsettings.json deleted file mode 100644 index c700c9cd..00000000 --- a/web-app-package/BookingSystem.AspNetCore/appsettings.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "AllowedHosts": "*", - "ApplicationHostBaseUrl": "https://localhost:5001", - "OpenIdIssuerUrl": "https://localhost:5003", - "FeatureFlags": { - "SingleSeller": false, - "PaymentReconciliationDetailValidation": true, - "EnableTokenAuth": true - }, - "Payment": { - "AccountId": "SN1593", - "PaymentProviderId": "STRIPE", - "TaxCalculationB2B": true, - "TaxCalculationB2C": true - } -} diff --git a/web-app-package/BookingSystem.AspNetCore/appsettings.no-auth.json b/web-app-package/BookingSystem.AspNetCore/appsettings.no-auth.json deleted file mode 100644 index 05e8bf9b..00000000 --- a/web-app-package/BookingSystem.AspNetCore/appsettings.no-auth.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "FeatureFlags": { - "EnableTokenAuth": false - } -} diff --git a/web-app-package/BookingSystem.AspNetCore/appsettings.no-payment-reconciliation.json b/web-app-package/BookingSystem.AspNetCore/appsettings.no-payment-reconciliation.json deleted file mode 100644 index fea3a566..00000000 --- a/web-app-package/BookingSystem.AspNetCore/appsettings.no-payment-reconciliation.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "FeatureFlags": { - "PaymentReconciliationDetailValidation": false - } -} diff --git a/web-app-package/BookingSystem.AspNetCore/appsettings.no-tax-calculations.json b/web-app-package/BookingSystem.AspNetCore/appsettings.no-tax-calculations.json deleted file mode 100644 index 25d04da7..00000000 --- a/web-app-package/BookingSystem.AspNetCore/appsettings.no-tax-calculations.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "Payment": { - "TaxCalculationB2B": false, - "TaxCalculationB2C": false - } -} diff --git a/web-app-package/BookingSystem.AspNetCore/appsettings.only-free-opportunities.json b/web-app-package/BookingSystem.AspNetCore/appsettings.only-free-opportunities.json deleted file mode 100644 index ae9be3f3..00000000 --- a/web-app-package/BookingSystem.AspNetCore/appsettings.only-free-opportunities.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "FeatureFlags": { - "OnlyFreeOpportunities": true - } -} diff --git a/web-app-package/BookingSystem.AspNetCore/appsettings.prepayment-always-required.json b/web-app-package/BookingSystem.AspNetCore/appsettings.prepayment-always-required.json deleted file mode 100644 index 0e769734..00000000 --- a/web-app-package/BookingSystem.AspNetCore/appsettings.prepayment-always-required.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "FeatureFlags": { - "PrepaymentAlwaysRequired": true - } -} diff --git a/web-app-package/BookingSystem.AspNetCore/appsettings.single-seller.json b/web-app-package/BookingSystem.AspNetCore/appsettings.single-seller.json deleted file mode 100644 index 5c4cce23..00000000 --- a/web-app-package/BookingSystem.AspNetCore/appsettings.single-seller.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "FeatureFlags": { - "SingleSeller": true, - "CustomBuiltSystem": true, - "EnableTokenAuth": false - } -} diff --git a/web-app-package/BookingSystem.AspNetCore/runtimes/linux-x64/native/SQLite.Interop.dll b/web-app-package/BookingSystem.AspNetCore/runtimes/linux-x64/native/SQLite.Interop.dll deleted file mode 100755 index 6895e0fa..00000000 Binary files a/web-app-package/BookingSystem.AspNetCore/runtimes/linux-x64/native/SQLite.Interop.dll and /dev/null differ diff --git a/web-app-package/BookingSystem.AspNetCore/runtimes/osx-x64/native/SQLite.Interop.dll b/web-app-package/BookingSystem.AspNetCore/runtimes/osx-x64/native/SQLite.Interop.dll deleted file mode 100755 index de72b880..00000000 Binary files a/web-app-package/BookingSystem.AspNetCore/runtimes/osx-x64/native/SQLite.Interop.dll and /dev/null differ diff --git a/web-app-package/BookingSystem.AspNetCore/runtimes/win-x64/native/SQLite.Interop.dll b/web-app-package/BookingSystem.AspNetCore/runtimes/win-x64/native/SQLite.Interop.dll deleted file mode 100755 index 9a745b7b..00000000 Binary files a/web-app-package/BookingSystem.AspNetCore/runtimes/win-x64/native/SQLite.Interop.dll and /dev/null differ diff --git a/web-app-package/BookingSystem.AspNetCore/runtimes/win-x86/native/SQLite.Interop.dll b/web-app-package/BookingSystem.AspNetCore/runtimes/win-x86/native/SQLite.Interop.dll deleted file mode 100755 index 35bdfe6f..00000000 Binary files a/web-app-package/BookingSystem.AspNetCore/runtimes/win-x86/native/SQLite.Interop.dll and /dev/null differ diff --git a/web-app-package/BookingSystem.AspNetCore/web.config b/web-app-package/BookingSystem.AspNetCore/web.config deleted file mode 100644 index c0ec5e3a..00000000 --- a/web-app-package/BookingSystem.AspNetCore/web.config +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/web-app-package/BookingSystem.AspNetCore/wwwroot/images/placeholder-dataset-site-background.jpg b/web-app-package/BookingSystem.AspNetCore/wwwroot/images/placeholder-dataset-site-background.jpg deleted file mode 100644 index adef0d75..00000000 Binary files a/web-app-package/BookingSystem.AspNetCore/wwwroot/images/placeholder-dataset-site-background.jpg and /dev/null differ diff --git a/web-app-package/BookingSystem.AspNetCore/wwwroot/images/placeholder-logo.png b/web-app-package/BookingSystem.AspNetCore/wwwroot/images/placeholder-logo.png deleted file mode 100644 index fd758c01..00000000 Binary files a/web-app-package/BookingSystem.AspNetCore/wwwroot/images/placeholder-logo.png and /dev/null differ