From 9184a6b1339b4ba1ff2c96739079d5e89a2bf18c Mon Sep 17 00:00:00 2001 From: Li Date: Fri, 29 Dec 2023 18:55:21 +1000 Subject: [PATCH 1/4] Add protobuf types for v2 serialization --- LiftLog.Ui/LiftLog.Ui.csproj | 15 +++ .../CurrentSessionStateDaoV2.cs | 28 ++++ .../CurrentSessionStateDaoV2.proto | 11 ++ .../SessionBlueprintDaoV2.cs | 86 ++++++++++++ .../SessionBlueprintDaoV2.proto | 27 ++++ .../SessionHistoryDao/SessionHistoryDaoV2.cs | 122 ++++++++++++++++++ .../SessionHistoryDaoV2.proto | 36 ++++++ .../SettingsStorageDaoV2.proto | 10 ++ LiftLog.Ui/Models/Utils.cs | 71 ++++++++++ LiftLog.Ui/Models/Utils.proto | 31 +++++ 10 files changed, 437 insertions(+) create mode 100644 LiftLog.Ui/Models/CurrentSessionStateDao/CurrentSessionStateDaoV2.cs create mode 100644 LiftLog.Ui/Models/CurrentSessionStateDao/CurrentSessionStateDaoV2.proto create mode 100644 LiftLog.Ui/Models/SessionBlueprintDao/SessionBlueprintDaoV2.cs create mode 100644 LiftLog.Ui/Models/SessionBlueprintDao/SessionBlueprintDaoV2.proto create mode 100644 LiftLog.Ui/Models/SessionHistoryDao/SessionHistoryDaoV2.cs create mode 100644 LiftLog.Ui/Models/SessionHistoryDao/SessionHistoryDaoV2.proto create mode 100644 LiftLog.Ui/Models/SettingStorageDao/SettingsStorageDaoV2.proto create mode 100644 LiftLog.Ui/Models/Utils.cs create mode 100644 LiftLog.Ui/Models/Utils.proto diff --git a/LiftLog.Ui/LiftLog.Ui.csproj b/LiftLog.Ui/LiftLog.Ui.csproj index 30a9ae3f..96453cf5 100644 --- a/LiftLog.Ui/LiftLog.Ui.csproj +++ b/LiftLog.Ui/LiftLog.Ui.csproj @@ -5,6 +5,8 @@ enable enable true + + CS8981; @@ -24,6 +26,12 @@ + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + @@ -47,4 +55,11 @@ + + + + + + + diff --git a/LiftLog.Ui/Models/CurrentSessionStateDao/CurrentSessionStateDaoV2.cs b/LiftLog.Ui/Models/CurrentSessionStateDao/CurrentSessionStateDaoV2.cs new file mode 100644 index 00000000..0ca6bc5d --- /dev/null +++ b/LiftLog.Ui/Models/CurrentSessionStateDao/CurrentSessionStateDaoV2.cs @@ -0,0 +1,28 @@ +namespace LiftLog.Ui.Models.CurrentSessionStateDao; + +using LiftLog.Ui.Models.SessionHistoryDao; +using LiftLog.Ui.Store.CurrentSession; + +internal partial class CurrentSessionStateDaoV2 +{ + public CurrentSessionStateDaoV2( + SessionDaoV2? workoutSession, + SessionDaoV2? historySession, + UUIDDao? latestSetTimerNotificationId + ) + { + WorkoutSession = workoutSession; + HistorySession = historySession; + LatestSetTimerNotificationId = latestSetTimerNotificationId; + } + + public static CurrentSessionStateDaoV2 FromModel(CurrentSessionState model) => + new( + SessionDaoV2.FromModel(model.WorkoutSession), + SessionDaoV2.FromModel(model.HistorySession), + model.LatestSetTimerNotificationId + ); + + public CurrentSessionState ToModel() => + new(WorkoutSession?.ToModel(), HistorySession?.ToModel(), LatestSetTimerNotificationId); +} diff --git a/LiftLog.Ui/Models/CurrentSessionStateDao/CurrentSessionStateDaoV2.proto b/LiftLog.Ui/Models/CurrentSessionStateDao/CurrentSessionStateDaoV2.proto new file mode 100644 index 00000000..bd71a1cb --- /dev/null +++ b/LiftLog.Ui/Models/CurrentSessionStateDao/CurrentSessionStateDaoV2.proto @@ -0,0 +1,11 @@ +syntax = "proto3"; +package LiftLog.Ui.Models.CurrentSessionStateDao; + +import "Models/Utils.proto"; +import "Models/SessionHistoryDao/SessionHistoryDaoV2.proto"; + +message CurrentSessionStateDaoV2 { + optional LiftLog.Ui.Models.SessionHistoryDao.SessionDaoV2 workout_session = 1; + optional LiftLog.Ui.Models.SessionHistoryDao.SessionDaoV2 history_session = 2; + optional LiftLog.Ui.Models.UUIDDao latest_set_timer_notification_id = 3; +} diff --git a/LiftLog.Ui/Models/SessionBlueprintDao/SessionBlueprintDaoV2.cs b/LiftLog.Ui/Models/SessionBlueprintDao/SessionBlueprintDaoV2.cs new file mode 100644 index 00000000..de045420 --- /dev/null +++ b/LiftLog.Ui/Models/SessionBlueprintDao/SessionBlueprintDaoV2.cs @@ -0,0 +1,86 @@ +using System.Collections.Immutable; +using Google.Protobuf.WellKnownTypes; + +namespace LiftLog.Ui.Models.SessionBlueprintDao; + +internal partial class SessionBlueprintDaoV2 +{ + public SessionBlueprintDaoV2( + string name, + IEnumerable exerciseBlueprints + ) + { + Name = name; + ExerciseBlueprints.AddRange(exerciseBlueprints); + } + + public static SessionBlueprintDaoV2 FromModel(Lib.Models.SessionBlueprint model) => + new(model.Name, model.Exercises.Select(ExerciseBlueprintDaoV2.FromModel).ToImmutableList()); + + public Lib.Models.SessionBlueprint ToModel() => + new(Name, ExerciseBlueprints.Select(x => x.ToModel()).ToImmutableList()); +} + +internal partial class ExerciseBlueprintDaoV2 +{ + public ExerciseBlueprintDaoV2( + string name, + int sets, + int repsPerSet, + DecimalValue initialWeight, + DecimalValue weightIncreaseOnSuccess, + RestDaoV2 restBetweenSets, + bool supersetWithNext + ) + { + Name = name; + Sets = sets; + RepsPerSet = repsPerSet; + InitialWeight = initialWeight; + WeightIncreaseOnSuccess = weightIncreaseOnSuccess; + RestBetweenSets = restBetweenSets; + SupersetWithNext = supersetWithNext; + } + + public static ExerciseBlueprintDaoV2 FromModel(Lib.Models.ExerciseBlueprint model) => + new( + model.Name, + model.Sets, + model.RepsPerSet, + model.InitialWeight, + model.WeightIncreaseOnSuccess, + RestDaoV2.FromModel(model.RestBetweenSets), + model.SupersetWithNext + ); + + public Lib.Models.ExerciseBlueprint ToModel() => + new( + Name, + Sets, + RepsPerSet, + InitialWeight, + WeightIncreaseOnSuccess, + RestBetweenSets.ToModel(), + SupersetWithNext + ); +} + +internal partial class RestDaoV2 +{ + public RestDaoV2(Duration minRest, Duration maxRest, Duration failureRest) + { + MinRest = minRest; + MaxRest = maxRest; + FailureRest = failureRest; + } + + public static RestDaoV2 FromModel(Lib.Models.Rest model) => + new( + Duration.FromTimeSpan(model.MinRest), + Duration.FromTimeSpan(model.MaxRest), + Duration.FromTimeSpan(model.FailureRest) + ); + + public Lib.Models.Rest ToModel() => + new(MinRest.ToTimeSpan(), MaxRest.ToTimeSpan(), FailureRest.ToTimeSpan()); +} diff --git a/LiftLog.Ui/Models/SessionBlueprintDao/SessionBlueprintDaoV2.proto b/LiftLog.Ui/Models/SessionBlueprintDao/SessionBlueprintDaoV2.proto new file mode 100644 index 00000000..be6a341b --- /dev/null +++ b/LiftLog.Ui/Models/SessionBlueprintDao/SessionBlueprintDaoV2.proto @@ -0,0 +1,27 @@ +syntax = "proto3"; +package LiftLog.Ui.Models.SessionBlueprintDao; + +import "Models/Utils.proto"; +import "google/protobuf/duration.proto"; + +message SessionBlueprintDaoV2 { + string name = 1; + repeated ExerciseBlueprintDaoV2 exercise_blueprints = 2; +} + + +message ExerciseBlueprintDaoV2 { + string name = 1; + int32 sets = 2; + int32 reps_per_set = 3; + LiftLog.Ui.Models.DecimalValue initial_weight = 4; + LiftLog.Ui.Models.DecimalValue weight_increase_on_success = 5; + RestDaoV2 rest_between_sets = 6; + bool superset_with_next = 7; +} + +message RestDaoV2 { + google.protobuf.Duration min_rest = 1; + google.protobuf.Duration max_rest = 2; + google.protobuf.Duration failure_rest = 3; +} diff --git a/LiftLog.Ui/Models/SessionHistoryDao/SessionHistoryDaoV2.cs b/LiftLog.Ui/Models/SessionHistoryDao/SessionHistoryDaoV2.cs new file mode 100644 index 00000000..61b69cc8 --- /dev/null +++ b/LiftLog.Ui/Models/SessionHistoryDao/SessionHistoryDaoV2.cs @@ -0,0 +1,122 @@ +using System.Collections.Immutable; +using System.Diagnostics.CodeAnalysis; +using LiftLog.Ui.Models.SessionBlueprintDao; + +namespace LiftLog.Ui.Models.SessionHistoryDao; + +internal partial class SessionHistoryDaoV2 +{ + public SessionHistoryDaoV2(IEnumerable completedSessions) + { + CompletedSessions.AddRange(completedSessions); + } + + public static SessionHistoryDaoV2 FromModel(SessionHistoryDaoContainer model) => + new(model.CompletedSessions.Values.Select(SessionDaoV2.FromModel).Cast()); + + public SessionHistoryDaoContainer ToModel() => + new(CompletedSessions.Select(x => x.ToModel()).ToImmutableDictionary(x => x.Id, x => x)); +} + +internal partial class SessionDaoV2 +{ + public SessionDaoV2( + UUIDDao id, + SessionBlueprintDaoV2 sessionBlueprint, + IEnumerable recordedExercises, + DateOnlyDao date, + decimal? bodyweight + ) + { + Id = id; + SessionBlueprint = sessionBlueprint; + RecordedExercises.AddRange(recordedExercises); + Date = date; + Bodyweight = bodyweight; + } + + [return: NotNullIfNotNull(nameof(model))] + public static SessionDaoV2? FromModel(Lib.Models.Session? model) => + model is null + ? null + : new( + model.Id, + SessionBlueprintDaoV2.FromModel(model.Blueprint), + model.RecordedExercises.Select(RecordedExerciseDaoV2.FromModel).ToImmutableList(), + model.Date, + model.Bodyweight + ); + + public Lib.Models.Session ToModel() => + new( + Id, + SessionBlueprint.ToModel(), + RecordedExercises.Select(x => x.ToModel()).ToImmutableList(), + Date, + Bodyweight + ); +} + +internal partial class RecordedExerciseDaoV2 +{ + public RecordedExerciseDaoV2( + ExerciseBlueprintDaoV2 exerciseBlueprint, + decimal weight, + IEnumerable potentialSets, + string? notes, + bool perSetWeight + ) + { + ExerciseBlueprint = exerciseBlueprint; + Weight = weight; + PotentialSets.AddRange(potentialSets); + Notes = notes; + PerSetWeight = perSetWeight; + } + + public static RecordedExerciseDaoV2 FromModel(Lib.Models.RecordedExercise model) => + new( + ExerciseBlueprintDaoV2.FromModel(model.Blueprint), + model.Weight, + model.PotentialSets.Select(PotentialSetDaoV2.FromModel), + model.Notes, + model.PerSetWeight + ); + + public Lib.Models.RecordedExercise ToModel() => + new( + ExerciseBlueprint.ToModel(), + Weight, + PotentialSets.Select(x => x.ToModel()).ToImmutableList(), + Notes, + PerSetWeight + ); +} + +internal partial class PotentialSetDaoV2 +{ + public PotentialSetDaoV2(RecordedSetDaoV2? recordedSet, decimal weight) + { + RecordedSet = recordedSet; + Weight = weight; + } + + public static PotentialSetDaoV2 FromModel(Lib.Models.PotentialSet model) => + new(RecordedSetDaoV2.FromModel(model.Set), model.Weight); + + public Lib.Models.PotentialSet ToModel() => new(RecordedSet.ToModel(), Weight); +} + +internal partial class RecordedSetDaoV2 +{ + public RecordedSetDaoV2(int repsCompleted, TimeOnlyDao completionTime) + { + RepsCompleted = repsCompleted; + CompletionTime = completionTime; + } + + public static RecordedSetDaoV2? FromModel(Lib.Models.RecordedSet? model) => + model is null ? null : new(model.RepsCompleted, model.CompletionTime); + + public Lib.Models.RecordedSet ToModel() => new(RepsCompleted, CompletionTime); +} diff --git a/LiftLog.Ui/Models/SessionHistoryDao/SessionHistoryDaoV2.proto b/LiftLog.Ui/Models/SessionHistoryDao/SessionHistoryDaoV2.proto new file mode 100644 index 00000000..c5d74f01 --- /dev/null +++ b/LiftLog.Ui/Models/SessionHistoryDao/SessionHistoryDaoV2.proto @@ -0,0 +1,36 @@ +syntax = "proto3"; +package LiftLog.Ui.Models.SessionHistoryDao; + +import "Models/Utils.proto"; +import "Models/SessionBlueprintDao/SessionBlueprintDaoV2.proto"; + +message SessionHistoryDaoV2 { + repeated SessionDaoV2 completed_sessions = 1; +} + +message SessionDaoV2 { + LiftLog.Ui.Models.UUIDDao id = 1; + LiftLog.Ui.Models.SessionBlueprintDao.SessionBlueprintDaoV2 session_blueprint = 2; + repeated RecordedExerciseDaoV2 recorded_exercises = 3; + LiftLog.Ui.Models.DateOnlyDao date = 4; + optional LiftLog.Ui.Models.DecimalValue bodyweight = 5; +} + + +message RecordedExerciseDaoV2 { + LiftLog.Ui.Models.SessionBlueprintDao.ExerciseBlueprintDaoV2 exercise_blueprint = 1; + LiftLog.Ui.Models.DecimalValue weight = 2; + repeated PotentialSetDaoV2 potential_sets = 3; + optional string notes = 4; + bool per_set_weight = 5; +} + +message PotentialSetDaoV2 { + optional RecordedSetDaoV2 recorded_set = 1; + LiftLog.Ui.Models.DecimalValue weight = 2; +} + +message RecordedSetDaoV2 { + int32 reps_completed = 1; + LiftLog.Ui.Models.TimeOnlyDao completion_time = 2; +} diff --git a/LiftLog.Ui/Models/SettingStorageDao/SettingsStorageDaoV2.proto b/LiftLog.Ui/Models/SettingStorageDao/SettingsStorageDaoV2.proto new file mode 100644 index 00000000..5ec213e0 --- /dev/null +++ b/LiftLog.Ui/Models/SettingStorageDao/SettingsStorageDaoV2.proto @@ -0,0 +1,10 @@ +syntax = "proto3"; +package LiftLog.Ui.Models.SettingsStorageDao; + +import "Models/SessionHistoryDao/SessionHistoryDaoV2.proto"; +import "Models/SessionBlueprintDao/SessionBlueprintDaoV2.proto"; + +message SettingsStorageDaoV2 { + repeated LiftLog.Ui.Models.SessionHistoryDao.SessionDaoV2 sessions = 1; + repeated LiftLog.Ui.Models.SessionBlueprintDao.SessionBlueprintDaoV2 program = 2; +} diff --git a/LiftLog.Ui/Models/Utils.cs b/LiftLog.Ui/Models/Utils.cs new file mode 100644 index 00000000..14d31c6e --- /dev/null +++ b/LiftLog.Ui/Models/Utils.cs @@ -0,0 +1,71 @@ +using Google.Protobuf; + +namespace LiftLog.Ui.Models; + +// source: https://learn.microsoft.com/en-us/aspnet/core/grpc/protobuf?view=aspnetcore-8.0 +internal partial class DecimalValue +{ + private const decimal NanoFactor = 1_000_000_000; + + public DecimalValue(long units, int nanos) + { + Units = units; + Nanos = nanos; + } + + public static implicit operator decimal(DecimalValue grpcDecimal) + { + return grpcDecimal.Units + grpcDecimal.Nanos / NanoFactor; + } + + public static implicit operator DecimalValue(decimal value) + { + var units = decimal.ToInt64(value); + var nanos = decimal.ToInt32((value - units) * NanoFactor); + return new DecimalValue(units, nanos); + } +} + +internal partial class DateOnlyDao +{ + public DateOnlyDao(int year, int month, int day) + { + Year = year; + Month = month; + Day = day; + } + + public static implicit operator DateOnly(DateOnlyDao dao) => new(dao.Year, dao.Month, dao.Day); + + public static implicit operator DateOnlyDao(DateOnly model) => + new(model.Year, model.Month, model.Day); +} + +internal partial class TimeOnlyDao +{ + public TimeOnlyDao(int hour, int minute, int second, int millisecond) + { + Hour = hour; + Minute = minute; + Second = second; + Millisecond = millisecond; + } + + public static implicit operator TimeOnly(TimeOnlyDao dao) => + new(dao.Hour, dao.Minute, dao.Second, dao.Millisecond); + + public static implicit operator TimeOnlyDao(TimeOnly model) => + new(model.Hour, model.Minute, model.Second, model.Millisecond); +} + +internal partial class UUIDDao +{ + public UUIDDao(Guid value) + { + Value = ByteString.CopyFrom(value.ToByteArray()); + } + + public static implicit operator UUIDDao(Guid value) => new(value); + + public static implicit operator Guid(UUIDDao dao) => new(dao.Value.ToByteArray()); +} diff --git a/LiftLog.Ui/Models/Utils.proto b/LiftLog.Ui/Models/Utils.proto new file mode 100644 index 00000000..71bae9da --- /dev/null +++ b/LiftLog.Ui/Models/Utils.proto @@ -0,0 +1,31 @@ +syntax = "proto3"; +package LiftLog.Ui.Models; + + +message UUIDDao { + bytes value = 1; +} + +message DateOnlyDao { + int32 year = 1; + int32 month = 2; + int32 day = 3; +} + +message DecimalValue { + + // Whole units part of the amount + int64 units = 1; + + // Nano units of the amount (10^-9) + // Must be same sign as units + sfixed32 nanos = 2; +} + +message TimeOnlyDao { + int32 hour = 1; + int32 minute = 2; + int32 second = 3; + int32 millisecond = 4; + int32 microsecond = 5; +} From 3e15f9f10049c48f8f816b0f5072c466b3b78bce Mon Sep 17 00:00:00 2001 From: Li Date: Fri, 29 Dec 2023 21:44:18 +1000 Subject: [PATCH 2/4] Use new v2 storage models to serialize and deserialize everywhere --- LiftLog.App/MauiProgram.cs | 2 +- .../AppDataFileStorageKeyValueStore.cs | 17 +++++ ...reTextExporter.cs => MauiShareExporter.cs} | 21 +++--- .../CurrentSessionStateDaoV2.cs | 4 +- .../SessionBlueprintDaoV2.cs | 16 +++++ .../SessionBlueprintDaoV2.proto | 4 ++ .../SessionHistoryDao/SessionHistoryDaoV2.cs | 23 +++---- .../SessionHistoryDaoV2.proto | 3 +- .../SettingStorageDao/SettingsStorageDaoV2.cs | 16 +++++ LiftLog.Ui/Models/Utils.cs | 47 +++++++++++++ LiftLog.Ui/Services/IKeyValueStore.cs | 2 + LiftLog.Ui/Services/ITextExporter.cs | 6 +- .../KeyValueCurrentProgramRepository.cs | 20 +++--- .../Services/KeyValueProgressRepository.cs | 27 ++++---- .../PersistSessionMiddleware.cs | 47 ++++++++----- LiftLog.Ui/Store/Settings/SettingsEffects.cs | 62 +++++++++++++----- LiftLog.Web/Program.cs | 2 +- .../Services/LocalStorageKeyValueStore.cs | 10 +++ LiftLog.Web/Services/WebExporter.cs | 33 ++++++++++ LiftLog.Web/Services/WebTextExporter.cs | 26 -------- LiftLog.Web/wwwroot/export.liftlogbackup.gz | Bin 0 -> 13829 bytes LiftLog.Web/wwwroot/liftlog-export.json | 1 - LiftLog.Web/wwwroot/liftlog-export.json.gz | Bin 22433 -> 0 bytes 23 files changed, 275 insertions(+), 114 deletions(-) rename LiftLog.App/Services/{MauiShareTextExporter.cs => MauiShareExporter.cs} (59%) create mode 100644 LiftLog.Ui/Models/SettingStorageDao/SettingsStorageDaoV2.cs create mode 100644 LiftLog.Web/Services/WebExporter.cs delete mode 100644 LiftLog.Web/Services/WebTextExporter.cs create mode 100644 LiftLog.Web/wwwroot/export.liftlogbackup.gz delete mode 100644 LiftLog.Web/wwwroot/liftlog-export.json delete mode 100644 LiftLog.Web/wwwroot/liftlog-export.json.gz diff --git a/LiftLog.App/MauiProgram.cs b/LiftLog.App/MauiProgram.cs index f2f99640..77b70745 100644 --- a/LiftLog.App/MauiProgram.cs +++ b/LiftLog.App/MauiProgram.cs @@ -108,7 +108,7 @@ public static MauiApp CreateMauiApp() builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddScoped(); - builder.Services.AddScoped(); + builder.Services.AddScoped(); builder.Services.AddSingleton(new HttpClient()); builder.Services.AddScoped(); diff --git a/LiftLog.App/Services/AppDataFileStorageKeyValueStore.cs b/LiftLog.App/Services/AppDataFileStorageKeyValueStore.cs index 95155691..4cfe12bb 100644 --- a/LiftLog.App/Services/AppDataFileStorageKeyValueStore.cs +++ b/LiftLog.App/Services/AppDataFileStorageKeyValueStore.cs @@ -16,11 +16,28 @@ public class AppDataFileStorageKeyValueStore : IKeyValueStore return null; } + public async ValueTask GetItemBytesAsync(string key) + { + var fileName = GetFileName(key); + var exists = File.Exists(fileName); + if (exists) + { + var content = await File.ReadAllBytesAsync(fileName); + return content; + } + return null; + } + public async ValueTask SetItemAsync(string key, string value) { await File.WriteAllTextAsync(GetFileName(key), value); } + public async ValueTask SetItemAsync(string key, byte[] value) + { + await File.WriteAllBytesAsync(GetFileName(key), value); + } + private string GetFileName(string key) { var dataDir = FileSystem.Current.AppDataDirectory; diff --git a/LiftLog.App/Services/MauiShareTextExporter.cs b/LiftLog.App/Services/MauiShareExporter.cs similarity index 59% rename from LiftLog.App/Services/MauiShareTextExporter.cs rename to LiftLog.App/Services/MauiShareExporter.cs index e8be64a4..7eced233 100644 --- a/LiftLog.App/Services/MauiShareTextExporter.cs +++ b/LiftLog.App/Services/MauiShareExporter.cs @@ -3,36 +3,35 @@ namespace LiftLog.App.Services; -public class MauiShareTextExporter(IShare share, IFilePicker filePicker) : ITextExporter +public class MauiShareExporter(IShare share, IFilePicker filePicker) : IExporter { - public async Task ExportTextAsync(string text) + public async Task ExportBytesAsync(byte[] bytes) { - string fileName = "liftlog-export.json.gz"; + string fileName = "export.liftlogbackup.gz"; string file = Path.Combine(FileSystem.CacheDirectory, fileName); using (FileStream stream = File.Create(file)) using (GZipStream gzip = new(stream, CompressionMode.Compress)) - using (StreamWriter writer = new(gzip)) - { - await writer.WriteAsync(text); - } + await gzip.WriteAsync(bytes); + await share.RequestAsync( new ShareFileRequest { Title = "Export Data", File = new ShareFile(file) } ); } - public async Task ImportTextAsync() + public async Task ImportBytesAsync() { var file = await filePicker.PickAsync(); if (file == null) { - return ""; + return Array.Empty(); } using FileStream stream = File.OpenRead(file.FullPath); using GZipStream gzip = new(stream, CompressionMode.Decompress); - using StreamReader reader = new(gzip); - return await reader.ReadToEndAsync(); + using MemoryStream memoryStream = new(); + await gzip.CopyToAsync(memoryStream); + return memoryStream.ToArray(); } } diff --git a/LiftLog.Ui/Models/CurrentSessionStateDao/CurrentSessionStateDaoV2.cs b/LiftLog.Ui/Models/CurrentSessionStateDao/CurrentSessionStateDaoV2.cs index 0ca6bc5d..2b3eae14 100644 --- a/LiftLog.Ui/Models/CurrentSessionStateDao/CurrentSessionStateDaoV2.cs +++ b/LiftLog.Ui/Models/CurrentSessionStateDao/CurrentSessionStateDaoV2.cs @@ -18,8 +18,8 @@ public CurrentSessionStateDaoV2( public static CurrentSessionStateDaoV2 FromModel(CurrentSessionState model) => new( - SessionDaoV2.FromModel(model.WorkoutSession), - SessionDaoV2.FromModel(model.HistorySession), + model.WorkoutSession is null ? null : SessionDaoV2.FromModel(model.WorkoutSession), + model.HistorySession is null ? null : SessionDaoV2.FromModel(model.HistorySession), model.LatestSetTimerNotificationId ); diff --git a/LiftLog.Ui/Models/SessionBlueprintDao/SessionBlueprintDaoV2.cs b/LiftLog.Ui/Models/SessionBlueprintDao/SessionBlueprintDaoV2.cs index de045420..f96c293a 100644 --- a/LiftLog.Ui/Models/SessionBlueprintDao/SessionBlueprintDaoV2.cs +++ b/LiftLog.Ui/Models/SessionBlueprintDao/SessionBlueprintDaoV2.cs @@ -1,8 +1,24 @@ using System.Collections.Immutable; using Google.Protobuf.WellKnownTypes; +using LiftLog.Lib; namespace LiftLog.Ui.Models.SessionBlueprintDao; +internal partial class SessionBlueprintContainerDaoV2 +{ + public SessionBlueprintContainerDaoV2(IEnumerable sessions) + { + SessionBlueprints.AddRange(sessions); + } + + public static SessionBlueprintContainerDaoV2 FromModel( + ImmutableList model + ) => new(model.Select(SessionBlueprintDaoV2.FromModel)); + + public ImmutableListValue ToModel() => + SessionBlueprints.Select(x => x.ToModel()).ToImmutableList(); +} + internal partial class SessionBlueprintDaoV2 { public SessionBlueprintDaoV2( diff --git a/LiftLog.Ui/Models/SessionBlueprintDao/SessionBlueprintDaoV2.proto b/LiftLog.Ui/Models/SessionBlueprintDao/SessionBlueprintDaoV2.proto index be6a341b..7746b265 100644 --- a/LiftLog.Ui/Models/SessionBlueprintDao/SessionBlueprintDaoV2.proto +++ b/LiftLog.Ui/Models/SessionBlueprintDao/SessionBlueprintDaoV2.proto @@ -4,6 +4,10 @@ package LiftLog.Ui.Models.SessionBlueprintDao; import "Models/Utils.proto"; import "google/protobuf/duration.proto"; +message SessionBlueprintContainerDaoV2 { + repeated SessionBlueprintDaoV2 session_blueprints = 1; +} + message SessionBlueprintDaoV2 { string name = 1; repeated ExerciseBlueprintDaoV2 exercise_blueprints = 2; diff --git a/LiftLog.Ui/Models/SessionHistoryDao/SessionHistoryDaoV2.cs b/LiftLog.Ui/Models/SessionHistoryDao/SessionHistoryDaoV2.cs index 61b69cc8..a4bb7e89 100644 --- a/LiftLog.Ui/Models/SessionHistoryDao/SessionHistoryDaoV2.cs +++ b/LiftLog.Ui/Models/SessionHistoryDao/SessionHistoryDaoV2.cs @@ -12,7 +12,7 @@ public SessionHistoryDaoV2(IEnumerable completedSessions) } public static SessionHistoryDaoV2 FromModel(SessionHistoryDaoContainer model) => - new(model.CompletedSessions.Values.Select(SessionDaoV2.FromModel).Cast()); + new(model.CompletedSessions.Values.Select(SessionDaoV2.FromModel)); public SessionHistoryDaoContainer ToModel() => new(CompletedSessions.Select(x => x.ToModel()).ToImmutableDictionary(x => x.Id, x => x)); @@ -35,17 +35,14 @@ public SessionDaoV2( Bodyweight = bodyweight; } - [return: NotNullIfNotNull(nameof(model))] - public static SessionDaoV2? FromModel(Lib.Models.Session? model) => - model is null - ? null - : new( - model.Id, - SessionBlueprintDaoV2.FromModel(model.Blueprint), - model.RecordedExercises.Select(RecordedExerciseDaoV2.FromModel).ToImmutableList(), - model.Date, - model.Bodyweight - ); + public static SessionDaoV2 FromModel(Lib.Models.Session model) => + new( + model.Id, + SessionBlueprintDaoV2.FromModel(model.Blueprint), + model.RecordedExercises.Select(RecordedExerciseDaoV2.FromModel).ToImmutableList(), + model.Date, + model.Bodyweight + ); public Lib.Models.Session ToModel() => new( @@ -104,7 +101,7 @@ public PotentialSetDaoV2(RecordedSetDaoV2? recordedSet, decimal weight) public static PotentialSetDaoV2 FromModel(Lib.Models.PotentialSet model) => new(RecordedSetDaoV2.FromModel(model.Set), model.Weight); - public Lib.Models.PotentialSet ToModel() => new(RecordedSet.ToModel(), Weight); + public Lib.Models.PotentialSet ToModel() => new(RecordedSet?.ToModel(), Weight); } internal partial class RecordedSetDaoV2 diff --git a/LiftLog.Ui/Models/SessionHistoryDao/SessionHistoryDaoV2.proto b/LiftLog.Ui/Models/SessionHistoryDao/SessionHistoryDaoV2.proto index c5d74f01..c98c46e1 100644 --- a/LiftLog.Ui/Models/SessionHistoryDao/SessionHistoryDaoV2.proto +++ b/LiftLog.Ui/Models/SessionHistoryDao/SessionHistoryDaoV2.proto @@ -2,6 +2,7 @@ syntax = "proto3"; package LiftLog.Ui.Models.SessionHistoryDao; import "Models/Utils.proto"; +import "google/protobuf/wrappers.proto"; import "Models/SessionBlueprintDao/SessionBlueprintDaoV2.proto"; message SessionHistoryDaoV2 { @@ -21,7 +22,7 @@ message RecordedExerciseDaoV2 { LiftLog.Ui.Models.SessionBlueprintDao.ExerciseBlueprintDaoV2 exercise_blueprint = 1; LiftLog.Ui.Models.DecimalValue weight = 2; repeated PotentialSetDaoV2 potential_sets = 3; - optional string notes = 4; + optional google.protobuf.StringValue notes = 4; bool per_set_weight = 5; } diff --git a/LiftLog.Ui/Models/SettingStorageDao/SettingsStorageDaoV2.cs b/LiftLog.Ui/Models/SettingStorageDao/SettingsStorageDaoV2.cs new file mode 100644 index 00000000..286801ef --- /dev/null +++ b/LiftLog.Ui/Models/SettingStorageDao/SettingsStorageDaoV2.cs @@ -0,0 +1,16 @@ +using LiftLog.Ui.Models.SessionBlueprintDao; +using LiftLog.Ui.Models.SessionHistoryDao; + +namespace LiftLog.Ui.Models.SettingsStorageDao; + +internal partial class SettingsStorageDaoV2 +{ + public SettingsStorageDaoV2( + IEnumerable sessions, + IEnumerable program + ) + { + Sessions.AddRange(sessions); + Program.AddRange(program); + } +} diff --git a/LiftLog.Ui/Models/Utils.cs b/LiftLog.Ui/Models/Utils.cs index 14d31c6e..bf2ff3b8 100644 --- a/LiftLog.Ui/Models/Utils.cs +++ b/LiftLog.Ui/Models/Utils.cs @@ -24,6 +24,26 @@ public static implicit operator DecimalValue(decimal value) var nanos = decimal.ToInt32((value - units) * NanoFactor); return new DecimalValue(units, nanos); } + + public static implicit operator decimal?(DecimalValue? grpcDecimal) + { + if (grpcDecimal is null) + { + return null; + } + return grpcDecimal.Units + grpcDecimal.Nanos / NanoFactor; + } + + public static implicit operator DecimalValue?(decimal? value) + { + if (value is null) + { + return null; + } + var units = decimal.ToInt64(value.Value); + var nanos = decimal.ToInt32((value.Value - units) * NanoFactor); + return new DecimalValue(units, nanos); + } } internal partial class DateOnlyDao @@ -39,6 +59,14 @@ public DateOnlyDao(int year, int month, int day) public static implicit operator DateOnlyDao(DateOnly model) => new(model.Year, model.Month, model.Day); + + public static implicit operator DateOnlyDao?(DateOnly? model) => + model is null + ? null + : new DateOnlyDao(model.Value.Year, model.Value.Month, model.Value.Day); + + public static implicit operator DateOnly?(DateOnlyDao? dao) => + dao is null ? null : new DateOnly(dao.Year, dao.Month, dao.Day); } internal partial class TimeOnlyDao @@ -56,6 +84,19 @@ public static implicit operator TimeOnly(TimeOnlyDao dao) => public static implicit operator TimeOnlyDao(TimeOnly model) => new(model.Hour, model.Minute, model.Second, model.Millisecond); + + public static implicit operator TimeOnlyDao?(TimeOnly? model) => + model is null + ? null + : new TimeOnlyDao( + model.Value.Hour, + model.Value.Minute, + model.Value.Second, + model.Value.Millisecond + ); + + public static implicit operator TimeOnly?(TimeOnlyDao? dao) => + dao is null ? null : new TimeOnly(dao.Hour, dao.Minute, dao.Second, dao.Millisecond); } internal partial class UUIDDao @@ -68,4 +109,10 @@ public UUIDDao(Guid value) public static implicit operator UUIDDao(Guid value) => new(value); public static implicit operator Guid(UUIDDao dao) => new(dao.Value.ToByteArray()); + + public static implicit operator UUIDDao?(Guid? value) => + value is null ? null : new UUIDDao(value.Value); + + public static implicit operator Guid?(UUIDDao? dao) => + dao is null ? null : new Guid(dao.Value.ToByteArray()); } diff --git a/LiftLog.Ui/Services/IKeyValueStore.cs b/LiftLog.Ui/Services/IKeyValueStore.cs index 9fcaa26d..3eef115f 100644 --- a/LiftLog.Ui/Services/IKeyValueStore.cs +++ b/LiftLog.Ui/Services/IKeyValueStore.cs @@ -3,5 +3,7 @@ namespace LiftLog.Ui.Services; public interface IKeyValueStore { ValueTask GetItemAsync(string key); + ValueTask GetItemBytesAsync(string key); ValueTask SetItemAsync(string key, string value); + ValueTask SetItemAsync(string key, byte[] value); } diff --git a/LiftLog.Ui/Services/ITextExporter.cs b/LiftLog.Ui/Services/ITextExporter.cs index e2af0ccd..f28b1faa 100644 --- a/LiftLog.Ui/Services/ITextExporter.cs +++ b/LiftLog.Ui/Services/ITextExporter.cs @@ -1,7 +1,7 @@ namespace LiftLog.Ui.Services; -public interface ITextExporter +public interface IExporter { - Task ExportTextAsync(string text); - Task ImportTextAsync(); + Task ExportBytesAsync(byte[] bytes); + Task ImportBytesAsync(); } diff --git a/LiftLog.Ui/Services/KeyValueCurrentProgramRepository.cs b/LiftLog.Ui/Services/KeyValueCurrentProgramRepository.cs index 9fdc9715..1638806b 100644 --- a/LiftLog.Ui/Services/KeyValueCurrentProgramRepository.cs +++ b/LiftLog.Ui/Services/KeyValueCurrentProgramRepository.cs @@ -1,5 +1,7 @@ +using System.Buffers.Text; using System.Collections.Immutable; using System.Text.Json; +using Google.Protobuf; using LiftLog.Lib; using LiftLog.Lib.Models; using LiftLog.Lib.Serialization; @@ -27,13 +29,10 @@ public async ValueTask PersistSessionsInProgramAsync(IReadOnlyList JsonSerializer .Deserialize( - storedDataJson ?? "null", + await keyValueStore.GetItemAsync(StorageKey) ?? "null", StorageJsonContext.Context.SessionBlueprintContainerDaoV1 ) ?.ToModel(), + "2" + => SessionBlueprintContainerDaoV2 + .Parser.ParseFrom(await keyValueStore.GetItemBytesAsync(StorageKey) ?? []) + .ToModel(), _ => throw new Exception($"Unknown version {version} of {StorageKey}"), }; _sessions = storedData ?? ImmutableList.Create(); diff --git a/LiftLog.Ui/Services/KeyValueProgressRepository.cs b/LiftLog.Ui/Services/KeyValueProgressRepository.cs index b2780c8b..e31c9414 100644 --- a/LiftLog.Ui/Services/KeyValueProgressRepository.cs +++ b/LiftLog.Ui/Services/KeyValueProgressRepository.cs @@ -2,6 +2,7 @@ using System.Collections.Immutable; using System.Diagnostics; using System.Text.Json; +using Google.Protobuf; using LiftLog.Lib; using LiftLog.Lib.Models; using LiftLog.Lib.Serialization; @@ -78,24 +79,27 @@ private async ValueTask InitialiseAsync() var version = await keyValueStore.GetItemAsync($"{StorageKey}-Version"); if (version is null) { - version = "1"; - await keyValueStore.SetItemAsync($"{StorageKey}-Version", "1"); + version = "2"; + await keyValueStore.SetItemAsync($"{StorageKey}-Version", "2"); } var versionCheckTime = sw.ElapsedMilliseconds; sw.Restart(); - var storedDataJson = await keyValueStore.GetItemAsync(StorageKey); - var getStoredTime = sw.ElapsedMilliseconds; - sw.Restart(); SessionHistoryDaoContainer? storedData = version switch { "1" => JsonSerializer .Deserialize( - storedDataJson ?? "null", + await keyValueStore.GetItemAsync(StorageKey) ?? "null", StorageJsonContext.Context.SessionHistoryDaoV1 ) ?.ToModel(), + "2" + => SessionHistoryDaoV2 + .Parser.ParseFrom( + await keyValueStore.GetItemBytesAsync(StorageKey) ?? [] + ) + ?.ToModel(), _ => throw new Exception($"Unknown version {version} of {StorageKey}"), }; var deserialiseTime = sw.ElapsedMilliseconds; @@ -107,7 +111,7 @@ private async ValueTask InitialiseAsync() var convertTime = sw.ElapsedMilliseconds; sw.Stop(); logger.LogInformation( - $"Initialised progress repository in ({versionCheckTime}ms, {getStoredTime}ms, {deserialiseTime}ms, {convertTime}ms))" + $"Initialised progress repository in ({versionCheckTime}ms, {deserialiseTime}ms, {convertTime}ms))" ); _initialised = true; } @@ -116,14 +120,13 @@ private async ValueTask InitialiseAsync() private async ValueTask PersistAsync() { await Task.WhenAll( - keyValueStore.SetItemAsync($"{StorageKey}-Version", "1").AsTask(), + keyValueStore.SetItemAsync($"{StorageKey}-Version", "2").AsTask(), keyValueStore .SetItemAsync( StorageKey, - JsonSerializer.Serialize( - SessionHistoryDaoV1.FromModel(new(_storedSessions)), - StorageJsonContext.Context.SessionHistoryDaoV1 - ) + SessionHistoryDaoV2 + .FromModel(new SessionHistoryDaoContainer(_storedSessions)) + .ToByteArray() ) .AsTask() ); diff --git a/LiftLog.Ui/Store/CurrentSession/PersistSessionMiddleware.cs b/LiftLog.Ui/Store/CurrentSession/PersistSessionMiddleware.cs index 0897f7e4..5616bd8a 100644 --- a/LiftLog.Ui/Store/CurrentSession/PersistSessionMiddleware.cs +++ b/LiftLog.Ui/Store/CurrentSession/PersistSessionMiddleware.cs @@ -1,6 +1,7 @@ using System.Diagnostics; using System.Text.Json; using Fluxor; +using Google.Protobuf; using LiftLog.Lib.Serialization; using LiftLog.Ui.Models.CurrentSessionStateDao; using LiftLog.Ui.Models.SessionHistoryDao; @@ -14,7 +15,8 @@ public class PersistSessionMiddleware( ILogger logger ) : Middleware { - private const string Key = "CurrentSessionStateV1"; + // Bad name, too late to change + private const string StorageKey = "CurrentSessionStateV1"; private IStore? _store; private readonly IKeyValueStore keyValueStore = _keyValueStore; private readonly ILogger logger = logger; @@ -24,26 +26,35 @@ public override async Task InitializeAsync(IDispatcher dispatch, IStore store) { _store = store; var sw = Stopwatch.StartNew(); - var currentSessionStateJson = await keyValueStore.GetItemAsync(Key); - var storageTime = sw.ElapsedMilliseconds; - sw.Restart(); + var currentSessionVersion = + await keyValueStore.GetItemAsync($"{StorageKey}-Version") ?? "1"; try { - var currentSessionState = - currentSessionStateJson != null - ? JsonSerializer.Deserialize( - currentSessionStateJson, - StorageJsonContext.Context.CurrentSessionStateDaoV1 - ) - : null; + var currentSessionState = currentSessionVersion switch + { + "1" + => JsonSerializer + .Deserialize( + await keyValueStore.GetItemAsync(StorageKey) ?? "null", + StorageJsonContext.Context.CurrentSessionStateDaoV1 + ) + ?.ToModel(), + "2" + => CurrentSessionStateDaoV2 + .Parser.ParseFrom( + await keyValueStore.GetItemBytesAsync(StorageKey) ?? [] + ) + .ToModel(), + _ => null + }; var deserializationTime = sw.ElapsedMilliseconds; sw.Stop(); logger.LogInformation( - $"Deserialized current session state in (storage: {storageTime}ms | deserialization: {deserializationTime}ms | total: {storageTime + deserializationTime}ms)" + $"Deserialized current session state in {deserializationTime}ms" ); if (currentSessionState is not null) { - store.Features["CurrentSession"].RestoreState(currentSessionState.ToModel()); + store.Features["CurrentSession"].RestoreState(currentSessionState); } } catch (JsonException e) @@ -64,13 +75,13 @@ public override async void AfterDispatch(object action) previousState = currentState; try { - var currentSessionState = JsonSerializer.Serialize( - CurrentSessionStateDaoV1.FromModel(currentState), - StorageJsonContext.Context.CurrentSessionStateDaoV1 - ); + var currentSessionState = CurrentSessionStateDaoV2 + .FromModel(currentState) + .ToByteArray(); var serializationTime = sw.ElapsedMilliseconds; sw.Restart(); - await keyValueStore.SetItemAsync(Key, currentSessionState); + await keyValueStore.SetItemAsync(StorageKey, currentSessionState); + await keyValueStore.SetItemAsync($"{StorageKey}-Version", "2"); sw.Stop(); logger.LogInformation( $"Persisted current session state in (serialization: {serializationTime}ms |currentState {currentStateTime}ms | storage: {sw.ElapsedMilliseconds}ms | total: {currentStateTime + serializationTime + sw.ElapsedMilliseconds}ms)" diff --git a/LiftLog.Ui/Store/Settings/SettingsEffects.cs b/LiftLog.Ui/Store/Settings/SettingsEffects.cs index b6a5f2c2..05501d91 100644 --- a/LiftLog.Ui/Store/Settings/SettingsEffects.cs +++ b/LiftLog.Ui/Store/Settings/SettingsEffects.cs @@ -3,6 +3,7 @@ using System.Collections.Immutable; using System.Text.Json; using Fluxor; +using Google.Protobuf; using LiftLog.Lib; using LiftLog.Lib.Models; using LiftLog.Lib.Serialization; @@ -21,7 +22,7 @@ namespace LiftLog.Ui.Store.Settings; public class SettingsEffects( IProgressRepository ProgressRepository, ICurrentProgramRepository ProgramRepository, - ITextExporter textExporter, + IExporter textExporter, IAiWorkoutPlanner aiWorkoutPlanner, IThemeProvider themeProvider, ILogger logger, @@ -34,29 +35,58 @@ public async Task ExportData(ExportDataAction _, IDispatcher __) var sessions = await ProgressRepository.GetOrderedSessions().ToListAsync(); var program = await ProgramRepository.GetSessionsInProgramAsync(); - await textExporter.ExportTextAsync( - JsonSerializer.Serialize( - new SettingsStorageDaoV1( - sessions.Select(SessionDaoV1.FromModel).ToList(), - program.Select(SessionBlueprintDaoV1.FromModel).ToImmutableList() - ), - StorageJsonContext.Context.SettingsStorageDaoV1 - ) + await textExporter.ExportBytesAsync( + new SettingsStorageDaoV2( + sessions.Select(SessionDaoV2.FromModel), + program.Select(SessionBlueprintDaoV2.FromModel) + ).ToByteArray() ); } [EffectMethod] public async Task ImportData(ImportDataAction action, IDispatcher dispatcher) { + SettingsStorageDaoV2? Deserialize(byte[] bytes) + { + try + { + return SettingsStorageDaoV2.Parser.ParseFrom(bytes); + } + catch (InvalidProtocolBufferException v2Ex) + { + // Try to deserialize as v1 + try + { + var v1 = JsonSerializer.Deserialize( + bytes, + StorageJsonContext.Context.SettingsStorageDaoV1 + ); + if (v1 is null) + { + return null; + } + return new SettingsStorageDaoV2( + v1.Sessions.Select(x => x.ToModel()).Select(SessionDaoV2.FromModel), + v1.Program.Select(x => x.ToModel()).Select(SessionBlueprintDaoV2.FromModel) + ); + } + catch (Exception ex) + { + logger.LogWarning( + "Could not deserialize as v1 or v2: V1 Exception:{ex}, \nV2 Exception {v2Ex}", + ex, + v2Ex + ); + return null; + } + } + } try { - var importText = await textExporter.ImportTextAsync(); - if (string.IsNullOrEmpty(importText)) + var importBytes = await textExporter.ImportBytesAsync(); + if (importBytes is null || importBytes.Length == 0) return; - var deserialized = JsonSerializer.Deserialize( - importText, - StorageJsonContext.Context.SettingsStorageDaoV1 - ); + var deserialized = Deserialize(importBytes); if (deserialized != null) { await ProgressRepository.SaveCompletedSessionsAsync( @@ -70,7 +100,7 @@ await ProgressRepository.SaveCompletedSessionsAsync( } else { - logger.LogWarning("Could not deserialize data for import {data}", importText); + logger.LogError("Could not deserialize data for import {data}", importBytes); } } catch (JsonException ex) diff --git a/LiftLog.Web/Program.cs b/LiftLog.Web/Program.cs index 94e39a07..9afb0f42 100644 --- a/LiftLog.Web/Program.cs +++ b/LiftLog.Web/Program.cs @@ -55,7 +55,7 @@ builder.Services.AddNotifications(); builder.Services.AddBlazorDownloadFile(); -builder.Services.AddScoped(); +builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped< BlazorTransitionableRoute.IRouteTransitionInvoker, diff --git a/LiftLog.Web/Services/LocalStorageKeyValueStore.cs b/LiftLog.Web/Services/LocalStorageKeyValueStore.cs index c012df28..fc55b159 100644 --- a/LiftLog.Web/Services/LocalStorageKeyValueStore.cs +++ b/LiftLog.Web/Services/LocalStorageKeyValueStore.cs @@ -12,8 +12,18 @@ public class LocalStorageKeyValueStore(ILocalStorageService localStorageService) return localStorageService.GetItemAsStringAsync(key); } + public ValueTask GetItemBytesAsync(string key) + { + return localStorageService.GetItemAsync(key); + } + public ValueTask SetItemAsync(string key, string value) { return localStorageService.SetItemAsStringAsync(key, value); } + + public ValueTask SetItemAsync(string key, byte[] value) + { + return localStorageService.SetItemAsync(key, value); + } } diff --git a/LiftLog.Web/Services/WebExporter.cs b/LiftLog.Web/Services/WebExporter.cs new file mode 100644 index 00000000..ebbbb923 --- /dev/null +++ b/LiftLog.Web/Services/WebExporter.cs @@ -0,0 +1,33 @@ +using System.IO.Compression; +using System.Text; +using BlazorDownloadFile; +using LiftLog.Ui.Services; + +namespace LiftLog.Web.Services; + +public class WebExporter(IBlazorDownloadFileService downloadFileService, HttpClient httpClient) + : IExporter +{ + public async Task ExportBytesAsync(byte[] bytes) + { + using MemoryStream stream = new(); + using (GZipStream gzip = new(stream, CompressionLevel.SmallestSize)) + { + await gzip.WriteAsync(bytes); + } + await downloadFileService.DownloadFile( + fileName: "export.liftlogbackup.gz", + bytes: stream.ToArray(), + contentType: "application/octet-stream" + ); + } + + public async Task ImportBytesAsync() + { + var imported = await httpClient.GetAsync("/export.liftlogbackup.gz"); + using GZipStream gzip = new(imported.Content.ReadAsStream(), CompressionMode.Decompress); + using MemoryStream memoryStream = new(); + await gzip.CopyToAsync(memoryStream); + return memoryStream.ToArray(); + } +} diff --git a/LiftLog.Web/Services/WebTextExporter.cs b/LiftLog.Web/Services/WebTextExporter.cs deleted file mode 100644 index c6f1356a..00000000 --- a/LiftLog.Web/Services/WebTextExporter.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System.Text; -using BlazorDownloadFile; -using LiftLog.Ui.Services; - -namespace LiftLog.Web.Services; - -public class WebTextExporter(IBlazorDownloadFileService downloadFileService, HttpClient httpClient) - : ITextExporter -{ - public async Task ExportTextAsync(string text) - { - await downloadFileService.DownloadFileFromText( - fileName: "liftlog.export.json", - plainText: text, - encoding: Encoding.UTF8, - contentType: "text/plain", - encoderShouldEmitIdentifier: false - ); - } - - public async Task ImportTextAsync() - { - var imported = await httpClient.GetAsync("/liftlog-export.json"); - return await imported.Content.ReadAsStringAsync(); - } -} diff --git a/LiftLog.Web/wwwroot/export.liftlogbackup.gz b/LiftLog.Web/wwwroot/export.liftlogbackup.gz new file mode 100644 index 0000000000000000000000000000000000000000..aee75bd63bd98d991e27602574f91e93aa488279 GIT binary patch literal 13829 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 literal 0 HcmV?d00001 diff --git a/LiftLog.Web/wwwroot/liftlog-export.json b/LiftLog.Web/wwwroot/liftlog-export.json deleted file mode 100644 index 8de04551..00000000 --- a/LiftLog.Web/wwwroot/liftlog-export.json +++ /dev/null @@ -1 +0,0 @@ -{"Sessions":[{"Id":"4fbf3fdc-0628-4f0d-a2a7-68c0b9b9f205","Blueprint":{"Name":"Session 2: Upper Body","Exercises":[{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:03:00:","SecondaryRest":"0.00:05:00:","FailureRest":"0.00:08:00:"},"SupersetWithNext":false},{"Name":"Cable Rows","Sets":3,"RepsPerSet":12,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":3.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Cable Flys","Sets":3,"RepsPerSet":12,"InitialKilograms":10.0,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":12,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Preacher Curls","Sets":3,"RepsPerSet":10,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Tricep Rope Pushdowns","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:03:00:","SecondaryRest":"0.00:05:00:","FailureRest":"0.00:08:00:"},"SupersetWithNext":false},"Kilograms":75,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-12-20T13:22:36.8960533+10:00","Weight":75},{"RepsCompleted":8,"CompletionTime":"2023-12-20T13:27:26.075189+10:00","Weight":75},{"RepsCompleted":6,"CompletionTime":"2023-12-20T13:32:22.184156+10:00","Weight":75},{"RepsCompleted":8,"CompletionTime":"2023-12-20T13:40:04.2986248+10:00","Weight":75}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Cable Rows","Sets":3,"RepsPerSet":12,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":3.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":62.5,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-12-20T13:42:34.9350345+10:00","Weight":62.5},{"RepsCompleted":12,"CompletionTime":"2023-12-20T13:45:02.5410976+10:00","Weight":62.5},{"RepsCompleted":12,"CompletionTime":"2023-12-20T13:47:38.0374875+10:00","Weight":62.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":42.5,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-12-20T13:50:19.6411051+10:00","Weight":40.0},{"RepsCompleted":8,"CompletionTime":"2023-12-20T13:53:10.3225205+10:00","Weight":45.0},{"RepsCompleted":8,"CompletionTime":"2023-12-20T13:56:37.8161491+10:00","Weight":40.0},{"RepsCompleted":4,"CompletionTime":"2023-12-20T14:00:42.3007745+10:00","Weight":45.0}],"Notes":null,"PerSetWeight":true},{"Blueprint":{"Name":"Cable Flys","Sets":3,"RepsPerSet":12,"InitialKilograms":10.0,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":24.804,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-12-20T14:09:08.5579466+10:00","Weight":24.804},{"RepsCompleted":12,"CompletionTime":"2023-12-20T14:11:13.5863827+10:00","Weight":24.804},{"RepsCompleted":9,"CompletionTime":"2023-12-20T14:13:54.4571514+10:00","Weight":24.804}],"Notes":"Added semiweights","PerSetWeight":false},{"Blueprint":{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0,"RecordedSets":[{"RepsCompleted":6,"CompletionTime":"2023-12-20T14:15:51.1182567+10:00","Weight":0},{"RepsCompleted":8,"CompletionTime":"2023-12-20T14:21:05.2659342+10:00","Weight":0},{"RepsCompleted":4,"CompletionTime":"2023-12-20T14:23:10.3086887+10:00","Weight":0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Dips","Sets":3,"RepsPerSet":12,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0.0,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-12-20T14:24:31.8799235+10:00","Weight":0.0},{"RepsCompleted":8,"CompletionTime":"2023-12-20T14:26:14.1996023+10:00","Weight":0.0},{"RepsCompleted":9,"CompletionTime":"2023-12-20T14:28:48.0207284+10:00","Weight":0.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Preacher Curls","Sets":3,"RepsPerSet":10,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":32.5,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-12-20T14:31:24.1765149+10:00","Weight":32.5},{"RepsCompleted":10,"CompletionTime":"2023-12-20T14:33:43.2406541+10:00","Weight":32.5},{"RepsCompleted":10,"CompletionTime":"2023-12-20T14:37:10.459968+10:00","Weight":32.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Rope Pushdowns","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":32.072,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-12-20T14:39:23.2984959+10:00","Weight":32.072},{"RepsCompleted":12,"CompletionTime":"2023-12-20T14:42:05.1905041+10:00","Weight":32.072},{"RepsCompleted":7,"CompletionTime":"2023-12-20T14:45:10.9784425+10:00","Weight":32.072}],"Notes":null,"PerSetWeight":false}],"Date":"2023-12-20T00:00:00+00:00","Bodyweight":85.2},{"Id":"4ce94297-f879-4ff2-863f-6b0f0ca61b23","Blueprint":{"Name":"Session 1: Lower Body","Exercises":[{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:02:00:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Quad Raises","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:00:30:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:02:00:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":120,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-12-18T12:40:19.6440013+10:00","Weight":120},{"RepsCompleted":8,"CompletionTime":"2023-12-18T12:45:01.5053323+10:00","Weight":120},{"RepsCompleted":8,"CompletionTime":"2023-12-18T12:54:31.2991741+10:00","Weight":120}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":70,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-12-18T13:00:57.4345729+10:00","Weight":70},{"RepsCompleted":8,"CompletionTime":"2023-12-18T13:03:42.4601412+10:00","Weight":70},{"RepsCompleted":8,"CompletionTime":"2023-12-18T13:07:53.6254213+10:00","Weight":70}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":147.5,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-12-18T13:11:29.5998612+10:00","Weight":147.5},{"RepsCompleted":12,"CompletionTime":"2023-12-18T13:17:29.6562181+10:00","Weight":147.5},{"RepsCompleted":12,"CompletionTime":"2023-12-18T13:17:27.9890963+10:00","Weight":147.5},{"RepsCompleted":12,"CompletionTime":"2023-12-18T13:21:12.2772399+10:00","Weight":147.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Quad Raises","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":29.340,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-12-18T13:23:15.2109833+10:00","Weight":29.340},{"RepsCompleted":11,"CompletionTime":"2023-12-18T13:26:14.8573217+10:00","Weight":29.340},{"RepsCompleted":11,"CompletionTime":"2023-12-18T13:29:27.811246+10:00","Weight":29.340}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:00:30:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":42.5,"RecordedSets":[{"RepsCompleted":15,"CompletionTime":"2023-12-18T13:31:20.3453898+10:00","Weight":42.5},{"RepsCompleted":15,"CompletionTime":"2023-12-18T13:32:22.9946799+10:00","Weight":42.5},{"RepsCompleted":15,"CompletionTime":"2023-12-18T13:33:29.8701684+10:00","Weight":42.5}],"Notes":null,"PerSetWeight":false}],"Date":"2023-12-18T00:00:00+00:00","Bodyweight":83.1},{"Id":"3b30eb16-c3f7-41a5-9bd2-c36e658c108e","Blueprint":{"Name":"Session 3: Full Body","Exercises":[{"Name":"Deadlifts","Sets":3,"RepsPerSet":5,"InitialKilograms":70,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Bench Press","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":3,"RepsPerSet":10,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Bicep Curls","Sets":3,"RepsPerSet":10,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:00:30:","SecondaryRest":"0.00:01:00:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Deadlifts","Sets":3,"RepsPerSet":5,"InitialKilograms":70,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":115,"RecordedSets":[{"RepsCompleted":5,"CompletionTime":"2023-12-15T07:50:18.3480678+10:00","Weight":115},{"RepsCompleted":5,"CompletionTime":"2023-12-15T07:53:48.0225168+10:00","Weight":115},{"RepsCompleted":5,"CompletionTime":"2023-12-15T07:58:08.3891919+10:00","Weight":115}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":120,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-12-15T08:06:26.5385858+10:00","Weight":120},{"RepsCompleted":5,"CompletionTime":"2023-12-15T08:10:36.6159824+10:00","Weight":120},{"RepsCompleted":6,"CompletionTime":"2023-12-15T08:16:27.4060306+10:00","Weight":120}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bench Press","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":75,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-12-15T08:25:32.4004233+10:00","Weight":75},{"RepsCompleted":6,"CompletionTime":"2023-12-15T08:30:22.6584736+10:00","Weight":75},{"RepsCompleted":6,"CompletionTime":"2023-12-15T08:36:43.8770946+10:00","Weight":75}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0,"RecordedSets":[{"RepsCompleted":5,"CompletionTime":"2023-12-15T08:38:03.942772+10:00","Weight":0},{"RepsCompleted":5,"CompletionTime":"2023-12-15T08:40:09.2812615+10:00","Weight":0},{"RepsCompleted":5,"CompletionTime":"2023-12-15T08:43:03.6361957+10:00","Weight":0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Shoulder Press","Sets":3,"RepsPerSet":10,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":40.0,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-12-15T08:45:25.9250364+10:00","Weight":40.0},{"RepsCompleted":10,"CompletionTime":"2023-12-15T08:49:31.1427082+10:00","Weight":40.0},{"RepsCompleted":8,"CompletionTime":"2023-12-15T08:53:42.1138862+10:00","Weight":40.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0.0,"RecordedSets":[{"RepsCompleted":9,"CompletionTime":"2023-12-15T08:54:41.4588041+10:00","Weight":0.0},{"RepsCompleted":7,"CompletionTime":"2023-12-15T08:56:38.8817287+10:00","Weight":0.0},{"RepsCompleted":9,"CompletionTime":"2023-12-15T08:59:43.6475573+10:00","Weight":0.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bicep Curls","Sets":3,"RepsPerSet":10,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":15,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-12-15T09:01:26.1929349+10:00","Weight":15},{"RepsCompleted":10,"CompletionTime":"2023-12-15T09:03:24.7439916+10:00","Weight":15},{"RepsCompleted":9,"CompletionTime":"2023-12-15T09:06:07.9505463+10:00","Weight":15}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:00:30:","SecondaryRest":"0.00:01:00:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":40.0,"RecordedSets":[{"RepsCompleted":15,"CompletionTime":"2023-12-15T09:07:47.9854906+10:00","Weight":40.0},{"RepsCompleted":15,"CompletionTime":"2023-12-15T09:08:51.5650093+10:00","Weight":40.0},{"RepsCompleted":15,"CompletionTime":"2023-12-15T09:10:29.5651235+10:00","Weight":40.0}],"Notes":null,"PerSetWeight":false}],"Date":"2023-12-15T00:00:00+00:00","Bodyweight":83.7},{"Id":"0015e49f-2b7c-4c78-868a-2aeb96cf0356","Blueprint":{"Name":"Session 2: Upper Body","Exercises":[{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Cable Rows","Sets":3,"RepsPerSet":12,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":3.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Cable Flys","Sets":3,"RepsPerSet":12,"InitialKilograms":10.0,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":12,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Preacher Curls","Sets":3,"RepsPerSet":10,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Tricep Rope Pushdowns","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":75,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-12-13T13:30:01.9997046+10:00","Weight":75},{"RepsCompleted":6,"CompletionTime":"2023-12-13T13:35:56.1912438+10:00","Weight":75},{"RepsCompleted":6,"CompletionTime":"2023-12-13T13:42:18.4866508+10:00","Weight":75},{"RepsCompleted":6,"CompletionTime":"2023-12-13T13:48:31.6070562+10:00","Weight":75}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Cable Rows","Sets":3,"RepsPerSet":12,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":3.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":59.0,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-12-13T13:53:56.76884+10:00","Weight":59.0},{"RepsCompleted":12,"CompletionTime":"2023-12-13T13:56:24.1275417+10:00","Weight":59.0},{"RepsCompleted":12,"CompletionTime":"2023-12-13T13:59:03.8082022+10:00","Weight":59.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":42.5,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-12-13T14:03:21.9249054+10:00","Weight":40.0},{"RepsCompleted":8,"CompletionTime":"2023-12-13T14:07:02.8667011+10:00","Weight":45.0},{"RepsCompleted":8,"CompletionTime":"2023-12-13T14:11:31.5181229+10:00","Weight":40.0},{"RepsCompleted":6,"CompletionTime":"2023-12-13T14:15:26.0709208+10:00","Weight":45.0}],"Notes":null,"PerSetWeight":true},{"Blueprint":{"Name":"Cable Flys","Sets":3,"RepsPerSet":12,"InitialKilograms":10.0,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":24.804,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-12-13T14:17:59.0092881+10:00","Weight":24.804},{"RepsCompleted":12,"CompletionTime":"2023-12-13T14:22:18.4633036+10:00","Weight":24.804},{"RepsCompleted":9,"CompletionTime":"2023-12-13T14:23:06.9735034+10:00","Weight":24.804}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0,"RecordedSets":[{"RepsCompleted":7,"CompletionTime":"2023-12-13T14:25:33.1626978+10:00","Weight":0},{"RepsCompleted":5,"CompletionTime":"2023-12-13T14:28:57.2569963+10:00","Weight":0},{"RepsCompleted":3,"CompletionTime":"2023-12-13T14:31:20.1820909+10:00","Weight":0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Dips","Sets":3,"RepsPerSet":12,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0.0,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-12-13T14:32:51.8181277+10:00","Weight":0.0},{"RepsCompleted":9,"CompletionTime":"2023-12-13T14:35:20.5178769+10:00","Weight":0.0},{"RepsCompleted":9,"CompletionTime":"2023-12-13T14:38:15.4628855+10:00","Weight":0.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Preacher Curls","Sets":3,"RepsPerSet":10,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":32.5,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-12-13T14:40:20.6377162+10:00","Weight":32.5},{"RepsCompleted":9,"CompletionTime":"2023-12-13T14:42:20.8077349+10:00","Weight":32.5},{"RepsCompleted":8,"CompletionTime":"2023-12-13T14:46:23.6910042+10:00","Weight":32.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Rope Pushdowns","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":29.804,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-12-13T14:47:45.2626014+10:00","Weight":29.804},{"RepsCompleted":12,"CompletionTime":"2023-12-13T14:49:42.1004036+10:00","Weight":29.804},{"RepsCompleted":12,"CompletionTime":"2023-12-13T14:52:21.9571716+10:00","Weight":29.804}],"Notes":null,"PerSetWeight":false}],"Date":"2023-12-13T00:00:00+00:00","Bodyweight":83.4},{"Id":"664ab002-3e66-448e-ae01-7c39c412491e","Blueprint":{"Name":"Session 1: Lower Body","Exercises":[{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:02:00:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Quad Raises","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:00:30:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:02:00:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":115,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-12-12T12:38:13.4997349+10:00","Weight":115},{"RepsCompleted":8,"CompletionTime":"2023-12-12T12:42:20.2148908+10:00","Weight":115},{"RepsCompleted":8,"CompletionTime":"2023-12-12T12:47:49.1215468+10:00","Weight":115}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":65,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-12-12T13:03:13.0968028+10:00","Weight":65},{"RepsCompleted":8,"CompletionTime":"2023-12-12T13:05:33.4104092+10:00","Weight":65},{"RepsCompleted":8,"CompletionTime":"2023-12-12T13:09:06.3977651+10:00","Weight":65}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":147.5,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-12-12T13:12:06.5446183+10:00","Weight":147.5},{"RepsCompleted":12,"CompletionTime":"2023-12-12T13:14:35.8083305+10:00","Weight":147.5},{"RepsCompleted":12,"CompletionTime":"2023-12-12T13:18:30.6611993+10:00","Weight":147.5},{"RepsCompleted":8,"CompletionTime":"2023-12-12T13:23:09.8480917+10:00","Weight":147.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Quad Raises","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":29.340,"RecordedSets":[{"RepsCompleted":9,"CompletionTime":"2023-12-12T13:24:52.5888821+10:00","Weight":29.340},{"RepsCompleted":10,"CompletionTime":"2023-12-12T13:27:40.5980114+10:00","Weight":29.340},{"RepsCompleted":10,"CompletionTime":"2023-12-12T13:31:37.0295575+10:00","Weight":29.340}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:00:30:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":40,"RecordedSets":[{"RepsCompleted":15,"CompletionTime":"2023-12-12T13:34:09.5671434+10:00","Weight":40},{"RepsCompleted":15,"CompletionTime":"2023-12-12T13:35:09.0757562+10:00","Weight":40},{"RepsCompleted":15,"CompletionTime":"2023-12-12T13:36:15.8900789+10:00","Weight":40}],"Notes":null,"PerSetWeight":false}],"Date":"2023-12-12T00:00:00+00:00","Bodyweight":82.5},{"Id":"bfd3922c-fe9b-4be7-a262-32ec32bf74b3","Blueprint":{"Name":"Session 3: Full Body","Exercises":[{"Name":"Deadlifts","Sets":3,"RepsPerSet":5,"InitialKilograms":70,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Bench Press","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":3,"RepsPerSet":10,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Bicep Curls","Sets":3,"RepsPerSet":10,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Deadlifts","Sets":3,"RepsPerSet":5,"InitialKilograms":70,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":110,"RecordedSets":[{"RepsCompleted":5,"CompletionTime":"2023-12-08T15:02:11.9616695+10:00","Weight":110},{"RepsCompleted":5,"CompletionTime":"2023-12-08T15:04:50.563867+10:00","Weight":110},{"RepsCompleted":5,"CompletionTime":"2023-12-08T15:09:36.2387798+10:00","Weight":110}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":110,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-12-08T15:17:57.8373704+10:00","Weight":110},{"RepsCompleted":8,"CompletionTime":"2023-12-08T15:21:19.1257257+10:00","Weight":110},{"RepsCompleted":8,"CompletionTime":"2023-12-08T15:25:17.5762687+10:00","Weight":110}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bench Press","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":70,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-12-08T15:34:22.6875078+10:00","Weight":70},{"RepsCompleted":8,"CompletionTime":"2023-12-08T15:39:52.7204393+10:00","Weight":70},{"RepsCompleted":8,"CompletionTime":"2023-12-08T15:44:58.0148007+10:00","Weight":70}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-12-08T15:50:35.1915024+10:00","Weight":0},{"RepsCompleted":5,"CompletionTime":"2023-12-08T15:54:53.7440448+10:00","Weight":0},{"RepsCompleted":5,"CompletionTime":"2023-12-08T15:56:18.9380705+10:00","Weight":0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Shoulder Press","Sets":3,"RepsPerSet":10,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":40.0,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-12-08T16:03:14.207017+10:00","Weight":40.0},{"RepsCompleted":10,"CompletionTime":"2023-12-08T16:06:16.8834159+10:00","Weight":40.0},{"RepsCompleted":7,"CompletionTime":"2023-12-08T16:10:03.1845181+10:00","Weight":40.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0.0,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-12-08T16:14:42.8120813+10:00","Weight":0.0},{"RepsCompleted":10,"CompletionTime":"2023-12-08T16:16:34.9975552+10:00","Weight":0.0},{"RepsCompleted":7,"CompletionTime":"2023-12-08T16:18:41.1156551+10:00","Weight":0.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bicep Curls","Sets":3,"RepsPerSet":10,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":16,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-12-08T16:29:03.2877161+10:00","Weight":16},{"RepsCompleted":7,"CompletionTime":"2023-12-08T16:31:34.6723849+10:00","Weight":16},{"RepsCompleted":6,"CompletionTime":"2023-12-08T16:35:27.5017594+10:00","Weight":16}],"Notes":null,"PerSetWeight":false}],"Date":"2023-12-08T00:00:00+00:00","Bodyweight":85.1},{"Id":"413e2805-6edb-4ca9-9acb-4c64721b369f","Blueprint":{"Name":"Session 2: Upper Body","Exercises":[{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Cable Rows","Sets":3,"RepsPerSet":12,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":3.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Cable Flys","Sets":3,"RepsPerSet":12,"InitialKilograms":10.0,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":12,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Preacher Curls","Sets":3,"RepsPerSet":10,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Tricep Rope Pushdowns","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":70,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-12-06T15:27:49.2783076+10:00","Weight":70},{"RepsCompleted":8,"CompletionTime":"2023-12-06T15:30:45.0438624+10:00","Weight":70},{"RepsCompleted":8,"CompletionTime":"2023-12-06T15:34:37.6252734+10:00","Weight":70},{"RepsCompleted":8,"CompletionTime":"2023-12-06T15:40:08.1230743+10:00","Weight":70}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Cable Rows","Sets":3,"RepsPerSet":12,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":3.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":55.5,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-12-06T15:43:04.8693133+10:00","Weight":55.5},{"RepsCompleted":12,"CompletionTime":"2023-12-06T15:45:11.2495774+10:00","Weight":55.5},{"RepsCompleted":12,"CompletionTime":"2023-12-06T15:47:19.9574867+10:00","Weight":55.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":42.5,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-12-06T15:49:24.1887847+10:00","Weight":40.0},{"RepsCompleted":7,"CompletionTime":"2023-12-06T15:52:27.8296426+10:00","Weight":45.0},{"RepsCompleted":8,"CompletionTime":"2023-12-06T15:56:34.5081148+10:00","Weight":40.0},{"RepsCompleted":5,"CompletionTime":"2023-12-06T16:01:27.1046141+10:00","Weight":45.0}],"Notes":"20s then 22s","PerSetWeight":true},{"Blueprint":{"Name":"Cable Flys","Sets":3,"RepsPerSet":12,"InitialKilograms":10.0,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":24.804,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-12-06T16:03:21.407195+10:00","Weight":24.804},{"RepsCompleted":12,"CompletionTime":"2023-12-06T16:05:34.8958732+10:00","Weight":24.804},{"RepsCompleted":7,"CompletionTime":"2023-12-06T16:07:46.3944743+10:00","Weight":24.804}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0,"RecordedSets":[{"RepsCompleted":5,"CompletionTime":"2023-12-06T16:10:00.7255231+10:00","Weight":0},{"RepsCompleted":8,"CompletionTime":"2023-12-06T16:25:09.9793471+10:00","Weight":0},{"RepsCompleted":5,"CompletionTime":"2023-12-06T16:26:50.7484813+10:00","Weight":0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Dips","Sets":3,"RepsPerSet":12,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0.0,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-12-06T16:28:08.7004002+10:00","Weight":0.0},{"RepsCompleted":9,"CompletionTime":"2023-12-06T16:29:37.6530643+10:00","Weight":0.0},{"RepsCompleted":8,"CompletionTime":"2023-12-06T16:32:15.3386345+10:00","Weight":0.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Preacher Curls","Sets":3,"RepsPerSet":10,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":30,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-12-06T16:34:04.3725954+10:00","Weight":30},{"RepsCompleted":10,"CompletionTime":"2023-12-06T16:36:01.1066281+10:00","Weight":30},{"RepsCompleted":10,"CompletionTime":"2023-12-06T16:38:01.8028031+10:00","Weight":30}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Rope Pushdowns","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":29.804,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-12-06T16:39:25.7692998+10:00","Weight":29.804},{"RepsCompleted":7,"CompletionTime":"2023-12-06T16:41:22.0181966+10:00","Weight":29.804},{"RepsCompleted":8,"CompletionTime":"2023-12-06T16:43:33.3069585+10:00","Weight":29.804}],"Notes":null,"PerSetWeight":false}],"Date":"2023-12-06T00:00:00+00:00","Bodyweight":84.0},{"Id":"9817719a-4f3f-4712-9ac1-d6bc7600a52f","Blueprint":{"Name":"Session 1: Lower Body","Exercises":[{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:02:00:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Quad Raises","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:00:30:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:02:00:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":105,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-12-04T13:03:53.8570282+10:00","Weight":105},{"RepsCompleted":8,"CompletionTime":"2023-12-04T13:09:32.0837143+10:00","Weight":105},{"RepsCompleted":8,"CompletionTime":"2023-12-04T13:14:28.8270638+10:00","Weight":105}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":60,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-12-04T13:20:37.9446715+10:00","Weight":60},{"RepsCompleted":8,"CompletionTime":"2023-12-04T13:22:32.6750921+10:00","Weight":60},{"RepsCompleted":8,"CompletionTime":"2023-12-04T13:24:41.8696239+10:00","Weight":60}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":142.5,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-12-04T13:29:28.4171774+10:00","Weight":142.5},{"RepsCompleted":12,"CompletionTime":"2023-12-04T13:32:05.7303818+10:00","Weight":142.5},{"RepsCompleted":12,"CompletionTime":"2023-12-04T13:35:31.2187075+10:00","Weight":142.5},{"RepsCompleted":12,"CompletionTime":"2023-12-04T13:38:50.1437682+10:00","Weight":142.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Quad Raises","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":29.340,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-12-04T13:41:58.1952811+10:00","Weight":29.340},{"RepsCompleted":11,"CompletionTime":"2023-12-04T13:44:22.8797877+10:00","Weight":29.340},{"RepsCompleted":9,"CompletionTime":"2023-12-04T13:47:43.5805007+10:00","Weight":29.340}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:00:30:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":60.0,"RecordedSets":[{"RepsCompleted":15,"CompletionTime":"2023-12-04T13:51:23.3076598+10:00","Weight":60.0},{"RepsCompleted":15,"CompletionTime":"2023-12-04T13:52:31.3561072+10:00","Weight":60.0},{"RepsCompleted":15,"CompletionTime":"2023-12-04T13:55:15.9404391+10:00","Weight":60.0}],"Notes":null,"PerSetWeight":false}],"Date":"2023-12-04T00:00:00+00:00","Bodyweight":83.4},{"Id":"3631d25e-e555-4698-bb3d-9d12c9ab8215","Blueprint":{"Name":"Session 3: Full Body","Exercises":[{"Name":"Deadlifts","Sets":3,"RepsPerSet":5,"InitialKilograms":70,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Bench Press","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":3,"RepsPerSet":10,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Bicep Curls","Sets":3,"RepsPerSet":10,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Deadlifts","Sets":3,"RepsPerSet":5,"InitialKilograms":70,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":105,"RecordedSets":[{"RepsCompleted":5,"CompletionTime":"2023-12-01T07:53:14.434267+10:00","Weight":105},{"RepsCompleted":5,"CompletionTime":"2023-12-01T07:55:34.8020027+10:00","Weight":105},{"RepsCompleted":5,"CompletionTime":"2023-12-01T07:59:18.8770306+10:00","Weight":105}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":100,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-12-01T08:05:14.3931359+10:00","Weight":100},{"RepsCompleted":8,"CompletionTime":"2023-12-01T08:08:29.4091816+10:00","Weight":100},{"RepsCompleted":8,"CompletionTime":"2023-12-01T08:12:03.1113623+10:00","Weight":100}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bench Press","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":70,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-12-01T08:18:35.9518908+10:00","Weight":70},{"RepsCompleted":8,"CompletionTime":"2023-12-01T08:22:43.2120454+10:00","Weight":70},{"RepsCompleted":6,"CompletionTime":"2023-12-01T08:27:23.4388244+10:00","Weight":70}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0,"RecordedSets":[{"RepsCompleted":5,"CompletionTime":"2023-12-01T08:29:14.9969694+10:00","Weight":0},{"RepsCompleted":5,"CompletionTime":"2023-12-01T08:30:58.0682246+10:00","Weight":0},{"RepsCompleted":2,"CompletionTime":"2023-12-01T08:32:27.5181952+10:00","Weight":0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Shoulder Press","Sets":3,"RepsPerSet":10,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":40.0,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-12-01T08:34:18.1851159+10:00","Weight":40.0},{"RepsCompleted":6,"CompletionTime":"2023-12-01T08:37:00.5499476+10:00","Weight":40.0},{"RepsCompleted":7,"CompletionTime":"2023-12-01T08:42:21.1059111+10:00","Weight":40.0}],"Notes":"Bad sleep","PerSetWeight":false},{"Blueprint":{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0.0,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-12-01T08:43:51.0662937+10:00","Weight":0.0},{"RepsCompleted":10,"CompletionTime":"2023-12-01T08:45:55.0164839+10:00","Weight":0.0},{"RepsCompleted":6,"CompletionTime":"2023-12-01T08:47:56.0606384+10:00","Weight":0.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bicep Curls","Sets":3,"RepsPerSet":10,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":15.0,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-12-01T08:49:22.3980233+10:00","Weight":15.0},{"RepsCompleted":10,"CompletionTime":"2023-12-01T08:51:19.0170385+10:00","Weight":15.0},{"RepsCompleted":7,"CompletionTime":"2023-12-01T08:53:37.9296576+10:00","Weight":15.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":60.0,"RecordedSets":[{"RepsCompleted":15,"CompletionTime":"2023-12-01T08:55:19.131544+10:00","Weight":60.0},{"RepsCompleted":15,"CompletionTime":"2023-12-01T08:56:58.8710297+10:00","Weight":60.0},{"RepsCompleted":14,"CompletionTime":"2023-12-01T08:56:59.3477891+10:00","Weight":60.0}],"Notes":null,"PerSetWeight":false}],"Date":"2023-12-01T00:00:00+00:00","Bodyweight":82.7},{"Id":"0cb4c387-d4c3-4b33-8880-fdf3814fb460","Blueprint":{"Name":"Session 2: Upper Body","Exercises":[{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Cable Rows","Sets":3,"RepsPerSet":12,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":3.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Cable Flys","Sets":3,"RepsPerSet":12,"InitialKilograms":10.0,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":12,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Preacher Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Tricep Rope Pushdowns","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":70,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-11-29T12:49:37.0254511+10:00","Weight":70},{"RepsCompleted":8,"CompletionTime":"2023-11-29T12:53:39.6254967+10:00","Weight":70},{"RepsCompleted":8,"CompletionTime":"2023-11-29T12:59:52.0988688+10:00","Weight":70},{"RepsCompleted":7,"CompletionTime":"2023-11-29T13:07:21.3513637+10:00","Weight":70}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Cable Rows","Sets":3,"RepsPerSet":12,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":3.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":52.0,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-11-29T13:09:50.3598834+10:00","Weight":52.0},{"RepsCompleted":12,"CompletionTime":"2023-11-29T13:12:17.7185007+10:00","Weight":52.0},{"RepsCompleted":12,"CompletionTime":"2023-11-29T13:14:51.9757295+10:00","Weight":52.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":42.5,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-11-29T13:17:02.8588289+10:00","Weight":42.5},{"RepsCompleted":7,"CompletionTime":"2023-11-29T13:20:30.715603+10:00","Weight":42.5},{"RepsCompleted":8,"CompletionTime":"2023-11-29T13:25:27.9584006+10:00","Weight":42.5},{"RepsCompleted":6,"CompletionTime":"2023-11-29T13:30:49.7190304+10:00","Weight":42.5}],"Notes":"20s then 22s","PerSetWeight":false},{"Blueprint":{"Name":"Cable Flys","Sets":3,"RepsPerSet":12,"InitialKilograms":10.0,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":22.536,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-11-29T13:32:45.2189381+10:00","Weight":22.536},{"RepsCompleted":12,"CompletionTime":"2023-11-29T13:35:23.8676611+10:00","Weight":22.536},{"RepsCompleted":12,"CompletionTime":"2023-11-29T13:38:10.3474996+10:00","Weight":22.536}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0,"RecordedSets":[{"RepsCompleted":5,"CompletionTime":"2023-11-29T13:39:50.8204095+10:00","Weight":0},{"RepsCompleted":5,"CompletionTime":"2023-11-29T13:42:38.9129251+10:00","Weight":0},{"RepsCompleted":3,"CompletionTime":"2023-11-29T13:45:13.4203026+10:00","Weight":0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Dips","Sets":3,"RepsPerSet":12,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0.0,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-11-29T13:47:07.881194+10:00","Weight":0.0},{"RepsCompleted":8,"CompletionTime":"2023-11-29T13:49:32.1257991+10:00","Weight":0.0},{"RepsCompleted":6,"CompletionTime":"2023-11-29T13:52:07.820856+10:00","Weight":0.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Preacher Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":30,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-11-29T13:54:32.6419793+10:00","Weight":30},{"RepsCompleted":9,"CompletionTime":"2023-11-29T13:56:24.350864+10:00","Weight":30},{"RepsCompleted":7,"CompletionTime":"2023-11-29T13:59:54.2273135+10:00","Weight":30}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Rope Pushdowns","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":29.804,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-11-29T14:01:52.9860029+10:00","Weight":29.804},{"RepsCompleted":12,"CompletionTime":"2023-11-29T14:04:26.4092786+10:00","Weight":29.804},{"RepsCompleted":8,"CompletionTime":"2023-11-29T14:06:44.8569218+10:00","Weight":29.804}],"Notes":null,"PerSetWeight":false}],"Date":"2023-11-29T00:00:00+00:00","Bodyweight":82.5},{"Id":"84174c4c-3c8b-465d-9264-6e414c3fa684","Blueprint":{"Name":"Session 2: Upper Body","Exercises":[{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Cable Rows","Sets":3,"RepsPerSet":12,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Cable Flys","Sets":3,"RepsPerSet":12,"InitialKilograms":10.0,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":12,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Tricep Rope Pushdowns","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":70,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-11-22T08:28:26.0588303+10:00","Weight":70},{"RepsCompleted":8,"CompletionTime":"2023-11-22T08:32:17.3286307+10:00","Weight":70},{"RepsCompleted":8,"CompletionTime":"2023-11-22T08:36:48.1976625+10:00","Weight":70},{"RepsCompleted":7,"CompletionTime":"2023-11-22T08:42:42.9289953+10:00","Weight":70}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Cable Rows","Sets":3,"RepsPerSet":12,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":48.5,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-11-22T08:45:19.1679125+10:00","Weight":48.5},{"RepsCompleted":12,"CompletionTime":"2023-11-22T08:47:24.8925223+10:00","Weight":48.5},{"RepsCompleted":12,"CompletionTime":"2023-11-22T08:49:56.7114024+10:00","Weight":48.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":40.0,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-11-22T08:54:25.5982883+10:00","Weight":40.0},{"RepsCompleted":8,"CompletionTime":"2023-11-22T08:56:58.097879+10:00","Weight":40.0},{"RepsCompleted":8,"CompletionTime":"2023-11-22T09:00:21.0795955+10:00","Weight":40.0},{"RepsCompleted":8,"CompletionTime":"2023-11-22T09:05:06.6778278+10:00","Weight":40.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Cable Flys","Sets":3,"RepsPerSet":12,"InitialKilograms":10.0,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":22.536,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-11-22T09:06:38.3060174+10:00","Weight":22.536},{"RepsCompleted":12,"CompletionTime":"2023-11-22T09:08:55.5687045+10:00","Weight":22.536},{"RepsCompleted":9,"CompletionTime":"2023-11-22T09:11:38.1566321+10:00","Weight":22.536}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0,"RecordedSets":[{"RepsCompleted":6,"CompletionTime":"2023-11-22T09:13:21.2735309+10:00","Weight":0},{"RepsCompleted":5,"CompletionTime":"2023-11-22T09:16:02.1191359+10:00","Weight":0},{"RepsCompleted":8,"CompletionTime":"2023-11-22T09:18:23.5381073+10:00","Weight":0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Dips","Sets":3,"RepsPerSet":12,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0.0,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-11-22T09:20:30.0290389+10:00","Weight":0.0},{"RepsCompleted":9,"CompletionTime":"2023-11-22T09:22:26.9018465+10:00","Weight":0.0},{"RepsCompleted":6,"CompletionTime":"2023-11-22T09:25:24.363071+10:00","Weight":0.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":15.0,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-11-22T09:27:01.4662756+10:00","Weight":15.0},{"RepsCompleted":8,"CompletionTime":"2023-11-22T09:29:55.7773192+10:00","Weight":15.0},{"RepsCompleted":8,"CompletionTime":"2023-11-22T09:33:24.2609223+10:00","Weight":15.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Rope Pushdowns","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":29.804,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-11-22T09:36:22.3292091+10:00","Weight":29.804},{"RepsCompleted":10,"CompletionTime":"2023-11-22T09:38:27.2428204+10:00","Weight":29.804},{"RepsCompleted":8,"CompletionTime":"2023-11-22T09:42:03.3050582+10:00","Weight":29.804}],"Notes":null,"PerSetWeight":false}],"Date":"2023-11-22T00:00:00+00:00","Bodyweight":null},{"Id":"06ef3c15-ad92-49f5-a14b-82123163695a","Blueprint":{"Name":"Session 1: Lower Body","Exercises":[{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:02:00:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Quad Raises","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:00:30:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Leg curls","Sets":3,"RepsPerSet":12,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:02:00:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":100,"RecordedSets":[{"RepsCompleted":4,"CompletionTime":"2023-11-20T13:33:18.5144226+10:00","Weight":100},{"RepsCompleted":4,"CompletionTime":"2023-11-20T13:37:16.1041629+10:00","Weight":100},{"RepsCompleted":null,"CompletionTime":null,"Weight":100}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":137.5,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-11-20T13:39:40.470734+10:00","Weight":137.5},{"RepsCompleted":12,"CompletionTime":"2023-11-20T13:41:54.2990077+10:00","Weight":137.5},{"RepsCompleted":12,"CompletionTime":"2023-11-20T13:45:30.928835+10:00","Weight":137.5},{"RepsCompleted":12,"CompletionTime":"2023-11-20T13:49:38.1036852+10:00","Weight":137.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Quad Raises","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":27.072,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-11-20T13:51:50.5775616+10:00","Weight":27.072},{"RepsCompleted":12,"CompletionTime":"2023-11-20T13:54:10.796907+10:00","Weight":27.072},{"RepsCompleted":12,"CompletionTime":"2023-11-20T14:00:16.318067+10:00","Weight":27.072}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:00:30:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":57.5,"RecordedSets":[{"RepsCompleted":15,"CompletionTime":"2023-11-20T14:04:34.1671021+10:00","Weight":57.5},{"RepsCompleted":15,"CompletionTime":"2023-11-20T14:05:48.2205799+10:00","Weight":57.5},{"RepsCompleted":15,"CompletionTime":"2023-11-20T14:07:05.1804008+10:00","Weight":57.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Leg curls","Sets":3,"RepsPerSet":12,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":18,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-11-20T14:00:20.7881576+10:00","Weight":18},{"RepsCompleted":12,"CompletionTime":"2023-11-20T14:01:27.230411+10:00","Weight":18},{"RepsCompleted":12,"CompletionTime":"2023-11-20T14:02:30.6883818+10:00","Weight":18}],"Notes":null,"PerSetWeight":false}],"Date":"2023-11-20T00:00:00+00:00","Bodyweight":null},{"Id":"21dab015-a747-4e74-8daf-03835c10db82","Blueprint":{"Name":"Session 2: Upper Body","Exercises":[{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Cable Rows","Sets":3,"RepsPerSet":12,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Cable Flys","Sets":3,"RepsPerSet":12,"InitialKilograms":10.0,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":12,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Tricep Rope Pushdowns","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":70,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-11-16T12:12:55.3034445+10:00","Weight":70},{"RepsCompleted":8,"CompletionTime":"2023-11-16T12:16:23.0028352+10:00","Weight":70},{"RepsCompleted":6,"CompletionTime":"2023-11-16T12:20:47.4845954+10:00","Weight":70},{"RepsCompleted":8,"CompletionTime":"2023-11-16T12:27:21.2873038+10:00","Weight":70}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Cable Rows","Sets":3,"RepsPerSet":12,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":45,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-11-16T12:29:02.6015615+10:00","Weight":45},{"RepsCompleted":12,"CompletionTime":"2023-11-16T12:31:03.6830732+10:00","Weight":45},{"RepsCompleted":12,"CompletionTime":"2023-11-16T12:33:08.2347094+10:00","Weight":45}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":40.0,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-11-16T12:36:22.2078253+10:00","Weight":40.0},{"RepsCompleted":8,"CompletionTime":"2023-11-16T12:38:45.4321459+10:00","Weight":40.0},{"RepsCompleted":8,"CompletionTime":"2023-11-16T12:42:26.5666993+10:00","Weight":40.0},{"RepsCompleted":7,"CompletionTime":"2023-11-16T12:46:26.9502388+10:00","Weight":40.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Cable Flys","Sets":3,"RepsPerSet":12,"InitialKilograms":10.0,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":22.536,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-11-16T12:49:23.245235+10:00","Weight":22.536},{"RepsCompleted":12,"CompletionTime":"2023-11-16T12:51:36.2966901+10:00","Weight":22.536},{"RepsCompleted":9,"CompletionTime":"2023-11-16T12:53:44.9838466+10:00","Weight":22.536}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-11-16T12:56:42.8459458+10:00","Weight":0},{"RepsCompleted":5,"CompletionTime":"2023-11-16T12:58:39.7075866+10:00","Weight":0},{"RepsCompleted":5,"CompletionTime":"2023-11-16T13:02:05.6607521+10:00","Weight":0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Dips","Sets":3,"RepsPerSet":12,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0.0,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-11-16T13:03:36.052871+10:00","Weight":0.0},{"RepsCompleted":10,"CompletionTime":"2023-11-16T13:05:18.1784655+10:00","Weight":0.0},{"RepsCompleted":7,"CompletionTime":"2023-11-16T13:06:52.5462091+10:00","Weight":0.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":15.0,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-11-16T13:09:31.1261391+10:00","Weight":15.0},{"RepsCompleted":7,"CompletionTime":"2023-11-16T13:11:51.8768598+10:00","Weight":15.0},{"RepsCompleted":8,"CompletionTime":"2023-11-16T13:16:18.7637802+10:00","Weight":15.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Rope Pushdowns","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":27.536,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-11-16T13:17:30.4999543+10:00","Weight":27.536},{"RepsCompleted":12,"CompletionTime":"2023-11-16T13:19:07.0892546+10:00","Weight":27.536},{"RepsCompleted":12,"CompletionTime":"2023-11-16T13:21:19.0097334+10:00","Weight":27.536}],"Notes":null,"PerSetWeight":false}],"Date":"2023-11-16T00:00:00+00:00","Bodyweight":null},{"Id":"6dc7336b-832d-4b3b-af88-a8325898379f","Blueprint":{"Name":"Session 1: Lower Body","Exercises":[{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:02:00:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Quad Raises","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:00:30:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:02:00:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":120,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-11-14T12:48:06.1240221+10:00","Weight":120},{"RepsCompleted":8,"CompletionTime":"2023-11-14T12:52:58.5518415+10:00","Weight":120},{"RepsCompleted":1,"CompletionTime":"2023-11-14T12:57:31.3698914+10:00","Weight":120}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":132.5,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-11-14T13:06:39.2168728+10:00","Weight":132.5},{"RepsCompleted":12,"CompletionTime":"2023-11-14T13:10:51.9067264+10:00","Weight":132.5},{"RepsCompleted":12,"CompletionTime":"2023-11-14T13:13:24.7174569+10:00","Weight":132.5},{"RepsCompleted":12,"CompletionTime":"2023-11-14T13:17:05.1146446+10:00","Weight":132.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Quad Raises","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":24.804,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-11-14T13:20:32.6231046+10:00","Weight":24.804},{"RepsCompleted":12,"CompletionTime":"2023-11-14T13:22:30.7595458+10:00","Weight":24.804},{"RepsCompleted":12,"CompletionTime":"2023-11-14T13:26:01.4299136+10:00","Weight":24.804}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:00:30:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":55.0,"RecordedSets":[{"RepsCompleted":15,"CompletionTime":"2023-11-14T13:27:18.4865024+10:00","Weight":55.0},{"RepsCompleted":15,"CompletionTime":"2023-11-14T13:28:16.5062651+10:00","Weight":55.0},{"RepsCompleted":15,"CompletionTime":"2023-11-14T13:30:06.6283235+10:00","Weight":55.0}],"Notes":null,"PerSetWeight":false}],"Date":"2023-11-14T00:00:00+00:00","Bodyweight":null},{"Id":"6b2ff43e-b3e2-4c69-a6a6-49678423e576","Blueprint":{"Name":"Session 3: Full Body","Exercises":[{"Name":"Deadlifts","Sets":3,"RepsPerSet":5,"InitialKilograms":70,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Bench Press","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":3,"RepsPerSet":10,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Deadlifts","Sets":3,"RepsPerSet":5,"InitialKilograms":70,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":100,"RecordedSets":[{"RepsCompleted":5,"CompletionTime":"2023-11-10T01:44:28.2947919+10:00","Weight":100},{"RepsCompleted":5,"CompletionTime":"2023-11-10T01:47:39.4075504+10:00","Weight":100},{"RepsCompleted":5,"CompletionTime":"2023-11-10T01:51:46.0574443+10:00","Weight":100}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":115,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-11-10T01:57:59.3459111+10:00","Weight":115},{"RepsCompleted":8,"CompletionTime":"2023-11-10T02:01:30.2858564+10:00","Weight":115},{"RepsCompleted":8,"CompletionTime":"2023-11-10T02:06:32.1968092+10:00","Weight":115}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bench Press","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":65,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-11-10T02:12:28.4510729+10:00","Weight":65},{"RepsCompleted":8,"CompletionTime":"2023-11-10T02:15:41.7245863+10:00","Weight":65},{"RepsCompleted":8,"CompletionTime":"2023-11-10T02:19:14.8080863+10:00","Weight":65}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-11-10T02:21:30.3791658+10:00","Weight":0},{"RepsCompleted":3,"CompletionTime":"2023-11-10T02:23:23.3472113+10:00","Weight":0},{"RepsCompleted":4,"CompletionTime":"2023-11-10T02:25:51.4768873+10:00","Weight":0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Shoulder Press","Sets":3,"RepsPerSet":10,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":37.5,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-11-10T02:29:00.1136617+10:00","Weight":37.5},{"RepsCompleted":10,"CompletionTime":"2023-11-10T02:32:34.6444213+10:00","Weight":37.5},{"RepsCompleted":10,"CompletionTime":"2023-11-10T02:35:49.4525242+10:00","Weight":37.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0.0,"RecordedSets":[{"RepsCompleted":7,"CompletionTime":"2023-11-10T02:37:43.5101855+10:00","Weight":0.0},{"RepsCompleted":10,"CompletionTime":"2023-11-10T02:40:27.7167705+10:00","Weight":0.0},{"RepsCompleted":8,"CompletionTime":"2023-11-10T02:42:50.1712926+10:00","Weight":0.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":12.5,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-11-10T02:44:08.1146941+10:00","Weight":12.5},{"RepsCompleted":12,"CompletionTime":"2023-11-10T02:46:12.6304557+10:00","Weight":12.5},{"RepsCompleted":9,"CompletionTime":"2023-11-10T02:48:22.7003679+10:00","Weight":12.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":52.5,"RecordedSets":[{"RepsCompleted":15,"CompletionTime":"2023-11-10T02:51:30.4655867+10:00","Weight":52.5},{"RepsCompleted":15,"CompletionTime":"2023-11-10T02:52:24.2873009+10:00","Weight":52.5},{"RepsCompleted":15,"CompletionTime":"2023-11-10T03:04:23.2879939+10:00","Weight":52.5}],"Notes":null,"PerSetWeight":false}],"Date":"2023-11-10T00:00:00+00:00","Bodyweight":null},{"Id":"206651e5-5f3f-43ec-a66f-f81f27c77a65","Blueprint":{"Name":"Session 2: Upper Body","Exercises":[{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Barbell Rows","Sets":3,"RepsPerSet":10,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Cable Flys","Sets":3,"RepsPerSet":12,"InitialKilograms":10.0,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Tricep Rope Pushdowns","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":70,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-11-08T23:32:20.9965232+10:00","Weight":70},{"RepsCompleted":8,"CompletionTime":"2023-11-08T23:36:25.8157609+10:00","Weight":70},{"RepsCompleted":5,"CompletionTime":"2023-11-08T23:40:32.419705+10:00","Weight":70},{"RepsCompleted":6,"CompletionTime":"2023-11-08T23:47:06.4161676+10:00","Weight":70}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Barbell Rows","Sets":3,"RepsPerSet":10,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":75,"RecordedSets":[{"RepsCompleted":9,"CompletionTime":"2023-11-08T23:56:41.7704001+10:00","Weight":75},{"RepsCompleted":1,"CompletionTime":"2023-11-08T00:00:34.3134673+10:00","Weight":75},{"RepsCompleted":null,"CompletionTime":null,"Weight":75}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":37.5,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-11-08T00:02:20.102281+10:00","Weight":37.5},{"RepsCompleted":8,"CompletionTime":"2023-11-08T00:04:42.1279073+10:00","Weight":37.5},{"RepsCompleted":8,"CompletionTime":"2023-11-08T00:07:43.1706539+10:00","Weight":37.5},{"RepsCompleted":8,"CompletionTime":"2023-11-08T00:10:15.9646077+10:00","Weight":37.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Cable Flys","Sets":3,"RepsPerSet":12,"InitialKilograms":10.0,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":22.536,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-11-08T00:12:17.338064+10:00","Weight":22.536},{"RepsCompleted":12,"CompletionTime":"2023-11-08T00:14:27.2842446+10:00","Weight":22.536},{"RepsCompleted":10,"CompletionTime":"2023-11-08T00:16:53.1717806+10:00","Weight":22.536}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0,"RecordedSets":[{"RepsCompleted":4,"CompletionTime":"2023-11-08T00:17:52.2471916+10:00","Weight":0},{"RepsCompleted":6,"CompletionTime":"2023-11-08T00:21:23.0346124+10:00","Weight":0},{"RepsCompleted":3,"CompletionTime":"2023-11-08T00:24:00.2629647+10:00","Weight":0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0.0,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-11-08T00:25:29.7524712+10:00","Weight":0.0},{"RepsCompleted":10,"CompletionTime":"2023-11-08T00:27:38.3713083+10:00","Weight":0.0},{"RepsCompleted":6,"CompletionTime":"2023-11-08T00:29:29.9377645+10:00","Weight":0.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":12.5,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-11-08T00:30:25.4186944+10:00","Weight":12.5},{"RepsCompleted":5,"CompletionTime":"2023-11-08T00:32:24.5329789+10:00","Weight":12.5},{"RepsCompleted":5,"CompletionTime":"2023-11-08T00:35:14.9123182+10:00","Weight":12.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Rope Pushdowns","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":25.268,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-11-08T00:38:35.6616856+10:00","Weight":25.268},{"RepsCompleted":12,"CompletionTime":"2023-11-08T00:40:34.5463011+10:00","Weight":25.268},{"RepsCompleted":12,"CompletionTime":"2023-11-08T00:42:18.7119863+10:00","Weight":25.268}],"Notes":null,"PerSetWeight":false}],"Date":"2023-11-08T00:00:00+00:00","Bodyweight":null},{"Id":"3ac1a75b-43bf-4c2d-8093-5126276822ca","Blueprint":{"Name":"Session 1: Lower Body","Exercises":[{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Quad Raises","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:00:30:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":127.5,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-11-06T02:58:44.4494151+10:00","Weight":127.5},{"RepsCompleted":12,"CompletionTime":"2023-11-06T03:00:52.6774067+10:00","Weight":127.5},{"RepsCompleted":12,"CompletionTime":"2023-11-06T03:03:01.8722808+10:00","Weight":127.5},{"RepsCompleted":12,"CompletionTime":"2023-11-06T03:05:50.9213042+10:00","Weight":127.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Quad Raises","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":22.536,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-11-06T03:07:36.1718163+10:00","Weight":22.536},{"RepsCompleted":12,"CompletionTime":"2023-11-06T03:09:28.1843015+10:00","Weight":22.536},{"RepsCompleted":12,"CompletionTime":"2023-11-06T03:11:31.9235029+10:00","Weight":22.536}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:00:30:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":50,"RecordedSets":[{"RepsCompleted":15,"CompletionTime":"2023-11-06T03:13:00.9719089+10:00","Weight":50},{"RepsCompleted":15,"CompletionTime":"2023-11-06T03:13:57.4913194+10:00","Weight":50},{"RepsCompleted":15,"CompletionTime":"2023-11-06T03:15:22.73935+10:00","Weight":50}],"Notes":null,"PerSetWeight":false}],"Date":"2023-11-06T00:00:00+00:00","Bodyweight":null},{"Id":"8647df3b-0b6f-4f96-ac5e-d06d1fecb6f7","Blueprint":{"Name":"Session 2: Upper Body","Exercises":[{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Barbell Rows","Sets":3,"RepsPerSet":10,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Cable Flys","Sets":3,"RepsPerSet":12,"InitialKilograms":10.0,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Tricep Rope Pushdowns","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":70,"RecordedSets":[{"RepsCompleted":7,"CompletionTime":"2023-11-02T03:10:49.4376128+10:00","Weight":70},{"RepsCompleted":7,"CompletionTime":"2023-11-02T03:10:45.4518326+10:00","Weight":70},{"RepsCompleted":5,"CompletionTime":"2023-11-02T03:15:35.3345961+10:00","Weight":70},{"RepsCompleted":5,"CompletionTime":"2023-11-02T03:20:50.2185539+10:00","Weight":70}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Barbell Rows","Sets":3,"RepsPerSet":10,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":70,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-11-02T03:25:25.9128585+10:00","Weight":70},{"RepsCompleted":10,"CompletionTime":"2023-11-02T03:29:14.0548621+10:00","Weight":70},{"RepsCompleted":10,"CompletionTime":"2023-11-02T03:32:59.8935167+10:00","Weight":70}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":35,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-11-02T03:37:21.4283585+10:00","Weight":35},{"RepsCompleted":8,"CompletionTime":"2023-11-02T03:39:35.336934+10:00","Weight":35},{"RepsCompleted":8,"CompletionTime":"2023-11-02T03:42:23.9653636+10:00","Weight":35},{"RepsCompleted":8,"CompletionTime":"2023-11-02T03:45:07.1606359+10:00","Weight":35}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Cable Flys","Sets":3,"RepsPerSet":12,"InitialKilograms":10.0,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":22.536,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-11-02T03:47:27.3253135+10:00","Weight":22.536},{"RepsCompleted":12,"CompletionTime":"2023-11-02T03:49:40.4717641+10:00","Weight":22.536},{"RepsCompleted":6,"CompletionTime":"2023-11-02T03:52:42.0855585+10:00","Weight":22.536}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0,"RecordedSets":[{"RepsCompleted":6,"CompletionTime":"2023-11-02T03:53:55.7687596+10:00","Weight":0},{"RepsCompleted":4,"CompletionTime":"2023-11-02T03:57:00.8375357+10:00","Weight":0},{"RepsCompleted":4,"CompletionTime":"2023-11-02T03:59:23.3640047+10:00","Weight":0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0.0,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-11-02T04:01:25.181799+10:00","Weight":0.0},{"RepsCompleted":8,"CompletionTime":"2023-11-02T04:03:16.3519291+10:00","Weight":0.0},{"RepsCompleted":7,"CompletionTime":"2023-11-02T04:06:06.2468389+10:00","Weight":0.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":12.5,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-11-02T04:07:25.7929614+10:00","Weight":12.5},{"RepsCompleted":12,"CompletionTime":"2023-11-02T04:09:39.8461092+10:00","Weight":12.5},{"RepsCompleted":5,"CompletionTime":"2023-11-02T04:12:03.9885916+10:00","Weight":12.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Rope Pushdowns","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":23,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-11-02T04:13:12.180163+10:00","Weight":23},{"RepsCompleted":12,"CompletionTime":"2023-11-02T04:15:08.0182966+10:00","Weight":23},{"RepsCompleted":12,"CompletionTime":"2023-11-02T04:17:29.7119265+10:00","Weight":23}],"Notes":null,"PerSetWeight":false}],"Date":"2023-11-02T00:00:00+00:00","Bodyweight":null},{"Id":"d2ac41b8-2276-4018-bea8-887ff135caab","Blueprint":{"Name":"Session 1: Lower Body","Exercises":[{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:02:00:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Quad Raises","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:00:30:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:02:00:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":110,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-10-30T03:34:28.0828686+10:00","Weight":110},{"RepsCompleted":8,"CompletionTime":"2023-10-30T03:39:01.8428851+10:00","Weight":110},{"RepsCompleted":8,"CompletionTime":"2023-10-30T03:43:30.5653013+10:00","Weight":110}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":100,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-10-30T03:53:10.0657208+10:00","Weight":100},{"RepsCompleted":null,"CompletionTime":null,"Weight":100},{"RepsCompleted":null,"CompletionTime":null,"Weight":100}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":122.5,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-10-30T03:59:27.9703871+10:00","Weight":122.5},{"RepsCompleted":12,"CompletionTime":"2023-10-30T04:01:50.8959294+10:00","Weight":122.5},{"RepsCompleted":12,"CompletionTime":"2023-10-30T04:04:18.5551825+10:00","Weight":122.5},{"RepsCompleted":10,"CompletionTime":"2023-10-30T04:07:23.1903011+10:00","Weight":122.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Quad Raises","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":22.536,"RecordedSets":[{"RepsCompleted":9,"CompletionTime":"2023-10-30T04:09:21.4983304+10:00","Weight":22.536},{"RepsCompleted":9,"CompletionTime":"2023-10-30T04:13:04.3231706+10:00","Weight":22.536},{"RepsCompleted":3,"CompletionTime":"2023-10-30T04:15:13.1302912+10:00","Weight":22.536}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:00:30:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":42.5,"RecordedSets":[{"RepsCompleted":null,"CompletionTime":null,"Weight":42.5},{"RepsCompleted":null,"CompletionTime":null,"Weight":42.5},{"RepsCompleted":null,"CompletionTime":null,"Weight":42.5}],"Notes":null,"PerSetWeight":false}],"Date":"2023-10-30T00:00:00+00:00","Bodyweight":null},{"Id":"2e7e02ea-30fc-4580-9fff-adfefefbe9f1","Blueprint":{"Name":"Session 3: Full Body","Exercises":[{"Name":"Deadlifts","Sets":3,"RepsPerSet":5,"InitialKilograms":70,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Bench Press","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":3,"RepsPerSet":10,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Deadlifts","Sets":3,"RepsPerSet":5,"InitialKilograms":70,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":110,"RecordedSets":[{"RepsCompleted":5,"CompletionTime":"2023-10-19T02:08:33.6794106+10:00","Weight":110},{"RepsCompleted":5,"CompletionTime":"2023-10-19T02:12:49.3136981+10:00","Weight":110},{"RepsCompleted":5,"CompletionTime":"2023-10-19T02:15:56.5230483+10:00","Weight":110}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":115,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-10-19T02:22:17.1332414+10:00","Weight":115},{"RepsCompleted":7,"CompletionTime":"2023-10-19T02:26:13.1650041+10:00","Weight":115},{"RepsCompleted":6,"CompletionTime":"2023-10-19T02:32:12.1227427+10:00","Weight":115}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bench Press","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":65,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-10-19T02:38:41.966772+10:00","Weight":65},{"RepsCompleted":8,"CompletionTime":"2023-10-19T02:41:32.0618297+10:00","Weight":65},{"RepsCompleted":7,"CompletionTime":"2023-10-19T02:45:39.2809492+10:00","Weight":65}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-10-19T02:47:50.4565699+10:00","Weight":0},{"RepsCompleted":6,"CompletionTime":"2023-10-19T02:49:43.4113359+10:00","Weight":0},{"RepsCompleted":4,"CompletionTime":"2023-10-19T02:52:07.042486+10:00","Weight":0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Shoulder Press","Sets":3,"RepsPerSet":10,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":37.5,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-10-19T02:55:28.3094924+10:00","Weight":37.5},{"RepsCompleted":10,"CompletionTime":"2023-10-19T02:58:13.0938518+10:00","Weight":37.5},{"RepsCompleted":8,"CompletionTime":"2023-10-19T03:03:01.587777+10:00","Weight":37.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0.0,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-10-19T03:04:41.6911577+10:00","Weight":0.0},{"RepsCompleted":10,"CompletionTime":"2023-10-19T03:06:56.5329295+10:00","Weight":0.0},{"RepsCompleted":10,"CompletionTime":"2023-10-19T03:10:24.3292458+10:00","Weight":0.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":15.0,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-10-19T03:11:15.0737427+10:00","Weight":15.0},{"RepsCompleted":10,"CompletionTime":"2023-10-19T03:13:42.0367211+10:00","Weight":15.0},{"RepsCompleted":7,"CompletionTime":"2023-10-19T03:16:54.7103687+10:00","Weight":15.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":40,"RecordedSets":[{"RepsCompleted":15,"CompletionTime":"2023-10-19T03:18:47.7494544+10:00","Weight":40},{"RepsCompleted":15,"CompletionTime":"2023-10-19T03:20:32.718998+10:00","Weight":40},{"RepsCompleted":15,"CompletionTime":"2023-10-19T03:31:34.1414965+10:00","Weight":40}],"Notes":null,"PerSetWeight":false}],"Date":"2023-10-19T00:00:00+00:00","Bodyweight":null},{"Id":"f32b23b7-3f3b-4916-bad7-f8cac39e2f0b","Blueprint":{"Name":"Session 2: Upper Body","Exercises":[{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Barbell Rows","Sets":3,"RepsPerSet":10,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Cable Flys","Sets":3,"RepsPerSet":12,"InitialKilograms":10.0,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Tricep Rope Pushdowns","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":70,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-10-17T03:14:39.9473261+10:00","Weight":70},{"RepsCompleted":8,"CompletionTime":"2023-10-17T03:19:08.4617281+10:00","Weight":70},{"RepsCompleted":8,"CompletionTime":"2023-10-17T03:23:57.8082447+10:00","Weight":70},{"RepsCompleted":8,"CompletionTime":"2023-10-17T03:30:36.8910229+10:00","Weight":70}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Barbell Rows","Sets":3,"RepsPerSet":10,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":75,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-10-17T03:38:19.3890381+10:00","Weight":75},{"RepsCompleted":10,"CompletionTime":"2023-10-17T03:40:43.5833041+10:00","Weight":75},{"RepsCompleted":5,"CompletionTime":"2023-10-17T03:43:38.7732395+10:00","Weight":75}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":40.0,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-10-17T03:46:08.7386463+10:00","Weight":40.0},{"RepsCompleted":8,"CompletionTime":"2023-10-17T03:48:50.7689621+10:00","Weight":40.0},{"RepsCompleted":7,"CompletionTime":"2023-10-17T03:51:17.0085984+10:00","Weight":40.0},{"RepsCompleted":6,"CompletionTime":"2023-10-17T03:56:19.9151481+10:00","Weight":40.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Cable Flys","Sets":3,"RepsPerSet":12,"InitialKilograms":10.0,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":22.536,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-10-17T03:58:06.4627301+10:00","Weight":22.536},{"RepsCompleted":12,"CompletionTime":"2023-10-17T04:00:22.7563191+10:00","Weight":22.536},{"RepsCompleted":8,"CompletionTime":"2023-10-17T04:02:48.4075592+10:00","Weight":22.536}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0,"RecordedSets":[{"RepsCompleted":7,"CompletionTime":"2023-10-17T04:04:39.7038748+10:00","Weight":0},{"RepsCompleted":4,"CompletionTime":"2023-10-17T04:07:06.0947212+10:00","Weight":0},{"RepsCompleted":5,"CompletionTime":"2023-10-17T04:09:55.0773801+10:00","Weight":0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0.0,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-10-17T04:12:31.7840687+10:00","Weight":0.0},{"RepsCompleted":8,"CompletionTime":"2023-10-17T04:14:07.2519788+10:00","Weight":0.0},{"RepsCompleted":7,"CompletionTime":"2023-10-17T04:16:52.3624896+10:00","Weight":0.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":15.0,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-10-17T04:17:51.6315726+10:00","Weight":15.0},{"RepsCompleted":7,"CompletionTime":"2023-10-17T04:20:36.3308565+10:00","Weight":15.0},{"RepsCompleted":5,"CompletionTime":"2023-10-17T04:23:21.7186132+10:00","Weight":15.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Rope Pushdowns","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":23,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-10-17T04:24:31.5949952+10:00","Weight":23},{"RepsCompleted":12,"CompletionTime":"2023-10-17T04:26:07.1629225+10:00","Weight":23},{"RepsCompleted":7,"CompletionTime":"2023-10-17T04:27:59.5394549+10:00","Weight":23}],"Notes":null,"PerSetWeight":false}],"Date":"2023-10-17T00:00:00+00:00","Bodyweight":null},{"Id":"0417c86a-e6a3-4e51-ac98-89ac64cc0fd5","Blueprint":{"Name":"Session 1: Lower Body","Exercises":[{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:02:00:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Quad Raises","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:00:30:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:02:00:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":110,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-10-16T02:50:15.7802885+10:00","Weight":110},{"RepsCompleted":8,"CompletionTime":"2023-10-16T02:53:18.4571802+10:00","Weight":110},{"RepsCompleted":8,"CompletionTime":"2023-10-16T02:57:08.4908359+10:00","Weight":110}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":100,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-10-16T03:04:32.0953706+10:00","Weight":100},{"RepsCompleted":8,"CompletionTime":"2023-10-16T03:08:34.1935517+10:00","Weight":100},{"RepsCompleted":8,"CompletionTime":"2023-10-16T03:12:32.3967617+10:00","Weight":100}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":117.5,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-10-16T03:17:32.7004565+10:00","Weight":117.5},{"RepsCompleted":12,"CompletionTime":"2023-10-16T03:19:39.0549676+10:00","Weight":117.5},{"RepsCompleted":12,"CompletionTime":"2023-10-16T03:22:37.0174629+10:00","Weight":117.5},{"RepsCompleted":12,"CompletionTime":"2023-10-16T03:25:23.6090697+10:00","Weight":117.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Quad Raises","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":22.536,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-10-16T03:28:18.8123781+10:00","Weight":22.536},{"RepsCompleted":11,"CompletionTime":"2023-10-16T03:30:22.1727221+10:00","Weight":22.536},{"RepsCompleted":11,"CompletionTime":"2023-10-16T03:33:09.1037141+10:00","Weight":22.536}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:00:30:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":77.5,"RecordedSets":[{"RepsCompleted":null,"CompletionTime":null,"Weight":77.5},{"RepsCompleted":null,"CompletionTime":null,"Weight":77.5},{"RepsCompleted":null,"CompletionTime":null,"Weight":77.5}],"Notes":null,"PerSetWeight":false}],"Date":"2023-10-16T00:00:00+00:00","Bodyweight":null},{"Id":"efb00531-429c-4422-b27e-2e2ddfb408dc","Blueprint":{"Name":"Session 2: Upper Body","Exercises":[{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Barbell Rows","Sets":3,"RepsPerSet":10,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Pec Fly","Sets":3,"RepsPerSet":12,"InitialKilograms":10.0,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Tricep Rope Pushdowns","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":70,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-10-11T06:08:08.392341+10:00","Weight":70},{"RepsCompleted":7,"CompletionTime":"2023-10-11T06:11:53.1753231+10:00","Weight":70},{"RepsCompleted":6,"CompletionTime":"2023-10-11T06:16:49.3240513+10:00","Weight":70},{"RepsCompleted":5,"CompletionTime":"2023-10-11T06:23:10.0183651+10:00","Weight":70}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Barbell Rows","Sets":3,"RepsPerSet":10,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":75,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-10-11T06:29:02.1117167+10:00","Weight":75},{"RepsCompleted":10,"CompletionTime":"2023-10-11T06:32:25.6379435+10:00","Weight":75},{"RepsCompleted":7,"CompletionTime":"2023-10-11T06:35:51.0364131+10:00","Weight":75}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":40.0,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-10-11T06:39:51.4444654+10:00","Weight":40.0},{"RepsCompleted":8,"CompletionTime":"2023-10-11T06:42:33.1964527+10:00","Weight":40.0},{"RepsCompleted":8,"CompletionTime":"2023-10-11T06:45:24.9057593+10:00","Weight":40.0},{"RepsCompleted":7,"CompletionTime":"2023-10-11T06:48:18.7963089+10:00","Weight":40.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Pec Fly","Sets":3,"RepsPerSet":12,"InitialKilograms":10.0,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":45,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-10-11T06:50:58.0422142+10:00","Weight":45},{"RepsCompleted":12,"CompletionTime":"2023-10-11T06:53:04.8628703+10:00","Weight":45},{"RepsCompleted":12,"CompletionTime":"2023-10-11T06:55:08.0303589+10:00","Weight":45}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-10-11T06:56:42.6221633+10:00","Weight":0},{"RepsCompleted":6,"CompletionTime":"2023-10-11T06:58:29.3430875+10:00","Weight":0},{"RepsCompleted":5,"CompletionTime":"2023-10-11T07:01:14.5338669+10:00","Weight":0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0.0,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-10-11T07:03:01.5560572+10:00","Weight":0.0},{"RepsCompleted":10,"CompletionTime":"2023-10-11T07:04:51.5226872+10:00","Weight":0.0},{"RepsCompleted":9,"CompletionTime":"2023-10-11T07:06:46.7341763+10:00","Weight":0.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":15.0,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-10-11T07:09:43.74858+10:00","Weight":15.0},{"RepsCompleted":5,"CompletionTime":"2023-10-11T07:11:33.2731632+10:00","Weight":15.0},{"RepsCompleted":6,"CompletionTime":"2023-10-11T07:15:10.3016662+10:00","Weight":15.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Rope Pushdowns","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":23,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-10-11T07:16:13.1673959+10:00","Weight":23},{"RepsCompleted":12,"CompletionTime":"2023-10-11T07:17:55.8940874+10:00","Weight":23},{"RepsCompleted":9,"CompletionTime":"2023-10-11T07:20:08.8309334+10:00","Weight":23}],"Notes":null,"PerSetWeight":false}],"Date":"2023-10-11T00:00:00+00:00","Bodyweight":null},{"Id":"cc2c3d94-03b9-439f-a0ce-6d66c4209325","Blueprint":{"Name":"Session 1: Lower Body","Exercises":[{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:02:00:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Quad Raises","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:02:00:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":105,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-10-10T03:48:17.6700747+10:00","Weight":105},{"RepsCompleted":8,"CompletionTime":"2023-10-10T03:51:04.1988725+10:00","Weight":105},{"RepsCompleted":8,"CompletionTime":"2023-10-10T03:54:05.3062973+10:00","Weight":105}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":100,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-10-10T04:01:03.0058001+10:00","Weight":100},{"RepsCompleted":6,"CompletionTime":"2023-10-10T04:04:47.5505667+10:00","Weight":100},{"RepsCompleted":8,"CompletionTime":"2023-10-10T04:10:47.81975+10:00","Weight":100}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":112.5,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-10-10T04:14:36.4419323+10:00","Weight":112.5},{"RepsCompleted":12,"CompletionTime":"2023-10-10T04:20:35.0360761+10:00","Weight":112.5},{"RepsCompleted":12,"CompletionTime":"2023-10-10T04:21:02.3750171+10:00","Weight":112.5},{"RepsCompleted":12,"CompletionTime":"2023-10-10T04:22:59.951892+10:00","Weight":112.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Quad Raises","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":20.268,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-10-10T04:25:50.6785122+10:00","Weight":20.268},{"RepsCompleted":12,"CompletionTime":"2023-10-10T04:27:45.7025804+10:00","Weight":20.268},{"RepsCompleted":12,"CompletionTime":"2023-10-10T04:29:58.1998922+10:00","Weight":20.268}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":77.5,"RecordedSets":[{"RepsCompleted":15,"CompletionTime":"2023-10-10T04:30:48.4034888+10:00","Weight":77.5},{"RepsCompleted":15,"CompletionTime":"2023-10-10T04:31:45.4122757+10:00","Weight":77.5},{"RepsCompleted":15,"CompletionTime":"2023-10-10T04:32:30.456528+10:00","Weight":77.5}],"Notes":null,"PerSetWeight":false}],"Date":"2023-10-10T00:00:00+00:00","Bodyweight":null},{"Id":"3bcefb87-d5c7-4e48-8920-9d01898f3fa2","Blueprint":{"Name":"Session 3: Full Body","Exercises":[{"Name":"Deadlifts","Sets":3,"RepsPerSet":5,"InitialKilograms":70,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Bench Press","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":3,"RepsPerSet":10,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Deadlifts","Sets":3,"RepsPerSet":5,"InitialKilograms":70,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":105,"RecordedSets":[{"RepsCompleted":5,"CompletionTime":"2023-10-06T02:45:56.6825713+10:00","Weight":105},{"RepsCompleted":5,"CompletionTime":"2023-10-06T02:49:01.3339962+10:00","Weight":105},{"RepsCompleted":5,"CompletionTime":"2023-10-06T02:51:42.1496439+10:00","Weight":105}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":100,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-10-06T02:59:28.609217+10:00","Weight":100},{"RepsCompleted":8,"CompletionTime":"2023-10-06T03:02:29.6484512+10:00","Weight":100},{"RepsCompleted":8,"CompletionTime":"2023-10-06T03:06:19.3485264+10:00","Weight":100}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bench Press","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":65,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-10-06T03:12:20.2666102+10:00","Weight":65},{"RepsCompleted":8,"CompletionTime":"2023-10-06T03:15:38.783206+10:00","Weight":65},{"RepsCompleted":7,"CompletionTime":"2023-10-06T03:19:10.081227+10:00","Weight":65}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-10-06T03:22:33.2178649+10:00","Weight":0},{"RepsCompleted":7,"CompletionTime":"2023-10-06T03:24:08.7473003+10:00","Weight":0},{"RepsCompleted":3,"CompletionTime":"2023-10-06T03:26:18.9608924+10:00","Weight":0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Shoulder Press","Sets":3,"RepsPerSet":10,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":37.5,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-10-06T03:28:27.0415411+10:00","Weight":37.5},{"RepsCompleted":10,"CompletionTime":"2023-10-06T03:30:54.6305189+10:00","Weight":37.5},{"RepsCompleted":8,"CompletionTime":"2023-10-06T03:34:08.0288113+10:00","Weight":37.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0.0,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-10-06T03:35:28.657038+10:00","Weight":0.0},{"RepsCompleted":10,"CompletionTime":"2023-10-06T03:38:03.2004365+10:00","Weight":0.0},{"RepsCompleted":8,"CompletionTime":"2023-10-06T03:40:27.7170737+10:00","Weight":0.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":12.5,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-10-06T03:42:00.6369008+10:00","Weight":12.5},{"RepsCompleted":12,"CompletionTime":"2023-10-06T03:43:43.9887422+10:00","Weight":12.5},{"RepsCompleted":12,"CompletionTime":"2023-10-06T03:47:01.2325505+10:00","Weight":12.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":75.0,"RecordedSets":[{"RepsCompleted":15,"CompletionTime":"2023-10-06T03:48:27.0599402+10:00","Weight":75.0},{"RepsCompleted":15,"CompletionTime":"2023-10-06T03:49:17.4814089+10:00","Weight":75.0},{"RepsCompleted":15,"CompletionTime":"2023-10-06T03:50:42.3492572+10:00","Weight":75.0}],"Notes":null,"PerSetWeight":false}],"Date":"2023-10-06T00:00:00+00:00","Bodyweight":null},{"Id":"e29c0776-1762-491e-9b15-7015df262acb","Blueprint":{"Name":"Session 2: Upper Body","Exercises":[{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Barbell Rows","Sets":3,"RepsPerSet":10,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Cable Flys","Sets":3,"RepsPerSet":12,"InitialKilograms":10.0,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Tricep Rope Pushdowns","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":65,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-10-04T02:27:26.8267251+10:00","Weight":65},{"RepsCompleted":8,"CompletionTime":"2023-10-04T02:31:12.0895146+10:00","Weight":65},{"RepsCompleted":8,"CompletionTime":"2023-10-04T02:35:00.9851668+10:00","Weight":65},{"RepsCompleted":8,"CompletionTime":"2023-10-04T02:39:20.4621315+10:00","Weight":65}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Barbell Rows","Sets":3,"RepsPerSet":10,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":70,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-10-04T02:48:54.0744611+10:00","Weight":70},{"RepsCompleted":10,"CompletionTime":"2023-10-04T02:51:43.0777329+10:00","Weight":70},{"RepsCompleted":10,"CompletionTime":"2023-10-04T02:54:51.4854406+10:00","Weight":70}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":37.5,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-10-04T02:59:11.6561377+10:00","Weight":37.5},{"RepsCompleted":8,"CompletionTime":"2023-10-04T03:01:21.5399127+10:00","Weight":37.5},{"RepsCompleted":8,"CompletionTime":"2023-10-04T03:04:02.1248167+10:00","Weight":37.5},{"RepsCompleted":8,"CompletionTime":"2023-10-04T03:06:59.8728236+10:00","Weight":37.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Cable Flys","Sets":3,"RepsPerSet":12,"InitialKilograms":10.0,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":18,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-10-04T03:08:50.953695+10:00","Weight":18},{"RepsCompleted":12,"CompletionTime":"2023-10-04T03:11:24.2476954+10:00","Weight":18},{"RepsCompleted":12,"CompletionTime":"2023-10-04T03:13:43.3213111+10:00","Weight":18}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0,"RecordedSets":[{"RepsCompleted":6,"CompletionTime":"2023-10-04T03:15:22.2910953+10:00","Weight":0},{"RepsCompleted":4,"CompletionTime":"2023-10-04T03:17:27.616881+10:00","Weight":0},{"RepsCompleted":3,"CompletionTime":"2023-10-04T03:19:21.5319021+10:00","Weight":0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0.0,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-10-04T03:21:29.5091423+10:00","Weight":0.0},{"RepsCompleted":10,"CompletionTime":"2023-10-04T03:23:19.3471902+10:00","Weight":0.0},{"RepsCompleted":9,"CompletionTime":"2023-10-04T03:25:47.6815937+10:00","Weight":0.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":12.5,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-10-04T03:27:35.0485575+10:00","Weight":12.5},{"RepsCompleted":12,"CompletionTime":"2023-10-04T03:29:47.2471323+10:00","Weight":12.5},{"RepsCompleted":7,"CompletionTime":"2023-10-04T03:32:10.1187789+10:00","Weight":12.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Rope Pushdowns","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":23,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-10-04T03:33:39.0585687+10:00","Weight":23},{"RepsCompleted":12,"CompletionTime":"2023-10-04T03:35:27.3039921+10:00","Weight":23},{"RepsCompleted":10,"CompletionTime":"2023-10-04T03:37:21.5977833+10:00","Weight":23}],"Notes":null,"PerSetWeight":false}],"Date":"2023-10-04T00:00:00+00:00","Bodyweight":null},{"Id":"ccea952a-cce1-48f4-a911-ab540593bc55","Blueprint":{"Name":"Session 1: Lower Body","Exercises":[{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:02:00:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Quad Raises","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Chest Press","Sets":4,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:02:00:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":100,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-10-02T23:35:48.5905714+10:00","Weight":100},{"RepsCompleted":8,"CompletionTime":"2023-10-02T23:37:54.0307074+10:00","Weight":100},{"RepsCompleted":7,"CompletionTime":"2023-10-02T23:41:50.7715914+10:00","Weight":100}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":92.5,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-10-02T23:47:02.5771889+10:00","Weight":92.5},{"RepsCompleted":8,"CompletionTime":"2023-10-02T23:50:06.8691384+10:00","Weight":92.5},{"RepsCompleted":8,"CompletionTime":"2023-10-02T23:53:54.0549887+10:00","Weight":92.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":107.5,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-10-02T23:57:39.24481+10:00","Weight":107.5},{"RepsCompleted":12,"CompletionTime":"2023-10-02T00:00:29.0657446+10:00","Weight":107.5},{"RepsCompleted":12,"CompletionTime":"2023-10-02T00:02:59.783683+10:00","Weight":107.5},{"RepsCompleted":12,"CompletionTime":"2023-10-02T00:05:14.1998456+10:00","Weight":107.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Quad Raises","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":19.0,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-10-02T00:08:16.8607774+10:00","Weight":19.0},{"RepsCompleted":12,"CompletionTime":"2023-10-02T00:08:17.2818544+10:00","Weight":19.0},{"RepsCompleted":12,"CompletionTime":"2023-10-02T00:10:04.0639135+10:00","Weight":19.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":70.0,"RecordedSets":[{"RepsCompleted":15,"CompletionTime":"2023-10-02T00:17:03.3440293+10:00","Weight":70.0},{"RepsCompleted":15,"CompletionTime":"2023-10-02T00:18:02.8321471+10:00","Weight":70.0},{"RepsCompleted":15,"CompletionTime":"2023-10-02T00:19:04.6629097+10:00","Weight":70.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Chest Press","Sets":4,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":45,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-10-02T00:12:54.1065585+10:00","Weight":45},{"RepsCompleted":10,"CompletionTime":"2023-10-02T00:14:37.1443301+10:00","Weight":45},{"RepsCompleted":10,"CompletionTime":"2023-10-02T00:16:05.7591697+10:00","Weight":45},{"RepsCompleted":10,"CompletionTime":"2023-10-02T00:16:05.9790533+10:00","Weight":45}],"Notes":null,"PerSetWeight":false}],"Date":"2023-10-02T00:00:00+00:00","Bodyweight":null},{"Id":"1ec4daad-6ef1-48a2-8d7a-743372bdd941","Blueprint":{"Name":"Session 3: Full Body","Exercises":[{"Name":"Deadlifts","Sets":3,"RepsPerSet":5,"InitialKilograms":70,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Bench Press","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":3,"RepsPerSet":10,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Deadlifts","Sets":3,"RepsPerSet":5,"InitialKilograms":70,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":100,"RecordedSets":[{"RepsCompleted":5,"CompletionTime":"2023-09-29T05:46:26.5759454+10:00","Weight":100},{"RepsCompleted":5,"CompletionTime":"2023-09-29T05:49:54.0998531+10:00","Weight":100},{"RepsCompleted":5,"CompletionTime":"2023-09-29T05:52:59.5438048+10:00","Weight":100}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":95,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-09-29T06:00:15.9979913+10:00","Weight":95},{"RepsCompleted":8,"CompletionTime":"2023-09-29T06:03:23.2505381+10:00","Weight":95},{"RepsCompleted":8,"CompletionTime":"2023-09-29T06:09:06.433024+10:00","Weight":95}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bench Press","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":60,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-09-29T06:13:18.3753975+10:00","Weight":60},{"RepsCompleted":8,"CompletionTime":"2023-09-29T06:15:22.6358273+10:00","Weight":60},{"RepsCompleted":8,"CompletionTime":"2023-09-29T06:18:27.5299267+10:00","Weight":60}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-09-29T06:20:07.4660777+10:00","Weight":0},{"RepsCompleted":6,"CompletionTime":"2023-09-29T06:21:55.2142327+10:00","Weight":0},{"RepsCompleted":4,"CompletionTime":"2023-09-29T06:24:21.3173742+10:00","Weight":0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Shoulder Press","Sets":3,"RepsPerSet":10,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":35.0,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-09-29T06:26:51.7567629+10:00","Weight":35.0},{"RepsCompleted":10,"CompletionTime":"2023-09-29T06:30:26.6342981+10:00","Weight":35.0},{"RepsCompleted":10,"CompletionTime":"2023-09-29T06:33:54.7857911+10:00","Weight":35.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0.0,"RecordedSets":[{"RepsCompleted":7,"CompletionTime":"2023-09-29T06:35:59.4778873+10:00","Weight":0.0},{"RepsCompleted":8,"CompletionTime":"2023-09-29T06:38:14.6055372+10:00","Weight":0.0},{"RepsCompleted":5,"CompletionTime":"2023-09-29T06:40:26.503883+10:00","Weight":0.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":12.5,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-09-29T06:41:41.6570221+10:00","Weight":12.5},{"RepsCompleted":12,"CompletionTime":"2023-09-29T06:43:32.8897542+10:00","Weight":12.5},{"RepsCompleted":10,"CompletionTime":"2023-09-29T06:46:14.6899117+10:00","Weight":12.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":67.5,"RecordedSets":[{"RepsCompleted":15,"CompletionTime":"2023-09-29T06:47:12.7588931+10:00","Weight":67.5},{"RepsCompleted":15,"CompletionTime":"2023-09-29T06:48:25.895421+10:00","Weight":67.5},{"RepsCompleted":15,"CompletionTime":"2023-09-29T06:49:15.1467901+10:00","Weight":67.5}],"Notes":null,"PerSetWeight":false}],"Date":"2023-09-29T00:00:00+00:00","Bodyweight":null},{"Id":"fe3c8b59-6b58-486f-b945-64a71b4bf98b","Blueprint":{"Name":"Session 2: Upper Body","Exercises":[{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Barbell Rows","Sets":3,"RepsPerSet":10,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Cable Flys","Sets":3,"RepsPerSet":12,"InitialKilograms":10.0,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Tricep Rope Pushdowns","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":65,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-09-27T01:08:29.3271814+10:00","Weight":65},{"RepsCompleted":8,"CompletionTime":"2023-09-27T01:12:18.5419263+10:00","Weight":65},{"RepsCompleted":5,"CompletionTime":"2023-09-27T01:15:48.6029089+10:00","Weight":65},{"RepsCompleted":7,"CompletionTime":"2023-09-27T01:21:01.6141852+10:00","Weight":65}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Barbell Rows","Sets":3,"RepsPerSet":10,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":65,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-09-27T01:26:42.8137024+10:00","Weight":65},{"RepsCompleted":10,"CompletionTime":"2023-09-27T01:29:40.95792+10:00","Weight":65},{"RepsCompleted":10,"CompletionTime":"2023-09-27T01:33:33.3558165+10:00","Weight":65}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":37.5,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-09-27T01:40:19.5740474+10:00","Weight":37.5},{"RepsCompleted":8,"CompletionTime":"2023-09-27T01:40:19.8850322+10:00","Weight":37.5},{"RepsCompleted":8,"CompletionTime":"2023-09-27T01:43:13.5778612+10:00","Weight":37.5},{"RepsCompleted":6,"CompletionTime":"2023-09-27T01:47:13.8215246+10:00","Weight":37.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Cable Flys","Sets":3,"RepsPerSet":12,"InitialKilograms":10.0,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":19.0,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-09-27T01:49:15.2844496+10:00","Weight":19.0},{"RepsCompleted":12,"CompletionTime":"2023-09-27T01:51:18.8691177+10:00","Weight":19.0},{"RepsCompleted":7,"CompletionTime":"2023-09-27T01:53:27.4712212+10:00","Weight":19.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0,"RecordedSets":[{"RepsCompleted":4,"CompletionTime":"2023-09-27T01:54:57.1096157+10:00","Weight":0},{"RepsCompleted":5,"CompletionTime":"2023-09-27T01:57:11.0948681+10:00","Weight":0},{"RepsCompleted":5,"CompletionTime":"2023-09-27T01:59:02.6762104+10:00","Weight":0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0.0,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-09-27T02:00:39.2455081+10:00","Weight":0.0},{"RepsCompleted":7,"CompletionTime":"2023-09-27T02:02:28.3999771+10:00","Weight":0.0},{"RepsCompleted":5,"CompletionTime":"2023-09-27T02:04:40.2598625+10:00","Weight":0.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":12.5,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-09-27T02:06:38.0809863+10:00","Weight":12.5},{"RepsCompleted":10,"CompletionTime":"2023-09-27T02:08:47.0830897+10:00","Weight":12.5},{"RepsCompleted":12,"CompletionTime":"2023-09-27T02:12:42.9127899+10:00","Weight":12.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Rope Pushdowns","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":22.8,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-09-27T02:15:04.8592608+10:00","Weight":22.8},{"RepsCompleted":12,"CompletionTime":"2023-09-27T02:17:06.5863662+10:00","Weight":22.8},{"RepsCompleted":8,"CompletionTime":"2023-09-27T02:18:59.1347133+10:00","Weight":22.8}],"Notes":null,"PerSetWeight":false}],"Date":"2023-09-27T00:00:00+00:00","Bodyweight":null},{"Id":"de166f0c-f793-4155-871a-823ad6041395","Blueprint":{"Name":"Session 1: Lower Body","Exercises":[{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:02:00:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Quad Raises","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:02:00:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":90,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-09-25T02:10:51.2415726+10:00","Weight":90},{"RepsCompleted":8,"CompletionTime":"2023-09-25T02:13:52.9694437+10:00","Weight":90},{"RepsCompleted":8,"CompletionTime":"2023-09-25T02:17:01.8948731+10:00","Weight":90}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":95,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-09-25T02:27:33.358808+10:00","Weight":95},{"RepsCompleted":7,"CompletionTime":"2023-09-25T02:30:43.8597167+10:00","Weight":95},{"RepsCompleted":8,"CompletionTime":"2023-09-25T02:36:12.2012192+10:00","Weight":95}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":102.5,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-09-25T02:40:44.4309598+10:00","Weight":102.5},{"RepsCompleted":12,"CompletionTime":"2023-09-25T02:42:46.4704362+10:00","Weight":102.5},{"RepsCompleted":12,"CompletionTime":"2023-09-25T02:45:09.9711589+10:00","Weight":102.5},{"RepsCompleted":12,"CompletionTime":"2023-09-25T02:47:46.1395735+10:00","Weight":102.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Quad Raises","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":16.5,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-09-25T03:00:22.8140824+10:00","Weight":16.5},{"RepsCompleted":12,"CompletionTime":"2023-09-25T03:09:40.2394095+10:00","Weight":16.5},{"RepsCompleted":12,"CompletionTime":"2023-09-25T03:01:58.0089067+10:00","Weight":16.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":65.0,"RecordedSets":[{"RepsCompleted":15,"CompletionTime":"2023-09-25T02:50:50.2345708+10:00","Weight":65.0},{"RepsCompleted":15,"CompletionTime":"2023-09-25T02:51:44.992781+10:00","Weight":65.0},{"RepsCompleted":15,"CompletionTime":"2023-09-25T02:53:16.6892624+10:00","Weight":65.0}],"Notes":null,"PerSetWeight":false}],"Date":"2023-09-25T00:00:00+00:00","Bodyweight":null},{"Id":"d76d6fc2-08b3-4451-ab54-751bfcf65c3f","Blueprint":{"Name":"Session 3: Full Body","Exercises":[{"Name":"Deadlifts","Sets":3,"RepsPerSet":5,"InitialKilograms":70,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Bench Press","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":3,"RepsPerSet":10,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Deadlifts","Sets":3,"RepsPerSet":5,"InitialKilograms":70,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":95,"RecordedSets":[{"RepsCompleted":5,"CompletionTime":"2023-09-22T06:31:18.7615755+10:00","Weight":95},{"RepsCompleted":5,"CompletionTime":"2023-09-22T06:33:23.1406748+10:00","Weight":95},{"RepsCompleted":5,"CompletionTime":"2023-09-22T06:36:12.5147235+10:00","Weight":95}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":85,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-09-22T06:43:18.4555844+10:00","Weight":85},{"RepsCompleted":8,"CompletionTime":"2023-09-22T06:46:38.3966751+10:00","Weight":85},{"RepsCompleted":8,"CompletionTime":"2023-09-22T06:50:49.3477939+10:00","Weight":85}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bench Press","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":60,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-09-22T06:55:24.8546052+10:00","Weight":60},{"RepsCompleted":8,"CompletionTime":"2023-09-22T06:57:56.4767029+10:00","Weight":60},{"RepsCompleted":7,"CompletionTime":"2023-09-22T07:01:30.88613+10:00","Weight":60}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0,"RecordedSets":[{"RepsCompleted":6,"CompletionTime":"2023-09-22T07:03:51.595122+10:00","Weight":0},{"RepsCompleted":6,"CompletionTime":"2023-09-22T07:06:22.1847509+10:00","Weight":0},{"RepsCompleted":4,"CompletionTime":"2023-09-22T07:08:33.5365812+10:00","Weight":0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Shoulder Press","Sets":3,"RepsPerSet":10,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":32.5,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-09-22T07:09:50.5016194+10:00","Weight":32.5},{"RepsCompleted":10,"CompletionTime":"2023-09-22T07:12:15.4758874+10:00","Weight":32.5},{"RepsCompleted":10,"CompletionTime":"2023-09-22T07:14:36.1066261+10:00","Weight":32.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0.0,"RecordedSets":[{"RepsCompleted":5,"CompletionTime":"2023-09-22T07:16:08.42106+10:00","Weight":0.0},{"RepsCompleted":6,"CompletionTime":"2023-09-22T07:18:08.7629636+10:00","Weight":0.0},{"RepsCompleted":5,"CompletionTime":"2023-09-22T07:19:58.5052997+10:00","Weight":0.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":12.5,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-09-22T07:21:36.8343854+10:00","Weight":12.5},{"RepsCompleted":10,"CompletionTime":"2023-09-22T07:23:17.6938559+10:00","Weight":12.5},{"RepsCompleted":6,"CompletionTime":"2023-09-22T07:25:32.3618617+10:00","Weight":12.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":62.5,"RecordedSets":[{"RepsCompleted":15,"CompletionTime":"2023-09-22T07:27:56.9489652+10:00","Weight":62.5},{"RepsCompleted":15,"CompletionTime":"2023-09-22T07:28:20.5642936+10:00","Weight":62.5},{"RepsCompleted":15,"CompletionTime":"2023-09-22T07:51:02.8922693+10:00","Weight":62.5}],"Notes":null,"PerSetWeight":false}],"Date":"2023-09-22T00:00:00+00:00","Bodyweight":null},{"Id":"2812227f-061f-4bc6-bf86-286a5eca1014","Blueprint":{"Name":"Session 2: Upper Body","Exercises":[{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Barbell Rows","Sets":3,"RepsPerSet":10,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Cable Flys","Sets":3,"RepsPerSet":12,"InitialKilograms":10.0,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Tricep Rope Pushdowns","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":60,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-09-20T05:19:08.2162632+10:00","Weight":60},{"RepsCompleted":8,"CompletionTime":"2023-09-20T05:22:28.6403175+10:00","Weight":60},{"RepsCompleted":8,"CompletionTime":"2023-09-20T05:26:20.0994612+10:00","Weight":60},{"RepsCompleted":8,"CompletionTime":"2023-09-20T05:30:50.8702672+10:00","Weight":60}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Barbell Rows","Sets":3,"RepsPerSet":10,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":60,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-09-20T05:37:24.9700076+10:00","Weight":60},{"RepsCompleted":10,"CompletionTime":"2023-09-20T05:41:20.6755132+10:00","Weight":60},{"RepsCompleted":10,"CompletionTime":"2023-09-20T05:45:15.085222+10:00","Weight":60}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":37.5,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-09-20T05:47:37.2466414+10:00","Weight":37.5},{"RepsCompleted":8,"CompletionTime":"2023-09-20T05:49:41.123921+10:00","Weight":37.5},{"RepsCompleted":8,"CompletionTime":"2023-09-20T05:51:55.7778233+10:00","Weight":37.5},{"RepsCompleted":6,"CompletionTime":"2023-09-20T05:55:13.019113+10:00","Weight":37.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Cable Flys","Sets":3,"RepsPerSet":12,"InitialKilograms":10.0,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":16.5,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-09-20T05:57:43.1036024+10:00","Weight":16.5},{"RepsCompleted":12,"CompletionTime":"2023-09-20T05:59:42.8326813+10:00","Weight":16.5},{"RepsCompleted":12,"CompletionTime":"2023-09-20T06:01:58.1967859+10:00","Weight":16.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0,"RecordedSets":[{"RepsCompleted":6,"CompletionTime":"2023-09-20T06:03:15.566288+10:00","Weight":0},{"RepsCompleted":6,"CompletionTime":"2023-09-20T06:06:04.1250104+10:00","Weight":0},{"RepsCompleted":5,"CompletionTime":"2023-09-20T06:08:42.3278705+10:00","Weight":0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0.0,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-09-20T06:11:32.7196729+10:00","Weight":0.0},{"RepsCompleted":8,"CompletionTime":"2023-09-20T06:13:01.7094379+10:00","Weight":0.0},{"RepsCompleted":6,"CompletionTime":"2023-09-20T06:15:57.4545479+10:00","Weight":0.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":12.5,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-09-20T06:17:21.7977941+10:00","Weight":12.5},{"RepsCompleted":10,"CompletionTime":"2023-09-20T06:19:27.6592945+10:00","Weight":12.5},{"RepsCompleted":10,"CompletionTime":"2023-09-20T06:23:15.4247334+10:00","Weight":12.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Rope Pushdowns","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":20.3,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-09-20T06:25:01.1686794+10:00","Weight":20.3},{"RepsCompleted":12,"CompletionTime":"2023-09-20T06:26:33.0104682+10:00","Weight":20.3},{"RepsCompleted":12,"CompletionTime":"2023-09-20T06:40:36.5782436+10:00","Weight":20.3}],"Notes":null,"PerSetWeight":false}],"Date":"2023-09-20T00:00:00+00:00","Bodyweight":null},{"Id":"e7f14be7-ba09-4c7d-9831-ea878f82fbe4","Blueprint":{"Name":"Session 1: Lower Body","Exercises":[{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:02:00:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Quad Raises","Sets":3,"RepsPerSet":12,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:02:00:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":80,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-09-18T07:17:31.7662417+10:00","Weight":80},{"RepsCompleted":8,"CompletionTime":"2023-09-18T07:20:25.9791848+10:00","Weight":80},{"RepsCompleted":8,"CompletionTime":"2023-09-18T07:25:06.4552132+10:00","Weight":80}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":90,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-09-18T07:29:09.5013959+10:00","Weight":90},{"RepsCompleted":8,"CompletionTime":"2023-09-18T07:32:04.0287655+10:00","Weight":90},{"RepsCompleted":8,"CompletionTime":"2023-09-18T07:35:38.1181118+10:00","Weight":90}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":97.5,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-09-18T07:38:38.8235764+10:00","Weight":97.5},{"RepsCompleted":12,"CompletionTime":"2023-09-18T07:40:51.5947204+10:00","Weight":97.5},{"RepsCompleted":12,"CompletionTime":"2023-09-18T07:43:18.7584548+10:00","Weight":97.5},{"RepsCompleted":12,"CompletionTime":"2023-09-18T07:45:34.6927938+10:00","Weight":97.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":60.0,"RecordedSets":[{"RepsCompleted":15,"CompletionTime":"2023-09-18T07:53:28.2233711+10:00","Weight":60.0},{"RepsCompleted":15,"CompletionTime":"2023-09-18T07:54:26.4217919+10:00","Weight":60.0},{"RepsCompleted":15,"CompletionTime":"2023-09-18T07:55:34.6875862+10:00","Weight":60.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Quad Raises","Sets":3,"RepsPerSet":12,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":14,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-09-18T07:49:07.2927459+10:00","Weight":14},{"RepsCompleted":12,"CompletionTime":"2023-09-18T07:50:40.5655013+10:00","Weight":14},{"RepsCompleted":12,"CompletionTime":"2023-09-18T07:52:51.1968927+10:00","Weight":14}],"Notes":null,"PerSetWeight":false}],"Date":"2023-09-18T00:00:00+00:00","Bodyweight":null},{"Id":"5f8eeb07-40bb-480e-925c-af7ae59a6f42","Blueprint":{"Name":"Session 2: Upper Body","Exercises":[{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Barbell Rows","Sets":3,"RepsPerSet":10,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Cable Flys","Sets":3,"RepsPerSet":12,"InitialKilograms":10.0,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Tricep Rope Pushdowns","Sets":3,"RepsPerSet":12,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":60,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-09-13T05:03:37.638707+10:00","Weight":60},{"RepsCompleted":8,"CompletionTime":"2023-09-13T05:06:40.9497364+10:00","Weight":60},{"RepsCompleted":8,"CompletionTime":"2023-09-13T05:10:03.0973506+10:00","Weight":60},{"RepsCompleted":5,"CompletionTime":"2023-09-13T05:13:25.0175755+10:00","Weight":60}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Barbell Rows","Sets":3,"RepsPerSet":10,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":60,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-09-13T05:18:39.2101079+10:00","Weight":60},{"RepsCompleted":10,"CompletionTime":"2023-09-13T05:22:20.4926808+10:00","Weight":60},{"RepsCompleted":9,"CompletionTime":"2023-09-13T05:26:29.6262751+10:00","Weight":60}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":35.0,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-09-13T05:29:02.3823502+10:00","Weight":35.0},{"RepsCompleted":8,"CompletionTime":"2023-09-13T05:31:08.8013588+10:00","Weight":35.0},{"RepsCompleted":8,"CompletionTime":"2023-09-13T05:33:28.5292699+10:00","Weight":35.0},{"RepsCompleted":8,"CompletionTime":"2023-09-13T05:37:08.0393167+10:00","Weight":35.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Cable Flys","Sets":3,"RepsPerSet":12,"InitialKilograms":10.0,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":14,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-09-13T05:38:42.6599963+10:00","Weight":14},{"RepsCompleted":12,"CompletionTime":"2023-09-13T05:40:44.7689707+10:00","Weight":14},{"RepsCompleted":12,"CompletionTime":"2023-09-13T05:42:46.310619+10:00","Weight":14}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":-23,"RecordedSets":[{"RepsCompleted":4,"CompletionTime":"2023-09-13T05:43:45.8068251+10:00","Weight":-23},{"RepsCompleted":8,"CompletionTime":"2023-09-13T05:46:48.6404934+10:00","Weight":-23},{"RepsCompleted":8,"CompletionTime":"2023-09-13T05:48:43.4203028+10:00","Weight":-23}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0.0,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-09-13T05:49:56.1005153+10:00","Weight":0.0},{"RepsCompleted":9,"CompletionTime":"2023-09-13T05:51:47.7269+10:00","Weight":0.0},{"RepsCompleted":7,"CompletionTime":"2023-09-13T05:54:19.0315583+10:00","Weight":0.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":12.5,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-09-13T05:55:23.2356044+10:00","Weight":12.5},{"RepsCompleted":10,"CompletionTime":"2023-09-13T05:57:33.1674717+10:00","Weight":12.5},{"RepsCompleted":8,"CompletionTime":"2023-09-13T06:00:46.7416765+10:00","Weight":12.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Rope Pushdowns","Sets":3,"RepsPerSet":12,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":20.3,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-09-13T06:03:42.0464657+10:00","Weight":20.3},{"RepsCompleted":12,"CompletionTime":"2023-09-13T06:05:41.3972433+10:00","Weight":20.3},{"RepsCompleted":9,"CompletionTime":"2023-09-13T06:07:50.0792892+10:00","Weight":20.3}],"Notes":null,"PerSetWeight":false}],"Date":"2023-09-13T00:00:00+00:00","Bodyweight":null},{"Id":"5cad5aec-8017-472b-9dae-d460ee57f94e","Blueprint":{"Name":"Session 1: Lower Body","Exercises":[{"Name":"Front Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:02:00:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Front Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:02:00:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":65.0,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-09-11T03:10:07.0352836+10:00","Weight":65.0},{"RepsCompleted":8,"CompletionTime":"2023-09-11T03:13:07.7873124+10:00","Weight":65.0},{"RepsCompleted":8,"CompletionTime":"2023-09-11T03:16:05.5570712+10:00","Weight":65.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":85,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-09-11T03:21:53.2613162+10:00","Weight":85},{"RepsCompleted":8,"CompletionTime":"2023-09-11T03:25:16.6062516+10:00","Weight":85},{"RepsCompleted":8,"CompletionTime":"2023-09-11T03:29:21.0644416+10:00","Weight":85}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":92.5,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-09-11T03:32:45.2806813+10:00","Weight":92.5},{"RepsCompleted":12,"CompletionTime":"2023-09-11T03:34:56.7173171+10:00","Weight":92.5},{"RepsCompleted":12,"CompletionTime":"2023-09-11T03:37:10.0953079+10:00","Weight":92.5},{"RepsCompleted":12,"CompletionTime":"2023-09-11T03:39:40.1349605+10:00","Weight":92.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":57.5,"RecordedSets":[{"RepsCompleted":15,"CompletionTime":"2023-09-11T03:41:20.1254437+10:00","Weight":57.5},{"RepsCompleted":15,"CompletionTime":"2023-09-11T03:42:18.0867338+10:00","Weight":57.5},{"RepsCompleted":15,"CompletionTime":"2023-09-11T03:43:22.9464003+10:00","Weight":57.5}],"Notes":null,"PerSetWeight":false}],"Date":"2023-09-11T00:00:00+00:00","Bodyweight":null},{"Id":"bab3bcb8-779b-484f-9505-36ce1344f8b6","Blueprint":{"Name":"Session 2: Upper Body","Exercises":[{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Barbell Rows","Sets":3,"RepsPerSet":10,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Tricep Rope Pushdowns","Sets":3,"RepsPerSet":12,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":60,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-09-06T05:55:47.2672721+10:00","Weight":60},{"RepsCompleted":6,"CompletionTime":"2023-09-06T05:58:45.6958703+10:00","Weight":60},{"RepsCompleted":8,"CompletionTime":"2023-09-06T06:04:01.0344146+10:00","Weight":60},{"RepsCompleted":6,"CompletionTime":"2023-09-06T06:08:26.3251778+10:00","Weight":60}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Barbell Rows","Sets":3,"RepsPerSet":10,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":55,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-09-06T06:12:56.5972098+10:00","Weight":55},{"RepsCompleted":10,"CompletionTime":"2023-09-06T06:15:11.3814944+10:00","Weight":55},{"RepsCompleted":10,"CompletionTime":"2023-09-06T06:17:44.3154791+10:00","Weight":55}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":35.0,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-09-06T06:19:39.8339689+10:00","Weight":35.0},{"RepsCompleted":8,"CompletionTime":"2023-09-06T06:22:13.9542737+10:00","Weight":35.0},{"RepsCompleted":8,"CompletionTime":"2023-09-06T06:24:31.2054022+10:00","Weight":35.0},{"RepsCompleted":6,"CompletionTime":"2023-09-06T06:27:43.3373402+10:00","Weight":35.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Rope Pushdowns","Sets":3,"RepsPerSet":12,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":30.0,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-09-06T06:33:53.22135+10:00","Weight":30.0},{"RepsCompleted":12,"CompletionTime":"2023-09-06T06:34:20.5166266+10:00","Weight":30.0},{"RepsCompleted":12,"CompletionTime":"2023-09-06T06:35:48.2029924+10:00","Weight":30.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":12.5,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-09-06T06:36:51.1308528+10:00","Weight":12.5},{"RepsCompleted":8,"CompletionTime":"2023-09-06T06:38:48.4737764+10:00","Weight":12.5},{"RepsCompleted":7,"CompletionTime":"2023-09-06T06:41:13.9774382+10:00","Weight":12.5}],"Notes":null,"PerSetWeight":false}],"Date":"2023-09-06T00:00:00+00:00","Bodyweight":null},{"Id":"51fa0080-9bf3-45ed-ac20-2fa050bb52d8","Blueprint":{"Name":"Session 1: Lower Body","Exercises":[{"Name":"Front Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:02:00:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Front Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:02:00:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":60.0,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-09-04T02:35:10.7838992+10:00","Weight":60.0},{"RepsCompleted":8,"CompletionTime":"2023-09-04T02:37:56.6790256+10:00","Weight":60.0},{"RepsCompleted":8,"CompletionTime":"2023-09-04T02:41:26.2496516+10:00","Weight":60.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":80,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-09-04T02:47:24.156573+10:00","Weight":80},{"RepsCompleted":8,"CompletionTime":"2023-09-04T02:50:23.2127072+10:00","Weight":80},{"RepsCompleted":8,"CompletionTime":"2023-09-04T02:53:25.2136887+10:00","Weight":80}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":87.5,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-09-04T02:56:40.1071409+10:00","Weight":87.5},{"RepsCompleted":12,"CompletionTime":"2023-09-04T02:58:57.3893342+10:00","Weight":87.5},{"RepsCompleted":12,"CompletionTime":"2023-09-04T03:01:00.2207283+10:00","Weight":87.5},{"RepsCompleted":12,"CompletionTime":"2023-09-04T03:03:05.5565658+10:00","Weight":87.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":55.0,"RecordedSets":[{"RepsCompleted":15,"CompletionTime":"2023-09-04T03:04:49.1219195+10:00","Weight":55.0},{"RepsCompleted":15,"CompletionTime":"2023-09-04T03:05:42.6794617+10:00","Weight":55.0},{"RepsCompleted":15,"CompletionTime":"2023-09-04T03:06:35.5588697+10:00","Weight":55.0}],"Notes":null,"PerSetWeight":false}],"Date":"2023-09-04T00:00:00+00:00","Bodyweight":null},{"Id":"31d04e0f-8a05-4912-8b4b-6db9cc9d3628","Blueprint":{"Name":"Session 2: Upper Body","Exercises":[{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Barbell Rows","Sets":3,"RepsPerSet":10,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Cable Flys","Sets":3,"RepsPerSet":12,"InitialKilograms":10.0,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":60,"RecordedSets":[{"RepsCompleted":7,"CompletionTime":"2023-08-30T03:28:57.3148565+10:00","Weight":60},{"RepsCompleted":6,"CompletionTime":"2023-08-30T03:32:34.0402748+10:00","Weight":60},{"RepsCompleted":8,"CompletionTime":"2023-08-30T03:37:54.0955288+10:00","Weight":60},{"RepsCompleted":8,"CompletionTime":"2023-08-30T03:41:40.9222789+10:00","Weight":60}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Barbell Rows","Sets":3,"RepsPerSet":10,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":60,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-08-30T03:45:01.8901582+10:00","Weight":60},{"RepsCompleted":10,"CompletionTime":"2023-08-30T03:47:13.9452468+10:00","Weight":60},{"RepsCompleted":10,"CompletionTime":"2023-08-30T03:50:25.2678307+10:00","Weight":60}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":35.0,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-08-30T03:52:42.4571876+10:00","Weight":35.0},{"RepsCompleted":8,"CompletionTime":"2023-08-30T03:54:54.1210282+10:00","Weight":35.0},{"RepsCompleted":8,"CompletionTime":"2023-08-30T03:57:04.2419648+10:00","Weight":35.0},{"RepsCompleted":5,"CompletionTime":"2023-08-30T03:59:05.2563941+10:00","Weight":35.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Cable Flys","Sets":3,"RepsPerSet":12,"InitialKilograms":10.0,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":11,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-08-30T04:00:53.9354931+10:00","Weight":11},{"RepsCompleted":12,"CompletionTime":"2023-08-30T04:02:56.3028115+10:00","Weight":11},{"RepsCompleted":12,"CompletionTime":"2023-08-30T04:05:50.4136861+10:00","Weight":11}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0.0,"RecordedSets":[{"RepsCompleted":4,"CompletionTime":"2023-08-30T04:06:54.3478106+10:00","Weight":0.0},{"RepsCompleted":5,"CompletionTime":"2023-08-30T04:08:43.7209114+10:00","Weight":0.0},{"RepsCompleted":3,"CompletionTime":"2023-08-30T04:10:32.8851053+10:00","Weight":0.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0.0,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-08-30T04:11:21.3708816+10:00","Weight":0.0},{"RepsCompleted":10,"CompletionTime":"2023-08-30T04:13:13.0610069+10:00","Weight":0.0},{"RepsCompleted":7,"CompletionTime":"2023-08-30T04:15:28.0768243+10:00","Weight":0.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":12.5,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-08-30T04:17:11.0933095+10:00","Weight":12.5},{"RepsCompleted":8,"CompletionTime":"2023-08-30T04:18:58.1316073+10:00","Weight":12.5},{"RepsCompleted":5,"CompletionTime":"2023-08-30T04:22:05.0825672+10:00","Weight":12.5}],"Notes":null,"PerSetWeight":false}],"Date":"2023-08-30T00:00:00+00:00","Bodyweight":null},{"Id":"22870a71-7104-454c-b846-38bfbb7f1d94","Blueprint":{"Name":"Session 1: Lower Body","Exercises":[{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:02:00:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":10,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:02:00:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":85,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-08-28T03:19:35.9273195+10:00","Weight":85},{"RepsCompleted":8,"CompletionTime":"2023-08-28T03:22:30.572699+10:00","Weight":85},{"RepsCompleted":8,"CompletionTime":"2023-08-28T03:27:01.8908724+10:00","Weight":85}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":10,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":80,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-08-28T03:29:37.5601847+10:00","Weight":80},{"RepsCompleted":null,"CompletionTime":null,"Weight":80},{"RepsCompleted":null,"CompletionTime":null,"Weight":80}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":85,"RecordedSets":[{"RepsCompleted":null,"CompletionTime":null,"Weight":85},{"RepsCompleted":null,"CompletionTime":null,"Weight":85},{"RepsCompleted":null,"CompletionTime":null,"Weight":85},{"RepsCompleted":null,"CompletionTime":null,"Weight":85}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":55.0,"RecordedSets":[{"RepsCompleted":null,"CompletionTime":null,"Weight":55.0},{"RepsCompleted":null,"CompletionTime":null,"Weight":55.0},{"RepsCompleted":null,"CompletionTime":null,"Weight":55.0}],"Notes":null,"PerSetWeight":false}],"Date":"2023-08-28T00:00:00+00:00","Bodyweight":null},{"Id":"51fb3132-f63c-4e0b-936b-9e1ecd7c40b1","Blueprint":{"Name":"Session 3: Full Body","Exercises":[{"Name":"Deadlifts","Sets":3,"RepsPerSet":5,"InitialKilograms":70,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Bench Press","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":3,"RepsPerSet":10,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Deadlifts","Sets":3,"RepsPerSet":5,"InitialKilograms":70,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":90,"RecordedSets":[{"RepsCompleted":5,"CompletionTime":"2023-08-25T21:50:46.235571+10:00","Weight":90},{"RepsCompleted":5,"CompletionTime":"2023-08-25T21:52:51.7620928+10:00","Weight":90},{"RepsCompleted":5,"CompletionTime":"2023-08-25T21:55:27.9865298+10:00","Weight":90}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":80,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-08-25T22:01:51.7146367+10:00","Weight":80},{"RepsCompleted":8,"CompletionTime":"2023-08-25T22:06:57.7069212+10:00","Weight":80},{"RepsCompleted":8,"CompletionTime":"2023-08-25T22:11:01.7058916+10:00","Weight":80}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bench Press","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":55,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-08-25T22:16:50.8704442+10:00","Weight":55},{"RepsCompleted":8,"CompletionTime":"2023-08-25T22:19:06.8833805+10:00","Weight":55},{"RepsCompleted":8,"CompletionTime":"2023-08-25T22:22:32.8465321+10:00","Weight":55}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0.0,"RecordedSets":[{"RepsCompleted":4,"CompletionTime":"2023-08-25T22:25:58.421024+10:00","Weight":0.0},{"RepsCompleted":5,"CompletionTime":"2023-08-25T22:28:20.3396822+10:00","Weight":0.0},{"RepsCompleted":5,"CompletionTime":"2023-08-25T22:30:41.7160032+10:00","Weight":0.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Shoulder Press","Sets":3,"RepsPerSet":10,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":30.0,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-08-25T22:34:21.1793493+10:00","Weight":30.0},{"RepsCompleted":10,"CompletionTime":"2023-08-25T22:37:02.7078743+10:00","Weight":30.0},{"RepsCompleted":10,"CompletionTime":"2023-08-25T22:39:57.9025261+10:00","Weight":30.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":0.0,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-08-25T22:41:24.3268277+10:00","Weight":0.0},{"RepsCompleted":7,"CompletionTime":"2023-08-25T22:43:42.5592888+10:00","Weight":0.0},{"RepsCompleted":10,"CompletionTime":"2023-08-25T22:47:22.8210213+10:00","Weight":0.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":12.5,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-08-25T22:48:24.529442+10:00","Weight":12.5},{"RepsCompleted":12,"CompletionTime":"2023-08-25T22:50:48.9156299+10:00","Weight":12.5},{"RepsCompleted":7,"CompletionTime":"2023-08-25T22:53:33.4048213+10:00","Weight":12.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":52.5,"RecordedSets":[{"RepsCompleted":15,"CompletionTime":"2023-08-25T22:55:55.5516491+10:00","Weight":52.5},{"RepsCompleted":15,"CompletionTime":"2023-08-25T22:57:45.3113198+10:00","Weight":52.5},{"RepsCompleted":15,"CompletionTime":"2023-08-25T22:59:30.518555+10:00","Weight":52.5}],"Notes":null,"PerSetWeight":false}],"Date":"2023-08-25T00:00:00+00:00","Bodyweight":null},{"Id":"c66788e6-4b75-4174-975a-8da69f9d2385","Blueprint":{"Name":"Session 2: Upper Body","Exercises":[{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Barbell Rows","Sets":3,"RepsPerSet":10,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Cable Flys","Sets":3,"RepsPerSet":12,"InitialKilograms":10.0,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":55,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-08-23T05:36:34.6026132+10:00","Weight":55},{"RepsCompleted":8,"CompletionTime":"2023-08-23T05:39:01.6174268+10:00","Weight":55},{"RepsCompleted":8,"CompletionTime":"2023-08-23T05:41:17.7450316+10:00","Weight":55},{"RepsCompleted":8,"CompletionTime":"2023-08-23T05:44:16.8098469+10:00","Weight":55}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Barbell Rows","Sets":3,"RepsPerSet":10,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":55,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-08-23T05:23:53.6043078+10:00","Weight":55},{"RepsCompleted":10,"CompletionTime":"2023-08-23T05:26:03.5764751+10:00","Weight":55},{"RepsCompleted":10,"CompletionTime":"2023-08-23T05:29:10.396685+10:00","Weight":55}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":32.5,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-08-23T05:51:08.6460606+10:00","Weight":32.5},{"RepsCompleted":8,"CompletionTime":"2023-08-23T05:53:27.7399951+10:00","Weight":32.5},{"RepsCompleted":8,"CompletionTime":"2023-08-23T05:55:43.4252662+10:00","Weight":32.5},{"RepsCompleted":8,"CompletionTime":"2023-08-23T05:58:20.6352242+10:00","Weight":32.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Cable Flys","Sets":3,"RepsPerSet":12,"InitialKilograms":10.0,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":7.5,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-08-23T06:01:07.9838649+10:00","Weight":7.5},{"RepsCompleted":12,"CompletionTime":"2023-08-23T06:03:36.8751631+10:00","Weight":7.5},{"RepsCompleted":12,"CompletionTime":"2023-08-23T06:05:56.5927214+10:00","Weight":7.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":-25,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-08-23T06:07:27.989258+10:00","Weight":-25},{"RepsCompleted":8,"CompletionTime":"2023-08-23T06:09:20.1219761+10:00","Weight":-25},{"RepsCompleted":8,"CompletionTime":"2023-08-23T06:11:07.9504439+10:00","Weight":-25}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":-12.5,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-08-23T06:12:42.0601843+10:00","Weight":-12.5},{"RepsCompleted":10,"CompletionTime":"2023-08-23T06:14:22.2349575+10:00","Weight":-12.5},{"RepsCompleted":7,"CompletionTime":"2023-08-23T06:16:33.571818+10:00","Weight":-12.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":12.5,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-08-23T06:18:28.4962559+10:00","Weight":12.5},{"RepsCompleted":12,"CompletionTime":"2023-08-23T06:22:03.1978206+10:00","Weight":12.5},{"RepsCompleted":7,"CompletionTime":"2023-08-23T06:25:12.7609604+10:00","Weight":12.5}],"Notes":null,"PerSetWeight":false}],"Date":"2023-08-23T00:00:00+00:00","Bodyweight":null},{"Id":"fc4f07d8-278c-4610-bebd-e08c0c20b271","Blueprint":{"Name":"Session 1: Lower Body","Exercises":[{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:02:00:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":10,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:02:00:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":100,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-08-21T02:46:58.519881+10:00","Weight":100},{"RepsCompleted":8,"CompletionTime":"2023-08-21T02:50:18.7986342+10:00","Weight":100},{"RepsCompleted":2,"CompletionTime":"2023-08-21T02:53:53.7893057+10:00","Weight":100}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":10,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":80,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-08-21T02:59:41.7336048+10:00","Weight":80},{"RepsCompleted":10,"CompletionTime":"2023-08-21T03:02:31.1114835+10:00","Weight":80},{"RepsCompleted":5,"CompletionTime":"2023-08-21T03:05:51.8666874+10:00","Weight":80}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":80,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-08-21T03:09:04.4857562+10:00","Weight":80},{"RepsCompleted":12,"CompletionTime":"2023-08-21T03:11:11.2401562+10:00","Weight":80},{"RepsCompleted":12,"CompletionTime":"2023-08-21T03:13:33.3650412+10:00","Weight":80},{"RepsCompleted":12,"CompletionTime":"2023-08-21T03:15:29.2674029+10:00","Weight":80}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":50.0,"RecordedSets":[{"RepsCompleted":15,"CompletionTime":"2023-08-21T03:16:36.7240007+10:00","Weight":50.0},{"RepsCompleted":15,"CompletionTime":"2023-08-21T03:17:41.2150465+10:00","Weight":50.0},{"RepsCompleted":15,"CompletionTime":"2023-08-21T03:18:43.1396254+10:00","Weight":50.0}],"Notes":null,"PerSetWeight":false}],"Date":"2023-08-21T00:00:00+00:00","Bodyweight":null},{"Id":"26a9143a-f443-4e07-bd92-6d54b1a976ba","Blueprint":{"Name":"Session 3: Full Body","Exercises":[{"Name":"Deadlifts","Sets":3,"RepsPerSet":5,"InitialKilograms":70,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Bench Press","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":3,"RepsPerSet":10,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Preacher Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Deadlifts","Sets":3,"RepsPerSet":5,"InitialKilograms":70,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":85,"RecordedSets":[{"RepsCompleted":5,"CompletionTime":"2023-08-18T02:32:43.5434164+10:00","Weight":85},{"RepsCompleted":5,"CompletionTime":"2023-08-18T02:34:45.0277223+10:00","Weight":85},{"RepsCompleted":5,"CompletionTime":"2023-08-18T02:37:09.0613074+10:00","Weight":85}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":95,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-08-18T02:45:07.7757498+10:00","Weight":95},{"RepsCompleted":8,"CompletionTime":"2023-08-18T02:45:08.0783515+10:00","Weight":95},{"RepsCompleted":8,"CompletionTime":"2023-08-18T02:48:36.4445173+10:00","Weight":95}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bench Press","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":50,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-08-18T02:52:22.4448104+10:00","Weight":50},{"RepsCompleted":8,"CompletionTime":"2023-08-18T02:54:33.0612434+10:00","Weight":50},{"RepsCompleted":8,"CompletionTime":"2023-08-18T02:57:15.7813768+10:00","Weight":50}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":-25,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-08-18T02:59:01.3104596+10:00","Weight":-25},{"RepsCompleted":8,"CompletionTime":"2023-08-18T03:00:52.0449132+10:00","Weight":-25},{"RepsCompleted":8,"CompletionTime":"2023-08-18T03:02:36.8971802+10:00","Weight":-25}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Shoulder Press","Sets":3,"RepsPerSet":10,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":30.0,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-08-18T03:04:45.47267+10:00","Weight":30.0},{"RepsCompleted":10,"CompletionTime":"2023-08-18T03:07:05.1271781+10:00","Weight":30.0},{"RepsCompleted":6,"CompletionTime":"2023-08-18T03:10:23.6624473+10:00","Weight":30.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":-15.0,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-08-18T03:12:08.3711071+10:00","Weight":-15.0},{"RepsCompleted":10,"CompletionTime":"2023-08-18T03:13:41.3126895+10:00","Weight":-15.0},{"RepsCompleted":8,"CompletionTime":"2023-08-18T03:15:39.6736618+10:00","Weight":-15.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Preacher Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":25.0,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-08-18T03:19:57.5486328+10:00","Weight":25.0},{"RepsCompleted":12,"CompletionTime":"2023-08-18T03:21:35.2602788+10:00","Weight":25.0},{"RepsCompleted":12,"CompletionTime":"2023-08-18T03:23:34.216655+10:00","Weight":25.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":47.5,"RecordedSets":[{"RepsCompleted":15,"CompletionTime":"2023-08-18T03:26:33.7081615+10:00","Weight":47.5},{"RepsCompleted":15,"CompletionTime":"2023-08-18T03:28:01.400598+10:00","Weight":47.5},{"RepsCompleted":15,"CompletionTime":"2023-08-18T03:29:45.7603664+10:00","Weight":47.5}],"Notes":null,"PerSetWeight":false}],"Date":"2023-08-18T00:00:00+00:00","Bodyweight":null},{"Id":"cb16840c-d54b-46cd-ad65-daf35e5384a0","Blueprint":{"Name":"Session 2: Upper Body","Exercises":[{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Barbell Rows","Sets":3,"RepsPerSet":10,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Cable Flys","Sets":3,"RepsPerSet":12,"InitialKilograms":10.0,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":50,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-08-16T06:33:07.944442+10:00","Weight":50},{"RepsCompleted":8,"CompletionTime":"2023-08-16T06:33:08.2956557+10:00","Weight":50},{"RepsCompleted":8,"CompletionTime":"2023-08-16T06:33:08.6786892+10:00","Weight":50},{"RepsCompleted":8,"CompletionTime":"2023-08-16T06:33:09.0259561+10:00","Weight":50}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Barbell Rows","Sets":3,"RepsPerSet":10,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":50,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-08-16T06:33:19.6782216+10:00","Weight":50},{"RepsCompleted":10,"CompletionTime":"2023-08-16T06:33:19.991158+10:00","Weight":50},{"RepsCompleted":10,"CompletionTime":"2023-08-16T06:33:20.2738522+10:00","Weight":50}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":32.5,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-08-16T06:33:23.5730772+10:00","Weight":32.5},{"RepsCompleted":8,"CompletionTime":"2023-08-16T06:33:23.8678436+10:00","Weight":32.5},{"RepsCompleted":8,"CompletionTime":"2023-08-16T06:33:24.5724206+10:00","Weight":32.5},{"RepsCompleted":8,"CompletionTime":"2023-08-16T06:33:24.8750224+10:00","Weight":32.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Cable Flys","Sets":3,"RepsPerSet":12,"InitialKilograms":10.0,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":10.0,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-08-16T06:33:26.3322118+10:00","Weight":10.0},{"RepsCompleted":12,"CompletionTime":"2023-08-16T06:33:26.6805681+10:00","Weight":10.0},{"RepsCompleted":12,"CompletionTime":"2023-08-16T06:33:26.9529415+10:00","Weight":10.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":-25,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-08-16T06:33:32.3205588+10:00","Weight":-25},{"RepsCompleted":8,"CompletionTime":"2023-08-16T06:33:32.7837952+10:00","Weight":-25},{"RepsCompleted":6,"CompletionTime":"2023-08-16T06:33:33.5856582+10:00","Weight":-25}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":-15.0,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-08-16T06:33:35.3019284+10:00","Weight":-15.0},{"RepsCompleted":10,"CompletionTime":"2023-08-16T06:33:35.8455388+10:00","Weight":-15.0},{"RepsCompleted":9,"CompletionTime":"2023-08-16T06:33:36.398882+10:00","Weight":-15.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":12.5,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-08-16T06:33:39.9878438+10:00","Weight":12.5},{"RepsCompleted":8,"CompletionTime":"2023-08-16T06:33:40.5977774+10:00","Weight":12.5},{"RepsCompleted":9,"CompletionTime":"2023-08-16T06:33:42.3461028+10:00","Weight":12.5}],"Notes":null,"PerSetWeight":false}],"Date":"2023-08-16T00:00:00+00:00","Bodyweight":null},{"Id":"43df900b-2f3b-4924-bceb-529a51c83355","Blueprint":{"Name":"Session 1: Lower Body","Exercises":[{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:02:00:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":10,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:02:00:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":90,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-08-14T03:26:50.0065655+10:00","Weight":90},{"RepsCompleted":8,"CompletionTime":"2023-08-14T03:30:21.8339105+10:00","Weight":90},{"RepsCompleted":8,"CompletionTime":"2023-08-14T03:34:01.4681056+10:00","Weight":90}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":10,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":75,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-08-14T03:39:26.2964448+10:00","Weight":75},{"RepsCompleted":10,"CompletionTime":"2023-08-14T03:42:45.3102939+10:00","Weight":75},{"RepsCompleted":10,"CompletionTime":"2023-08-14T03:46:25.3180395+10:00","Weight":75}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":105,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-08-14T03:53:16.9374194+10:00","Weight":105},{"RepsCompleted":12,"CompletionTime":"2023-08-14T03:55:44.7020818+10:00","Weight":105},{"RepsCompleted":12,"CompletionTime":"2023-08-14T03:58:29.071388+10:00","Weight":105},{"RepsCompleted":12,"CompletionTime":"2023-08-14T04:01:27.9117081+10:00","Weight":105}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":45.0,"RecordedSets":[{"RepsCompleted":15,"CompletionTime":"2023-08-14T04:03:40.5617448+10:00","Weight":45.0},{"RepsCompleted":15,"CompletionTime":"2023-08-14T04:04:38.7745752+10:00","Weight":45.0},{"RepsCompleted":15,"CompletionTime":"2023-08-14T04:06:07.7710282+10:00","Weight":45.0}],"Notes":null,"PerSetWeight":false}],"Date":"2023-08-14T00:00:00+00:00","Bodyweight":null},{"Id":"bfbf7fc2-b98b-45c2-bc8f-9a64d93d5286","Blueprint":{"Name":"Session 3: Full Body","Exercises":[{"Name":"Deadlifts","Sets":3,"RepsPerSet":5,"InitialKilograms":70,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Bench Press","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":3,"RepsPerSet":10,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Preacher curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Deadlifts","Sets":3,"RepsPerSet":5,"InitialKilograms":70,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":80,"RecordedSets":[{"RepsCompleted":5,"CompletionTime":"2023-08-11T02:35:42.0282903+10:00","Weight":80},{"RepsCompleted":5,"CompletionTime":"2023-08-11T02:37:51.4090148+10:00","Weight":80},{"RepsCompleted":5,"CompletionTime":"2023-08-11T02:41:22.0398799+10:00","Weight":80}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":85,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-08-11T02:48:00.1362439+10:00","Weight":85},{"RepsCompleted":8,"CompletionTime":"2023-08-11T02:52:08.4253884+10:00","Weight":85},{"RepsCompleted":8,"CompletionTime":"2023-08-11T02:57:19.6423242+10:00","Weight":85}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bench Press","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":50,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-08-11T03:06:40.1125418+10:00","Weight":50},{"RepsCompleted":5,"CompletionTime":"2023-08-11T03:09:39.7865152+10:00","Weight":50},{"RepsCompleted":8,"CompletionTime":"2023-08-11T03:14:36.3025328+10:00","Weight":50}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":-25,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-08-11T03:16:34.2235818+10:00","Weight":-25},{"RepsCompleted":8,"CompletionTime":"2023-08-11T03:19:22.8577314+10:00","Weight":-25},{"RepsCompleted":6,"CompletionTime":"2023-08-11T03:21:01.332935+10:00","Weight":-25}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Shoulder Press","Sets":3,"RepsPerSet":10,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":32.5,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-08-11T03:34:13.1250391+10:00","Weight":32.5},{"RepsCompleted":9,"CompletionTime":"2023-08-11T03:37:10.2732838+10:00","Weight":32.5},{"RepsCompleted":7,"CompletionTime":"2023-08-11T03:41:40.4060644+10:00","Weight":32.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":-15.0,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-08-11T03:26:06.7633128+10:00","Weight":-15.0},{"RepsCompleted":10,"CompletionTime":"2023-08-11T03:27:31.1736779+10:00","Weight":-15.0},{"RepsCompleted":6,"CompletionTime":"2023-08-11T03:29:34.8961953+10:00","Weight":-15.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Preacher curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":25.0,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-08-11T03:43:50.2479678+10:00","Weight":25.0},{"RepsCompleted":12,"CompletionTime":"2023-08-11T03:45:52.7532525+10:00","Weight":25.0},{"RepsCompleted":7,"CompletionTime":"2023-08-11T03:48:53.9638612+10:00","Weight":25.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":45.0,"RecordedSets":[{"RepsCompleted":null,"CompletionTime":null,"Weight":45.0},{"RepsCompleted":null,"CompletionTime":null,"Weight":45.0},{"RepsCompleted":null,"CompletionTime":null,"Weight":45.0}],"Notes":null,"PerSetWeight":false}],"Date":"2023-08-11T00:00:00+00:00","Bodyweight":null},{"Id":"589813ca-ed02-449d-894c-052a8d9b0fb6","Blueprint":{"Name":"Session 2: Upper Body","Exercises":[{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Barbell Rows","Sets":3,"RepsPerSet":10,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":60,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-08-09T04:03:31.1256422+10:00","Weight":60},{"RepsCompleted":8,"CompletionTime":"2023-08-09T04:06:00.3954215+10:00","Weight":60},{"RepsCompleted":6,"CompletionTime":"2023-08-09T04:09:24.5802115+10:00","Weight":60},{"RepsCompleted":8,"CompletionTime":"2023-08-09T04:15:19.4090957+10:00","Weight":60}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Barbell Rows","Sets":3,"RepsPerSet":10,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":65,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-08-09T04:20:38.2435081+10:00","Weight":65},{"RepsCompleted":10,"CompletionTime":"2023-08-09T04:23:39.0010736+10:00","Weight":65},{"RepsCompleted":10,"CompletionTime":"2023-08-09T04:27:39.9515609+10:00","Weight":65}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},"Kilograms":30,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-08-09T04:30:04.1875242+10:00","Weight":30},{"RepsCompleted":8,"CompletionTime":"2023-08-09T04:32:37.0140374+10:00","Weight":30},{"RepsCompleted":8,"CompletionTime":"2023-08-09T04:35:12.1266193+10:00","Weight":30},{"RepsCompleted":8,"CompletionTime":"2023-08-09T04:37:44.7046875+10:00","Weight":30}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":-25,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-08-09T04:38:56.9963696+10:00","Weight":-25},{"RepsCompleted":8,"CompletionTime":"2023-08-09T04:40:55.0303217+10:00","Weight":-25},{"RepsCompleted":8,"CompletionTime":"2023-08-09T04:43:00.9793731+10:00","Weight":-25}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":-20.0,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-08-09T04:43:49.1683001+10:00","Weight":-20.0},{"RepsCompleted":10,"CompletionTime":"2023-08-09T04:45:31.4198019+10:00","Weight":-20.0},{"RepsCompleted":10,"CompletionTime":"2023-08-09T04:47:12.5465446+10:00","Weight":-20.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},"Kilograms":12.5,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-08-09T04:48:28.9678881+10:00","Weight":12.5},{"RepsCompleted":9,"CompletionTime":"2023-08-09T04:51:10.0393211+10:00","Weight":12.5},{"RepsCompleted":9,"CompletionTime":"2023-08-09T04:55:23.0919212+10:00","Weight":12.5}],"Notes":null,"PerSetWeight":false}],"Date":"2023-08-09T00:00:00+00:00","Bodyweight":null},{"Id":"75f11f59-87ae-41cb-8d71-8a0b161e23dc","Blueprint":{"Name":"Session 1: Lower Body","Exercises":[{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":10,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:00:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":80,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-08-07T02:47:59.9360572+10:00","Weight":80},{"RepsCompleted":8,"CompletionTime":"2023-08-07T02:51:03.1815378+10:00","Weight":80},{"RepsCompleted":8,"CompletionTime":"2023-08-07T02:54:21.2974065+10:00","Weight":80}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":10,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":70,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-08-07T02:58:46.224102+10:00","Weight":70},{"RepsCompleted":10,"CompletionTime":"2023-08-07T03:01:15.977226+10:00","Weight":70},{"RepsCompleted":10,"CompletionTime":"2023-08-07T03:04:30.7347437+10:00","Weight":70}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":100,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-08-07T03:08:08.0931148+10:00","Weight":100},{"RepsCompleted":12,"CompletionTime":"2023-08-07T03:10:31.0520202+10:00","Weight":100},{"RepsCompleted":12,"CompletionTime":"2023-08-07T03:18:26.5502023+10:00","Weight":100},{"RepsCompleted":12,"CompletionTime":"2023-08-07T03:18:24.8550372+10:00","Weight":100}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:00:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":42.5,"RecordedSets":[{"RepsCompleted":15,"CompletionTime":"2023-08-07T03:20:06.6157567+10:00","Weight":42.5},{"RepsCompleted":15,"CompletionTime":"2023-08-07T03:21:33.6239208+10:00","Weight":42.5},{"RepsCompleted":15,"CompletionTime":"2023-08-07T03:29:56.8317095+10:00","Weight":42.5}],"Notes":null,"PerSetWeight":false}],"Date":"2023-08-07T00:00:00+00:00","Bodyweight":null},{"Id":"f9d48536-e146-40c9-8b3e-0600c1f6eaf8","Blueprint":{"Name":"Session 3: Full Body","Exercises":[{"Name":"Deadlifts","Sets":3,"RepsPerSet":5,"InitialKilograms":70,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Bench Press","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":3,"RepsPerSet":10,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:00:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Deadlifts","Sets":3,"RepsPerSet":5,"InitialKilograms":70,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":75,"RecordedSets":[{"RepsCompleted":5,"CompletionTime":"2023-08-04T03:09:13.7940022+10:00","Weight":75},{"RepsCompleted":5,"CompletionTime":"2023-08-04T03:11:20.620647+10:00","Weight":75},{"RepsCompleted":5,"CompletionTime":"2023-08-04T03:14:23.5708398+10:00","Weight":75}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":75,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-08-04T03:16:13.5576935+10:00","Weight":75},{"RepsCompleted":8,"CompletionTime":"2023-08-04T03:18:49.1453877+10:00","Weight":75},{"RepsCompleted":8,"CompletionTime":"2023-08-04T03:22:59.3055962+10:00","Weight":75}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bench Press","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":55,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-08-04T03:25:52.6116356+10:00","Weight":55},{"RepsCompleted":8,"CompletionTime":"2023-08-04T03:28:06.3280444+10:00","Weight":55},{"RepsCompleted":8,"CompletionTime":"2023-08-04T03:31:20.1981643+10:00","Weight":55}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":-25,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-08-04T03:32:29.9498816+10:00","Weight":-25},{"RepsCompleted":8,"CompletionTime":"2023-08-04T03:34:26.0027471+10:00","Weight":-25},{"RepsCompleted":5,"CompletionTime":"2023-08-04T03:36:21.4882627+10:00","Weight":-25}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Shoulder Press","Sets":3,"RepsPerSet":10,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":30,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-08-04T03:39:19.0290924+10:00","Weight":30},{"RepsCompleted":10,"CompletionTime":"2023-08-04T03:41:43.9445645+10:00","Weight":30},{"RepsCompleted":10,"CompletionTime":"2023-08-04T03:44:14.1446174+10:00","Weight":30}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":-25,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-08-04T03:45:19.7954019+10:00","Weight":-25},{"RepsCompleted":10,"CompletionTime":"2023-08-04T03:46:56.0921221+10:00","Weight":-25},{"RepsCompleted":10,"CompletionTime":"2023-08-04T03:48:50.212825+10:00","Weight":-25}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":10,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-08-04T03:51:11.7946587+10:00","Weight":10},{"RepsCompleted":12,"CompletionTime":"2023-08-04T03:52:56.3909228+10:00","Weight":10},{"RepsCompleted":12,"CompletionTime":"2023-08-04T03:55:15.7251628+10:00","Weight":10}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:00:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":40,"RecordedSets":[{"RepsCompleted":15,"CompletionTime":"2023-08-04T03:57:02.5312753+10:00","Weight":40},{"RepsCompleted":15,"CompletionTime":"2023-08-04T03:58:12.8902908+10:00","Weight":40},{"RepsCompleted":15,"CompletionTime":"2023-08-04T03:59:42.9637755+10:00","Weight":40}],"Notes":null,"PerSetWeight":false}],"Date":"2023-08-04T00:00:00+00:00","Bodyweight":null},{"Id":"87d2da42-9946-4d79-9fa3-0682f58abeed","Blueprint":{"Name":"Session 2: Upper Body","Exercises":[{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:02:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Barbell Rows","Sets":3,"RepsPerSet":10,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:02:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":60,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-08-02T22:50:23.8322565+10:00","Weight":60},{"RepsCompleted":8,"CompletionTime":"2023-08-02T22:50:24.5630085+10:00","Weight":60},{"RepsCompleted":8,"CompletionTime":"2023-08-02T22:50:25.0010272+10:00","Weight":60},{"RepsCompleted":6,"CompletionTime":"2023-08-02T22:50:25.8565388+10:00","Weight":60}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Barbell Rows","Sets":3,"RepsPerSet":10,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":60,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-08-02T22:50:32.2262951+10:00","Weight":60},{"RepsCompleted":10,"CompletionTime":"2023-08-02T22:50:32.5511939+10:00","Weight":60},{"RepsCompleted":10,"CompletionTime":"2023-08-02T22:50:32.7783206+10:00","Weight":60}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":30,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-08-02T22:50:34.3053517+10:00","Weight":30},{"RepsCompleted":8,"CompletionTime":"2023-08-02T22:50:34.6668861+10:00","Weight":30},{"RepsCompleted":8,"CompletionTime":"2023-08-02T22:50:34.9539414+10:00","Weight":30},{"RepsCompleted":7,"CompletionTime":"2023-08-02T22:50:35.2333147+10:00","Weight":30}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":-25,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-08-02T22:50:37.4610389+10:00","Weight":-25},{"RepsCompleted":6,"CompletionTime":"2023-08-02T22:50:37.835877+10:00","Weight":-25},{"RepsCompleted":5,"CompletionTime":"2023-08-02T22:50:38.8656433+10:00","Weight":-25}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":-28.5,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-08-02T22:50:43.5937488+10:00","Weight":-28.5},{"RepsCompleted":10,"CompletionTime":"2023-08-02T22:50:43.8800712+10:00","Weight":-28.5},{"RepsCompleted":10,"CompletionTime":"2023-08-02T22:50:44.1084756+10:00","Weight":-28.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":10,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-08-02T22:50:45.8598389+10:00","Weight":10},{"RepsCompleted":9,"CompletionTime":"2023-08-02T22:50:46.4876692+10:00","Weight":10},{"RepsCompleted":9,"CompletionTime":"2023-08-02T22:50:51.4747776+10:00","Weight":10}],"Notes":null,"PerSetWeight":false}],"Date":"2023-08-02T00:00:00+00:00","Bodyweight":null},{"Id":"ac7229ed-4567-4cca-8bda-f3a656ac9a00","Blueprint":{"Name":"Session 1: Lower Body","Exercises":[{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":10,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:00:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":70,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-07-31T03:06:49.0102661+10:00","Weight":70},{"RepsCompleted":8,"CompletionTime":"2023-07-31T03:09:07.850896+10:00","Weight":70},{"RepsCompleted":8,"CompletionTime":"2023-07-31T03:11:25.0267158+10:00","Weight":70}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":10,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":65,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-07-31T03:16:43.4651045+10:00","Weight":65},{"RepsCompleted":10,"CompletionTime":"2023-07-31T03:19:04.8320142+10:00","Weight":65},{"RepsCompleted":10,"CompletionTime":"2023-07-31T03:22:43.6108443+10:00","Weight":65}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":95,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-07-31T03:25:27.7545883+10:00","Weight":95},{"RepsCompleted":12,"CompletionTime":"2023-07-31T03:27:38.9999691+10:00","Weight":95},{"RepsCompleted":12,"CompletionTime":"2023-07-31T03:30:08.4676686+10:00","Weight":95},{"RepsCompleted":12,"CompletionTime":"2023-07-31T03:32:51.0791127+10:00","Weight":95}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:00:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":55.0,"RecordedSets":[{"RepsCompleted":15,"CompletionTime":"2023-07-31T03:34:27.2501354+10:00","Weight":55.0},{"RepsCompleted":15,"CompletionTime":"2023-07-31T03:35:41.9331121+10:00","Weight":55.0},{"RepsCompleted":15,"CompletionTime":"2023-07-31T03:40:54.9605165+10:00","Weight":55.0}],"Notes":null,"PerSetWeight":false}],"Date":"2023-07-31T00:00:00+00:00","Bodyweight":null},{"Id":"02e390f4-1b85-4220-b69f-4738f6bc3535","Blueprint":{"Name":"Session 2: Upper Body","Exercises":[{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Barbell Rows","Sets":3,"RepsPerSet":10,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":55,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-07-27T08:18:49.2232085+10:00","Weight":55},{"RepsCompleted":8,"CompletionTime":"2023-07-27T08:21:13.5481445+10:00","Weight":55},{"RepsCompleted":8,"CompletionTime":"2023-07-27T08:25:28.0475719+10:00","Weight":55},{"RepsCompleted":8,"CompletionTime":"2023-07-27T08:29:18.352345+10:00","Weight":55}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Barbell Rows","Sets":3,"RepsPerSet":10,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":55,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-07-27T08:34:53.2635425+10:00","Weight":55},{"RepsCompleted":10,"CompletionTime":"2023-07-27T08:36:55.8635466+10:00","Weight":55},{"RepsCompleted":10,"CompletionTime":"2023-07-27T08:39:29.7493361+10:00","Weight":55}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":30,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-07-27T08:41:07.0862796+10:00","Weight":30},{"RepsCompleted":8,"CompletionTime":"2023-07-27T08:43:27.0736497+10:00","Weight":30},{"RepsCompleted":8,"CompletionTime":"2023-07-27T08:45:40.2864192+10:00","Weight":30},{"RepsCompleted":7,"CompletionTime":"2023-07-27T08:48:11.1054556+10:00","Weight":30}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":-25,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-07-27T08:50:12.3582644+10:00","Weight":-25},{"RepsCompleted":8,"CompletionTime":"2023-07-27T08:52:24.374972+10:00","Weight":-25},{"RepsCompleted":8,"CompletionTime":"2023-07-27T08:54:15.3190711+10:00","Weight":-25}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":-28.5,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-07-27T08:55:41.2234235+10:00","Weight":-28.5},{"RepsCompleted":10,"CompletionTime":"2023-07-27T08:57:12.2960061+10:00","Weight":-28.5},{"RepsCompleted":10,"CompletionTime":"2023-07-27T08:58:55.3103954+10:00","Weight":-28.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":10,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-07-27T08:59:49.4463573+10:00","Weight":10},{"RepsCompleted":9,"CompletionTime":"2023-07-27T09:01:48.0854759+10:00","Weight":10},{"RepsCompleted":9,"CompletionTime":"2023-07-27T09:15:10.6261708+10:00","Weight":10}],"Notes":null,"PerSetWeight":false}],"Date":"2023-07-27T00:00:00+00:00","Bodyweight":null},{"Id":"c3e2a230-6400-4d1f-8347-9bd850a687ef","Blueprint":{"Name":"Session 1: Lower Body","Exercises":[{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":10,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:00:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":65,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-07-26T04:30:19.0265759+10:00","Weight":65},{"RepsCompleted":8,"CompletionTime":"2023-07-26T04:32:39.8776019+10:00","Weight":65},{"RepsCompleted":8,"CompletionTime":"2023-07-26T04:35:07.0763019+10:00","Weight":65}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":10,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":60,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-07-26T04:37:31.2657046+10:00","Weight":60},{"RepsCompleted":10,"CompletionTime":"2023-07-26T04:39:54.8149897+10:00","Weight":60},{"RepsCompleted":10,"CompletionTime":"2023-07-26T04:43:28.8998762+10:00","Weight":60}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":90,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-07-26T04:46:27.113822+10:00","Weight":90},{"RepsCompleted":12,"CompletionTime":"2023-07-26T04:48:48.9124237+10:00","Weight":90},{"RepsCompleted":12,"CompletionTime":"2023-07-26T04:50:23.5648717+10:00","Weight":90},{"RepsCompleted":12,"CompletionTime":"2023-07-26T04:54:48.7892976+10:00","Weight":90}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:00:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":52.5,"RecordedSets":[{"RepsCompleted":15,"CompletionTime":"2023-07-26T04:54:49.4694571+10:00","Weight":52.5},{"RepsCompleted":15,"CompletionTime":"2023-07-26T04:56:00.8626486+10:00","Weight":52.5},{"RepsCompleted":15,"CompletionTime":"2023-07-26T04:57:57.7839455+10:00","Weight":52.5}],"Notes":null,"PerSetWeight":false}],"Date":"2023-07-26T00:00:00+00:00","Bodyweight":null},{"Id":"40fd685c-00f1-45c5-8268-5786985e9923","Blueprint":{"Name":"Session 2: Upper Body","Exercises":[{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Barbell Rows","Sets":3,"RepsPerSet":10,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":55,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-07-19T05:53:45.7776916+10:00","Weight":55},{"RepsCompleted":8,"CompletionTime":"2023-07-19T05:56:04.8501177+10:00","Weight":55},{"RepsCompleted":8,"CompletionTime":"2023-07-19T05:58:22.2157563+10:00","Weight":55},{"RepsCompleted":6,"CompletionTime":"2023-07-19T06:00:59.2939083+10:00","Weight":55}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Barbell Rows","Sets":3,"RepsPerSet":10,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":50,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-07-19T06:07:13.0476015+10:00","Weight":50},{"RepsCompleted":10,"CompletionTime":"2023-07-19T06:09:40.9444998+10:00","Weight":50},{"RepsCompleted":10,"CompletionTime":"2023-07-19T06:10:56.1518499+10:00","Weight":50}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":28,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-07-19T06:15:17.9183728+10:00","Weight":28},{"RepsCompleted":8,"CompletionTime":"2023-07-19T06:17:31.3883062+10:00","Weight":28},{"RepsCompleted":8,"CompletionTime":"2023-07-19T06:20:14.668969+10:00","Weight":28},{"RepsCompleted":8,"CompletionTime":"2023-07-19T06:22:37.9207273+10:00","Weight":28}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":-28.5,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-07-19T06:25:03.8722307+10:00","Weight":-28.5},{"RepsCompleted":8,"CompletionTime":"2023-07-19T06:27:08.7037866+10:00","Weight":-28.5},{"RepsCompleted":8,"CompletionTime":"2023-07-19T06:29:07.3297171+10:00","Weight":-28.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":-28.5,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-07-19T06:31:50.124856+10:00","Weight":-28.5},{"RepsCompleted":10,"CompletionTime":"2023-07-19T06:34:23.7839215+10:00","Weight":-28.5},{"RepsCompleted":10,"CompletionTime":"2023-07-19T06:37:18.5666896+10:00","Weight":-28.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":10,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-07-19T06:42:26.5128643+10:00","Weight":10},{"RepsCompleted":12,"CompletionTime":"2023-07-19T06:44:05.7848997+10:00","Weight":10},{"RepsCompleted":6,"CompletionTime":"2023-07-19T06:46:37.647436+10:00","Weight":10}],"Notes":null,"PerSetWeight":false}],"Date":"2023-07-19T00:00:00+00:00","Bodyweight":null},{"Id":"02d6503c-dbd6-4cb1-95d4-f1e453ba7c4e","Blueprint":{"Name":"Session 1: Lower Body","Exercises":[{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":10,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:00:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":60,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-07-17T07:25:37.5627894+10:00","Weight":60},{"RepsCompleted":8,"CompletionTime":"2023-07-17T07:28:05.1349334+10:00","Weight":60},{"RepsCompleted":8,"CompletionTime":"2023-07-17T07:30:24.0493845+10:00","Weight":60}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":10,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":55,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-07-17T07:33:20.1099098+10:00","Weight":55},{"RepsCompleted":10,"CompletionTime":"2023-07-17T07:35:17.8268091+10:00","Weight":55},{"RepsCompleted":10,"CompletionTime":"2023-07-17T07:38:08.1630438+10:00","Weight":55}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":85,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-07-17T07:41:43.8641982+10:00","Weight":85},{"RepsCompleted":12,"CompletionTime":"2023-07-17T07:43:27.5389599+10:00","Weight":85},{"RepsCompleted":12,"CompletionTime":"2023-07-17T07:44:59.355369+10:00","Weight":85},{"RepsCompleted":12,"CompletionTime":"2023-07-17T07:47:19.7321301+10:00","Weight":85}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:00:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":50.0,"RecordedSets":[{"RepsCompleted":15,"CompletionTime":"2023-07-17T07:48:56.2313862+10:00","Weight":50.0},{"RepsCompleted":15,"CompletionTime":"2023-07-17T07:50:00.3547717+10:00","Weight":50.0},{"RepsCompleted":15,"CompletionTime":"2023-07-17T07:55:37.154074+10:00","Weight":50.0}],"Notes":null,"PerSetWeight":false}],"Date":"2023-07-17T00:00:00+00:00","Bodyweight":null},{"Id":"ca356faa-f5a3-48a2-b4ae-badb85bc642b","Blueprint":{"Name":"Session 2: Upper Body","Exercises":[{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Barbell Rows","Sets":3,"RepsPerSet":10,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":55,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-07-12T03:52:15.1214626+10:00","Weight":55},{"RepsCompleted":8,"CompletionTime":"2023-07-12T03:54:48.077234+10:00","Weight":55},{"RepsCompleted":8,"CompletionTime":"2023-07-12T03:57:24.6176423+10:00","Weight":55},{"RepsCompleted":5,"CompletionTime":"2023-07-12T04:00:51.5272747+10:00","Weight":55}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Barbell Rows","Sets":3,"RepsPerSet":10,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":45,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-07-12T04:03:29.4967676+10:00","Weight":45},{"RepsCompleted":10,"CompletionTime":"2023-07-12T04:05:00.4890625+10:00","Weight":45},{"RepsCompleted":10,"CompletionTime":"2023-07-12T04:07:37.9704127+10:00","Weight":45}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":27.5,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-07-12T04:09:23.5712698+10:00","Weight":27.5},{"RepsCompleted":8,"CompletionTime":"2023-07-12T04:11:22.3104022+10:00","Weight":27.5},{"RepsCompleted":8,"CompletionTime":"2023-07-12T04:13:22.3250674+10:00","Weight":27.5},{"RepsCompleted":8,"CompletionTime":"2023-07-12T04:15:23.7365393+10:00","Weight":27.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":-30.0,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-07-12T04:16:29.0911711+10:00","Weight":-30.0},{"RepsCompleted":8,"CompletionTime":"2023-07-12T04:18:33.9466197+10:00","Weight":-30.0},{"RepsCompleted":8,"CompletionTime":"2023-07-12T04:20:08.4363763+10:00","Weight":-30.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":-30,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-07-12T04:20:55.2856418+10:00","Weight":-30},{"RepsCompleted":10,"CompletionTime":"2023-07-12T04:22:40.8323005+10:00","Weight":-30},{"RepsCompleted":10,"CompletionTime":"2023-07-12T04:24:22.5437574+10:00","Weight":-30}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":10,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-07-12T04:25:27.0917084+10:00","Weight":10},{"RepsCompleted":12,"CompletionTime":"2023-07-12T04:27:14.3855191+10:00","Weight":10},{"RepsCompleted":6,"CompletionTime":"2023-07-12T04:29:08.4740612+10:00","Weight":10}],"Notes":null,"PerSetWeight":false}],"Date":"2023-07-12T00:00:00+00:00","Bodyweight":null},{"Id":"4b67a39b-b1ad-46a1-b475-946f93b8199e","Blueprint":{"Name":"Session 1: Lower Body","Exercises":[{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":10,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:00:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":55,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-07-09T04:55:30.1858979+10:00","Weight":55},{"RepsCompleted":8,"CompletionTime":"2023-07-09T04:57:43.8562422+10:00","Weight":55},{"RepsCompleted":8,"CompletionTime":"2023-07-09T05:00:41.9450721+10:00","Weight":55}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":10,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":50,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-07-09T05:04:18.3849424+10:00","Weight":50},{"RepsCompleted":10,"CompletionTime":"2023-07-09T05:06:34.8837119+10:00","Weight":50},{"RepsCompleted":10,"CompletionTime":"2023-07-09T05:09:55.5766529+10:00","Weight":50}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":80,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-07-09T05:11:18.0025779+10:00","Weight":80},{"RepsCompleted":12,"CompletionTime":"2023-07-09T05:13:14.1247583+10:00","Weight":80},{"RepsCompleted":12,"CompletionTime":"2023-07-09T05:14:45.7191672+10:00","Weight":80},{"RepsCompleted":12,"CompletionTime":"2023-07-09T05:16:17.7111494+10:00","Weight":80}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:00:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":45.0,"RecordedSets":[{"RepsCompleted":15,"CompletionTime":"2023-07-09T05:17:40.1425272+10:00","Weight":45.0},{"RepsCompleted":15,"CompletionTime":"2023-07-09T05:18:28.5931286+10:00","Weight":45.0},{"RepsCompleted":15,"CompletionTime":"2023-07-09T05:19:26.6841467+10:00","Weight":45.0}],"Notes":null,"PerSetWeight":false}],"Date":"2023-07-09T00:00:00+00:00","Bodyweight":null},{"Id":"8190d170-70ca-4e20-9810-7cf95197496b","Blueprint":{"Name":"Session 3: Full Body","Exercises":[{"Name":"Deadlifts","Sets":3,"RepsPerSet":5,"InitialKilograms":70,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Bench Press","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":3,"RepsPerSet":10,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:00:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Deadlifts","Sets":3,"RepsPerSet":5,"InitialKilograms":70,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":70,"RecordedSets":[{"RepsCompleted":5,"CompletionTime":"2023-07-06T23:44:02.4936821+10:00","Weight":70},{"RepsCompleted":5,"CompletionTime":"2023-07-06T23:46:18.5002254+10:00","Weight":70},{"RepsCompleted":5,"CompletionTime":"2023-07-06T23:50:22.7504714+10:00","Weight":70}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":50,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-07-06T23:53:03.2344914+10:00","Weight":50},{"RepsCompleted":8,"CompletionTime":"2023-07-06T23:55:24.747481+10:00","Weight":50},{"RepsCompleted":8,"CompletionTime":"2023-07-06T23:57:46.5198335+10:00","Weight":50}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bench Press","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":50,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-07-06T00:01:20.6145751+10:00","Weight":50},{"RepsCompleted":8,"CompletionTime":"2023-07-06T00:03:35.8722477+10:00","Weight":50},{"RepsCompleted":8,"CompletionTime":"2023-07-06T00:05:47.5969589+10:00","Weight":50}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":-35,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-07-06T00:07:10.2497716+10:00","Weight":-35},{"RepsCompleted":8,"CompletionTime":"2023-07-06T00:08:43.7771949+10:00","Weight":-35},{"RepsCompleted":8,"CompletionTime":"2023-07-06T00:10:37.7762976+10:00","Weight":-35}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Shoulder Press","Sets":3,"RepsPerSet":10,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":30,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-07-06T00:12:16.9603637+10:00","Weight":30},{"RepsCompleted":10,"CompletionTime":"2023-07-06T00:15:13.5099321+10:00","Weight":30},{"RepsCompleted":9,"CompletionTime":"2023-07-06T00:17:36.5514746+10:00","Weight":30}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":-32.5,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-07-06T00:19:14.3849643+10:00","Weight":-32.5},{"RepsCompleted":10,"CompletionTime":"2023-07-06T00:21:12.299756+10:00","Weight":-32.5},{"RepsCompleted":10,"CompletionTime":"2023-07-06T00:22:50.9606832+10:00","Weight":-32.5}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":10,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-07-06T00:23:49.1343556+10:00","Weight":10},{"RepsCompleted":12,"CompletionTime":"2023-07-06T00:25:26.5009884+10:00","Weight":10},{"RepsCompleted":8,"CompletionTime":"2023-07-06T00:27:11.6275616+10:00","Weight":10}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:00:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":42.5,"RecordedSets":[{"RepsCompleted":15,"CompletionTime":"2023-07-06T00:28:26.6472934+10:00","Weight":42.5},{"RepsCompleted":15,"CompletionTime":"2023-07-06T00:29:19.5345606+10:00","Weight":42.5},{"RepsCompleted":15,"CompletionTime":"2023-07-06T00:30:25.486121+10:00","Weight":42.5}],"Notes":null,"PerSetWeight":false}],"Date":"2023-07-06T00:00:00+00:00","Bodyweight":null},{"Id":"a7490d5c-c47c-478c-8d47-f710a75b5dfd","Blueprint":{"Name":"Session 2: Upper Body","Exercises":[{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Barbell Rows","Sets":3,"RepsPerSet":10,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false}]},"RecordedExercises":[{"Blueprint":{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":50,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-07-05T03:38:53.4614404+10:00","Weight":50},{"RepsCompleted":8,"CompletionTime":"2023-07-05T03:40:34.8486179+10:00","Weight":50},{"RepsCompleted":8,"CompletionTime":"2023-07-05T03:42:43.8948906+10:00","Weight":50},{"RepsCompleted":8,"CompletionTime":"2023-07-05T03:44:57.3535216+10:00","Weight":50}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Barbell Rows","Sets":3,"RepsPerSet":10,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":40,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-07-05T03:47:08.7971496+10:00","Weight":40},{"RepsCompleted":10,"CompletionTime":"2023-07-05T03:48:42.9855627+10:00","Weight":40},{"RepsCompleted":10,"CompletionTime":"2023-07-05T03:50:46.5511202+10:00","Weight":40}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":25.0,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-07-05T03:51:42.7287564+10:00","Weight":25.0},{"RepsCompleted":8,"CompletionTime":"2023-07-05T03:53:43.8496613+10:00","Weight":25.0},{"RepsCompleted":8,"CompletionTime":"2023-07-05T03:55:57.2145392+10:00","Weight":25.0},{"RepsCompleted":8,"CompletionTime":"2023-07-05T03:58:10.6499565+10:00","Weight":25.0}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":-35,"RecordedSets":[{"RepsCompleted":8,"CompletionTime":"2023-07-05T03:59:40.1130536+10:00","Weight":-35},{"RepsCompleted":8,"CompletionTime":"2023-07-05T04:01:21.0571119+10:00","Weight":-35},{"RepsCompleted":8,"CompletionTime":"2023-07-05T04:03:06.5592315+10:00","Weight":-35}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":-35,"RecordedSets":[{"RepsCompleted":10,"CompletionTime":"2023-07-05T04:03:52.2210699+10:00","Weight":-35},{"RepsCompleted":10,"CompletionTime":"2023-07-05T04:05:32.6905106+10:00","Weight":-35},{"RepsCompleted":10,"CompletionTime":"2023-07-05T04:07:31.7241922+10:00","Weight":-35}],"Notes":null,"PerSetWeight":false},{"Blueprint":{"Name":"Bicep Curls","Sets":3,"RepsPerSet":12,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:00:00:","FailureRest":"0.00:00:00:"},"SupersetWithNext":false},"Kilograms":10,"RecordedSets":[{"RepsCompleted":12,"CompletionTime":"2023-07-05T04:08:23.4068226+10:00","Weight":10},{"RepsCompleted":6,"CompletionTime":"2023-07-05T04:09:57.4001988+10:00","Weight":10},{"RepsCompleted":6,"CompletionTime":"2023-07-05T04:12:03.213235+10:00","Weight":10}],"Notes":null,"PerSetWeight":false}],"Date":"2023-07-05T00:00:00+00:00","Bodyweight":null}],"Program":[{"Name":"Session 1: Lower Body","Exercises":[{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":60,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:02:00:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Romanian Deadlifts","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Leg Press","Sets":4,"RepsPerSet":12,"InitialKilograms":80,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Quad Raises","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:00:30:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},{"Name":"Session 2: Upper Body","Exercises":[{"Name":"Bench Press","Sets":4,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:03:00:","SecondaryRest":"0.00:05:00:","FailureRest":"0.00:08:00:"},"SupersetWithNext":false},{"Name":"Cable Rows","Sets":3,"RepsPerSet":12,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":3.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":4,"RepsPerSet":8,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Cable Flys","Sets":3,"RepsPerSet":12,"InitialKilograms":10.0,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":12,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Preacher Curls","Sets":3,"RepsPerSet":10,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Tricep Rope Pushdowns","Sets":3,"RepsPerSet":12,"InitialKilograms":20,"KilogramsIncreaseOnSuccess":2.268,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]},{"Name":"Session 3: Full Body","Exercises":[{"Name":"Deadlifts","Sets":3,"RepsPerSet":5,"InitialKilograms":70,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Squats","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Bench Press","Sets":3,"RepsPerSet":8,"InitialKilograms":50,"KilogramsIncreaseOnSuccess":5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Pull-ups","Sets":3,"RepsPerSet":8,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Shoulder Press","Sets":3,"RepsPerSet":10,"InitialKilograms":30,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:30:","SecondaryRest":"0.00:03:00:","FailureRest":"0.00:05:00:"},"SupersetWithNext":false},{"Name":"Tricep Dips","Sets":3,"RepsPerSet":10,"InitialKilograms":0,"KilogramsIncreaseOnSuccess":0,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Bicep Curls","Sets":3,"RepsPerSet":10,"InitialKilograms":10,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:01:00:","SecondaryRest":"0.00:01:30:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false},{"Name":"Calf Raises","Sets":3,"RepsPerSet":15,"InitialKilograms":40,"KilogramsIncreaseOnSuccess":2.5,"RestBetweenSets":{"MinRest":"0.00:00:30:","SecondaryRest":"0.00:01:00:","FailureRest":"0.00:03:00:"},"SupersetWithNext":false}]}]} \ No newline at end of file diff --git a/LiftLog.Web/wwwroot/liftlog-export.json.gz b/LiftLog.Web/wwwroot/liftlog-export.json.gz deleted file mode 100644 index bbf647e28335f45a959d663a3ed004b56d100ebc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22433 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 Date: Fri, 29 Dec 2023 21:45:27 +1000 Subject: [PATCH 3/4] Test --- .../Serialization/SerializationTests.cs | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/LiftLog.Tests/Serialization/SerializationTests.cs b/LiftLog.Tests/Serialization/SerializationTests.cs index 253235f6..48f30c79 100644 --- a/LiftLog.Tests/Serialization/SerializationTests.cs +++ b/LiftLog.Tests/Serialization/SerializationTests.cs @@ -1,5 +1,6 @@ using System.Text.Json; using FluentAssertions; +using Google.Protobuf; using LiftLog.Lib.Models; using LiftLog.Ui.Models.SessionHistoryDao; @@ -32,4 +33,24 @@ public void SessionHistoryDaoV1_SerializeDeserialize_RoundTrip() deserialized!.Should().Be(sessionHistoryDao); deserialized!.ToModel().CompletedSessions.First().Value.Should().Be(session); } + + [Fact] + public void SessionHistoryDaoV2_SerializeDeserialize_RoundTrip() + { + var session = Sessions.CreateSession(); + var sessionHistoryDao = SessionHistoryDaoV2.FromModel( + new SessionHistoryDaoContainer( + CompletedSessions: new Dictionary + { + { session.Id, session } + }.ToImmutableDictionary() + ) + ); + + var serialized = sessionHistoryDao.ToByteArray(); + var deserialized = SessionHistoryDaoV2.Parser.ParseFrom(serialized); + + deserialized!.Should().Be(sessionHistoryDao); + deserialized!.ToModel().CompletedSessions.First().Value.Should().Be(session); + } } From 45e7d940173eeff324260d813f0418b95290f96c Mon Sep 17 00:00:00 2001 From: Li Date: Fri, 29 Dec 2023 21:54:01 +1000 Subject: [PATCH 4/4] Simplify casts --- LiftLog.Ui/Models/Utils.cs | 52 ++++++++++---------------------------- 1 file changed, 14 insertions(+), 38 deletions(-) diff --git a/LiftLog.Ui/Models/Utils.cs b/LiftLog.Ui/Models/Utils.cs index bf2ff3b8..8951f2c8 100644 --- a/LiftLog.Ui/Models/Utils.cs +++ b/LiftLog.Ui/Models/Utils.cs @@ -25,25 +25,11 @@ public static implicit operator DecimalValue(decimal value) return new DecimalValue(units, nanos); } - public static implicit operator decimal?(DecimalValue? grpcDecimal) - { - if (grpcDecimal is null) - { - return null; - } - return grpcDecimal.Units + grpcDecimal.Nanos / NanoFactor; - } + public static implicit operator decimal?(DecimalValue? grpcDecimal) => + grpcDecimal is null ? null : (decimal)grpcDecimal; - public static implicit operator DecimalValue?(decimal? value) - { - if (value is null) - { - return null; - } - var units = decimal.ToInt64(value.Value); - var nanos = decimal.ToInt32((value.Value - units) * NanoFactor); - return new DecimalValue(units, nanos); - } + public static implicit operator DecimalValue?(decimal? value) => + value is null ? null : (DecimalValue)value.Value; } internal partial class DateOnlyDao @@ -60,13 +46,11 @@ public DateOnlyDao(int year, int month, int day) public static implicit operator DateOnlyDao(DateOnly model) => new(model.Year, model.Month, model.Day); - public static implicit operator DateOnlyDao?(DateOnly? model) => - model is null - ? null - : new DateOnlyDao(model.Value.Year, model.Value.Month, model.Value.Day); - public static implicit operator DateOnly?(DateOnlyDao? dao) => - dao is null ? null : new DateOnly(dao.Year, dao.Month, dao.Day); + dao is null ? null : (DateOnly)dao; + + public static implicit operator DateOnlyDao?(DateOnly? value) => + value is null ? null : (DateOnlyDao)value.Value; } internal partial class TimeOnlyDao @@ -85,18 +69,11 @@ public static implicit operator TimeOnly(TimeOnlyDao dao) => public static implicit operator TimeOnlyDao(TimeOnly model) => new(model.Hour, model.Minute, model.Second, model.Millisecond); - public static implicit operator TimeOnlyDao?(TimeOnly? model) => - model is null - ? null - : new TimeOnlyDao( - model.Value.Hour, - model.Value.Minute, - model.Value.Second, - model.Value.Millisecond - ); - public static implicit operator TimeOnly?(TimeOnlyDao? dao) => - dao is null ? null : new TimeOnly(dao.Hour, dao.Minute, dao.Second, dao.Millisecond); + dao is null ? null : (TimeOnly)dao; + + public static implicit operator TimeOnlyDao?(TimeOnly? value) => + value is null ? null : (TimeOnlyDao)value.Value; } internal partial class UUIDDao @@ -111,8 +88,7 @@ public UUIDDao(Guid value) public static implicit operator Guid(UUIDDao dao) => new(dao.Value.ToByteArray()); public static implicit operator UUIDDao?(Guid? value) => - value is null ? null : new UUIDDao(value.Value); + value is null ? null : (UUIDDao)value.Value; - public static implicit operator Guid?(UUIDDao? dao) => - dao is null ? null : new Guid(dao.Value.ToByteArray()); + public static implicit operator Guid?(UUIDDao? dao) => dao is null ? null : (Guid)dao; }