diff --git a/backend/FwLite/FwDataMiniLcmBridge.Tests/MiniLcmTests/VariantTests.cs b/backend/FwLite/FwDataMiniLcmBridge.Tests/MiniLcmTests/VariantTests.cs new file mode 100644 index 0000000000..3800852488 --- /dev/null +++ b/backend/FwLite/FwDataMiniLcmBridge.Tests/MiniLcmTests/VariantTests.cs @@ -0,0 +1,132 @@ +using FwDataMiniLcmBridge.Api; +using FwDataMiniLcmBridge.LcmUtils; +using FwDataMiniLcmBridge.Tests.Fixtures; +using MiniLcm.Models; +using SIL.LCModel; + +namespace FwDataMiniLcmBridge.Tests.MiniLcmTests; + +[Collection(ProjectLoaderFixture.Name)] +public class VariantTests(ProjectLoaderFixture fixture) : VariantTestsBase +{ + protected override Task NewApi() + { + return Task.FromResult(fixture.NewProjectApi("variant-test", "en", "en")); + } + + [Fact] + public async Task GetVariantTypes_IncludesIrregularlyInflectedFormSubtypes() + { + // Plural and Past are children of Irregularly Inflected Form in the possibility + // list; the flattened read must surface them (they're the headline use case) + var types = await Api.GetVariantTypes().ToArrayAsync(); + types.Should().Contain(t => t.Id == LexEntryTypeTags.kguidLexTypPluralVar); + types.Should().Contain(t => t.Id == LexEntryTypeTags.kguidLexTypPastVar); + types.Should().Contain(t => t.Id == LexEntryTypeTags.kguidLexTypSpellingVar); + } + + [Fact] + public async Task CreateVariantType_LandsAsATopLevelPossibility() + { + // the flattened read can surface children, but created types must be top-level + var created = await Api.CreateVariantType(new VariantType { Id = Guid.NewGuid(), Name = new() { { "en", "custom type" } } }); + var fwDataApi = (FwDataMiniLcmApi)BaseApi; + fwDataApi.Cache.LangProject.LexDbOA.VariantEntryTypesOA.PossibilitiesOS + .Should().Contain(p => p.Guid == created.Id); + } +} + +/// +/// tests the per-link fidelity when FwData has multiple variant LexEntryRefs on one entry +/// +[Collection(ProjectLoaderFixture.Name)] +public class VariantTestsMultipleRefs(ProjectLoaderFixture fixture) : VariantTestsBase +{ + protected override Task NewApi() + { + return Task.FromResult(fixture.NewProjectApi("variant-test-multipleRefs", "en", "en")); + } + + public override async Task InitializeAsync() + { + await base.InitializeAsync(); + var fwDataApi = (FwDataMiniLcmApi)BaseApi; + var variantEntry = fwDataApi.EntriesRepository.GetObject(_variantEntryId); + await fwDataApi.Cache.DoUsingNewOrCurrentUOW("Add dangling variant LexEntryRefs", + "Remove dangling variant LexEntryRefs", + () => + { + //FLEx data can contain variant refs with no components; they must not confuse reads or writes + foreach (var _ in Enumerable.Range(0, 2)) + { + var entryRef = fwDataApi.Cache.ServiceLocator.GetInstance().Create(); + variantEntry.EntryRefsOS.Add(entryRef); + entryRef.RefType = LexEntryRefTags.krtVariant; + } + return ValueTask.CompletedTask; + }); + } + + [Fact] + public async Task VariantRefsWithDifferentTypes_ReadAsSeparateLinksWithOwnTypes() + { + var otherMainEntry = await Api.CreateEntry(new() + { + Id = Guid.NewGuid(), + LexemeForm = { { "en", "other main" } } + }); + var typeA = await Api.CreateVariantType(new VariantType { Id = Guid.NewGuid(), Name = new() { { "en", "type a" } } }); + var typeB = await Api.CreateVariantType(new VariantType { Id = Guid.NewGuid(), Name = new() { { "en", "type b" } } }); + + await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry) with { Types = [typeA] }); + await Api.CreateVariant(Variant.FromEntries(_variantEntry, otherMainEntry) with { Types = [typeB] }); + + var entry = await Api.GetEntry(_variantEntryId); + entry!.VariantOf.Should().HaveCount(2); + entry.VariantOf.Should().ContainSingle(v => v.MainEntryId == _mainEntryId) + .Which.Types.Should().ContainSingle(t => t.Id == typeA.Id); + entry.VariantOf.Should().ContainSingle(v => v.MainEntryId == otherMainEntry.Id) + .Which.Types.Should().ContainSingle(t => t.Id == typeB.Id); + } + + [Fact] + public async Task DuplicateVariantRefs_AreNotDuplicated() + { + await AddDuplicateVariantRef(); + + var entry = await Api.GetEntry(_variantEntryId); + entry.Should().NotBeNull(); + entry!.VariantOf.Should().HaveCount(1); + var mainEntry = await Api.GetEntry(_mainEntryId); + mainEntry.Should().NotBeNull(); + mainEntry!.Variants.Should().HaveCount(1); + } + + [Fact] + public async Task DuplicateVariantRefs_BothAreRemoved() + { + await AddDuplicateVariantRef(); + + var entry = await Api.GetEntry(_variantEntryId); + await Api.DeleteVariant(entry!.VariantOf.Single()); + + entry = await Api.GetEntry(_variantEntryId); + entry.Should().NotBeNull(); + entry!.VariantOf.Should().BeEmpty(); + } + + private async Task AddDuplicateVariantRef() + { + var fwDataApi = (FwDataMiniLcmApi)BaseApi; + var variantEntry = fwDataApi.EntriesRepository.GetObject(_variantEntryId); + var mainEntry = fwDataApi.EntriesRepository.GetObject(_mainEntryId); + await fwDataApi.Cache.DoUsingNewOrCurrentUOW("Add variant LexEntryRefs", + "Remove variant LexEntryRefs", + () => + { + variantEntry.MakeVariantOf(mainEntry, fwDataApi.VariantTypesFlattened.First()); + variantEntry.MakeVariantOf(mainEntry, fwDataApi.VariantTypesFlattened.Last()); + return ValueTask.CompletedTask; + }); + } +} diff --git a/backend/FwLite/FwDataMiniLcmBridge/Api/FwDataMiniLcmApi.cs b/backend/FwLite/FwDataMiniLcmBridge/Api/FwDataMiniLcmApi.cs index 4d390f93f5..d808dc4d57 100644 --- a/backend/FwLite/FwDataMiniLcmBridge/Api/FwDataMiniLcmApi.cs +++ b/backend/FwLite/FwDataMiniLcmBridge/Api/FwDataMiniLcmApi.cs @@ -68,6 +68,7 @@ public LcmCache Cache internal IEnumerable ComplexFormTypesFlattened => ComplexFormTypes.PossibilitiesOS.Cast().Flatten(); private ICmPossibilityList VariantTypes => Cache.LangProject.LexDbOA.VariantEntryTypesOA; + internal IEnumerable VariantTypesFlattened => VariantTypes.PossibilitiesOS.Cast().Flatten(); private ICmPossibilityList Publications => Cache.LangProject.LexDbOA.PublicationTypesOA; public void Dispose() @@ -568,6 +569,76 @@ await Cache.DoUsingNewOrCurrentUOW("Delete Complex Form Type", }); } + // flattened (unlike complex-form types' public read) because the Irregularly Inflected Form + // subtypes (Plural, Past) are children in the possibility list and must be assignable + public IAsyncEnumerable GetVariantTypes() + { + return VariantTypesFlattened.Select(ToVariantType).ToAsyncEnumerable(); + } + + public Task GetVariantType(Guid id) + { + var lexEntryType = VariantTypesFlattened.SingleOrDefault(t => t.Guid == id); + if (lexEntryType is null) return Task.FromResult(null); + return Task.FromResult(ToVariantType(lexEntryType)); + } + + private VariantType ToVariantType(ILexEntryType t) + { + return new VariantType() { Id = t.Guid, Name = FromLcmMultiString(t.Name) }; + } + + public Task CreateVariantType(VariantType variantType) + { + if (variantType.Id == default) variantType.Id = Guid.NewGuid(); + UndoableUnitOfWorkHelper.DoUsingNewOrCurrentUOW("Create variant type", + "Remove variant type", + Cache.ActionHandlerAccessor, + () => + { + var lexVariantType = Cache.ServiceLocator + .GetInstance() + .Create(variantType.Id); + VariantTypes.PossibilitiesOS.Add(lexVariantType); + UpdateLcmMultiString(lexVariantType.Name, variantType.Name); + }); + return Task.FromResult(ToVariantType(VariantTypesFlattened.Single(t => t.Guid == variantType.Id))); + } + + public Task UpdateVariantType(Guid id, UpdateObjectInput update) + { + var type = VariantTypesFlattened.SingleOrDefault(t => t.Guid == id); + if (type is null) throw new NullReferenceException($"unable to find variant type with id {id}"); + UndoableUnitOfWorkHelper.DoUsingNewOrCurrentUOW("Update Variant Type", + "Revert Variant Type", + Cache.ServiceLocator.ActionHandler, + () => + { + var updateProxy = new UpdateVariantTypeProxy(type, this); + update.Apply(updateProxy); + }); + return Task.FromResult(ToVariantType(type)); + } + + public async Task UpdateVariantType(VariantType before, VariantType after, IMiniLcmApi? api = null) + { + await VariantTypeSync.Sync(before, after, api ?? this); + return ToVariantType(VariantTypesFlattened.Single(t => t.Guid == after.Id)); + } + + public async Task DeleteVariantType(Guid id) + { + var type = VariantTypesFlattened.SingleOrDefault(t => t.Guid == id); + if (type is null) return; + await Cache.DoUsingNewOrCurrentUOW("Delete Variant Type", + "Revert delete", + () => + { + type.Delete(); + return ValueTask.CompletedTask; + }); + } + public IAsyncEnumerable GetMorphTypes() { return @@ -634,12 +705,6 @@ public async Task UpdateMorphType(MorphType before, MorphType after, return await GetMorphType(after.Id) ?? throw new NullReferenceException("unable to find morph type with id " + after.Id); } - public IAsyncEnumerable GetVariantTypes() - { - return VariantTypes.PossibilitiesOS - .Select(t => new VariantType() { Id = t.Guid, Name = FromLcmMultiString(t.Name) }) - .ToAsyncEnumerable(); - } public IAsyncEnumerable GetPublications() { return Publications.PossibilitiesOS @@ -688,6 +753,8 @@ private Entry FromLexEntry(ILexEntry entry) ..entry.ComplexFormEntries.Select(complexEntry => ToEntryReference(entry, complexEntry)), ..entry.AllSenses.SelectMany(sense => sense.ComplexFormEntries.Select(complexEntry => ToSenseReference(sense, complexEntry))) ], + VariantOf = [.. ToVariantOf(entry)], + Variants = [.. ToVariants(entry)], // ILexEntry.PublishIn is a virtual property that inverts DoNotPublishInRC against all publications PublishIn = entry.PublishIn.Select(FromLcmPossibility).ToList(), }; @@ -718,27 +785,44 @@ private IEnumerable ToComplexFormComponents(ILexEntry entr }).DistinctBy(c => (c.ComponentEntryId, c.ComplexFormEntryId, c.ComponentSenseId)); } - private Variants? ToVariants(ILexEntry entry) + private IEnumerable ToVariantOf(ILexEntry entry) { - var variantEntryRef = entry.VariantEntryRefs.SingleOrDefault(); - if (variantEntryRef is null) return null; - return new Variants - { - Id = variantEntryRef.Guid, - VariantsOf = - [ - ..variantEntryRef.ComponentLexemesRS.Select(o => o switch + return entry.VariantEntryRefs.SelectMany(r => r.ComponentLexemesRS, + (r, o) => o switch { - ILexEntry component => ToEntryReference(component, entry), - ILexSense s => ToSenseReference(s, entry), + ILexEntry mainEntry => ToVariant(entry, r, mainEntry, null), + ILexSense mainSense => ToVariant(entry, r, mainSense.Entry, mainSense), _ => throw new NotSupportedException($"object type {o.ClassName} not supported") }) - ], - Types = - [ - ..variantEntryRef.VariantEntryTypesRS.Select(t => - new VariantType() { Id = t.Guid, Name = FromLcmMultiString(t.Name), }) - ] + .DistinctBy(v => (v.VariantEntryId, v.MainEntryId, v.MainSenseId)) + .Order(Variant.VariantOfOrder); + } + + private IEnumerable ToVariants(ILexEntry entry) + { + return new[] + { + entry.VariantFormEntryBackRefs.Select(r => ToVariant(r.OwningEntry, r, entry, null)), + entry.AllSenses.SelectMany(sense => + sense.VariantFormEntryBackRefs.Select(r => ToVariant(r.OwningEntry, r, entry, sense))) + } + .SelectMany(v => v) + .DistinctBy(v => (v.VariantEntryId, v.MainEntryId, v.MainSenseId)) + .Order(Variant.VariantsOrder); + } + + private Variant ToVariant(ILexEntry variantEntry, ILexEntryRef variantRef, ILexEntry mainEntry, ILexSense? mainSense) + { + return new Variant + { + VariantEntryId = variantEntry.Guid, + VariantHeadword = variantEntry.LexEntryHeadwordOrUnknown(), + MainEntryId = mainEntry.Guid, + MainSenseId = mainSense?.Guid, + MainHeadword = mainEntry.LexEntryHeadwordOrUnknown(), + Types = [..variantRef.VariantEntryTypesRS.Select(ToVariantType)], + HideMinorEntry = variantRef.HideMinorEntry != 0, + Comment = FromLcmMultiString(variantRef.Summary), }; } @@ -1078,6 +1162,19 @@ public async Task CreateEntry(Entry entry, CreateEntryOptions? options = var complexLexEntry = EntriesRepository.GetObject(complexForm.ComplexFormEntryId); AddComplexFormComponent(complexLexEntry, complexForm); } + + foreach (var variantOf in entry.VariantOf) + { + if (variantOf.VariantEntryId == default) variantOf.VariantEntryId = entry.Id; + AddVariant(lexEntry, variantOf); + } + + foreach (var variant in entry.Variants) + { + if (variant.MainEntryId == default) variant.MainEntryId = entry.Id; + var lexVariantEntry = EntriesRepository.GetObject(variant.VariantEntryId); + AddVariant(lexVariantEntry, variant); + } } // Remove publications not in entry.PublishIn from lexEntry.PublishIn foreach (var lcmPub in Publications.PossibilitiesOS.Where(p => entry.PublishIn.All(ep => ep.Id != p.Guid))) @@ -1285,6 +1382,174 @@ internal void RemoveComplexFormType(ILexEntry lexEntry, Guid complexFormTypeId) } } + public Task CreateVariant(Variant variant) + { + UndoableUnitOfWorkHelper.DoUsingNewOrCurrentUOW("Create Variant", + "Remove Variant", + Cache.ServiceLocator.ActionHandler, + () => + { + var lexVariantEntry = EntriesRepository.GetObject(variant.VariantEntryId); + AddVariant(lexVariantEntry, variant); + }); + return Task.FromResult(ToVariantOf(EntriesRepository.GetObject(variant.VariantEntryId)) + .Single(v => v.MainEntryId == variant.MainEntryId && v.MainSenseId == variant.MainSenseId)); + } + + public async Task UpdateVariant(Variant before, Variant after, IMiniLcmApi? api = null) + { + await VariantSync.Sync(before, after, api ?? this); + return ToVariantOf(EntriesRepository.GetObject(after.VariantEntryId)) + .Single(v => v.MainEntryId == after.MainEntryId && v.MainSenseId == after.MainSenseId); + } + + public Task SubmitUpdateVariant(Variant variant, UpdateObjectInput update) + { + var lexVariantEntry = EntriesRepository.GetObject(variant.VariantEntryId); + var entryRef = FindVariantRef(lexVariantEntry, variant) + ?? throw NotFoundException.ForType(variant.VariantEntryId); + UndoableUnitOfWorkHelper.DoUsingNewOrCurrentUOW("Update Variant", + "Revert Variant", + Cache.ServiceLocator.ActionHandler, + () => + { + var updateProxy = new UpdateVariantProxy(entryRef, this); + update.Apply(updateProxy); + }); + return Task.CompletedTask; + } + + public Task DeleteVariant(Variant variant) + { + //variant entry has been deleted, so this link is gone already + if (!EntriesRepository.TryGetObject(variant.VariantEntryId, out var lexVariantEntry)) + return Task.CompletedTask; + + UndoableUnitOfWorkHelper.DoUsingNewOrCurrentUOW("Delete Variant", + "Add Variant", + Cache.ServiceLocator.ActionHandler, + () => + { + RemoveVariant(lexVariantEntry, variant); + }); + return Task.CompletedTask; + } + + public Task AddVariantType(Variant variant, Guid variantTypeId) + { + UndoableUnitOfWorkHelper.DoUsingNewOrCurrentUOW("Add Variant Type", + "Remove Variant Type", + Cache.ServiceLocator.ActionHandler, + () => + { + //link (or its entry) deleted already — match CRDT tolerance + if (!EntriesRepository.TryGetObject(variant.VariantEntryId, out var lexVariantEntry)) return; + var entryRef = FindVariantRef(lexVariantEntry, variant); + if (entryRef is null) return; + var lexEntryType = VariantTypesFlattened.Single(t => t.Guid == variantTypeId); + if (entryRef.VariantEntryTypesRS.Contains(lexEntryType)) return; + entryRef.VariantEntryTypesRS.Add(lexEntryType); + }); + return Task.CompletedTask; + } + + public Task RemoveVariantType(Variant variant, Guid variantTypeId) + { + UndoableUnitOfWorkHelper.DoUsingNewOrCurrentUOW("Remove Variant Type", + "Add Variant Type", + Cache.ServiceLocator.ActionHandler, + () => + { + if (!EntriesRepository.TryGetObject(variant.VariantEntryId, out var lexVariantEntry)) return; + var entryRef = FindVariantRef(lexVariantEntry, variant); + if (entryRef is null) return; + var lexEntryType = entryRef.VariantEntryTypesRS.SingleOrDefault(t => t.Guid == variantTypeId); + if (lexEntryType is null) return; + entryRef.VariantEntryTypesRS.Remove(lexEntryType); + }); + return Task.CompletedTask; + } + + /// + /// must be called as part of an lcm action + /// + internal void AddVariant(ILexEntry lexVariantEntry, Variant variant) + { + if (FindVariantRef(lexVariantEntry, variant) is not null) return; //idempotent, like the CRDT side + ICmObject target; + if (variant.MainSenseId is not null) + { + var sense = SenseRepository.GetObject(variant.MainSenseId.Value); + //fail before mutating: a mismatched pair would create a link whose derived + //MainEntryId is the sense's actual entry, not the requested one + if (sense.Entry.Guid != variant.MainEntryId) + throw new InvalidOperationException($"Sense {variant.MainSenseId} does not belong to entry {variant.MainEntryId}, it belongs to {sense.Entry.Guid}"); + target = sense; + } + else + { + target = EntriesRepository.GetObject(variant.MainEntryId); + } + //one LexEntryRef per link — multiple variant refs on an entry are how FLEx represents + //being a variant of multiple things with different types + var entryRef = Cache.ServiceLocator.GetInstance().Create(); + lexVariantEntry.EntryRefsOS.Add(entryRef); + entryRef.RefType = LexEntryRefTags.krtVariant; + entryRef.HideMinorEntry = variant.HideMinorEntry ? 1 : 0; + UpdateLcmMultiString(entryRef.Summary, variant.Comment); + foreach (var type in variant.Types) + { + entryRef.VariantEntryTypesRS.Add(VariantTypesFlattened.Single(t => t.Guid == type.Id)); + } + entryRef.ComponentLexemesRS.Add(target); + } + + internal void RemoveVariant(ILexEntry lexVariantEntry, Variant variant) + { + ICmObject target; + if (variant.MainSenseId is not null) + { + //sense has been deleted, so this link is gone already + if (!SenseRepository.TryGetObject(variant.MainSenseId.Value, out var sense)) return; + //links are identified by their full composite key; when the sense has moved to a + //different entry this link no longer exists (it became a link to the new entry) + if (sense.Entry.Guid != variant.MainEntryId) return; + target = sense; + } + else + { + //entry has been deleted, so this link is gone already + if (!EntriesRepository.TryGetObject(variant.MainEntryId, out var mainEntry)) return; + target = mainEntry; + } + + foreach (var entryRef in lexVariantEntry.VariantEntryRefs.ToArray()) + { + entryRef.ComponentLexemesRS.Remove(target); + if (entryRef.ComponentLexemesRS.Count == 0) + { + //an empty variant ref is meaningless; liblcm deletes them in its own cleanup paths too + lexVariantEntry.EntryRefsOS.Remove(entryRef); + } + } + //not throwing to match CRDT behavior + } + + internal ILexEntryRef? FindVariantRef(ILexEntry lexVariantEntry, Variant variant) + { + return lexVariantEntry.VariantEntryRefs + .FirstOrDefault(r => r.ComponentLexemesRS.Any(o => MatchesVariantTarget(o, variant))); + } + + //match the full composite key: a sense target only counts while the sense still belongs + //to the link's main entry (a moved sense means this is a different link) + private static bool MatchesVariantTarget(ICmObject o, Variant variant) + { + return variant.MainSenseId is not null + ? o is ILexSense sense && sense.Guid == variant.MainSenseId && sense.Entry.Guid == variant.MainEntryId + : o is ILexEntry entry && entry.Guid == variant.MainEntryId; + } + private IList MultiStringToTsStrings(MultiString? multiString) { if (multiString is null) return []; diff --git a/backend/FwLite/FwDataMiniLcmBridge/Api/UpdateProxy/UpdateVariantProxy.cs b/backend/FwLite/FwDataMiniLcmBridge/Api/UpdateProxy/UpdateVariantProxy.cs new file mode 100644 index 0000000000..e19e327cdd --- /dev/null +++ b/backend/FwLite/FwDataMiniLcmBridge/Api/UpdateProxy/UpdateVariantProxy.cs @@ -0,0 +1,61 @@ +using System.Diagnostics.CodeAnalysis; +using MiniLcm.Models; +using SIL.LCModel; + +namespace FwDataMiniLcmBridge.Api.UpdateProxy; + +/// +/// Applies patches of a variant link's own fields (HideMinorEntry, Comment) to the +/// LexEntryRef. Endpoints and Types are not patchable — links are recreated for endpoint +/// changes and types go through Add/RemoveVariantType. +/// +public record UpdateVariantProxy : Variant +{ + private readonly ILexEntryRef _lexEntryRef; + private readonly FwDataMiniLcmApi _lexboxLcmApi; + + [SetsRequiredMembers] + public UpdateVariantProxy(ILexEntryRef lexEntryRef, FwDataMiniLcmApi lexboxLcmApi) + { + _lexEntryRef = lexEntryRef; + _lexboxLcmApi = lexboxLcmApi; + } + + public override required Guid VariantEntryId + { + get => _lexEntryRef.Owner.Guid; + set => throw new NotImplementedException(); + } + + public override required Guid MainEntryId + { + get => throw new NotImplementedException(); + set => throw new NotImplementedException(); + } + + public override Guid? MainSenseId + { + get => throw new NotImplementedException(); + set => throw new NotImplementedException(); + } + + public override List Types + { + get => throw new NotImplementedException(); + set => throw new NotImplementedException(); + } + + public override bool HideMinorEntry + { + get => _lexEntryRef.HideMinorEntry != 0; + set => _lexEntryRef.HideMinorEntry = value ? 1 : 0; + } + + public override RichMultiString Comment + { + get => new UpdateRichMultiStringProxy(_lexEntryRef.Summary, _lexboxLcmApi); + set + { + } + } +} diff --git a/backend/FwLite/FwDataMiniLcmBridge/Api/UpdateProxy/UpdateVariantTypeProxy.cs b/backend/FwLite/FwDataMiniLcmBridge/Api/UpdateProxy/UpdateVariantTypeProxy.cs new file mode 100644 index 0000000000..3c2a8b15ca --- /dev/null +++ b/backend/FwLite/FwDataMiniLcmBridge/Api/UpdateProxy/UpdateVariantTypeProxy.cs @@ -0,0 +1,33 @@ +using System.Diagnostics.CodeAnalysis; +using MiniLcm.Models; +using SIL.LCModel; + +namespace FwDataMiniLcmBridge.Api.UpdateProxy; + +public record UpdateVariantTypeProxy : VariantType +{ + private readonly ILexEntryType _lexEntryType; + private readonly FwDataMiniLcmApi _lexboxLcmApi; + + [SetsRequiredMembers] + public UpdateVariantTypeProxy(ILexEntryType lexEntryType, FwDataMiniLcmApi lexboxLcmApi) + { + _lexEntryType = lexEntryType; + _lexboxLcmApi = lexboxLcmApi; + Name = base.Name = new(); + } + + public override Guid Id + { + get => _lexEntryType.Guid; + set => throw new NotImplementedException(); + } + + public override required MultiString Name + { + get => new UpdateMultiStringProxy(_lexEntryType.Name, _lexboxLcmApi); + set + { + } + } +} diff --git a/backend/FwLite/FwLiteProjectSync.Tests/EntrySyncTests.cs b/backend/FwLite/FwLiteProjectSync.Tests/EntrySyncTests.cs index e204582aeb..64a6b1abaf 100644 --- a/backend/FwLite/FwLiteProjectSync.Tests/EntrySyncTests.cs +++ b/backend/FwLite/FwLiteProjectSync.Tests/EntrySyncTests.cs @@ -370,6 +370,15 @@ public async Task CanSyncRandomEntries(ApiType? roundTripApiType) options = options .For(e => e.Components).Exclude(c => c.ComplexFormHeadword) .For(e => e.ComplexForms).Exclude(c => c.ComponentHeadword); + // both apis sort variant links by composite key, not the order the expected object was built in; + // headwords are derived on read like the complex-form ones above (see VariantTestsBase) + options = options + .WithoutStrictOrderingFor(e => e.VariantOf) + .WithoutStrictOrderingFor(e => e.Variants) + .For(e => e.VariantOf).Exclude(v => v.VariantHeadword) + .For(e => e.VariantOf).Exclude(v => v.MainHeadword) + .For(e => e.Variants).Exclude(v => v.VariantHeadword) + .For(e => e.Variants).Exclude(v => v.MainHeadword); if (currentApiType == ApiType.FwData) { // does not support changing MorphType yet (see UpdateEntryProxy.MorphType) @@ -952,6 +961,43 @@ public async Task CanSyncComponentWhenSenseMovesToDifferentEntry(string entryOrd actualNewComponentEntry.ComplexForms[0].ComplexFormEntryId.Should().Be(complexForm.Id); } + [Fact] + public async Task CanSyncVariantWhenTargetSenseMovesToDifferentEntry() + { + var senseId = Guid.NewGuid(); + var oldMainEntry = await Api.CreateEntry(new() { LexemeForm = { { "en", "old-main" } }, Senses = [new() { Id = senseId }] }); + var oldMainEntryAfter = oldMainEntry.Copy(); + oldMainEntryAfter.Senses.Clear(); // sense is moved from here + + var newMainEntry = await Api.CreateEntry(new() { Id = Guid.NewGuid(), LexemeForm = { { "en", "new-main" } } }); + var newMainEntryAfter = newMainEntry.Copy(); + newMainEntryAfter.Senses.Add(new Sense() { Id = senseId }); // sense is moved to here + + var variantEntry = new Entry + { + Id = Guid.NewGuid(), + LexemeForm = { { "en", "variant" } }, + }; + variantEntry.VariantOf.Add(Variant.FromEntries(variantEntry, oldMainEntry, senseId)); + variantEntry = await Api.CreateEntry(variantEntry); + + var variantEntryAfter = variantEntry.Copy(); + variantEntryAfter.VariantOf = [Variant.FromEntries(variantEntry, newMainEntry, senseId)]; + + await EntrySync.SyncFull( + [variantEntry, oldMainEntry, newMainEntry], + [variantEntryAfter, oldMainEntryAfter, newMainEntryAfter], + Api); + + var actualVariantEntry = await Api.GetEntry(variantEntry.Id); + actualVariantEntry.Should().NotBeNull(); + var link = actualVariantEntry!.VariantOf.Should().ContainSingle().Subject; + link.MainEntryId.Should().Be(newMainEntry.Id); + link.MainSenseId.Should().Be(senseId); + (await Api.GetEntry(oldMainEntry.Id))!.Variants.Should().BeEmpty(); + (await Api.GetEntry(newMainEntry.Id))!.Variants.Should().ContainSingle(); + } + [Fact] public async Task SyncComplexFormsAndComponents_MovesComponentsToCorrectPosition() { diff --git a/backend/FwLite/FwLiteProjectSync.Tests/Import/ResumableTests.cs b/backend/FwLite/FwLiteProjectSync.Tests/Import/ResumableTests.cs index 7bb31a7e67..127a4d9cd2 100644 --- a/backend/FwLite/FwLiteProjectSync.Tests/Import/ResumableTests.cs +++ b/backend/FwLite/FwLiteProjectSync.Tests/Import/ResumableTests.cs @@ -82,6 +82,12 @@ public async Task ImportProject_IsResumable_AcrossRandomFailures() Id = Guid.NewGuid(), Name = new(){ ["en"] = "Test Complex Form Type" } }])); + mockFrom.Setup(f => f.GetVariantTypes()) + .Returns(MockAsyncEnumerable([new VariantType() + { + Id = Guid.NewGuid(), + Name = new(){ ["en"] = "Test Variant Type" } + }])); mockFrom.Setup(f => f.GetMorphTypes()) .Returns(MockAsyncEnumerable(expectedMorphTypes)); mockFrom.Setup(f => f.GetSemanticDomains()) diff --git a/backend/FwLite/FwLiteProjectSync.Tests/Snapshots/sena-3_snapshot.2026-06-18.verified.txt b/backend/FwLite/FwLiteProjectSync.Tests/Snapshots/sena-3_snapshot.2026-06-18.verified.txt index 37f9fde0ec..a2568e6031 100644 --- a/backend/FwLite/FwLiteProjectSync.Tests/Snapshots/sena-3_snapshot.2026-06-18.verified.txt +++ b/backend/FwLite/FwLiteProjectSync.Tests/Snapshots/sena-3_snapshot.2026-06-18.verified.txt @@ -98,6 +98,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -238,6 +240,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -313,6 +317,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -477,6 +483,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -528,6 +536,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -579,6 +589,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -662,6 +674,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -713,6 +727,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -764,6 +780,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -872,6 +890,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -915,6 +935,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -966,6 +988,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1076,6 +1100,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1163,6 +1189,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1214,6 +1242,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1265,6 +1295,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1332,6 +1364,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1383,6 +1417,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1434,6 +1470,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1485,6 +1523,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1578,6 +1618,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1658,6 +1700,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1728,6 +1772,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1815,6 +1861,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1878,6 +1926,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1964,6 +2014,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2051,6 +2103,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2171,6 +2225,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2262,6 +2318,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2347,6 +2405,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2425,6 +2485,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2476,6 +2538,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2571,6 +2635,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2651,6 +2717,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2719,6 +2787,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2780,6 +2850,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2943,6 +3015,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3021,6 +3095,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3089,6 +3165,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3157,6 +3235,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3218,6 +3298,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3281,6 +3363,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3358,6 +3442,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3476,6 +3562,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3547,6 +3635,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3632,6 +3722,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3700,6 +3792,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3785,6 +3879,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3848,6 +3944,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3928,6 +4026,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4023,6 +4123,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4084,6 +4186,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4216,6 +4320,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4320,6 +4426,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4466,6 +4574,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4551,6 +4661,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4612,6 +4724,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4673,6 +4787,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4733,6 +4849,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4810,6 +4928,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4895,6 +5015,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4975,6 +5097,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5035,6 +5159,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5096,6 +5222,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5147,6 +5275,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5217,6 +5347,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5352,6 +5484,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5505,6 +5639,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5568,6 +5704,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5631,6 +5769,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5703,6 +5843,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5771,6 +5913,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5832,6 +5976,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6001,6 +6147,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6094,6 +6242,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6166,6 +6316,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6267,6 +6419,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6370,6 +6524,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6438,6 +6594,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6501,6 +6659,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6613,6 +6773,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6730,6 +6892,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6809,6 +6973,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6902,6 +7068,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6979,6 +7147,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7073,6 +7243,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7136,6 +7308,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7222,6 +7396,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7275,6 +7451,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7360,6 +7538,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7430,6 +7610,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7523,6 +7705,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7632,6 +7816,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7711,6 +7897,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7774,6 +7962,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7851,6 +8041,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7914,6 +8106,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7984,6 +8178,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8035,6 +8231,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8105,6 +8303,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8158,6 +8358,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8201,6 +8403,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8302,6 +8506,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8382,6 +8588,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8452,6 +8660,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8532,6 +8742,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8602,6 +8814,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8672,6 +8886,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8742,6 +8958,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8812,6 +9030,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8899,6 +9119,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8950,6 +9172,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9051,6 +9275,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9114,6 +9340,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9184,6 +9412,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9325,6 +9555,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9429,6 +9661,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9492,6 +9726,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9562,6 +9798,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9625,6 +9863,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9688,6 +9928,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9751,6 +9993,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9804,6 +10048,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9872,6 +10118,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9935,6 +10183,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9998,6 +10248,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10060,6 +10312,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10152,6 +10406,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10222,6 +10478,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10292,6 +10550,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10377,6 +10637,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10440,6 +10702,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10510,6 +10774,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10587,6 +10853,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10674,6 +10942,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10737,6 +11007,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10800,6 +11072,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10938,6 +11212,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11047,6 +11323,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11098,6 +11376,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11209,6 +11489,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11289,6 +11571,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11369,6 +11653,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11441,6 +11727,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11504,6 +11792,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11567,6 +11857,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11630,6 +11922,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11693,6 +11987,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11765,6 +12061,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11835,6 +12133,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11886,6 +12186,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11966,6 +12268,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12029,6 +12333,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12128,6 +12434,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12179,6 +12487,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12266,6 +12576,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12353,6 +12665,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12416,6 +12730,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12488,6 +12804,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12577,6 +12895,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12640,6 +12960,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12724,6 +13046,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12802,6 +13126,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12865,6 +13191,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12960,6 +13288,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13037,6 +13367,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13088,6 +13420,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13158,6 +13492,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13261,6 +13597,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13324,6 +13662,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13411,6 +13751,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13505,6 +13847,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13558,6 +13902,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13628,6 +13974,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13698,6 +14046,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13759,6 +14109,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13899,6 +14251,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13962,6 +14316,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14041,6 +14397,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14104,6 +14462,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14183,6 +14543,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14265,6 +14627,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14359,6 +14723,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14446,6 +14812,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14516,6 +14884,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14589,6 +14959,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14662,6 +15034,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14732,6 +15106,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14800,6 +15176,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14895,6 +15273,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14989,6 +15369,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15059,6 +15441,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15120,6 +15504,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15190,6 +15576,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15260,6 +15648,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15313,6 +15703,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15376,6 +15768,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15470,6 +15864,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15540,6 +15936,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15610,6 +16008,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15680,6 +16080,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15760,6 +16162,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15839,6 +16243,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15909,6 +16315,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15991,6 +16399,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16067,6 +16477,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16161,6 +16573,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16231,6 +16645,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16282,6 +16698,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16345,6 +16763,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16436,6 +16856,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16530,6 +16952,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16612,6 +17036,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16740,6 +17166,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16819,6 +17247,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16891,6 +17321,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16951,6 +17383,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17021,6 +17455,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17091,6 +17527,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17159,6 +17597,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17219,6 +17659,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17304,6 +17746,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17367,6 +17811,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17454,6 +17900,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17522,6 +17970,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17585,6 +18035,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17653,6 +18105,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17714,6 +18168,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17793,6 +18249,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17856,6 +18314,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17941,6 +18401,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18009,6 +18471,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18070,6 +18534,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18123,6 +18589,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18193,6 +18661,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18280,6 +18750,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18371,6 +18843,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18434,6 +18908,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18485,6 +18961,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18576,6 +19054,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18654,6 +19134,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18722,6 +19204,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18833,6 +19317,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18918,6 +19404,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19011,6 +19499,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19128,6 +19618,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19233,6 +19725,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19301,6 +19795,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19371,6 +19867,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19439,6 +19937,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19507,6 +20007,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19594,6 +20096,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19664,6 +20168,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19727,6 +20233,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19790,6 +20298,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19860,6 +20370,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19963,6 +20475,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20033,6 +20547,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20096,6 +20612,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20199,6 +20717,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20328,6 +20848,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20420,6 +20942,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20480,6 +21004,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20566,6 +21092,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20634,6 +21162,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20713,6 +21243,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20764,6 +21296,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20834,6 +21368,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20945,6 +21481,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21008,6 +21546,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21069,6 +21609,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21130,6 +21672,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21193,6 +21737,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21244,6 +21790,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21353,6 +21901,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21421,6 +21971,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21541,6 +22093,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21609,6 +22163,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21670,6 +22226,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21738,6 +22296,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21801,6 +22361,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21880,6 +22442,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21950,6 +22514,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22120,6 +22686,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22206,6 +22774,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22259,6 +22829,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22322,6 +22894,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22402,6 +22976,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22463,6 +23039,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22531,6 +23109,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22609,6 +23189,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22689,6 +23271,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22774,6 +23358,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22827,6 +23413,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22895,6 +23483,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22958,6 +23548,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23036,6 +23628,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23127,6 +23721,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23214,6 +23810,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23282,6 +23880,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23369,6 +23969,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23463,6 +24065,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23528,6 +24132,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23651,6 +24257,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23702,6 +24310,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23762,6 +24372,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23832,6 +24444,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23900,6 +24514,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24042,6 +24658,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24112,6 +24730,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24204,6 +24824,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24272,6 +24894,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24352,6 +24976,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24424,6 +25050,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24511,6 +25139,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24572,6 +25202,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24625,6 +25257,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24678,6 +25312,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24748,6 +25384,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24801,6 +25439,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24864,6 +25504,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24969,6 +25611,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25051,6 +25695,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25104,6 +25750,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25165,6 +25813,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25233,6 +25883,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25319,6 +25971,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25389,6 +26043,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25476,6 +26132,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25563,6 +26221,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25702,6 +26362,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25793,6 +26455,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25856,6 +26520,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25919,6 +26585,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25972,6 +26640,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26072,6 +26742,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26135,6 +26807,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26222,6 +26896,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26285,6 +26961,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26348,6 +27026,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26410,6 +27090,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26496,6 +27178,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26566,6 +27250,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26636,6 +27322,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26713,6 +27401,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26847,6 +27537,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26898,6 +27590,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26966,6 +27660,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27027,6 +27723,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27114,6 +27812,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27194,6 +27894,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27262,6 +27964,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27315,6 +28019,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27395,6 +28101,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27488,6 +28196,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27558,6 +28268,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27621,6 +28333,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27691,6 +28405,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27771,6 +28487,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27859,6 +28577,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27946,6 +28666,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28009,6 +28731,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28094,6 +28818,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28165,6 +28891,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28228,6 +28956,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28314,6 +29044,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28367,6 +29099,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28430,6 +29164,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28525,6 +29261,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28612,6 +29350,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28696,6 +29436,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28764,6 +29506,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28887,6 +29631,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28988,6 +29734,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29039,6 +29787,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29099,6 +29849,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29169,6 +29921,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29220,6 +29974,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29273,6 +30029,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29333,6 +30091,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29403,6 +30163,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29456,6 +30218,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29526,6 +30290,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29594,6 +30360,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29687,6 +30455,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29757,6 +30527,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29809,6 +30581,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29888,6 +30662,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29939,6 +30715,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29990,6 +30768,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30041,6 +30821,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30109,6 +30891,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30261,6 +31045,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30312,6 +31098,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30363,6 +31151,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30433,6 +31223,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30486,6 +31278,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30546,6 +31340,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30621,6 +31417,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30672,6 +31470,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30740,6 +31540,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30791,6 +31593,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30859,6 +31663,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30927,6 +31733,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30978,6 +31786,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31038,6 +31848,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31089,6 +31901,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31149,6 +31963,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31209,6 +32025,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31356,6 +32174,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31448,6 +32268,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31499,6 +32321,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31567,6 +32391,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31654,6 +32480,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31722,6 +32550,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31783,6 +32613,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31844,6 +32676,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31931,6 +32765,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31994,6 +32830,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32079,6 +32917,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32199,6 +33039,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32260,6 +33102,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32401,6 +33245,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32462,6 +33308,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32554,6 +33402,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32622,6 +33472,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32700,6 +33552,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32780,6 +33634,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32848,6 +33704,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32926,6 +33784,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32987,6 +33847,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33057,6 +33919,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33125,6 +33989,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33193,6 +34059,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33261,6 +34129,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33329,6 +34199,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33406,6 +34278,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33545,6 +34419,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33630,6 +34506,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33698,6 +34576,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33771,6 +34651,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33854,6 +34736,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33922,6 +34806,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33973,6 +34859,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34041,6 +34929,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34173,6 +35063,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34264,6 +35156,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34325,6 +35219,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34393,6 +35289,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34517,6 +35415,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34611,6 +35511,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34698,6 +35600,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34759,6 +35663,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34894,6 +35800,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34957,6 +35865,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35098,6 +36008,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35195,6 +36107,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35280,6 +36194,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35350,6 +36266,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35445,6 +36363,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35496,6 +36416,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35581,6 +36503,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35649,6 +36573,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35712,6 +36638,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35773,6 +36701,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35859,6 +36789,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35936,6 +36868,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36021,6 +36955,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36089,6 +37025,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36159,6 +37097,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36231,6 +37171,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36318,6 +37260,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36411,6 +37355,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36498,6 +37444,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36566,6 +37514,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36650,6 +37600,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36730,6 +37682,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36793,6 +37747,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36856,6 +37812,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36975,6 +37933,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37054,6 +38014,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37117,6 +38079,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37187,6 +38151,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37255,6 +38221,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37319,6 +38287,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37380,6 +38350,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37441,6 +38413,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37502,6 +38476,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37582,6 +38558,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37645,6 +38623,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37722,6 +38702,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37775,6 +38757,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37878,6 +38862,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37941,6 +38927,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38031,6 +39019,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38147,6 +39137,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38219,6 +39211,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38282,6 +39276,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38352,6 +39348,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38422,6 +39420,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38483,6 +39483,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38570,6 +39572,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38717,6 +39721,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38840,6 +39846,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38908,6 +39916,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38959,6 +39969,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39010,6 +40022,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39122,6 +40136,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39317,6 +40333,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39385,6 +40403,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39472,6 +40492,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39544,6 +40566,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39631,6 +40655,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39724,6 +40750,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39786,6 +40814,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39839,6 +40869,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39947,6 +40979,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40097,6 +41131,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40167,6 +41203,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40237,6 +41275,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40300,6 +41340,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40361,6 +41403,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40424,6 +41468,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40492,6 +41538,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40585,6 +41633,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40678,6 +41728,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40746,6 +41798,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40825,6 +41879,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40911,6 +41967,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41021,6 +42079,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41081,6 +42141,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41151,6 +42213,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41276,6 +42340,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41370,6 +42436,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41443,6 +42511,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41537,6 +42607,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41621,6 +42693,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41691,6 +42765,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41785,6 +42861,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41865,6 +42943,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41928,6 +43008,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41991,6 +43073,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42051,6 +43135,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42131,6 +43217,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42194,6 +43282,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42288,6 +43378,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42416,6 +43508,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42479,6 +43573,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42558,6 +43654,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42628,6 +43726,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42698,6 +43798,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42792,6 +43894,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42855,6 +43959,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42935,6 +44041,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43015,6 +44123,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43088,6 +44198,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43151,6 +44263,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43214,6 +44328,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43301,6 +44417,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43369,6 +44487,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43451,6 +44571,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43519,6 +44641,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43612,6 +44736,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43699,6 +44825,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43779,6 +44907,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43849,6 +44979,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43919,6 +45051,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43989,6 +45123,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44059,6 +45195,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44122,6 +45260,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44190,6 +45330,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44258,6 +45400,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44345,6 +45489,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44438,6 +45584,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44501,6 +45649,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44573,6 +45723,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44686,6 +45838,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44803,6 +45957,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44894,6 +46050,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44964,6 +46122,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45027,6 +46187,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45115,6 +46277,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45217,6 +46381,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45287,6 +46453,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45350,6 +46518,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45420,6 +46590,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45497,6 +46669,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45558,6 +46732,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45621,6 +46797,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45684,6 +46862,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45744,6 +46924,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45835,6 +47017,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45913,6 +47097,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45976,6 +47162,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46100,6 +47288,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46151,6 +47341,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46271,6 +47463,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46341,6 +47535,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46404,6 +47600,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46455,6 +47653,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46525,6 +47725,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46588,6 +47790,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46680,6 +47884,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46743,6 +47949,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46794,6 +48002,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46845,6 +48055,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46915,6 +48127,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46994,6 +48208,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47097,6 +48313,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47160,6 +48378,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47230,6 +48450,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47296,6 +48518,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47376,6 +48600,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47444,6 +48670,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47567,6 +48795,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47742,6 +48972,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47828,6 +49060,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47913,6 +49147,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47976,6 +49212,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48037,6 +49275,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48090,6 +49330,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48141,6 +49383,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48202,6 +49446,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48327,6 +49573,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48406,6 +49654,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48469,6 +49719,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48566,6 +49818,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48675,6 +49929,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48738,6 +49994,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48919,6 +50177,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48987,6 +50247,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49076,6 +50338,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49160,6 +50424,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49237,6 +50503,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49331,6 +50599,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49425,6 +50695,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49497,6 +50769,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49632,6 +50906,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49692,6 +50968,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49753,6 +51031,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49821,6 +51101,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49898,6 +51180,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49977,6 +51261,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50047,6 +51333,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50117,6 +51405,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50178,6 +51468,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50241,6 +51533,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50304,6 +51598,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50376,6 +51672,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50494,6 +51792,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50571,6 +51871,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50648,6 +51950,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50718,6 +52022,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50779,6 +52085,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50840,6 +52148,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50927,6 +52237,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51006,6 +52318,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51067,6 +52381,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51138,6 +52454,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51208,6 +52526,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51278,6 +52598,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51348,6 +52670,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51458,6 +52782,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51538,6 +52864,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51618,6 +52946,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51705,6 +53035,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51792,6 +53124,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51845,6 +53179,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51915,6 +53251,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51985,6 +53323,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52036,6 +53376,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52115,6 +53457,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52195,6 +53539,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52280,6 +53626,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52348,6 +53696,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52416,6 +53766,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52501,6 +53853,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52571,6 +53925,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52648,6 +54004,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52737,6 +54095,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52822,6 +54182,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52892,6 +54254,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53022,6 +54386,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53102,6 +54468,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53182,6 +54550,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53250,6 +54620,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53313,6 +54685,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53393,6 +54767,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53456,6 +54832,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53526,6 +54904,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53612,6 +54992,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53732,6 +55114,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53785,6 +55169,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53855,6 +55241,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53918,6 +55306,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53988,6 +55378,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54058,6 +55450,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54137,6 +55531,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54188,6 +55584,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54258,6 +55656,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54326,6 +55726,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54420,6 +55822,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54500,6 +55904,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54570,6 +55976,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54633,6 +56041,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54727,6 +56137,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54807,6 +56219,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54858,6 +56272,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54919,6 +56335,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54989,6 +56407,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55059,6 +56479,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55129,6 +56551,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55199,6 +56623,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55262,6 +56688,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55341,6 +56769,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55411,6 +56841,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55474,6 +56906,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55517,6 +56951,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55647,6 +57083,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55744,6 +57182,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55814,6 +57254,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55884,6 +57326,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55954,6 +57398,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56119,6 +57565,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56198,6 +57646,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56261,6 +57711,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56331,6 +57783,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56399,6 +57853,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56462,6 +57918,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56515,6 +57973,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56585,6 +58045,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56688,6 +58150,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56758,6 +58222,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56821,6 +58287,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56891,6 +58359,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56961,6 +58431,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57024,6 +58496,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57118,6 +58592,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57181,6 +58657,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57244,6 +58722,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57345,6 +58825,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57423,6 +58905,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57517,6 +59001,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57587,6 +59073,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57681,6 +59169,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57751,6 +59241,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57838,6 +59330,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57908,6 +59402,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57978,6 +59474,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58048,6 +59546,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58118,6 +59618,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58197,6 +59699,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58260,6 +59764,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58330,6 +59836,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58443,6 +59951,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58515,6 +60025,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58585,6 +60097,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58663,6 +60177,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58741,6 +60257,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58792,6 +60310,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58867,6 +60387,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58942,6 +60464,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59010,6 +60534,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59078,6 +60604,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59225,6 +60753,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59334,6 +60864,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59503,6 +61035,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59589,6 +61123,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59671,6 +61207,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59741,6 +61279,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59863,6 +61403,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59943,6 +61485,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60013,6 +61557,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60083,6 +61629,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60146,6 +61694,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60209,6 +61759,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60329,6 +61881,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60416,6 +61970,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60503,6 +62059,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60610,6 +62168,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60690,6 +62250,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60760,6 +62322,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60852,6 +62416,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60922,6 +62488,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60985,6 +62553,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61064,6 +62634,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61134,6 +62706,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61212,6 +62786,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61275,6 +62851,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61338,6 +62916,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61400,6 +62980,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61497,6 +63079,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61610,6 +63194,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61680,6 +63266,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61800,6 +63388,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61880,6 +63470,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61950,6 +63542,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62013,6 +63607,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62093,6 +63689,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62163,6 +63761,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62257,6 +63857,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62310,6 +63912,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62423,6 +64027,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62515,6 +64121,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62633,6 +64241,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62712,6 +64322,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62782,6 +64394,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62845,6 +64459,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62915,6 +64531,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63002,6 +64620,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63065,6 +64685,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63128,6 +64750,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63198,6 +64822,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63249,6 +64875,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63312,6 +64940,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63390,6 +65020,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63484,6 +65116,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63554,6 +65188,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63617,6 +65253,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63704,6 +65342,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63783,6 +65423,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63853,6 +65495,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63950,6 +65594,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64046,6 +65692,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64126,6 +65774,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64213,6 +65863,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64283,6 +65935,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64334,6 +65988,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64711,6 +66367,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64773,6 +66431,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64841,6 +66501,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64909,6 +66571,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64993,6 +66657,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65078,6 +66744,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65139,6 +66807,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65219,6 +66889,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65289,6 +66961,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65359,6 +67033,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65422,6 +67098,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65492,6 +67170,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65562,6 +67242,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65632,6 +67314,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65702,6 +67386,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65765,6 +67451,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65826,6 +67514,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65889,6 +67579,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65985,6 +67677,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66046,6 +67740,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66109,6 +67805,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66161,6 +67859,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66229,6 +67929,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66290,6 +67992,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66378,6 +68082,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66455,6 +68161,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66515,6 +68223,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66566,6 +68276,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66627,6 +68339,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66695,6 +68409,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66842,6 +68558,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66912,6 +68630,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67046,6 +68766,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67133,6 +68855,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67266,6 +68990,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67348,6 +69074,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67418,6 +69146,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67499,6 +69229,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67550,6 +69282,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67593,6 +69327,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67710,6 +69446,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67763,6 +69501,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67840,6 +69580,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67918,6 +69660,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67979,6 +69723,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68056,6 +69802,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68126,6 +69874,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68220,6 +69970,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68290,6 +70042,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68360,6 +70114,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68485,6 +70241,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68570,6 +70328,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68621,6 +70381,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68689,6 +70451,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68757,6 +70521,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68834,6 +70600,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69010,6 +70778,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69094,6 +70864,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69188,6 +70960,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69267,6 +71041,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69335,6 +71111,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69414,6 +71192,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69508,6 +71288,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69627,6 +71409,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69700,6 +71484,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69768,6 +71554,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69838,6 +71626,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69901,6 +71691,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69986,6 +71778,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70083,6 +71877,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70162,6 +71958,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70230,6 +72028,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70300,6 +72100,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70363,6 +72165,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70433,6 +72237,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70501,6 +72307,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70588,6 +72396,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70656,6 +72466,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70726,6 +72538,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70843,6 +72657,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70995,6 +72811,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71065,6 +72883,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71144,6 +72964,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71223,6 +73045,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71293,6 +73117,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71391,6 +73217,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71461,6 +73289,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71522,6 +73352,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71583,6 +73415,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71677,6 +73511,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71740,6 +73576,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71820,6 +73658,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71890,6 +73730,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71960,6 +73802,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72030,6 +73874,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72121,6 +73967,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72191,6 +74039,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72270,6 +74120,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72349,6 +74201,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72417,6 +74271,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72520,6 +74376,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72581,6 +74439,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72644,6 +74504,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72712,6 +74574,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72784,6 +74648,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72864,6 +74730,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72927,6 +74795,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72990,6 +74860,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73060,6 +74932,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73214,6 +75088,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73282,6 +75158,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73368,6 +75246,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73438,6 +75318,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73501,6 +75383,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73571,6 +75455,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73651,6 +75537,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73713,6 +75601,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73804,6 +75694,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73865,6 +75757,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73928,6 +75822,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74018,6 +75914,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74081,6 +75979,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74144,6 +76044,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74207,6 +76109,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74277,6 +76181,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74347,6 +76253,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74417,6 +76325,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74504,6 +76414,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74594,6 +76506,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74683,6 +76597,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74746,6 +76662,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74825,6 +76743,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74895,6 +76815,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75012,6 +76934,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75092,6 +77016,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75162,6 +77088,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75232,6 +77160,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75295,6 +77225,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75365,6 +77297,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75435,6 +77369,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75498,6 +77434,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75549,6 +77487,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75634,6 +77574,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75721,6 +77663,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75808,6 +77752,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75878,6 +77824,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75939,6 +77887,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76024,6 +77974,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76094,6 +78046,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76157,6 +78111,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76227,6 +78183,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76290,6 +78248,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76360,6 +78320,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76453,6 +78415,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76516,6 +78480,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76579,6 +78545,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76656,6 +78624,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76719,6 +78689,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76782,6 +78754,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76871,6 +78845,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76939,6 +78915,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77007,6 +78985,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77077,6 +79057,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77147,6 +79129,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77210,6 +79194,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77278,6 +79264,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77348,6 +79336,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77411,6 +79401,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77479,6 +79471,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77570,6 +79564,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77633,6 +79629,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77722,6 +79720,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77775,6 +79775,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77854,6 +79856,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77945,6 +79949,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78015,6 +80021,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78068,6 +80076,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78129,6 +80139,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78220,6 +80232,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78298,6 +80312,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78395,6 +80411,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78492,6 +80510,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78578,6 +80598,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78646,6 +80668,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78732,6 +80756,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78836,6 +80862,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78925,6 +80953,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78993,6 +81023,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79063,6 +81095,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79142,6 +81176,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79212,6 +81248,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79291,6 +81329,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79359,6 +81399,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79420,6 +81462,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79488,6 +81532,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79551,6 +81597,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79619,6 +81667,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79696,6 +81746,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79764,6 +81816,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79835,6 +81889,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79903,6 +81959,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79975,6 +82033,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80036,6 +82096,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80097,6 +82159,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80165,6 +82229,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80243,6 +82309,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80328,6 +82396,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80420,6 +82490,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80481,6 +82553,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80549,6 +82623,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80617,6 +82693,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80668,6 +82746,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80729,6 +82809,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80797,6 +82879,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80868,6 +82952,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80971,6 +83057,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81041,6 +83129,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81109,6 +83199,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81186,6 +83278,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81300,6 +83394,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81370,6 +83466,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81431,6 +83529,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81499,6 +83599,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81586,6 +83688,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81656,6 +83760,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81724,6 +83830,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81792,6 +83900,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81920,6 +84030,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81991,6 +84103,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82068,6 +84182,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82153,6 +84269,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82238,6 +84356,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82318,6 +84438,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82388,6 +84510,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82466,6 +84590,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82537,6 +84663,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82672,6 +84800,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82770,6 +84900,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82831,6 +84963,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82901,6 +85035,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82969,6 +85105,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83048,6 +85186,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83101,6 +85241,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83169,6 +85311,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83230,6 +85374,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83293,6 +85439,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83356,6 +85504,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83426,6 +85576,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83575,6 +85727,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83628,6 +85782,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83715,6 +85871,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83778,6 +85936,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83848,6 +86008,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83911,6 +86073,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83981,6 +86145,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84044,6 +86210,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84114,6 +86282,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84267,6 +86437,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84337,6 +86509,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84407,6 +86581,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84500,6 +86676,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84596,6 +86774,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84666,6 +86846,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84719,6 +86901,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84789,6 +86973,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84874,6 +87060,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85062,6 +87250,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85113,6 +87303,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85215,6 +87407,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85285,6 +87479,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85376,6 +87572,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85482,6 +87680,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85552,6 +87752,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85629,6 +87831,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85729,6 +87933,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85790,6 +87996,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85843,6 +88051,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85934,6 +88144,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85985,6 +88197,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86048,6 +88262,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86116,6 +88332,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86185,6 +88403,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86248,6 +88468,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86342,6 +88564,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86433,6 +88657,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86503,6 +88729,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86573,6 +88801,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86636,6 +88866,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86706,6 +88938,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86769,6 +89003,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86903,6 +89139,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86996,6 +89234,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87089,6 +89329,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87150,6 +89392,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87218,6 +89462,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87312,6 +89558,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87380,6 +89628,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87443,6 +89693,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87511,6 +89763,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87593,6 +89847,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87644,6 +89900,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87704,6 +89962,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87780,6 +90040,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87843,6 +90105,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87913,6 +90177,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87985,6 +90251,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88055,6 +90323,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88298,6 +90568,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88382,6 +90654,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88452,6 +90726,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88520,6 +90796,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88609,6 +90887,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88679,6 +90959,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88732,6 +91014,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88811,6 +91095,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88881,6 +91167,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88951,6 +91239,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89021,6 +91311,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89091,6 +91383,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89195,6 +91489,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89258,6 +91554,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89328,6 +91626,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89398,6 +91698,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89471,6 +91773,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89589,6 +91893,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89652,6 +91958,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89722,6 +92030,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89815,6 +92125,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89885,6 +92197,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89964,6 +92278,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90034,6 +92350,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90128,6 +92446,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90198,6 +92518,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90266,6 +92588,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90346,6 +92670,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90418,6 +92744,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90481,6 +92809,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90551,6 +92881,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90614,6 +92946,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90687,6 +93021,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90774,6 +93110,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90842,6 +93180,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90946,6 +93286,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91032,6 +93374,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91095,6 +93439,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91158,6 +93504,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91228,6 +93576,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91298,6 +93648,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91378,6 +93730,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91458,6 +93812,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91528,6 +93884,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91589,6 +93947,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91712,6 +94072,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91791,6 +94153,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91938,6 +94302,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91989,6 +94355,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92066,6 +94434,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92157,6 +94527,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92244,6 +94616,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92324,6 +94698,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92392,6 +94768,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92455,6 +94833,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92508,6 +94888,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92609,6 +94991,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92755,6 +95139,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92827,6 +95213,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92907,6 +95295,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92987,6 +95377,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93074,6 +95466,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93175,6 +95569,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93245,6 +95641,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93400,6 +95798,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93480,6 +95880,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93571,6 +95973,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93641,6 +96045,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93709,6 +96115,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93772,6 +96180,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93840,6 +96250,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93908,6 +96320,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93987,6 +96401,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94081,6 +96497,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94151,6 +96569,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94221,6 +96641,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94291,6 +96713,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94361,6 +96785,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94424,6 +96850,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94487,6 +96915,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94555,6 +96985,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94625,6 +97057,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94695,6 +97129,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94788,6 +97224,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94856,6 +97294,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94917,6 +97357,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94997,6 +97439,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95050,6 +97494,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95111,6 +97557,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95195,6 +97643,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95265,6 +97715,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95335,6 +97787,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95405,6 +97859,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95475,6 +97931,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95545,6 +98003,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95617,6 +98077,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95680,6 +98142,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95752,6 +98216,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95848,6 +98314,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95911,6 +98379,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96036,6 +98506,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96097,6 +98569,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96191,6 +98665,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96252,6 +98728,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96322,6 +98800,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96401,6 +98881,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96488,6 +98970,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96556,6 +99040,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96624,6 +99110,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96675,6 +99163,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96752,6 +99242,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96815,6 +99307,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96887,6 +99381,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96937,6 +99433,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97005,6 +99503,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97098,6 +99598,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97168,6 +99670,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97231,6 +99735,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97375,6 +99881,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97469,6 +99977,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97532,6 +100042,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97595,6 +100107,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97720,6 +100234,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97806,6 +100322,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97869,6 +100387,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97955,6 +100475,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98025,6 +100547,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98095,6 +100619,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98172,6 +100698,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98242,6 +100770,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98303,6 +100833,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98373,6 +100905,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98443,6 +100977,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98513,6 +101049,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98583,6 +101121,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98636,6 +101176,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98704,6 +101246,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98774,6 +101318,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98844,6 +101390,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98912,6 +101460,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98980,6 +101530,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -99043,6 +101595,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -99106,6 +101660,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -99176,6 +101732,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -99253,6 +101811,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -99504,6 +102064,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -99567,6 +102129,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -99760,6 +102324,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -99828,6 +102394,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100009,6 +102577,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100071,6 +102641,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100134,6 +102706,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100197,6 +102771,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100250,6 +102826,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100335,6 +102913,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100411,6 +102991,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100481,6 +103063,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100544,6 +103128,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100631,6 +103217,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100701,6 +103289,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100771,6 +103361,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100868,6 +103460,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100955,6 +103549,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101023,6 +103619,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101084,6 +103682,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101156,6 +103756,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101216,6 +103818,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101303,6 +103907,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101371,6 +103977,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101422,6 +104030,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101494,6 +104104,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101574,6 +104186,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101652,6 +104266,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101720,6 +104336,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101799,6 +104417,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101862,6 +104482,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101925,6 +104547,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102028,6 +104652,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102098,6 +104724,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102161,6 +104789,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102214,6 +104844,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102331,6 +104963,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102392,6 +105026,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102460,6 +105096,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102521,6 +105159,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102608,6 +105248,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102676,6 +105318,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102737,6 +105381,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102800,6 +105446,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102860,6 +105508,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102937,6 +105587,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103029,6 +105681,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103113,6 +105767,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103164,6 +105820,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103256,6 +105914,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103319,6 +105979,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103370,6 +106032,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103422,6 +106086,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103504,6 +106170,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103605,6 +106273,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103699,6 +106369,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103762,6 +106434,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103832,6 +106506,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103912,6 +106588,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103992,6 +106670,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104045,6 +106725,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104130,6 +106812,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104183,6 +106867,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104234,6 +106920,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104350,6 +107038,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104485,6 +107175,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104553,6 +107245,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104702,6 +107396,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104765,6 +107461,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104816,6 +107514,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104901,6 +107601,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104996,6 +107698,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105057,6 +107761,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105125,6 +107831,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105188,6 +107896,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105258,6 +107968,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105394,6 +108106,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105464,6 +108178,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105534,6 +108250,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105602,6 +108320,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105681,6 +108401,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105751,6 +108473,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105821,6 +108545,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105874,6 +108600,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105946,6 +108674,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106009,6 +108739,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106081,6 +108813,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106192,6 +108926,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106360,6 +109096,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106428,6 +109166,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106551,6 +109291,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106650,6 +109392,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106701,6 +109445,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106801,6 +109547,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106890,6 +109638,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106960,6 +109710,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107030,6 +109782,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107098,6 +109852,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107166,6 +109922,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107234,6 +109992,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107347,6 +110107,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107424,6 +110186,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107508,6 +110272,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107571,6 +110337,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107639,6 +110407,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107707,6 +110477,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107785,6 +110557,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107871,6 +110645,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107922,6 +110698,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108014,6 +110792,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108065,6 +110845,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108142,6 +110924,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108202,6 +110986,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108255,6 +111041,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108318,6 +111106,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108403,6 +111193,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108454,6 +111246,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108517,6 +111311,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108594,6 +111390,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108674,6 +111472,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108760,6 +111560,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108823,6 +111625,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108891,6 +111695,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108954,6 +111760,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109005,6 +111813,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109075,6 +111885,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109162,6 +111974,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109239,6 +112053,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109290,6 +112106,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109353,6 +112171,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109421,6 +112241,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109532,6 +112354,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109633,6 +112457,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109718,6 +112544,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109803,6 +112631,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109890,6 +112720,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109960,6 +112792,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110030,6 +112864,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110100,6 +112936,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110168,6 +113006,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110231,6 +113071,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110361,6 +113203,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110429,6 +113273,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110499,6 +113345,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110596,6 +113444,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110690,6 +113540,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110741,6 +113593,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110811,6 +113665,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110890,6 +113746,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110984,6 +113842,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111035,6 +113895,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111098,6 +113960,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111159,6 +114023,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111229,6 +114095,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111309,6 +114177,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111372,6 +114242,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111489,6 +114361,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111561,6 +114435,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111696,6 +114572,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111764,6 +114642,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111834,6 +114714,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111902,6 +114784,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111970,6 +114854,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112031,6 +114917,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112082,6 +114970,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112143,6 +115033,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112223,6 +115115,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112291,6 +115185,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112342,6 +115238,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112412,6 +115310,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112480,6 +115380,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112564,6 +115466,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112627,6 +115531,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112690,6 +115596,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112753,6 +115661,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112900,6 +115810,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -113031,6 +115943,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -113110,6 +116024,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -113173,6 +116089,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -113236,6 +116154,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -113306,6 +116226,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -113369,6 +116291,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -130490,5 +133414,6 @@ "Order": 2 } ] - } + }, + "VariantTypes": [] } \ No newline at end of file diff --git a/backend/FwLite/FwLiteProjectSync.Tests/SyncTests.cs b/backend/FwLite/FwLiteProjectSync.Tests/SyncTests.cs index 3f313a5b0f..1abc4ba73c 100644 --- a/backend/FwLite/FwLiteProjectSync.Tests/SyncTests.cs +++ b/backend/FwLite/FwLiteProjectSync.Tests/SyncTests.cs @@ -92,14 +92,16 @@ internal static EquivalencyOptions SyncExclusions(EquivalencyOptions e.Components).Exclude(c => c.Id) .For(e => e.Components).Exclude(c => c.Order) .For(e => e.ComplexForms).Exclude(c => c.Id) - .For(e => e.ComplexForms).Exclude(c => c.Order); + .For(e => e.ComplexForms).Exclude(c => c.Order) + .For(e => e.VariantOf).Exclude(v => v.Id) + .For(e => e.Variants).Exclude(v => v.Id); return options; } internal static void AssertSnapshotsAreEquivalent(ProjectSnapshot expected, ProjectSnapshot actual) { var excludeOrderTypes = new[] { typeof(Sense), typeof(ExampleSentence), typeof(Picture), typeof(ComplexFormComponent), typeof(WritingSystem) }; - var excludeIds = new[] { typeof(ComplexFormComponent), typeof(WritingSystem) }; + var excludeIds = new[] { typeof(ComplexFormComponent), typeof(Variant), typeof(WritingSystem) }; actual.Should().BeEquivalentTo(expected, options => options @@ -109,6 +111,7 @@ internal static void AssertSnapshotsAreEquivalent(ProjectSnapshot expected, Proj .WithoutStrictOrderingFor(x => x.SemanticDomains) .WithoutStrictOrderingFor(x => x.ComplexFormTypes) .WithoutStrictOrderingFor(x => x.MorphTypes) + .WithoutStrictOrderingFor(x => x.VariantTypes) //when excluding properties consider https://github.com/sillsdev/languageforge-lexbox/issues/1912 .Using(Exclude) .When(info => info.RuntimeType == typeof(double) && info.Path.EndsWith(".Order") && excludeOrderTypes.Contains(info.ParentType)) diff --git a/backend/FwLite/FwLiteProjectSync.Tests/UpdateDiffTests.cs b/backend/FwLite/FwLiteProjectSync.Tests/UpdateDiffTests.cs index 7daa8468a4..bbacc49119 100644 --- a/backend/FwLite/FwLiteProjectSync.Tests/UpdateDiffTests.cs +++ b/backend/FwLite/FwLiteProjectSync.Tests/UpdateDiffTests.cs @@ -25,6 +25,8 @@ public void EntryDiffShouldUpdateAllFields() .Excluding(x => x.Components) .Excluding(x => x.ComplexForms) .Excluding(x => x.ComplexFormTypes) + .Excluding(x => x.VariantOf) + .Excluding(x => x.Variants) .Excluding(x => x.PublishIn); }); } diff --git a/backend/FwLite/FwLiteProjectSync.Tests/VariantSyncTests.cs b/backend/FwLite/FwLiteProjectSync.Tests/VariantSyncTests.cs new file mode 100644 index 0000000000..931d28a54e --- /dev/null +++ b/backend/FwLite/FwLiteProjectSync.Tests/VariantSyncTests.cs @@ -0,0 +1,316 @@ +using FwLiteProjectSync.Tests.Fixtures; +using MiniLcm; +using MiniLcm.Models; + +namespace FwLiteProjectSync.Tests; + +public class VariantSyncTests : IClassFixture, IAsyncLifetime +{ + private readonly SyncFixture _fixture; + private readonly CrdtFwdataProjectSyncService _syncService; + + private readonly Guid _mainEntryId = Guid.NewGuid(); + private readonly Guid _variantEntryId = Guid.NewGuid(); + private Entry _mainEntry = null!; + private Entry _variantEntry = null!; + + public VariantSyncTests(SyncFixture fixture) + { + _fixture = fixture; + _syncService = _fixture.SyncService; + } + + public async Task InitializeAsync() + { + _fixture.DeleteSyncSnapshot(); + _mainEntry = await _fixture.FwDataApi.CreateEntry(new() + { + Id = _mainEntryId, + LexemeForm = { { "en", "color" } }, + Senses = + [ + new Sense { Gloss = { { "en", "colour sense" } } } + ] + }); + // sense-less on purpose — the FLEx "Insert Variant" shape + _variantEntry = await _fixture.FwDataApi.CreateEntry(new() + { + Id = _variantEntryId, + LexemeForm = { { "en", "colour" } } + }); + } + + public async Task DisposeAsync() + { + await foreach (var entry in _fixture.FwDataApi.GetAllEntries()) + { + await _fixture.FwDataApi.DeleteEntry(entry.Id); + } + foreach (var entry in await _fixture.CrdtApi.GetAllEntries().ToArrayAsync()) + { + await _fixture.CrdtApi.DeleteEntry(entry.Id); + } + _fixture.DeleteSyncSnapshot(); + } + + private async Task GetVariantType(IMiniLcmApi api, string name) + { + return (await api.GetVariantTypes().ToArrayAsync()).Single(t => t.Name["en"] == name); + } + + [Fact] + [Trait("Category", "Integration")] + public async Task VariantTypesSyncFwToCrdtAtProjectImport() + { + await _syncService.Import(_fixture.CrdtApi, _fixture.FwDataApi); + var fwdataVariantTypes = await _fixture.FwDataApi.GetVariantTypes().ToArrayAsync(); + var crdtVariantTypes = await _fixture.CrdtApi.GetVariantTypes().ToArrayAsync(); + fwdataVariantTypes.Should().NotBeEmpty(); + crdtVariantTypes.Should().BeEquivalentTo(fwdataVariantTypes); + } + + [Fact] + [Trait("Category", "Integration")] + public async Task CreatingVariantInFwDataSyncsWithoutIssue() + { + var crdtApi = _fixture.CrdtApi; + var fwdataApi = _fixture.FwDataApi; + await _syncService.Import(crdtApi, fwdataApi); + var projectSnapshot = await _fixture.RegenerateAndGetSnapshot(); + + var dialectal = await GetVariantType(fwdataApi, "Dialectal Variant"); + await fwdataApi.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry) with + { + Types = [dialectal], + HideMinorEntry = true, + Comment = new() { { "en", new RichString("british spelling") } }, + }); + + await _syncService.Sync(crdtApi, fwdataApi, projectSnapshot); + + SyncTests.AssertSnapshotsAreEquivalent(await fwdataApi.TakeProjectSnapshot(), await crdtApi.TakeProjectSnapshot()); + var crdtVariantEntry = await crdtApi.GetEntry(_variantEntryId); + crdtVariantEntry.Should().NotBeNull(); + crdtVariantEntry!.Senses.Should().BeEmpty(); + var link = crdtVariantEntry.VariantOf.Should().ContainSingle().Subject; + link.Types.Should().ContainSingle(t => t.Id == dialectal.Id); + link.HideMinorEntry.Should().BeTrue(); + + // Sync again, ensure no problems or changes + var secondSnapshot = await _fixture.RegenerateAndGetSnapshot(); + var secondSync = await _syncService.Sync(crdtApi, fwdataApi, secondSnapshot); + secondSync.CrdtChanges.Should().Be(0); + secondSync.FwdataChanges.Should().Be(0); + } + + [Fact] + [Trait("Category", "Integration")] + public async Task CreatingVariantInCrdtSyncsWithoutIssue() + { + var crdtApi = _fixture.CrdtApi; + var fwdataApi = _fixture.FwDataApi; + await _syncService.Import(crdtApi, fwdataApi); + var projectSnapshot = await _fixture.RegenerateAndGetSnapshot(); + + var spelling = await GetVariantType(crdtApi, "Spelling Variant"); + await crdtApi.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry) with { Types = [spelling] }); + + await _syncService.Sync(crdtApi, fwdataApi, projectSnapshot); + + SyncTests.AssertSnapshotsAreEquivalent(await fwdataApi.TakeProjectSnapshot(), await crdtApi.TakeProjectSnapshot()); + var fwVariantEntry = await fwdataApi.GetEntry(_variantEntryId); + fwVariantEntry.Should().NotBeNull(); + var link = fwVariantEntry!.VariantOf.Should().ContainSingle().Subject; + link.Types.Should().ContainSingle(t => t.Id == spelling.Id); + } + + [Fact] + [Trait("Category", "Integration")] + public async Task SenseTargetedVariantWithNewSenseSyncs() + { + var crdtApi = _fixture.CrdtApi; + var fwdataApi = _fixture.FwDataApi; + await _syncService.Import(crdtApi, fwdataApi); + var projectSnapshot = await _fixture.RegenerateAndGetSnapshot(); + + var newSense = await fwdataApi.CreateSense(_mainEntryId, new Sense { Gloss = { { "en", "new target sense" } } }); + await fwdataApi.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry, newSense.Id)); + + await _syncService.Sync(crdtApi, fwdataApi, projectSnapshot); + + SyncTests.AssertSnapshotsAreEquivalent(await fwdataApi.TakeProjectSnapshot(), await crdtApi.TakeProjectSnapshot()); + var crdtMainEntry = await crdtApi.GetEntry(_mainEntryId); + crdtMainEntry!.Variants.Should().ContainSingle(v => v.MainSenseId == newSense.Id); + } + + [Fact] + [Trait("Category", "Integration")] + public async Task VariantTypesSyncBothWays() + { + var crdtApi = _fixture.CrdtApi; + var fwdataApi = _fixture.FwDataApi; + await _syncService.Import(crdtApi, fwdataApi); + var projectSnapshot = await _fixture.RegenerateAndGetSnapshot(); + + var fwType = new VariantType() + { + Id = Guid.NewGuid(), + Name = new() { { "en", "fw custom type" } }, + }; + await fwdataApi.CreateVariantType(fwType); + + var crdtType = new VariantType() + { + Id = Guid.NewGuid(), + Name = new() { { "en", "crdt custom type" } }, + }; + await crdtApi.CreateVariantType(crdtType); + + await _syncService.Sync(crdtApi, fwdataApi, projectSnapshot); + + var crdtVariantTypes = await crdtApi.GetVariantTypes().ToArrayAsync(); + var fwdataVariantTypes = await fwdataApi.GetVariantTypes().ToArrayAsync(); + crdtVariantTypes.Should().ContainEquivalentOf(fwType); + crdtVariantTypes.Should().ContainEquivalentOf(crdtType); + fwdataVariantTypes.Should().ContainEquivalentOf(fwType); + fwdataVariantTypes.Should().ContainEquivalentOf(crdtType); + crdtVariantTypes.Should().BeEquivalentTo(fwdataVariantTypes); + } + + [Fact] + [Trait("Category", "Integration")] + public async Task VariantLinkEditsSyncBothWays() + { + var crdtApi = _fixture.CrdtApi; + var fwdataApi = _fixture.FwDataApi; + var free = await GetVariantType(fwdataApi, "Free Variant"); + var created = await fwdataApi.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry) with { Types = [free] }); + await _syncService.Import(crdtApi, fwdataApi); + var projectSnapshot = await _fixture.RegenerateAndGetSnapshot(); + + // edit the same link's own fields on each side (types in FwData, scalars in CRDT) + var dialectal = await GetVariantType(fwdataApi, "Dialectal Variant"); + var fwLink = (await fwdataApi.GetEntry(_variantEntryId))!.VariantOf.Single(); + await fwdataApi.AddVariantType(fwLink, dialectal.Id); + await fwdataApi.RemoveVariantType(fwLink, free.Id); + + var crdtLink = (await crdtApi.GetEntry(_variantEntryId))!.VariantOf.Single(); + var crdtAfter = crdtLink.Copy(); + crdtAfter.HideMinorEntry = true; + crdtAfter.Comment = new() { { "en", new RichString("prefer the main entry") } }; + await crdtApi.UpdateVariant(crdtLink, crdtAfter); + + await _syncService.Sync(crdtApi, fwdataApi, projectSnapshot); + + SyncTests.AssertSnapshotsAreEquivalent(await fwdataApi.TakeProjectSnapshot(), await crdtApi.TakeProjectSnapshot()); + var merged = (await crdtApi.GetEntry(_variantEntryId))!.VariantOf.Should().ContainSingle().Subject; + merged.Types.Should().ContainSingle(t => t.Id == dialectal.Id); + merged.HideMinorEntry.Should().BeTrue(); + merged.Comment["en"].GetPlainText().Should().Be("prefer the main entry"); + } + + [Fact] + [Trait("Category", "Integration")] + public async Task DeletingMainEntryInCrdtRemovesLinkOnSync() + { + var crdtApi = _fixture.CrdtApi; + var fwdataApi = _fixture.FwDataApi; + await fwdataApi.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + await _syncService.Import(crdtApi, fwdataApi); + var projectSnapshot = await _fixture.RegenerateAndGetSnapshot(); + + await crdtApi.DeleteEntry(_mainEntryId); + + await _syncService.Sync(crdtApi, fwdataApi, projectSnapshot); + + (await fwdataApi.GetEntry(_mainEntryId)).Should().BeNull(); + var fwVariantEntry = await fwdataApi.GetEntry(_variantEntryId); + fwVariantEntry.Should().NotBeNull("only the link dies, not the variant entry"); + fwVariantEntry!.VariantOf.Should().BeEmpty(); + (await crdtApi.GetEntry(_variantEntryId))!.VariantOf.Should().BeEmpty(); + } + + [Fact] + [Trait("Category", "Integration")] + public async Task DeletingVariantEntryInFwDataRemovesLinkOnSync() + { + var crdtApi = _fixture.CrdtApi; + var fwdataApi = _fixture.FwDataApi; + await fwdataApi.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + await _syncService.Import(crdtApi, fwdataApi); + var projectSnapshot = await _fixture.RegenerateAndGetSnapshot(); + + await fwdataApi.DeleteEntry(_variantEntryId); + + await _syncService.Sync(crdtApi, fwdataApi, projectSnapshot); + + (await crdtApi.GetEntry(_variantEntryId)).Should().BeNull(); + var crdtMainEntry = await crdtApi.GetEntry(_mainEntryId); + crdtMainEntry.Should().NotBeNull("only the link dies, not the main entry"); + crdtMainEntry!.Variants.Should().BeEmpty(); + (await fwdataApi.GetEntry(_mainEntryId))!.Variants.Should().BeEmpty(); + } + + [Fact] + [Trait("Category", "Integration")] + public async Task VariantAddedInFwDataWhileMainEntryDeletedInCrdt_SyncDoesNotThrow() + { + var crdtApi = _fixture.CrdtApi; + var fwdataApi = _fixture.FwDataApi; + await _syncService.Import(crdtApi, fwdataApi); + var projectSnapshot = await _fixture.RegenerateAndGetSnapshot(); + + await fwdataApi.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + await crdtApi.DeleteEntry(_mainEntryId); + + await _syncService.Sync(crdtApi, fwdataApi, projectSnapshot); + + (await crdtApi.GetEntry(_mainEntryId)).Should().BeNull(); + (await fwdataApi.GetEntry(_mainEntryId)).Should().BeNull(); + var crdtVariantEntry = await crdtApi.GetEntry(_variantEntryId); + crdtVariantEntry.Should().NotBeNull(); + crdtVariantEntry!.VariantOf.Should().BeEmpty(); + } + + [Fact] + [Trait("Category", "Integration")] + public async Task LegacySnapshotWithoutVariantTypes_FirstSyncImportsVariantsIntoCrdt() + { + var crdtApi = _fixture.CrdtApi; + var fwdataApi = _fixture.FwDataApi; + await _syncService.Import(crdtApi, fwdataApi); + var projectSnapshot = await _fixture.RegenerateAndGetSnapshot(); + + // wipe the variants a CRDT imported before variant support would have missed; + // pre-variant snapshot json deserializes with an empty VariantTypes list + // (ProjectSnapshot normalizes the missing property) + foreach (var entry in await crdtApi.GetAllEntries().ToArrayAsync()) + { + foreach (var link in entry.VariantOf) + { + await crdtApi.DeleteVariant(link); + } + } + var legacySnapshot = projectSnapshot with + { + VariantTypes = [], + Entries = [..projectSnapshot.Entries.Select(e => StripVariants(e.Copy()))] + }; + + var fwdataVariant = await fwdataApi.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + + await _syncService.Sync(crdtApi, fwdataApi, legacySnapshot); + + // FwData kept its link and the CRDT gained it + (await fwdataApi.GetEntry(_variantEntryId))!.VariantOf.Should().ContainSingle(); + (await crdtApi.GetEntry(_variantEntryId))!.VariantOf.Should().ContainSingle(v => v.MainEntryId == fwdataVariant.MainEntryId); + (await crdtApi.GetVariantTypes().ToArrayAsync()).Should().NotBeEmpty(); + + static Entry StripVariants(Entry entry) + { + entry.VariantOf = []; + entry.Variants = []; + return entry; + } + } +} diff --git a/backend/FwLite/FwLiteProjectSync.Tests/sena-3-live.verified.sqlite b/backend/FwLite/FwLiteProjectSync.Tests/sena-3-live.verified.sqlite index 55dcad0faa..f83e3cace6 100644 Binary files a/backend/FwLite/FwLiteProjectSync.Tests/sena-3-live.verified.sqlite and b/backend/FwLite/FwLiteProjectSync.Tests/sena-3-live.verified.sqlite differ diff --git a/backend/FwLite/FwLiteProjectSync.Tests/sena-3-live_snapshot.verified.txt b/backend/FwLite/FwLiteProjectSync.Tests/sena-3-live_snapshot.verified.txt index 035ac6ab5b..c3b469f4d4 100644 --- a/backend/FwLite/FwLiteProjectSync.Tests/sena-3-live_snapshot.verified.txt +++ b/backend/FwLite/FwLiteProjectSync.Tests/sena-3-live_snapshot.verified.txt @@ -98,6 +98,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -238,6 +240,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -313,6 +317,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -477,6 +483,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -528,6 +536,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -579,6 +589,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -662,6 +674,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -713,6 +727,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -764,6 +780,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -872,6 +890,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -915,6 +935,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -966,6 +988,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1076,6 +1100,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1163,6 +1189,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1214,6 +1242,31 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [ + { + "Id": "3b4ca7e3-ad5a-4d5c-93cd-19ddb0aa5027", + "MaybeId": "3b4ca7e3-ad5a-4d5c-93cd-19ddb0aa5027", + "DeletedAt": null, + "VariantEntryId": "6485b811-120d-486b-bb97-425faa9008d9", + "VariantHeadword": "inde", + "MainEntryId": "425289f4-fbcd-4644-99d7-c9417e20fa66", + "MainSenseId": null, + "MainHeadword": "ande", + "Types": [ + { + "Id": "bbd4adb3-9af5-4542-94e8-b0932124108b", + "Name": { + "en": "Pronunciation Variant", + "pt": "Variac\u0327a\u0303o da Pronuncia" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": false, + "Comment": {} + } + ], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1265,6 +1318,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1332,6 +1387,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1383,6 +1440,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1434,6 +1493,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1485,6 +1546,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1578,6 +1641,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1658,6 +1723,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1728,6 +1795,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1815,6 +1884,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1878,6 +1949,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1964,6 +2037,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2051,6 +2126,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2171,6 +2248,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2262,6 +2341,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2347,6 +2428,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2425,6 +2508,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2476,6 +2561,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2571,6 +2658,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2651,6 +2740,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2719,6 +2810,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2780,6 +2873,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2943,6 +3038,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3021,6 +3118,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3089,6 +3188,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3157,6 +3258,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3218,6 +3321,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3281,6 +3386,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3358,6 +3465,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3476,6 +3585,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3547,6 +3658,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3632,6 +3745,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3700,6 +3815,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3785,6 +3902,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3848,6 +3967,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3928,6 +4049,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4023,6 +4146,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4084,6 +4209,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4216,6 +4343,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4320,6 +4449,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4466,6 +4597,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4551,6 +4684,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4612,6 +4747,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4673,6 +4810,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4733,6 +4872,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4810,6 +4951,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4895,6 +5038,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4975,6 +5120,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5035,6 +5182,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5096,6 +5245,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5147,6 +5298,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5217,6 +5370,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5352,6 +5507,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5505,6 +5662,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5568,6 +5727,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5631,6 +5792,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5703,6 +5866,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5771,6 +5936,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5832,6 +5999,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6001,6 +6170,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6094,6 +6265,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6166,6 +6339,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6267,6 +6442,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6370,6 +6547,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6438,6 +6617,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6501,6 +6682,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6613,6 +6796,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6730,6 +6915,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6809,6 +6996,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6902,6 +7091,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6979,6 +7170,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7073,6 +7266,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7136,6 +7331,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7222,6 +7419,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7275,6 +7474,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7360,6 +7561,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7430,6 +7633,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7523,6 +7728,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7632,6 +7839,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7711,6 +7920,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7774,6 +7985,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7851,6 +8064,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7914,6 +8129,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7984,6 +8201,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8035,6 +8254,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8105,6 +8326,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8158,6 +8381,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8201,6 +8426,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8302,6 +8529,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8382,6 +8611,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8452,6 +8683,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8532,6 +8765,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8602,6 +8837,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8672,6 +8909,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8742,6 +8981,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8812,6 +9053,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8899,6 +9142,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8950,6 +9195,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9051,6 +9298,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9114,6 +9363,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9184,6 +9435,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9325,6 +9578,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9429,6 +9684,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9492,6 +9749,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9562,6 +9821,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9625,6 +9886,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9688,6 +9951,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9751,6 +10016,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9804,6 +10071,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9872,6 +10141,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9935,6 +10206,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9998,6 +10271,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10060,6 +10335,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10152,6 +10429,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10222,6 +10501,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10292,6 +10573,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10377,6 +10660,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10440,6 +10725,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10510,6 +10797,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10587,6 +10876,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10674,6 +10965,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10737,6 +11030,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10800,6 +11095,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10938,6 +11235,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11047,6 +11346,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11098,6 +11399,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11209,6 +11512,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11289,6 +11594,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11369,6 +11676,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11441,6 +11750,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11504,6 +11815,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11567,6 +11880,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11630,6 +11945,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11693,6 +12010,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11765,6 +12084,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11835,6 +12156,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11886,6 +12209,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11966,6 +12291,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12029,6 +12356,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12128,6 +12457,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12179,6 +12510,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12266,6 +12599,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12353,6 +12688,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12416,6 +12753,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12488,6 +12827,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12577,6 +12918,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12640,6 +12983,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12724,6 +13069,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12802,6 +13149,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12865,6 +13214,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12960,6 +13311,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13037,6 +13390,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13088,6 +13443,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13158,6 +13515,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13261,6 +13620,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13324,6 +13685,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13411,6 +13774,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13505,6 +13870,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13558,6 +13925,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13628,6 +13997,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13698,6 +14069,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13759,6 +14132,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13899,6 +14274,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13962,6 +14339,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14041,6 +14420,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14104,6 +14485,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14183,6 +14566,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14265,6 +14650,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14359,6 +14746,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14446,6 +14835,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14516,6 +14907,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14589,6 +14982,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14662,6 +15057,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14732,6 +15129,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14800,6 +15199,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14895,6 +15296,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14989,6 +15392,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15059,6 +15464,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15120,6 +15527,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15190,6 +15599,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15260,6 +15671,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15313,6 +15726,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15376,6 +15791,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15470,6 +15887,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15540,6 +15959,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15610,6 +16031,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15680,6 +16103,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15760,6 +16185,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15839,6 +16266,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15909,6 +16338,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15991,6 +16422,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16067,6 +16500,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16161,6 +16596,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16231,6 +16668,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16282,6 +16721,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16345,6 +16786,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16436,6 +16879,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16530,6 +16975,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16612,6 +17059,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16740,6 +17189,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16819,6 +17270,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16891,6 +17344,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16951,6 +17406,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17021,6 +17478,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17091,6 +17550,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17159,6 +17620,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17219,6 +17682,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17304,6 +17769,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17367,6 +17834,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17454,6 +17923,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17522,6 +17993,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17585,6 +18058,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17653,6 +18128,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17714,6 +18191,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17793,6 +18272,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17856,6 +18337,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17941,6 +18424,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18009,6 +18494,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18070,6 +18557,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18123,6 +18612,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18193,6 +18684,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18280,6 +18773,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18371,6 +18866,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18434,6 +18931,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18485,6 +18984,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18576,6 +19077,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18654,6 +19157,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18722,6 +19227,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18833,6 +19340,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18918,6 +19427,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19011,6 +19522,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19128,6 +19641,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19233,6 +19748,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19301,6 +19818,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19371,6 +19890,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19439,6 +19960,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19507,6 +20030,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19594,6 +20119,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19664,6 +20191,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19727,6 +20256,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19790,6 +20321,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19860,6 +20393,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19963,6 +20498,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20033,6 +20570,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20096,6 +20635,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20199,6 +20740,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20328,6 +20871,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20420,6 +20965,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20480,6 +21027,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20566,6 +21115,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20634,6 +21185,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20713,6 +21266,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20764,6 +21319,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20834,6 +21391,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20945,6 +21504,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21008,6 +21569,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21069,6 +21632,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21130,6 +21695,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21193,6 +21760,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21244,6 +21813,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21353,6 +21924,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21421,6 +21994,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21541,6 +22116,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21609,6 +22186,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21670,6 +22249,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21738,6 +22319,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21801,6 +22384,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21880,6 +22465,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21950,6 +22537,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22120,6 +22709,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22206,6 +22797,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22259,6 +22852,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22322,6 +22917,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22402,6 +22999,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22463,6 +23062,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22531,6 +23132,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22609,6 +23212,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22689,6 +23294,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22774,6 +23381,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22827,6 +23436,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22895,6 +23506,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22958,6 +23571,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23036,6 +23651,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23127,6 +23744,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23214,6 +23833,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23282,6 +23903,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23369,6 +23992,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23463,6 +24088,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23528,6 +24155,31 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [ + { + "Id": "dafa2dec-2fe6-4c6c-a07c-121de360d7b1", + "MaybeId": "dafa2dec-2fe6-4c6c-a07c-121de360d7b1", + "DeletedAt": null, + "VariantEntryId": "564fffa0-0aec-46ab-8d41-cbd30be82be1", + "VariantHeadword": "yenda", + "MainEntryId": "2bde7e2c-9ddc-4de0-b416-c24c0710c2fa", + "MainSenseId": null, + "MainHeadword": "enda", + "Types": [ + { + "Id": "bbd4adb3-9af5-4542-94e8-b0932124108b", + "Name": { + "en": "Pronunciation Variant", + "pt": "Variac\u0327a\u0303o da Pronuncia" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": false, + "Comment": {} + } + ], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23651,6 +24303,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23702,6 +24356,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23762,6 +24418,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23832,6 +24490,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23900,6 +24560,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24042,6 +24704,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24112,6 +24776,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24204,6 +24870,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24272,6 +24940,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24352,6 +25022,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24424,6 +25096,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24511,6 +25185,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24572,6 +25248,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24625,6 +25303,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24678,6 +25358,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24748,6 +25430,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24801,6 +25485,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24864,6 +25550,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24969,6 +25657,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25051,6 +25741,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25104,6 +25796,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25165,6 +25859,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25233,6 +25929,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25319,6 +26017,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25389,6 +26089,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25476,6 +26178,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25563,6 +26267,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25702,6 +26408,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25793,6 +26501,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25856,6 +26566,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25919,6 +26631,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25972,6 +26686,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26072,6 +26788,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26135,6 +26853,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26222,6 +26942,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26285,6 +27007,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26348,6 +27072,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26410,6 +27136,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26496,6 +27224,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26566,6 +27296,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26636,6 +27368,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26713,6 +27447,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26847,6 +27583,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26898,6 +27636,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26966,6 +27706,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27027,6 +27769,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27114,6 +27858,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27194,6 +27940,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27262,6 +28010,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27315,6 +28065,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27395,6 +28147,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27488,6 +28242,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27558,6 +28314,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27621,6 +28379,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27691,6 +28451,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27771,6 +28533,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27859,6 +28623,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27946,6 +28712,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28009,6 +28777,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28094,6 +28864,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28165,6 +28937,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28228,6 +29002,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28314,6 +29090,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28367,6 +29145,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28430,6 +29210,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28525,6 +29307,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28612,6 +29396,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28696,6 +29482,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28764,6 +29552,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28887,6 +29677,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28988,6 +29780,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29039,6 +29833,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29099,6 +29895,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29169,6 +29967,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29220,6 +30020,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29273,6 +30075,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29333,6 +30137,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29403,6 +30209,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29456,6 +30264,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29526,6 +30336,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29594,6 +30406,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29687,6 +30501,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29757,6 +30573,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29809,6 +30627,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29888,6 +30708,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29939,6 +30761,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29990,6 +30814,31 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [ + { + "Id": "3b4ca7e3-ad5a-4d5c-93cd-19ddb0aa5027", + "MaybeId": "3b4ca7e3-ad5a-4d5c-93cd-19ddb0aa5027", + "DeletedAt": null, + "VariantEntryId": "6485b811-120d-486b-bb97-425faa9008d9", + "VariantHeadword": "inde", + "MainEntryId": "425289f4-fbcd-4644-99d7-c9417e20fa66", + "MainSenseId": null, + "MainHeadword": "ande", + "Types": [ + { + "Id": "bbd4adb3-9af5-4542-94e8-b0932124108b", + "Name": { + "en": "Pronunciation Variant", + "pt": "Variac\u0327a\u0303o da Pronuncia" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": false, + "Comment": {} + } + ], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30041,6 +30890,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30109,6 +30960,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30261,6 +31114,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30312,6 +31167,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30363,6 +31220,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30433,6 +31292,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30486,6 +31347,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30546,6 +31409,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30621,6 +31486,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30672,6 +31539,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30740,6 +31609,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30791,6 +31662,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30859,6 +31732,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30927,6 +31802,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30978,6 +31855,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31038,6 +31917,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31089,6 +31970,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31149,6 +32032,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31209,6 +32094,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31356,6 +32243,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31448,6 +32337,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31499,6 +32390,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31567,6 +32460,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31654,6 +32549,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31722,6 +32619,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31783,6 +32682,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31844,6 +32745,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31931,6 +32834,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31994,6 +32899,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32079,6 +32986,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32199,6 +33108,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32260,6 +33171,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32401,6 +33314,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32462,6 +33377,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32554,6 +33471,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32622,6 +33541,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32700,6 +33621,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32780,6 +33703,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32848,6 +33773,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32926,6 +33853,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32987,6 +33916,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33057,6 +33988,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33125,6 +34058,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33193,6 +34128,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33261,6 +34198,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33329,6 +34268,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33406,6 +34347,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33545,6 +34488,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33630,6 +34575,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33698,6 +34645,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33771,6 +34720,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33854,6 +34805,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33922,6 +34875,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33973,6 +34928,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34041,6 +34998,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34173,6 +35132,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34264,6 +35225,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34325,6 +35288,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34393,6 +35358,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34517,6 +35484,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34611,6 +35580,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34698,6 +35669,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34759,6 +35732,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34894,6 +35869,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34957,6 +35934,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35098,6 +36077,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35195,6 +36176,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35280,6 +36263,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35350,6 +36335,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35445,6 +36432,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35496,6 +36485,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35581,6 +36572,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35649,6 +36642,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35712,6 +36707,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35773,6 +36770,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35859,6 +36858,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35936,6 +36937,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36021,6 +37024,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36089,6 +37094,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36159,6 +37166,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36231,6 +37240,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36318,6 +37329,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36411,6 +37424,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36498,6 +37513,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36566,6 +37583,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36650,6 +37669,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36730,6 +37751,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36793,6 +37816,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36856,6 +37881,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36975,6 +38002,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37054,6 +38083,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37117,6 +38148,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37187,6 +38220,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37255,6 +38290,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37319,6 +38356,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37380,6 +38419,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37441,6 +38482,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37502,6 +38545,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37582,6 +38627,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37645,6 +38692,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37722,6 +38771,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37775,6 +38826,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37878,6 +38931,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37941,6 +38996,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38031,6 +39088,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38147,6 +39206,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38219,6 +39280,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38282,6 +39345,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38352,6 +39417,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38422,6 +39489,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38483,6 +39552,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38570,6 +39641,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38717,6 +39790,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38840,6 +39915,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38908,6 +39985,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38959,6 +40038,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39010,6 +40091,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39122,6 +40205,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39317,6 +40402,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39385,6 +40472,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39472,6 +40561,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39544,6 +40635,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39631,6 +40724,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39724,6 +40819,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39786,6 +40883,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39839,6 +40938,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39947,6 +41048,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40097,6 +41200,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40167,6 +41272,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40237,6 +41344,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40300,6 +41409,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40361,6 +41472,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40424,6 +41537,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40492,6 +41607,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40585,6 +41702,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40678,6 +41797,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40746,6 +41867,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40825,6 +41948,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40911,6 +42036,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41021,6 +42148,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41081,6 +42210,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41151,6 +42282,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41276,6 +42409,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41370,6 +42505,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41443,6 +42580,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41537,6 +42676,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41621,6 +42762,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41691,6 +42834,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41785,6 +42930,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41865,6 +43012,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41928,6 +43077,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41991,6 +43142,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42051,6 +43204,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42131,6 +43286,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42194,6 +43351,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42288,6 +43447,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42416,6 +43577,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42479,6 +43642,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42558,6 +43723,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42628,6 +43795,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42698,6 +43867,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42792,6 +43963,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42855,6 +44028,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42935,6 +44110,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43015,6 +44192,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43088,6 +44267,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43151,6 +44332,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43214,6 +44397,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43301,6 +44486,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43369,6 +44556,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43451,6 +44640,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43519,6 +44710,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43612,6 +44805,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43699,6 +44894,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43779,6 +44976,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43849,6 +45048,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43919,6 +45120,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43989,6 +45192,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44059,6 +45264,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44122,6 +45329,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44190,6 +45399,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44258,6 +45469,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44345,6 +45558,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44438,6 +45653,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44501,6 +45718,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44573,6 +45792,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44686,6 +45907,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44803,6 +46026,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44894,6 +46119,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44964,6 +46191,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45027,6 +46256,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45115,6 +46346,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45217,6 +46450,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45287,6 +46522,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45350,6 +46587,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45420,6 +46659,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45497,6 +46738,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45558,6 +46801,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45621,6 +46866,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45684,6 +46931,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45744,6 +46993,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45835,6 +47086,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45913,6 +47166,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45976,6 +47231,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46100,6 +47357,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46151,6 +47410,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46271,6 +47532,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46341,6 +47604,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46404,6 +47669,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46455,6 +47722,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46525,6 +47794,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46588,6 +47859,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46680,6 +47953,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46743,6 +48018,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46794,6 +48071,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46845,6 +48124,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46915,6 +48196,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46994,6 +48277,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47097,6 +48382,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47160,6 +48447,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47230,6 +48519,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47296,6 +48587,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47376,6 +48669,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47444,6 +48739,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47567,6 +48864,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47742,6 +49041,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47828,6 +49129,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47913,6 +49216,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47976,6 +49281,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48037,6 +49344,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48090,6 +49399,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48141,6 +49452,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48202,6 +49515,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48327,6 +49642,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48406,6 +49723,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48469,6 +49788,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48566,6 +49887,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48675,6 +49998,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48738,6 +50063,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48919,6 +50246,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48987,6 +50316,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49076,6 +50407,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49160,6 +50493,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49237,6 +50572,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49331,6 +50668,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49425,6 +50764,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49497,6 +50838,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49632,6 +50975,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49692,6 +51037,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49753,6 +51100,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49821,6 +51170,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49898,6 +51249,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49977,6 +51330,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50047,6 +51402,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50117,6 +51474,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50178,6 +51537,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50241,6 +51602,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50304,6 +51667,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50376,6 +51741,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50494,6 +51861,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50571,6 +51940,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50648,6 +52019,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50718,6 +52091,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50779,6 +52154,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50840,6 +52217,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50927,6 +52306,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51006,6 +52387,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51067,6 +52450,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51138,6 +52523,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51208,6 +52595,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51278,6 +52667,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51348,6 +52739,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51458,6 +52851,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51538,6 +52933,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51618,6 +53015,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51705,6 +53104,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51792,6 +53193,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51845,6 +53248,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51915,6 +53320,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51985,6 +53392,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52036,6 +53445,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52115,6 +53526,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52195,6 +53608,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52280,6 +53695,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52348,6 +53765,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52416,6 +53835,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52501,6 +53922,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52571,6 +53994,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52648,6 +54073,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52737,6 +54164,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52822,6 +54251,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52892,6 +54323,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53022,6 +54455,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53102,6 +54537,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53182,6 +54619,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53250,6 +54689,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53313,6 +54754,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53393,6 +54836,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53456,6 +54901,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53526,6 +54973,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53612,6 +55061,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53732,6 +55183,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53785,6 +55238,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53855,6 +55310,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53918,6 +55375,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53988,6 +55447,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54058,6 +55519,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54137,6 +55600,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54188,6 +55653,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54258,6 +55725,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54326,6 +55795,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54420,6 +55891,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54500,6 +55973,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54570,6 +56045,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54633,6 +56110,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54727,6 +56206,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54807,6 +56288,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54858,6 +56341,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54919,6 +56404,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54989,6 +56476,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55059,6 +56548,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55129,6 +56620,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55199,6 +56692,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55262,6 +56757,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55341,6 +56838,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55411,6 +56910,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55474,6 +56975,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55517,6 +57020,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55647,6 +57152,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55744,6 +57251,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55814,6 +57323,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55884,6 +57395,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55954,6 +57467,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56119,6 +57634,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56198,6 +57715,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56261,6 +57780,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56331,6 +57852,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56399,6 +57922,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56462,6 +57987,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56515,6 +58042,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56585,6 +58114,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56688,6 +58219,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56758,6 +58291,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56821,6 +58356,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56891,6 +58428,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56961,6 +58500,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57024,6 +58565,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57118,6 +58661,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57181,6 +58726,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57244,6 +58791,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57345,6 +58894,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57423,6 +58974,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57517,6 +59070,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57587,6 +59142,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57681,6 +59238,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57751,6 +59310,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57838,6 +59399,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57908,6 +59471,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57978,6 +59543,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58048,6 +59615,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58118,6 +59687,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58197,6 +59768,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58260,6 +59833,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58330,6 +59905,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58443,6 +60020,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58515,6 +60094,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58585,6 +60166,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58663,6 +60246,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58741,6 +60326,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58792,6 +60379,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58867,6 +60456,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58942,6 +60533,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59010,6 +60603,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59078,6 +60673,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59225,6 +60822,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59334,6 +60933,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59503,6 +61104,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59589,6 +61192,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59671,6 +61276,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59741,6 +61348,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59863,6 +61472,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59943,6 +61554,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60013,6 +61626,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60083,6 +61698,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60146,6 +61763,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60209,6 +61828,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60329,6 +61950,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60416,6 +62039,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60503,6 +62128,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60610,6 +62237,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60690,6 +62319,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60760,6 +62391,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60852,6 +62485,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60922,6 +62557,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60985,6 +62622,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61064,6 +62703,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61134,6 +62775,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61212,6 +62855,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61275,6 +62920,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61338,6 +62985,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61400,6 +63049,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61497,6 +63148,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61610,6 +63263,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61680,6 +63335,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61800,6 +63457,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61880,6 +63539,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61950,6 +63611,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62013,6 +63676,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62093,6 +63758,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62163,6 +63830,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62257,6 +63926,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62310,6 +63981,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62423,6 +64096,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62515,6 +64190,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62633,6 +64310,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62712,6 +64391,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62782,6 +64463,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62845,6 +64528,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62915,6 +64600,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63002,6 +64689,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63065,6 +64754,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63128,6 +64819,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63198,6 +64891,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63249,6 +64944,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63312,6 +65009,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63390,6 +65089,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63484,6 +65185,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63554,6 +65257,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63617,6 +65322,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63704,6 +65411,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63783,6 +65492,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63853,6 +65564,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63950,6 +65663,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64046,6 +65761,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64126,6 +65843,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64213,6 +65932,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64283,6 +66004,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64334,6 +66057,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64711,6 +66436,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64773,6 +66500,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64841,6 +66570,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64909,6 +66640,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64993,6 +66726,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65078,6 +66813,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65139,6 +66876,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65219,6 +66958,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65289,6 +67030,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65359,6 +67102,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65422,6 +67167,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65492,6 +67239,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65562,6 +67311,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65632,6 +67383,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65702,6 +67455,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65765,6 +67520,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65826,6 +67583,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65889,6 +67648,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65985,6 +67746,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66046,6 +67809,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66109,6 +67874,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66161,6 +67928,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66229,6 +67998,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66290,6 +68061,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66378,6 +68151,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66455,6 +68230,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66515,6 +68292,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66566,6 +68345,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66627,6 +68408,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66695,6 +68478,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66842,6 +68627,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66912,6 +68699,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67046,6 +68835,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67133,6 +68924,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67266,6 +69059,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67348,6 +69143,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67418,6 +69215,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67499,6 +69298,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67550,6 +69351,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67593,6 +69396,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67710,6 +69515,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67763,6 +69570,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67840,6 +69649,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67918,6 +69729,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67979,6 +69792,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68056,6 +69871,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68126,6 +69943,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68220,6 +70039,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68290,6 +70111,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68360,6 +70183,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68485,6 +70310,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68570,6 +70397,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68621,6 +70450,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68689,6 +70520,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68757,6 +70590,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68834,6 +70669,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69010,6 +70847,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69094,6 +70933,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69188,6 +71029,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69267,6 +71110,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69335,6 +71180,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69414,6 +71261,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69508,6 +71357,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69627,6 +71478,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69700,6 +71553,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69768,6 +71623,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69838,6 +71695,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69901,6 +71760,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69986,6 +71847,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70083,6 +71946,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70162,6 +72027,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70230,6 +72097,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70300,6 +72169,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70363,6 +72234,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70433,6 +72306,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70501,6 +72376,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70588,6 +72465,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70656,6 +72535,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70726,6 +72607,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70843,6 +72726,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70995,6 +72880,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71065,6 +72952,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71144,6 +73033,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71223,6 +73114,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71293,6 +73186,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71391,6 +73286,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71461,6 +73358,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71522,6 +73421,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71583,6 +73484,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71677,6 +73580,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71740,6 +73645,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71820,6 +73727,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71890,6 +73799,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71960,6 +73871,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72030,6 +73943,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72121,6 +74036,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72191,6 +74108,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72270,6 +74189,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72349,6 +74270,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72417,6 +74340,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72520,6 +74445,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72581,6 +74508,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72644,6 +74573,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72712,6 +74643,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72784,6 +74717,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72864,6 +74799,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72927,6 +74864,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72990,6 +74929,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73060,6 +75001,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73214,6 +75157,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73282,6 +75227,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73368,6 +75315,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73438,6 +75387,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73501,6 +75452,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73571,6 +75524,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73651,6 +75606,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73713,6 +75670,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73804,6 +75763,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73865,6 +75826,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73928,6 +75891,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74018,6 +75983,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74081,6 +76048,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74144,6 +76113,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74207,6 +76178,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74277,6 +76250,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74347,6 +76322,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74417,6 +76394,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74504,6 +76483,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74594,6 +76575,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74683,6 +76666,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74746,6 +76731,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74825,6 +76812,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74895,6 +76884,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75012,6 +77003,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75092,6 +77085,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75162,6 +77157,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75232,6 +77229,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75295,6 +77294,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75365,6 +77366,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75435,6 +77438,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75498,6 +77503,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75549,6 +77556,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75634,6 +77643,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75721,6 +77732,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75808,6 +77821,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75878,6 +77893,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75939,6 +77956,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76024,6 +78043,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76094,6 +78115,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76157,6 +78180,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76227,6 +78252,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76290,6 +78317,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76360,6 +78389,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76453,6 +78484,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76516,6 +78549,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76579,6 +78614,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76656,6 +78693,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76719,6 +78758,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76782,6 +78823,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76871,6 +78914,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76939,6 +78984,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77007,6 +79054,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77077,6 +79126,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77147,6 +79198,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77210,6 +79263,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77278,6 +79333,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77348,6 +79405,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77411,6 +79470,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77479,6 +79540,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77570,6 +79633,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77633,6 +79698,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77722,6 +79789,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77775,6 +79844,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77854,6 +79925,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77945,6 +80018,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78015,6 +80090,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78068,6 +80145,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78129,6 +80208,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78220,6 +80301,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78298,6 +80381,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78395,6 +80480,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78492,6 +80579,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78578,6 +80667,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78646,6 +80737,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78732,6 +80825,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78836,6 +80931,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78925,6 +81022,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78993,6 +81092,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79063,6 +81164,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79142,6 +81245,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79212,6 +81317,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79291,6 +81398,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79359,6 +81468,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79420,6 +81531,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79488,6 +81601,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79551,6 +81666,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79619,6 +81736,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79696,6 +81815,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79764,6 +81885,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79835,6 +81958,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79903,6 +82028,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79975,6 +82102,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80036,6 +82165,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80097,6 +82228,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80165,6 +82298,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80243,6 +82378,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80328,6 +82465,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80420,6 +82559,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80481,6 +82622,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80549,6 +82692,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80617,6 +82762,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80668,6 +82815,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80729,6 +82878,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80797,6 +82948,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80868,6 +83021,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80971,6 +83126,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81041,6 +83198,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81109,6 +83268,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81186,6 +83347,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81300,6 +83463,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81370,6 +83535,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81431,6 +83598,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81499,6 +83668,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81586,6 +83757,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81656,6 +83829,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81724,6 +83899,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81792,6 +83969,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81920,6 +84099,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81991,6 +84172,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82068,6 +84251,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82153,6 +84338,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82238,6 +84425,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82318,6 +84507,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82388,6 +84579,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82466,6 +84659,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82537,6 +84732,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82672,6 +84869,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82770,6 +84969,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82831,6 +85032,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82901,6 +85104,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82969,6 +85174,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83048,6 +85255,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83101,6 +85310,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83169,6 +85380,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83230,6 +85443,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83293,6 +85508,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83356,6 +85573,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83426,6 +85645,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83575,6 +85796,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83628,6 +85851,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83715,6 +85940,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83778,6 +86005,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83848,6 +86077,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83911,6 +86142,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83981,6 +86214,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84044,6 +86279,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84114,6 +86351,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84267,6 +86506,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84337,6 +86578,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84407,6 +86650,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84500,6 +86745,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84596,6 +86843,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84666,6 +86915,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84719,6 +86970,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84789,6 +87042,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84874,6 +87129,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85062,6 +87319,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85113,6 +87372,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85215,6 +87476,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85285,6 +87548,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85376,6 +87641,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85482,6 +87749,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85552,6 +87821,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85629,6 +87900,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85729,6 +88002,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85790,6 +88065,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85843,6 +88120,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85934,6 +88213,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85985,6 +88266,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86048,6 +88331,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86116,6 +88401,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86185,6 +88472,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86248,6 +88537,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86342,6 +88633,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86433,6 +88726,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86503,6 +88798,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86573,6 +88870,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86636,6 +88935,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86706,6 +89007,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86769,6 +89072,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86903,6 +89208,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86996,6 +89303,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87089,6 +89398,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87150,6 +89461,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87218,6 +89531,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87312,6 +89627,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87380,6 +89697,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87443,6 +89762,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87511,6 +89832,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87593,6 +89916,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87644,6 +89969,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87704,6 +90031,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87780,6 +90109,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87843,6 +90174,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87913,6 +90246,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87985,6 +90320,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88055,6 +90392,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88298,6 +90637,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88382,6 +90723,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88452,6 +90795,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88520,6 +90865,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88609,6 +90956,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88679,6 +91028,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88732,6 +91083,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88811,6 +91164,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88881,6 +91236,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88951,6 +91308,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89021,6 +91380,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89091,6 +91452,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89195,6 +91558,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89258,6 +91623,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89328,6 +91695,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89398,6 +91767,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89471,6 +91842,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89589,6 +91962,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89652,6 +92027,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89722,6 +92099,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89815,6 +92194,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89885,6 +92266,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89964,6 +92347,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90034,6 +92419,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90128,6 +92515,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90198,6 +92587,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90266,6 +92657,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90346,6 +92739,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90418,6 +92813,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90481,6 +92878,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90551,6 +92950,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90614,6 +93015,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90687,6 +93090,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90774,6 +93179,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90842,6 +93249,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90946,6 +93355,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91032,6 +93443,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91095,6 +93508,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91158,6 +93573,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91228,6 +93645,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91298,6 +93717,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91378,6 +93799,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91458,6 +93881,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91528,6 +93953,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91589,6 +94016,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91712,6 +94141,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91791,6 +94222,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91938,6 +94371,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91989,6 +94424,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92066,6 +94503,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92157,6 +94596,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92244,6 +94685,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92324,6 +94767,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92392,6 +94837,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92455,6 +94902,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92508,6 +94957,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92609,6 +95060,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92755,6 +95208,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92827,6 +95282,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92907,6 +95364,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92987,6 +95446,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93074,6 +95535,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93175,6 +95638,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93245,6 +95710,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93400,6 +95867,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93480,6 +95949,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93571,6 +96042,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93641,6 +96114,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93709,6 +96184,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93772,6 +96249,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93840,6 +96319,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93908,6 +96389,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93987,6 +96470,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94081,6 +96566,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94151,6 +96638,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94221,6 +96710,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94291,6 +96782,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94361,6 +96854,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94424,6 +96919,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94487,6 +96984,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94555,6 +97054,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94625,6 +97126,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94695,6 +97198,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94788,6 +97293,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94856,6 +97363,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94917,6 +97426,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94997,6 +97508,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95050,6 +97563,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95111,6 +97626,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95195,6 +97712,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95265,6 +97784,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95335,6 +97856,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95405,6 +97928,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95475,6 +98000,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95545,6 +98072,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95617,6 +98146,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95680,6 +98211,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95752,6 +98285,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95848,6 +98383,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95911,6 +98448,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96036,6 +98575,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96097,6 +98638,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96191,6 +98734,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96252,6 +98797,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96322,6 +98869,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96401,6 +98950,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96488,6 +99039,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96556,6 +99109,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96624,6 +99179,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96675,6 +99232,31 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [ + { + "Id": "be2fc635-b543-4267-9dbc-b1fc96711f48", + "MaybeId": "be2fc635-b543-4267-9dbc-b1fc96711f48", + "DeletedAt": null, + "VariantEntryId": "d03f39d0-10ef-4d35-b13b-a965124a9230", + "VariantHeadword": "sia", + "MainEntryId": "05640c89-1b5b-463b-83e9-778928d23fc7", + "MainSenseId": null, + "MainHeadword": "siya", + "Types": [ + { + "Id": "0c4663b3-4d9a-47af-b9a1-c8565d8112ed", + "Name": { + "en": "Spelling Variant", + "pt": "Variac\u0327a\u0303o de Soletrac\u0327a\u0303o" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": false, + "Comment": {} + } + ], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96752,6 +99334,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96815,6 +99399,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96887,6 +99473,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96937,6 +99525,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97005,6 +99595,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97098,6 +99690,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97168,6 +99762,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97231,6 +99827,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97375,6 +99973,31 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [ + { + "Id": "be2fc635-b543-4267-9dbc-b1fc96711f48", + "MaybeId": "be2fc635-b543-4267-9dbc-b1fc96711f48", + "DeletedAt": null, + "VariantEntryId": "d03f39d0-10ef-4d35-b13b-a965124a9230", + "VariantHeadword": "sia", + "MainEntryId": "05640c89-1b5b-463b-83e9-778928d23fc7", + "MainSenseId": null, + "MainHeadword": "siya", + "Types": [ + { + "Id": "0c4663b3-4d9a-47af-b9a1-c8565d8112ed", + "Name": { + "en": "Spelling Variant", + "pt": "Variac\u0327a\u0303o de Soletrac\u0327a\u0303o" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": false, + "Comment": {} + } + ], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97469,6 +100092,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97532,6 +100157,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97595,6 +100222,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97720,6 +100349,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97806,6 +100437,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97869,6 +100502,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97955,6 +100590,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98025,6 +100662,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98095,6 +100734,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98172,6 +100813,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98242,6 +100885,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98303,6 +100948,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98373,6 +101020,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98443,6 +101092,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98513,6 +101164,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98583,6 +101236,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98636,6 +101291,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98704,6 +101361,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98774,6 +101433,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98844,6 +101505,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98912,6 +101575,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98980,6 +101645,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -99043,6 +101710,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -99106,6 +101775,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -99176,6 +101847,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -99253,6 +101926,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -99504,6 +102179,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -99567,6 +102244,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -99760,6 +102439,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -99828,6 +102509,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100009,6 +102692,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100071,6 +102756,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100134,6 +102821,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100197,6 +102886,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100250,6 +102941,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100335,6 +103028,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100411,6 +103106,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100481,6 +103178,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100544,6 +103243,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100631,6 +103332,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100701,6 +103404,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100771,6 +103476,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100868,6 +103575,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100955,6 +103664,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101023,6 +103734,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101084,6 +103797,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101156,6 +103871,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101216,6 +103933,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101303,6 +104022,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101371,6 +104092,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101422,6 +104145,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101494,6 +104219,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101574,6 +104301,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101652,6 +104381,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101720,6 +104451,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101799,6 +104532,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101862,6 +104597,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101925,6 +104662,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102028,6 +104767,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102098,6 +104839,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102161,6 +104904,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102214,6 +104959,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102331,6 +105078,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102392,6 +105141,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102460,6 +105211,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102521,6 +105274,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102608,6 +105363,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102676,6 +105433,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102737,6 +105496,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102800,6 +105561,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102860,6 +105623,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102937,6 +105702,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103029,6 +105796,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103113,6 +105882,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103164,6 +105935,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103256,6 +106029,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103319,6 +106094,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103370,6 +106147,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103422,6 +106201,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103504,6 +106285,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103605,6 +106388,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103699,6 +106484,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103762,6 +106549,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103832,6 +106621,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103912,6 +106703,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103992,6 +106785,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104045,6 +106840,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104130,6 +106927,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104183,6 +106982,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104234,6 +107035,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104350,6 +107153,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104485,6 +107290,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104553,6 +107360,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104702,6 +107511,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104765,6 +107576,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104816,6 +107629,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104901,6 +107716,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104996,6 +107813,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105057,6 +107876,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105125,6 +107946,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105188,6 +108011,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105258,6 +108083,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105394,6 +108221,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105464,6 +108293,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105534,6 +108365,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105602,6 +108435,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105681,6 +108516,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105751,6 +108588,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105821,6 +108660,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105874,6 +108715,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105946,6 +108789,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106009,6 +108854,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106081,6 +108928,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106192,6 +109041,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106360,6 +109211,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106428,6 +109281,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106551,6 +109406,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106650,6 +109507,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106701,6 +109560,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106801,6 +109662,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106890,6 +109753,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106960,6 +109825,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107030,6 +109897,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107098,6 +109967,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107166,6 +110037,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107234,6 +110107,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107347,6 +110222,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107424,6 +110301,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107508,6 +110387,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107571,6 +110452,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107639,6 +110522,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107707,6 +110592,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107785,6 +110672,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107871,6 +110760,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107922,6 +110813,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108014,6 +110907,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108065,6 +110960,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108142,6 +111039,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108202,6 +111101,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108255,6 +111156,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108318,6 +111221,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108403,6 +111308,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108454,6 +111361,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108517,6 +111426,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108594,6 +111505,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108674,6 +111587,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108760,6 +111675,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108823,6 +111740,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108891,6 +111810,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108954,6 +111875,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109005,6 +111928,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109075,6 +112000,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109162,6 +112089,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109239,6 +112168,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109290,6 +112221,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109353,6 +112286,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109421,6 +112356,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109532,6 +112469,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109633,6 +112572,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109718,6 +112659,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109803,6 +112746,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109890,6 +112835,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109960,6 +112907,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110030,6 +112979,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110100,6 +113051,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110168,6 +113121,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110231,6 +113186,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110361,6 +113318,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110429,6 +113388,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110499,6 +113460,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110596,6 +113559,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110690,6 +113655,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110741,6 +113708,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110811,6 +113780,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110890,6 +113861,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110984,6 +113957,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111035,6 +114010,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111098,6 +114075,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111159,6 +114138,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111229,6 +114210,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111309,6 +114292,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111372,6 +114357,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111489,6 +114476,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111561,6 +114550,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111696,6 +114687,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111764,6 +114757,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111834,6 +114829,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111902,6 +114899,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111970,6 +114969,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112031,6 +115032,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112082,6 +115085,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112143,6 +115148,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112223,6 +115230,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112291,6 +115300,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112342,6 +115353,31 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [ + { + "Id": "dafa2dec-2fe6-4c6c-a07c-121de360d7b1", + "MaybeId": "dafa2dec-2fe6-4c6c-a07c-121de360d7b1", + "DeletedAt": null, + "VariantEntryId": "564fffa0-0aec-46ab-8d41-cbd30be82be1", + "VariantHeadword": "yenda", + "MainEntryId": "2bde7e2c-9ddc-4de0-b416-c24c0710c2fa", + "MainSenseId": null, + "MainHeadword": "enda", + "Types": [ + { + "Id": "bbd4adb3-9af5-4542-94e8-b0932124108b", + "Name": { + "en": "Pronunciation Variant", + "pt": "Variac\u0327a\u0303o da Pronuncia" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": false, + "Comment": {} + } + ], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112412,6 +115448,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112480,6 +115518,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112564,6 +115604,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112627,6 +115669,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112690,6 +115734,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112753,6 +115799,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112900,6 +115948,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -113031,6 +116081,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -113110,6 +116162,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -113173,6 +116227,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -113236,6 +116292,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -113306,6 +116364,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -113369,6 +116429,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -130490,5 +133552,91 @@ "Order": 2 } ] - } + }, + "VariantTypes": [ + { + "Id": "024b62c9-93b3-41a0-ab19-587a0030219a", + "Name": { + "en": "Dialectal Variant", + "pt": "Variac\u0327a\u0303o Dialectal" + }, + "DeletedAt": null + }, + { + "Id": "86dd5eb3-b90a-4296-afd3-60c312b63a9a", + "Name": { + "en": "Semantic Dialect Variant", + "pt": "Variac\u0327a\u0303o Sema\u0302ntica" + }, + "DeletedAt": null + }, + { + "Id": "bbd4adb3-9af5-4542-94e8-b0932124108b", + "Name": { + "en": "Pronunciation Variant", + "pt": "Variac\u0327a\u0303o da Pronuncia" + }, + "DeletedAt": null + }, + { + "Id": "c7fe4c4a-abaf-4a0b-b633-d3e73f4057ee", + "Name": { + "en": "Lexical Dialect Variant", + "pt": "Variac\u0327a\u0303o Lexical" + }, + "DeletedAt": null + }, + { + "Id": "4343b1ef-b54f-4fa4-9998-271319a6d74c", + "Name": { + "en": "Free Variant", + "pt": "Variac\u0327a\u0303o livre" + }, + "DeletedAt": null + }, + { + "Id": "fcc61889-00e6-467b-9cf0-8c4f48b9a486", + "Name": { + "en": "Inflectional Variant", + "pt": "Variac\u0327a\u0303o Inflectional" + }, + "DeletedAt": null + }, + { + "Id": "0c4663b3-4d9a-47af-b9a1-c8565d8112ed", + "Name": { + "en": "Spelling Variant", + "pt": "Variac\u0327a\u0303o de Soletrac\u0327a\u0303o" + }, + "DeletedAt": null + }, + { + "Id": "01d4fbc1-3b0c-4f52-9163-7ab0d4f4711c", + "Name": { + "en": "Irregularly Inflected Form" + }, + "DeletedAt": null + }, + { + "Id": "a32f1d1c-4832-46a2-9732-c2276d6547e8", + "Name": { + "en": "Plural" + }, + "DeletedAt": null + }, + { + "Id": "837ebe72-8c1d-4864-95d9-fa313c499d78", + "Name": { + "en": "Past" + }, + "DeletedAt": null + }, + { + "Id": "3942addb-99fd-43e9-ab7d-99025ceb0d4e", + "Name": { + "en": "Unspecified Variant" + }, + "DeletedAt": null + } + ] } \ No newline at end of file diff --git a/backend/FwLite/FwLiteProjectSync/CrdtFwdataProjectSyncService.cs b/backend/FwLite/FwLiteProjectSync/CrdtFwdataProjectSyncService.cs index 588803caba..63fea51dde 100644 --- a/backend/FwLite/FwLiteProjectSync/CrdtFwdataProjectSyncService.cs +++ b/backend/FwLite/FwLiteProjectSync/CrdtFwdataProjectSyncService.cs @@ -134,6 +134,12 @@ private async Task SyncInternal(IMiniLcmApi crdtApi, IMiniLcmApi fwd crdtChanges += await ComplexFormTypeSync.Sync(projectSnapshot.ComplexFormTypes, currentFwDataComplexFormTypes, crdtApi); fwdataChanges += await ComplexFormTypeSync.Sync(currentFwDataComplexFormTypes, await crdtApi.GetComplexFormTypes().ToArrayAsync(), fwdataApi); + var currentFwDataVariantTypes = await fwdataApi.GetVariantTypes().ToArrayAsync(); + // Legacy snapshots predate variant support and deserialize with an empty list; the CRDT + // genuinely has no variant types yet, so that baseline correctly imports FwData's list. + crdtChanges += await VariantTypeSync.Sync(projectSnapshot.VariantTypes, currentFwDataVariantTypes, crdtApi); + fwdataChanges += await VariantTypeSync.Sync(currentFwDataVariantTypes, await crdtApi.GetVariantTypes().ToArrayAsync(), fwdataApi); + var currentFwDataMorphTypes = await fwdataApi.GetMorphTypes().ToArrayAsync(); crdtChanges += await MorphTypeSync.Sync(projectSnapshot.MorphTypes, currentFwDataMorphTypes, crdtApi); fwdataChanges += await MorphTypeSync.Sync(currentFwDataMorphTypes, await crdtApi.GetMorphTypes().ToArrayAsync(), fwdataApi); diff --git a/backend/FwLite/FwLiteProjectSync/DryRunMiniLcmApi.cs b/backend/FwLite/FwLiteProjectSync/DryRunMiniLcmApi.cs index 61ea258c89..057855673e 100644 --- a/backend/FwLite/FwLiteProjectSync/DryRunMiniLcmApi.cs +++ b/backend/FwLite/FwLiteProjectSync/DryRunMiniLcmApi.cs @@ -126,6 +126,31 @@ public Task DeleteComplexFormType(Guid id) return Task.CompletedTask; } + public Task CreateVariantType(VariantType variantType) + { + DryRunRecords.Add(new DryRunRecord(nameof(CreateVariantType), + $"Create variant type {variantType.Name}")); + return Task.FromResult(variantType); + } + + public async Task UpdateVariantType(Guid id, UpdateObjectInput update) + { + DryRunRecords.Add(new DryRunRecord(nameof(UpdateVariantType), $"Update variant type {id}")); + return await _api.GetVariantType(id) ?? throw new NullReferenceException($"unable to find variant type with id {id}"); + } + + public Task UpdateVariantType(VariantType before, VariantType after, IMiniLcmApi? api) + { + DryRunRecords.Add(new DryRunRecord(nameof(UpdateVariantType), $"Update variant type {after.Id}")); + return Task.FromResult(after); + } + + public Task DeleteVariantType(Guid id) + { + DryRunRecords.Add(new DryRunRecord(nameof(DeleteVariantType), $"Delete variant type {id}")); + return Task.CompletedTask; + } + public Task CreateMorphType(MorphType morphType) { DryRunRecords.Add(new DryRunRecord(nameof(CreateMorphType), $"Create morph type {morphType.Kind} ({morphType.Id})")); @@ -152,7 +177,7 @@ public Task CreateEntry(Entry entry, CreateEntryOptions? options) if (options.IncludeComplexFormsAndComponents) return Task.FromResult(entry); else - return Task.FromResult(entry with { Components = [], ComplexForms = [] }); + return Task.FromResult(entry with { Components = [], ComplexForms = [], VariantOf = [], Variants = [] }); } public Task UpdateEntry(Guid id, UpdateObjectInput update) @@ -364,6 +389,41 @@ public async Task AddComplexFormType(Guid entryId, Guid complexFormTypeId) await Task.CompletedTask; } + public Task CreateVariant(Variant variant) + { + DryRunRecords.Add(new DryRunRecord(nameof(CreateVariant), $"Create variant link {VariantName(variant)}")); + return Task.FromResult(variant); + } + + public Task UpdateVariant(Variant before, Variant after, IMiniLcmApi? api = null) + { + DryRunRecords.Add(new DryRunRecord(nameof(UpdateVariant), $"Update variant link {VariantName(after)}")); + return Task.FromResult(after); + } + + public Task DeleteVariant(Variant variant) + { + DryRunRecords.Add(new DryRunRecord(nameof(DeleteVariant), $"Delete variant link {VariantName(variant)}")); + return Task.CompletedTask; + } + + public Task AddVariantType(Variant variant, Guid variantTypeId) + { + DryRunRecords.Add(new DryRunRecord(nameof(AddVariantType), $"Add variant type {variantTypeId} to variant link {VariantName(variant)}")); + return Task.CompletedTask; + } + + public Task RemoveVariantType(Variant variant, Guid variantTypeId) + { + DryRunRecords.Add(new DryRunRecord(nameof(RemoveVariantType), $"Remove variant type {variantTypeId} from variant link {VariantName(variant)}")); + return Task.CompletedTask; + } + + private static string VariantName(Variant variant) + { + return $"{variant.VariantHeadword ?? variant.VariantEntryId.ToString()} -> {variant.MainHeadword ?? variant.MainEntryId.ToString()}{(variant.MainSenseId is null ? "" : $" (sense {variant.MainSenseId})")}"; + } + public async Task CreatePublication(Publication pub) { DryRunRecords.Add(new DryRunRecord(nameof(CreatePublication), $"Create publication {pub.Id}")); @@ -440,6 +500,24 @@ public Task SubmitCreateComplexFormComponent(ComplexFormComponent complexFormCom return Task.CompletedTask; } + public Task SubmitCreateVariant(Variant variant) + { + DryRunRecords.Add(new DryRunRecord(nameof(SubmitCreateVariant), $"Create variant link {VariantName(variant)}")); + return Task.CompletedTask; + } + + public Task SubmitUpdateVariant(Variant variant, UpdateObjectInput update) + { + DryRunRecords.Add(new DryRunRecord(nameof(SubmitUpdateVariant), $"Update variant link {VariantName(variant)}")); + return Task.CompletedTask; + } + + public Task SubmitUpdateVariantType(Guid id, UpdateObjectInput update) + { + DryRunRecords.Add(new DryRunRecord(nameof(SubmitUpdateVariantType), $"Update variant type {id}")); + return Task.CompletedTask; + } + public Task SubmitUpdatePartOfSpeech(Guid id, UpdateObjectInput update) { DryRunRecords.Add(new DryRunRecord(nameof(SubmitUpdatePartOfSpeech), $"Update part of speech {id}")); diff --git a/backend/FwLite/FwLiteProjectSync/Import/ResumableImportApi.cs b/backend/FwLite/FwLiteProjectSync/Import/ResumableImportApi.cs index 942b81f900..159c6de0dd 100644 --- a/backend/FwLite/FwLiteProjectSync/Import/ResumableImportApi.cs +++ b/backend/FwLite/FwLiteProjectSync/Import/ResumableImportApi.cs @@ -58,6 +58,10 @@ async Task IMiniLcmWriteApi.CreateComplexFormType(ComplexFormTy { return await HasCreated(complexFormType, _api.GetComplexFormTypes(), () => _api.CreateComplexFormType(complexFormType)); } + async Task IMiniLcmWriteApi.CreateVariantType(VariantType variantType) + { + return await HasCreated(variantType, _api.GetVariantTypes(), () => _api.CreateVariantType(variantType)); + } async Task IMiniLcmWriteApi.CreateSemanticDomain(SemanticDomain semanticDomain) { return await HasCreated(semanticDomain, _api.GetSemanticDomains(), () => _api.CreateSemanticDomain(semanticDomain)); diff --git a/backend/FwLite/FwLiteShared/Services/MiniLcmApiNotifyWrapper.cs b/backend/FwLite/FwLiteShared/Services/MiniLcmApiNotifyWrapper.cs index ebf9048bd3..d8642e6de5 100644 --- a/backend/FwLite/FwLiteShared/Services/MiniLcmApiNotifyWrapper.cs +++ b/backend/FwLite/FwLiteShared/Services/MiniLcmApiNotifyWrapper.cs @@ -136,6 +136,38 @@ async Task IMiniLcmWriteApi.DeleteComplexFormComponent(ComplexFormComponent comp NotifyEntriesChanged(complexFormComponent.ComplexFormEntryId, complexFormComponent.ComponentEntryId); } + async Task IMiniLcmWriteApi.CreateVariant(Variant variant) + { + var result = await _api.CreateVariant(variant); + NotifyEntriesChanged(result.VariantEntryId, result.MainEntryId); + return result; + } + + async Task IMiniLcmWriteApi.UpdateVariant(Variant before, Variant after, IMiniLcmApi? api) + { + var result = await _api.UpdateVariant(before, after, api ?? this); + NotifyEntriesChanged(result.VariantEntryId, result.MainEntryId); + return result; + } + + async Task IMiniLcmWriteApi.DeleteVariant(Variant variant) + { + await _api.DeleteVariant(variant); + NotifyEntriesChanged(variant.VariantEntryId, variant.MainEntryId); + } + + async Task IMiniLcmWriteApi.AddVariantType(Variant variant, Guid variantTypeId) + { + await _api.AddVariantType(variant, variantTypeId); + NotifyEntriesChanged(variant.VariantEntryId, variant.MainEntryId); + } + + async Task IMiniLcmWriteApi.RemoveVariantType(Variant variant, Guid variantTypeId) + { + await _api.RemoveVariantType(variant, variantTypeId); + NotifyEntriesChanged(variant.VariantEntryId, variant.MainEntryId); + } + async Task IMiniLcmWriteApi.DeleteEntry(Guid id) { await _api.DeleteEntry(id); diff --git a/backend/FwLite/FwLiteShared/Services/MiniLcmJsInvokable.cs b/backend/FwLite/FwLiteShared/Services/MiniLcmJsInvokable.cs index a56aa4817e..69e243ee0e 100644 --- a/backend/FwLite/FwLiteShared/Services/MiniLcmJsInvokable.cs +++ b/backend/FwLite/FwLiteShared/Services/MiniLcmJsInvokable.cs @@ -322,6 +322,48 @@ public async Task RemoveComplexFormType(Guid entryId, Guid complexFormTypeId) OnDataChanged(); } + [JSInvokable] + public ValueTask GetVariantTypes() + { + return _wrappedApi.GetVariantTypes().ToArrayAsync(); + } + + [JSInvokable] + [TsFunction(Type = "Promise")] + public Task GetVariantType(Guid id) + { + return _wrappedApi.GetVariantType(id); + } + + [JSInvokable] + public async Task CreateVariant(Variant variant) + { + var createdVariant = await _wrappedApi.CreateVariant(variant); + OnDataChanged(); + return createdVariant; + } + + [JSInvokable] + public async Task DeleteVariant(Variant variant) + { + await _wrappedApi.DeleteVariant(variant); + OnDataChanged(); + } + + [JSInvokable] + public async Task AddVariantType(Variant variant, Guid variantTypeId) + { + await _wrappedApi.AddVariantType(variant, variantTypeId); + OnDataChanged(); + } + + [JSInvokable] + public async Task RemoveVariantType(Variant variant, Guid variantTypeId) + { + await _wrappedApi.RemoveVariantType(variant, variantTypeId); + OnDataChanged(); + } + [JSInvokable] public async Task CreateSense(Guid entryId, Sense sense) { diff --git a/backend/FwLite/FwLiteWeb/Hubs/MiniLcmApiHubBase.cs b/backend/FwLite/FwLiteWeb/Hubs/MiniLcmApiHubBase.cs index 1d79927f9e..220def7307 100644 --- a/backend/FwLite/FwLiteWeb/Hubs/MiniLcmApiHubBase.cs +++ b/backend/FwLite/FwLiteWeb/Hubs/MiniLcmApiHubBase.cs @@ -48,6 +48,11 @@ public IAsyncEnumerable GetComplexFormTypes() return _miniLcmApi.GetComplexFormTypes(); } + public IAsyncEnumerable GetVariantTypes() + { + return _miniLcmApi.GetVariantTypes(); + } + public virtual async Task UpdateMorphType(Guid id, JsonPatchDocument update) { var updatedMorphType = await _miniLcmApi.UpdateMorphType(id, new UpdateObjectInput(update)); diff --git a/backend/FwLite/LcmCrdt.Tests/Changes/ChangeDeserializationRegressionData.latest.verified.txt b/backend/FwLite/LcmCrdt.Tests/Changes/ChangeDeserializationRegressionData.latest.verified.txt index b28168b1ba..ced3095eae 100644 --- a/backend/FwLite/LcmCrdt.Tests/Changes/ChangeDeserializationRegressionData.latest.verified.txt +++ b/backend/FwLite/LcmCrdt.Tests/Changes/ChangeDeserializationRegressionData.latest.verified.txt @@ -1293,5 +1293,210 @@ { "$type": "SetMainPublicationChange", "EntityId": "c775e310-fc5c-6d01-5a02-146d579a88e5" + }, + { + "$type": "jsonPatch:VariantType", + "PatchDocument": [], + "EntityId": "7f36b194-09c4-1938-164e-820359470a8d" + }, + { + "$type": "jsonPatch:Variant", + "PatchDocument": [], + "EntityId": "2c441083-20d5-f98e-bd30-453dee57152e" + }, + { + "$type": "delete:VariantType", + "EntityId": "c76a3a53-8fa6-d2c3-df38-a742996e450e" + }, + { + "$type": "delete:Variant", + "EntityId": "a33e0d22-ca25-baaa-b103-61595e8d8443" + }, + { + "$type": "AddVariantChange", + "VariantEntryId": "6d309276-3cdc-3d59-7564-174855c2a66d", + "MainEntryId": "4ee3936e-f7bb-7bff-43ba-57a83f6e9090", + "MainSenseId": "51be3bfc-8d80-10f3-04a0-2f1b6b02a54a", + "Types": [ + { + "Id": "d0d4caf3-7fcf-3cca-9044-fd1c8874a40e", + "Name": { + "bge": "Tactics", + "lla": "teal" + }, + "DeletedAt": null + }, + { + "Id": "eccfe67c-656e-b7a1-61f8-16fd6115f982", + "Name": { + "mrs": "ability" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": true, + "Comment": { + "dzl": { + "Spans": [ + { + "Text": "Home Loan Account", + "Ws": "tdd", + "Bold": "Invert", + "FontSize": -635375918, + "ForeColor": "#FF0000", + "Tags": [ + "284e5f58-55ce-28ae-b48a-2c683cfb7cd9" + ] + }, + { + "Text": "calculate", + "Ws": "dzl", + "Tags": [ + "f58baf48-036d-457f-a52f-359d4b662ee4" + ] + }, + { + "Text": "XML", + "Ws": "dzl", + "Tags": [ + "6f8f8ed2-6ada-498e-8bbf-1516e1a38946" + ] + } + ] + }, + "poh": { + "Spans": [ + { + "Text": "navigating", + "Ws": "plv", + "Bold": "Invert", + "FontSize": -1766572977, + "ForeColor": "#FF0000", + "Tags": [ + "9a7525d3-a3a0-f5b6-75b8-dcc31842bd4b" + ] + }, + { + "Text": "Buckinghamshire", + "Ws": "poh", + "Tags": [ + "9733340e-a780-4915-9c6e-6a0a773bb624" + ] + }, + { + "Text": "Reactive", + "Ws": "khw", + "Bold": "On", + "FontSize": 217067649, + "ForeColor": "#FF0000", + "Tags": [ + "6590d40b-9c9e-6bf4-022e-cbef362e2539" + ] + }, + { + "Text": "bypassing", + "Ws": "bao", + "Bold": "On", + "FontSize": -1139203638, + "ForeColor": "#00FFFF", + "Tags": [ + "a158092c-95c6-ece7-40f0-245eef31b440" + ] + } + ] + }, + "mto": { + "Spans": [ + { + "Text": "Small Wooden Mouse", + "Ws": "mto", + "Tags": [ + "82ce54e3-899e-49f9-b68e-a32aac910447" + ] + }, + { + "Text": "invoice", + "Ws": "ggo", + "Bold": "Off", + "FontSize": 156095798, + "ForeColor": "#FF0000", + "Tags": [ + "8c03dece-11db-82ec-d8db-7f5b322993eb" + ] + }, + { + "Text": "Square", + "Ws": "mto", + "Tags": [ + "bb75edd3-cfcf-49f2-ac3a-a675fc34068d" + ] + }, + { + "Text": "Borders", + "Ws": "mof", + "Bold": "Off", + "FontSize": 1551749924, + "ForeColor": "#A52A2A", + "Tags": [ + "83245146-9102-463d-6702-9805ecddf9ed" + ] + } + ] + }, + "boj": { + "Spans": [ + { + "Text": "Customer", + "Ws": "boj", + "Tags": [ + "ab794f7a-1958-4c2f-82d8-dd80b331317f" + ] + }, + { + "Text": "Response", + "Ws": "aso", + "Bold": "On", + "FontSize": 745397328, + "ForeColor": "#ADFF2F", + "Tags": [ + "45286390-397e-4f46-c918-fc743707fe27" + ] + }, + { + "Text": "visionary", + "Ws": "boj", + "Tags": [ + "7f95818c-4e9f-4d43-85e4-91e2b1b7d7f6" + ] + } + ] + } + }, + "EntityId": "696c660f-bc0e-75b2-3dc8-cd549fb77bc0" + }, + { + "$type": "AddVariantTypeChange", + "VariantType": { + "Id": "c1d3f294-1a67-25b2-5110-864e2debb6bc", + "Name": { + "ggt": "Viaduct" + }, + "DeletedAt": null + }, + "EntityId": "0da6b6a5-5e7a-6f91-9610-a62c595dbdfb" + }, + { + "$type": "RemoveVariantTypeChange", + "VariantTypeId": "33b6d5be-8799-580d-5587-8879e04c8cc9", + "EntityId": "8181bc40-4b7a-5402-4442-7eed4904cff1" + }, + { + "$type": "CreateVariantType", + "Name": { + "csj": "calculating", + "ljp": "open system", + "nab": "Overpass" + }, + "EntityId": "6a8e727c-2e47-90af-a1ec-42d94fc3e38e" } ] \ No newline at end of file diff --git a/backend/FwLite/LcmCrdt.Tests/Changes/UseChangesTests.cs b/backend/FwLite/LcmCrdt.Tests/Changes/UseChangesTests.cs index 7b81d89da0..7107c7b541 100644 --- a/backend/FwLite/LcmCrdt.Tests/Changes/UseChangesTests.cs +++ b/backend/FwLite/LcmCrdt.Tests/Changes/UseChangesTests.cs @@ -238,6 +238,25 @@ private static IEnumerable GetAllChanges() var setComplexFormComponentChange = SetComplexFormComponentChange.NewComponent(complexFormComponent.Id, componentEntry.Id); yield return new ChangeWithDependencies(setComplexFormComponentChange, [createcomponentEntryChange, createComplexFormComponentChange]); + var variantTypeName = new MultiString { { "en", "test vt" } }; + var variantType = new VariantType { Id = Guid.NewGuid(), Name = variantTypeName }; + var createVariantType = new CreateVariantType(variantType.Id, variantTypeName); + yield return new ChangeWithDependencies(createVariantType); + + var variantEntry = new Entry { Id = Guid.NewGuid(), LexemeForm = { { "en", "test variant" } } }; + var createVariantEntryChange = new CreateEntryChange(variantEntry); + yield return new ChangeWithDependencies(createVariantEntryChange); + + var variant = Variant.FromEntries(variantEntry, entry, sense.Id); + var addVariantChange = new AddVariantChange(variant); + yield return new ChangeWithDependencies(addVariantChange, [createVariantEntryChange, createEntryChange, createSenseChange]); + + var addVariantTypeChange = new AddVariantTypeChange(variant.Id, variantType); + yield return new ChangeWithDependencies(addVariantTypeChange, [createVariantType, addVariantChange]); + + var removeVariantTypeChange = new RemoveVariantTypeChange(variant.Id, variantType.Id); + yield return new ChangeWithDependencies(removeVariantTypeChange, [addVariantTypeChange]); + var setSenseOrderChange = new LcmCrdt.Changes.SetOrderChange(sense.Id, 10); yield return new ChangeWithDependencies(setSenseOrderChange, [createSenseChange]); diff --git a/backend/FwLite/LcmCrdt.Tests/Changes/VariantChangeTests.cs b/backend/FwLite/LcmCrdt.Tests/Changes/VariantChangeTests.cs new file mode 100644 index 0000000000..1f34c53ad2 --- /dev/null +++ b/backend/FwLite/LcmCrdt.Tests/Changes/VariantChangeTests.cs @@ -0,0 +1,193 @@ +using LcmCrdt.Changes.Entries; +using MiniLcm.Models; +using SIL.Harmony.Changes; + +namespace LcmCrdt.Tests.Changes; + +public class VariantChangeTests(MiniLcmApiFixture fixture) : IClassFixture +{ + private async Task<(Entry variantEntry, Entry mainEntry)> CreateEntryPair() + { + var variantEntry = await fixture.Api.CreateEntry(new() { LexemeForm = { { "en", "colour" } }, }); + var mainEntry = await fixture.Api.CreateEntry(new() { LexemeForm = { { "en", "color" } }, }); + return (variantEntry, mainEntry); + } + + [Fact] + public async Task AddVariant() + { + var (variantEntry, mainEntry) = await CreateEntryPair(); + + await fixture.DataModel.AddChange(Guid.NewGuid(), new AddVariantChange(Variant.FromEntries(variantEntry, mainEntry))); + var updatedVariantEntry = await fixture.Api.GetEntry(variantEntry.Id); + updatedVariantEntry.Should().NotBeNull(); + updatedVariantEntry!.VariantOf.Should().ContainSingle(v => v.MainEntryId == mainEntry.Id); + + var updatedMainEntry = await fixture.Api.GetEntry(mainEntry.Id); + updatedMainEntry.Should().NotBeNull(); + updatedMainEntry!.Variants.Should().ContainSingle(v => v.VariantEntryId == variantEntry.Id); + } + + [Fact] + public async Task AddVariant_CarriesTypesAndScalars() + { + var (variantEntry, mainEntry) = await CreateEntryPair(); + var variantType = await fixture.Api.CreateVariantType(new VariantType { Id = Guid.NewGuid(), Name = new() { { "en", "spelling" } } }); + + var variant = Variant.FromEntries(variantEntry, mainEntry) with + { + Types = [variantType], + HideMinorEntry = true, + Comment = new() { { "en", new RichString("british spelling") } }, + }; + await fixture.DataModel.AddChange(Guid.NewGuid(), new AddVariantChange(variant)); + + var link = (await fixture.Api.GetEntry(variantEntry.Id))!.VariantOf.Should().ContainSingle().Subject; + link.Types.Should().ContainSingle(t => t.Id == variantType.Id); + link.HideMinorEntry.Should().BeTrue(); + link.Comment["en"].GetPlainText().Should().Be("british spelling"); + } + + [Fact] + public async Task AddVariant_SkipsDeletedTypes() + { + var (variantEntry, mainEntry) = await CreateEntryPair(); + var variantType = await fixture.Api.CreateVariantType(new VariantType { Id = Guid.NewGuid(), Name = new() { { "en", "doomed" } } }); + await fixture.Api.DeleteVariantType(variantType.Id); + + var variant = Variant.FromEntries(variantEntry, mainEntry) with { Types = [variantType] }; + await fixture.DataModel.AddChange(Guid.NewGuid(), new AddVariantChange(variant)); + + var link = (await fixture.Api.GetEntry(variantEntry.Id))!.VariantOf.Should().ContainSingle().Subject; + link.Types.Should().BeEmpty(); + } + + [Fact] + public async Task DeleteVariant() + { + var (variantEntry, mainEntry) = await CreateEntryPair(); + + await fixture.DataModel.AddChange(Guid.NewGuid(), new AddVariantChange(Variant.FromEntries(variantEntry, mainEntry))); + var link = (await fixture.Api.GetEntry(variantEntry.Id))!.VariantOf.Should().ContainSingle().Subject; + + await fixture.DataModel.AddChange(Guid.NewGuid(), new DeleteChange(link.Id)); + (await fixture.Api.GetEntry(variantEntry.Id))!.VariantOf.Should().BeEmpty(); + (await fixture.Api.GetEntry(mainEntry.Id))!.Variants.Should().BeEmpty(); + } + + [Fact] + public async Task DuplicateVariantsAreDeleted() + { + var (variantEntry, mainEntry) = await CreateEntryPair(); + + await fixture.DataModel.AddChange(Guid.NewGuid(), new AddVariantChange(Variant.FromEntries(variantEntry, mainEntry))); + await fixture.DataModel.AddChange(Guid.NewGuid(), new AddVariantChange(Variant.FromEntries(variantEntry, mainEntry))); + + var updatedVariantEntry = await fixture.Api.GetEntry(variantEntry.Id); + updatedVariantEntry.Should().NotBeNull(); + updatedVariantEntry!.VariantOf.Should().ContainSingle(v => v.MainEntryId == mainEntry.Id); + + var updatedMainEntry = await fixture.Api.GetEntry(mainEntry.Id); + updatedMainEntry.Should().NotBeNull(); + updatedMainEntry!.Variants.Should().ContainSingle(v => v.VariantEntryId == variantEntry.Id); + } + + [Fact] + public async Task SelfReferenceVariantIsDeleted() + { + var (variantEntry, _) = await CreateEntryPair(); + + await fixture.DataModel.AddChange(Guid.NewGuid(), + new AddVariantChange(new Variant { Id = Guid.NewGuid(), VariantEntryId = variantEntry.Id, MainEntryId = variantEntry.Id })); + + var updated = await fixture.Api.GetEntry(variantEntry.Id); + updated.Should().NotBeNull(); + updated!.VariantOf.Should().BeEmpty(); + updated.Variants.Should().BeEmpty(); + } + + [Fact] + public async Task AddVariantType() + { + var (variantEntry, mainEntry) = await CreateEntryPair(); + var variantType = await fixture.Api.CreateVariantType(new VariantType { Id = Guid.NewGuid(), Name = new() { { "en", "test" } } }); + + await fixture.DataModel.AddChange(Guid.NewGuid(), new AddVariantChange(Variant.FromEntries(variantEntry, mainEntry))); + var link = (await fixture.Api.GetEntry(variantEntry.Id))!.VariantOf.Single(); + + var change = new AddVariantTypeChange(link.Id, variantType); + await fixture.DataModel.AddChange(Guid.NewGuid(), change); + + link = (await fixture.Api.GetEntry(variantEntry.Id))!.VariantOf.Single(); + link.Types.Should().ContainSingle().Which.Id.Should().Be(variantType.Id); + } + + [Fact] + public async Task RemoveVariantType() + { + var (variantEntry, mainEntry) = await CreateEntryPair(); + var variantType = await fixture.Api.CreateVariantType(new VariantType { Id = Guid.NewGuid(), Name = new() { { "en", "test" } } }); + + await fixture.DataModel.AddChange(Guid.NewGuid(), new AddVariantChange(Variant.FromEntries(variantEntry, mainEntry) with { Types = [variantType] })); + var link = (await fixture.Api.GetEntry(variantEntry.Id))!.VariantOf.Single(); + link.Types.Should().ContainSingle(); + + await fixture.DataModel.AddChange(Guid.NewGuid(), new RemoveVariantTypeChange(link.Id, variantType.Id)); + + link = (await fixture.Api.GetEntry(variantEntry.Id))!.VariantOf.Single(); + link.Types.Should().BeEmpty(); + } + + [Fact] + public async Task DeletingVariantTypeRemovesItFromLinks() + { + var (variantEntry, mainEntry) = await CreateEntryPair(); + var variantType = await fixture.Api.CreateVariantType(new VariantType { Id = Guid.NewGuid(), Name = new() { { "en", "test" } } }); + + await fixture.DataModel.AddChange(Guid.NewGuid(), new AddVariantChange(Variant.FromEntries(variantEntry, mainEntry) with { Types = [variantType] })); + await fixture.DataModel.AddChange(Guid.NewGuid(), new DeleteChange(variantType.Id)); + + var link = (await fixture.Api.GetEntry(variantEntry.Id))!.VariantOf.Should().ContainSingle().Subject; + link.DeletedAt.Should().BeNull("deleting a type must not delete the link"); + link.Types.Should().BeEmpty(); + } + + [Fact] + public async Task DeletingMainEntryDeletesTheLink() + { + var (variantEntry, mainEntry) = await CreateEntryPair(); + await fixture.DataModel.AddChange(Guid.NewGuid(), new AddVariantChange(Variant.FromEntries(variantEntry, mainEntry))); + + await fixture.DataModel.AddChange(Guid.NewGuid(), new DeleteChange(mainEntry.Id)); + + var updatedVariantEntry = await fixture.Api.GetEntry(variantEntry.Id); + updatedVariantEntry.Should().NotBeNull("only the link dies, not the variant entry"); + updatedVariantEntry!.VariantOf.Should().BeEmpty(); + } + + [Fact] + public async Task DeletingVariantEntryDeletesTheLink() + { + var (variantEntry, mainEntry) = await CreateEntryPair(); + await fixture.DataModel.AddChange(Guid.NewGuid(), new AddVariantChange(Variant.FromEntries(variantEntry, mainEntry))); + + await fixture.DataModel.AddChange(Guid.NewGuid(), new DeleteChange(variantEntry.Id)); + + var updatedMainEntry = await fixture.Api.GetEntry(mainEntry.Id); + updatedMainEntry.Should().NotBeNull("only the link dies, not the main entry"); + updatedMainEntry!.Variants.Should().BeEmpty(); + } + + [Fact] + public async Task DeletingTargetSenseDeletesTheLink() + { + var (variantEntry, mainEntry) = await CreateEntryPair(); + var sense = await fixture.Api.CreateSense(mainEntry.Id, new Sense { Id = Guid.NewGuid(), Gloss = { { "en", "target" } } }); + await fixture.DataModel.AddChange(Guid.NewGuid(), new AddVariantChange(Variant.FromEntries(variantEntry, mainEntry, sense.Id))); + + await fixture.Api.DeleteSense(mainEntry.Id, sense.Id); + + (await fixture.Api.GetEntry(variantEntry.Id))!.VariantOf.Should().BeEmpty(); + (await fixture.Api.GetEntry(mainEntry.Id))!.Variants.Should().BeEmpty(); + } +} diff --git a/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests.cs b/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests.cs index b8c985e6c4..24e979e04f 100644 --- a/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests.cs +++ b/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests.cs @@ -164,6 +164,9 @@ await api.GetComplexFormTypes() await api.GetMorphTypes() .OrderBy(m => m.Id) .ToArrayAsync(), + await api.GetVariantTypes() + .OrderBy(v => v.Id) + .ToArrayAsync(), await api.GetWritingSystems()); } diff --git a/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v1.ProjectSnapshot.verified.txt b/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v1.ProjectSnapshot.verified.txt index 51798c24e9..10b9e90d11 100644 --- a/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v1.ProjectSnapshot.verified.txt +++ b/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v1.ProjectSnapshot.verified.txt @@ -70,6 +70,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [] } ], @@ -251,5 +253,6 @@ "Order": 0 } ] - } + }, + "VariantTypes": [] } \ No newline at end of file diff --git a/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v1.Snapshots.verified.txt b/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v1.Snapshots.verified.txt index 54ae3b7d2e..90d6a2b57c 100644 --- a/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v1.Snapshots.verified.txt +++ b/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v1.Snapshots.verified.txt @@ -77,6 +77,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, "Id": "b802e01f-fac1-42b8-b605-a5bbb7efcdc1", diff --git a/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v2.ProjectSnapshot.verified.txt b/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v2.ProjectSnapshot.verified.txt index c25af14c52..4eea61e35a 100644 --- a/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v2.ProjectSnapshot.verified.txt +++ b/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v2.ProjectSnapshot.verified.txt @@ -164,6 +164,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, { @@ -248,6 +250,8 @@ ], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, { @@ -320,6 +324,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, { @@ -392,6 +398,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [] } ], @@ -733,5 +741,6 @@ "Order": 3 } ] - } + }, + "VariantTypes": [] } \ No newline at end of file diff --git a/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v2.Snapshots.verified.txt b/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v2.Snapshots.verified.txt index fea2fb4e3e..7a8a7c489d 100644 --- a/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v2.Snapshots.verified.txt +++ b/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v2.Snapshots.verified.txt @@ -107,6 +107,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, "Id": "00edefeb-173e-45cd-836c-eea2ba514429", @@ -152,6 +154,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, "Id": "00edefeb-173e-45cd-836c-eea2ba514429", @@ -198,6 +202,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, "Id": "00edefeb-173e-45cd-836c-eea2ba514429", @@ -252,6 +258,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, "Id": "00edefeb-173e-45cd-836c-eea2ba514429", @@ -314,6 +322,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, "Id": "00edefeb-173e-45cd-836c-eea2ba514429", @@ -385,6 +395,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, "Id": "00edefeb-173e-45cd-836c-eea2ba514429", @@ -429,6 +441,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, "Id": "75050583-70d7-4605-a6e6-872b8f36c482", @@ -473,6 +487,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, "Id": "9e84db09-1885-4bbb-9482-4891a46f6f49", @@ -517,6 +533,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, "Id": "d9f70cf9-a479-4141-92e5-44155d063da2", diff --git a/backend/FwLite/LcmCrdt.Tests/Data/SnapshotDeserializationRegressionData.latest.verified.txt b/backend/FwLite/LcmCrdt.Tests/Data/SnapshotDeserializationRegressionData.latest.verified.txt index b7e45c5eb4..a5a070732d 100644 --- a/backend/FwLite/LcmCrdt.Tests/Data/SnapshotDeserializationRegressionData.latest.verified.txt +++ b/backend/FwLite/LcmCrdt.Tests/Data/SnapshotDeserializationRegressionData.latest.verified.txt @@ -88,11 +88,346 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, "Id": "8f403ae3-9859-4a74-a52d-3c0736bb5917", "DeletedAt": null }, + { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "2e6a7e6c-7abf-cd99-94b0-80c04d315d98", + "DeletedAt": null, + "LexemeForm": { + "xbn": "Direct", + "hla": "Soft" + }, + "CitationForm": { + "mxb": "Money Market Account", + "lkb": "payment" + }, + "LiteralMeaning": { + "ong": { + "Spans": [ + { + "Text": "reciprocal", + "Ws": "ong", + "Tags": [ + "ea0639e3-938a-40fa-b8dd-da4672d64210" + ] + } + ] + }, + "kxu": { + "Spans": [ + { + "Text": "invoice", + "Ws": "kxu", + "Tags": [ + "42b03468-0642-407f-a3d8-eea36bfc95a0" + ] + }, + { + "Text": "Outdoors \u0026 Shoes", + "Ws": "kxu", + "Tags": [ + "3ad34dad-b720-427c-9dd0-6090c5d6a5c6" + ] + }, + { + "Text": "feed", + "Ws": "kxu", + "Tags": [ + "b912d284-481e-48de-a9b4-870a5e285a08" + ] + }, + { + "Text": "SMTP", + "Ws": "kxu", + "Tags": [ + "0d3c4aa2-a3b3-4871-bf66-8406e5e8ec3c" + ] + } + ] + }, + "ihi": { + "Spans": [ + { + "Text": "generate", + "Ws": "wwb", + "Bold": "Off", + "FontSize": 1075171932, + "ForeColor": "#ADFF2F", + "Tags": [ + "422d0492-d48e-0c65-b609-1690caad3603" + ] + }, + { + "Text": "synergistic", + "Ws": "ihi", + "Tags": [ + "dacf7482-f6ec-4ac3-9a30-9c105833df66" + ] + }, + { + "Text": "Computers", + "Ws": "ihi", + "Tags": [ + "41ca560f-1ae7-41d1-a37d-c4faf18b0b58" + ] + } + ] + } + }, + "MorphType": "Simulfix", + "HomographNumber": -1674377933, + "Senses": [], + "Note": { + "xuo": { + "Spans": [ + { + "Text": "Security", + "Ws": "gin", + "Bold": "Off", + "FontSize": 1340465988, + "ForeColor": "#ADFF2F", + "Tags": [ + "5879c653-6e26-d703-ce85-9ca519ef0bcb" + ] + }, + { + "Text": "calculating", + "Ws": "xuo", + "Tags": [ + "072c66e5-b950-45f4-b7e7-b70e4e279ecf" + ] + } + ] + } + }, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [ + { + "Id": "3aca6492-07a4-3de2-e2c6-aba408f397bb", + "Name": { + "vmd": "reboot", + "duk": "invoice", + "ium": "Practical Plastic Towels", + "kxr": "withdrawal" + }, + "DeletedAt": null + } + ], + "VariantOf": [ + { + "Id": "4c619f87-442f-23b4-2983-41412a7ffe95", + "MaybeId": "4c619f87-442f-23b4-2983-41412a7ffe95", + "DeletedAt": null, + "VariantEntryId": "81176034-5b4d-85c1-2a47-04f8176759bd", + "VariantHeadword": "Wall", + "MainEntryId": "d93de12e-07f9-4f2f-8954-190e2abe06e9", + "MainSenseId": "96e31a4a-bbee-996b-759c-5187b29cfa7f", + "MainHeadword": "Tasty Soft Salad", + "Types": [ + { + "Id": "99ab5593-63d1-ca4f-b979-d5e1af87d1ea", + "Name": { + "mok": "El Salvador", + "trx": "Coordinator", + "duc": "lime", + "xua": "cross-platform" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": true, + "Comment": { + "gew": { + "Spans": [ + { + "Text": "program", + "Ws": "gew", + "Tags": [ + "cc0c91a9-eea7-4948-8990-cc07a570056d" + ] + }, + { + "Text": "Denmark", + "Ws": "gew", + "Tags": [ + "dc29b510-b94d-4eb6-af91-0903deea2fc6" + ] + }, + { + "Text": "invoice", + "Ws": "gew", + "Tags": [ + "29a99076-1ccb-4b95-9beb-338ad843962f" + ] + } + ] + }, + "nik": { + "Spans": [ + { + "Text": "synthesize", + "Ws": "nik", + "Tags": [ + "6f54f2fd-e638-403d-9735-16257878b92a" + ] + }, + { + "Text": "Multi-lateral", + "Ws": "nik", + "Tags": [ + "4d67e4b7-1604-4262-afd4-af42580aa1b5" + ] + } + ] + }, + "aeq": { + "Spans": [ + { + "Text": "Rustic", + "Ws": "ojp", + "Bold": "Off", + "FontSize": -1057944399, + "ForeColor": "#A52A2A", + "Tags": [ + "e454379a-dbba-1d27-58b0-45d4b40b6742" + ] + } + ] + } + } + } + ], + "Variants": [ + { + "Id": "86a01a92-d1aa-d020-4806-f4f7472b56d3", + "MaybeId": "86a01a92-d1aa-d020-4806-f4f7472b56d3", + "DeletedAt": null, + "VariantEntryId": "0a076330-b823-c5f3-092f-7df61125a364", + "VariantHeadword": "Dynamic", + "MainEntryId": "5cc279a5-baa9-1049-c88c-f2bde24e2531", + "MainSenseId": "587131ac-caff-2f98-9279-8fb32b29fed6", + "MainHeadword": "Communications", + "Types": [ + { + "Id": "66c9952f-5b85-39fd-e4f9-cdcc1c69273c", + "Name": { + "nlk": "copy" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": false, + "Comment": { + "mdp": { + "Spans": [ + { + "Text": "Jewelery", + "Ws": "eri", + "Bold": "On", + "FontSize": -1242542580, + "ForeColor": "#ADFF2F", + "Tags": [ + "89d044a5-c286-2b2b-1682-64d47fc7d4bf" + ] + }, + { + "Text": "methodologies", + "Ws": "aba", + "Bold": "On", + "FontSize": 110774510, + "ForeColor": "#A52A2A", + "Tags": [ + "d744100f-a080-0581-82db-f7d2344df273" + ] + } + ] + }, + "xkg": { + "Spans": [ + { + "Text": "Intelligent Rubber Pizza", + "Ws": "xkg", + "Tags": [ + "c648d2fd-77c1-4a80-90f7-67e4da636439" + ] + } + ] + }, + "cpg": { + "Spans": [ + { + "Text": "calculating", + "Ws": "cpg", + "Tags": [ + "31ebc98f-9179-4edc-9e89-7c4711220151" + ] + } + ] + }, + "ify": { + "Spans": [ + { + "Text": "olive", + "Ws": "ify", + "Tags": [ + "6b281f29-55b9-4f4c-bf31-945fc1f12407" + ] + }, + { + "Text": "Granite", + "Ws": "agz", + "Bold": "On", + "FontSize": -1607886368, + "ForeColor": "#A52A2A", + "Tags": [ + "674f1746-1295-ea46-3a8a-24375fc1dca7" + ] + }, + { + "Text": "Sleek Rubber Hat", + "Ws": "ify", + "Tags": [ + "2b5777aa-eb2a-4291-aef7-bd714ca05900" + ] + }, + { + "Text": "reboot", + "Ws": "nsw", + "Bold": "Invert", + "FontSize": -1160287576, + "ForeColor": "#00FFFF", + "Tags": [ + "e3ad9b6e-8b58-187e-d876-e40a78e36968" + ] + } + ] + } + } + } + ], + "PublishIn": [ + { + "Id": "ee0b6860-87ac-709a-aa8c-0f20b06efa0b", + "DeletedAt": null, + "IsMain": false, + "Name": { + "amf": "Refined" + } + } + ] + }, + "Id": "2e6a7e6c-7abf-cd99-94b0-80c04d315d98", + "DeletedAt": null + }, { "$type": "MiniLcmCrdtAdapter", "Obj": { @@ -187,6 +522,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "ec21b4b7-3861-38d4-bc7b-fe77bd2321c2", @@ -205,184 +542,2061 @@ "$type": "MiniLcmCrdtAdapter", "Obj": { "$type": "Entry", - "Id": "82cf7254-3a4f-497a-9e15-7d93fc830356", - "DeletedAt": null, - "LexemeForm": { - "en": "\uD83C\uDF4C", - "th": "\u0E01\u0E25\u0E49\u0E27\u0E22" - }, - "CitationForm": {}, - "LiteralMeaning": { - "en": { - "Spans": [ - { - "Text": "yellow fruit that comes in bunches.", - "Ws": "en" - } - ] - } - }, - "MorphType": "Stem", - "HomographNumber": 0, - "Senses": [], - "Note": { - "en": { - "Spans": [ - { - "Text": "often used in cartoon gags for slipping", - "Ws": "en" - } - ] - } - }, - "Components": [], - "ComplexForms": [], - "ComplexFormTypes": [], - "PublishIn": [] - }, - "Id": "82cf7254-3a4f-497a-9e15-7d93fc830356", - "DeletedAt": null - }, - { - "$type": "MiniLcmCrdtAdapter", - "Obj": { - "$type": "Entry", - "Id": "8dbc0f41-998e-836a-97e1-f05d46d95c92", + "Id": "a9cd7853-c982-5959-3186-ec248d8d41de", "DeletedAt": null, "LexemeForm": { - "mqs": "maximized" + "cnl": "hard drive", + "all": "Taiwan" }, "CitationForm": { - "nrz": "Portugal" + "pam": "District" }, "LiteralMeaning": { - "juy": { + "ama": { "Spans": [ { - "Text": "Kyat", - "Ws": "juy", + "Text": "Sleek", + "Ws": "bbd", + "Bold": "Invert", + "FontSize": -85638709, + "ForeColor": "#ADFF2F", "Tags": [ - "bc47798c-6e35-430e-a94a-2d1aa82d9119" + "52197334-e928-b0cc-8914-ee3cca6d000e" ] }, { - "Text": "synthesize", - "Ws": "juy", + "Text": "Personal Loan Account", + "Ws": "ama", "Tags": [ - "75fc659a-ae47-45ec-87a8-2475d5667496" + "c6badbfd-0430-4245-b1f3-6dbfc3cf5ced" ] - } - ] - }, - "rer": { + }, + { + "Text": "Wooden", + "Ws": "fgr", + "Bold": "Invert", + "FontSize": -1658278656, + "ForeColor": "#A52A2A", + "Tags": [ + "99c5aa5c-271c-d860-b815-a713850e4403" + ] + } + ] + }, + "jaj": { "Spans": [ { - "Text": "Licensed", - "Ws": "rer", + "Text": "connect", + "Ws": "noi", + "Bold": "Off", + "FontSize": -1470543244, + "ForeColor": "#FF0000", "Tags": [ - "adf734b1-3abb-4644-a5b7-e712c29a59e6" + "87c38be9-027c-83c7-cb99-59210e09f3d8" ] }, { - "Text": "architectures", - "Ws": "dos", + "Text": "streamline", + "Ws": "jaj", + "Tags": [ + "c49682bf-c285-4acf-9a3e-f6cb391b184b" + ] + }, + { + "Text": "Bedfordshire", + "Ws": "xcw", + "Bold": "Invert", + "FontSize": 1053195674, + "ForeColor": "#FF0000", + "Tags": [ + "f0ab79c7-ddff-63a0-1746-2825fd24206e" + ] + } + ] + } + }, + "MorphType": "Suffix", + "HomographNumber": 996368112, + "Senses": [], + "Note": { + "nrb": { + "Spans": [ + { + "Text": "blockchains", + "Ws": "nrb", + "Tags": [ + "b62b9429-69ad-4f80-a66b-b3678383663b" + ] + }, + { + "Text": "Ergonomic Soft Shoes", + "Ws": "jac", "Bold": "On", - "FontSize": -1392951304, + "FontSize": -1052383363, + "ForeColor": "#A52A2A", + "Tags": [ + "a9a9dec9-08cc-2c34-a5ca-cf78d1107839" + ] + }, + { + "Text": "Tasty", + "Ws": "nrb", + "Tags": [ + "462f2665-8c79-4f7f-be99-86a100958929" + ] + }, + { + "Text": "Shoes", + "Ws": "khr", + "Bold": "Invert", + "FontSize": 492536191, "ForeColor": "#ADFF2F", "Tags": [ - "b316a4f4-208a-e75f-13f0-09a91a2b3506" + "27770394-7f08-6701-ac8a-e78f75048a9b" ] } ] }, - "zpa": { + "cky": { "Spans": [ { - "Text": "Concrete", - "Ws": "zpa", + "Text": "Auto Loan Account", + "Ws": "cky", "Tags": [ - "10cb16c2-6f15-4101-8689-7c77e6576f52" + "d864c261-66c8-4887-94ec-32d891358f72" ] }, { - "Text": "Shoals", - "Ws": "cjy", + "Text": "Montana", + "Ws": "cky", + "Tags": [ + "4562dc77-f99d-4de1-b832-cd8473543713" + ] + }, + { + "Text": "optimal", + "Ws": "avt", "Bold": "Invert", - "FontSize": -437265941, + "FontSize": 212594793, + "ForeColor": "#00FFFF", + "Tags": [ + "8bbd2e0e-13a5-b378-3193-a1a9498f4a1d" + ] + } + ] + }, + "aqp": { + "Spans": [ + { + "Text": "cross-platform", + "Ws": "wbq", + "Bold": "On", + "FontSize": -1898908819, "ForeColor": "#ADFF2F", "Tags": [ - "53cd8e2b-15c6-0490-70d6-738a6708b9ca" + "1a98d7cc-742b-9e51-64e8-4849f6811d32" ] } ] } }, - "MorphType": "BoundStem", + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [ + { + "Id": "bfea70b0-ebd5-86d8-ecfc-9ad4facfd9ca", + "Name": { + "aoe": "bypass" + }, + "DeletedAt": null + } + ], + "VariantOf": [ + { + "Id": "54c228d3-10b3-20c2-d7e6-38cbb280740c", + "MaybeId": "54c228d3-10b3-20c2-d7e6-38cbb280740c", + "DeletedAt": null, + "VariantEntryId": "d141258e-c100-a4fb-c1cd-63b059ddfb62", + "VariantHeadword": "Corporate", + "MainEntryId": "fc6512ab-e796-7a71-da3d-5c3edb7b3b10", + "MainSenseId": "43bf7d1b-292e-ba0c-9e10-56d4229036af", + "MainHeadword": "Chief", + "Types": [ + { + "Id": "766ce347-e58e-c772-7e7c-ec5332c5b48b", + "Name": { + "bhh": "Avon" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": false, + "Comment": { + "iry": { + "Spans": [ + { + "Text": "Practical Cotton Pants", + "Ws": "iry", + "Tags": [ + "49a57a3f-8891-49be-8487-9bbd4f399f84" + ] + } + ] + } + } + } + ], + "Variants": [ + { + "Id": "5b9c87d1-f228-81fd-e6fc-463b4ed48bb6", + "MaybeId": "5b9c87d1-f228-81fd-e6fc-463b4ed48bb6", + "DeletedAt": null, + "VariantEntryId": "a50a0851-684a-795c-5f22-8275682b0caa", + "VariantHeadword": "Lead", + "MainEntryId": "b26c4da8-08fe-9bf7-5ceb-6538be2ad689", + "MainSenseId": "710bd056-4f07-0627-407d-e744ffb759c3", + "MainHeadword": "Fantastic Fresh Shirt", + "Types": [ + { + "Id": "d5886872-d109-8e7c-21f0-aaac0e8efe15", + "Name": { + "ett": "Berkshire", + "gbn": "Rubber", + "suw": "payment", + "xtu": "paradigm" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": true, + "Comment": { + "mls": { + "Spans": [ + { + "Text": "architect", + "Ws": "chl", + "Bold": "Off", + "FontSize": 1325800089, + "ForeColor": "#A52A2A", + "Tags": [ + "3ca232e9-ef03-a7c3-d5b1-75f06befc75c" + ] + }, + { + "Text": "Executive", + "Ws": "mls", + "Tags": [ + "b0c2ea57-6dac-4d6e-8146-c5d383587416" + ] + }, + { + "Text": "Unbranded", + "Ws": "mls", + "Tags": [ + "442f2eb4-936b-415b-807b-f0556f2f7ec5" + ] + } + ] + }, + "ibm": { + "Spans": [ + { + "Text": "override", + "Ws": "ibm", + "Tags": [ + "f9d5659d-2e1e-48cf-bee6-0f1453705837" + ] + }, + { + "Text": "Virginia", + "Ws": "ibm", + "Tags": [ + "ef5e05cf-c1ed-4497-a243-ad1e3365c5d1" + ] + } + ] + }, + "wac": { + "Spans": [ + { + "Text": "Avon", + "Ws": "gwa", + "Bold": "Invert", + "FontSize": 279365784, + "ForeColor": "#A52A2A", + "Tags": [ + "770c6ac7-0a37-293a-fcdb-cbd7d402f71b" + ] + }, + { + "Text": "initiatives", + "Ws": "wac", + "Tags": [ + "a99c4e9b-95a0-490d-89c0-13200670d310" + ] + } + ] + }, + "tl": { + "Spans": [ + { + "Text": "back up", + "Ws": "tl", + "Tags": [ + "cad367a0-ba3c-412d-b5aa-19db5f5d7037" + ] + } + ] + } + } + } + ], + "PublishIn": [ + { + "Id": "dc1d47e6-1a02-204d-923f-c8cb761a7e36", + "DeletedAt": null, + "IsMain": false, + "Name": { + "gra": "Tennessee" + } + } + ] + }, + "Id": "a9cd7853-c982-5959-3186-ec248d8d41de", + "DeletedAt": null + }, + { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "82cf7254-3a4f-497a-9e15-7d93fc830356", + "DeletedAt": null, + "LexemeForm": { + "en": "\uD83C\uDF4C", + "th": "\u0E01\u0E25\u0E49\u0E27\u0E22" + }, + "CitationForm": {}, + "LiteralMeaning": { + "en": { + "Spans": [ + { + "Text": "yellow fruit that comes in bunches.", + "Ws": "en" + } + ] + } + }, + "MorphType": "Stem", "HomographNumber": 0, "Senses": [], "Note": { - "rkw": { + "en": { "Spans": [ { - "Text": "XML", - "Ws": "vot", - "Bold": "On", - "FontSize": -1698959192, + "Text": "often used in cartoon gags for slipping", + "Ws": "en" + } + ] + } + }, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], + "PublishIn": [] + }, + "Id": "82cf7254-3a4f-497a-9e15-7d93fc830356", + "DeletedAt": null + }, + { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "3cdafca5-46e6-60ed-0b8a-e302d40f7ab8", + "DeletedAt": null, + "LexemeForm": { + "pkt": "reboot" + }, + "CitationForm": { + "bqw": "Auto Loan Account", + "myq": "1080p", + "ula": "Director", + "xwg": "Toys \u0026 Kids" + }, + "LiteralMeaning": { + "hav": { + "Spans": [ + { + "Text": "system", + "Ws": "hav", + "Tags": [ + "1d22ad30-96dc-47c3-a7f8-761b3d830b25" + ] + }, + { + "Text": "front-end", + "Ws": "mnw", + "Bold": "Off", + "FontSize": 1230763621, + "ForeColor": "#00000000", + "Tags": [ + "fd1b73bd-ad1b-a20d-c981-905c8823e12c" + ] + }, + { + "Text": "Stream", + "Ws": "bve", + "Bold": "Off", + "FontSize": 621343644, "ForeColor": "#ADFF2F", "Tags": [ - "9218c79b-f453-0ef3-de05-ea5eeba26367" + "aaeeb616-fd0d-f67d-7738-b0d39c4c9512" ] }, { - "Text": "invoice", - "Ws": "rkw", + "Text": "Electronics", + "Ws": "aiy", + "Bold": "Invert", + "FontSize": 39794053, + "ForeColor": "#A52A2A", "Tags": [ - "6ef3cf72-b5a5-488c-9381-fb7a7f6f961e" + "7e50c044-9786-1e39-a9ac-92d54342ac3e" + ] + } + ] + }, + "dyr": { + "Spans": [ + { + "Text": "extend", + "Ws": "kve", + "Bold": "Invert", + "FontSize": -422062800, + "ForeColor": "#00FFFF", + "Tags": [ + "b6172c2b-3580-8f98-81c5-4789bb11e455" ] }, { - "Text": "bypass", - "Ws": "rkw", + "Text": "synthesizing", + "Ws": "aja", + "Bold": "Invert", + "FontSize": 1174438189, + "ForeColor": "#00000000", "Tags": [ - "e615bb12-61d9-452e-bac5-06deb6942851" + "41548c3d-3532-3798-84aa-9d40adf93824" ] } ] }, - "kee": { + "pea": { "Spans": [ { - "Text": "Money Market Account", - "Ws": "ekp", - "Bold": "On", - "FontSize": -315220510, - "ForeColor": "#A52A2A", + "Text": "back-end", + "Ws": "pea", + "Tags": [ + "3cb309a7-8115-4482-bfdc-ac8f257eb4ad" + ] + } + ] + } + }, + "MorphType": "Particle", + "HomographNumber": -762509614, + "Senses": [], + "Note": { + "mda": { + "Spans": [ + { + "Text": "frictionless", + "Ws": "mda", + "Tags": [ + "2c0851ea-e5be-41d5-b49e-cf8fec10c89c" + ] + }, + { + "Text": "collaborative", + "Ws": "prb", + "Bold": "Off", + "FontSize": -1566428427, + "ForeColor": "#00FFFF", + "Tags": [ + "c1c64703-55b8-e014-a74d-a979ac3d8e02" + ] + }, + { + "Text": "Congo", + "Ws": "mda", + "Tags": [ + "e48be2ae-71b7-45d7-a57f-358267cfff47" + ] + } + ] + }, + "kyx": { + "Spans": [ + { + "Text": "web-enabled", + "Ws": "sgh", + "Bold": "Off", + "FontSize": 1542390070, + "ForeColor": "#00FFFF", + "Tags": [ + "b23f7a6a-1857-cb51-3aa5-6694483629fe" + ] + }, + { + "Text": "back-end", + "Ws": "npl", + "Bold": "On", + "FontSize": -1671856556, + "ForeColor": "#0000FF", + "Tags": [ + "4304b005-673b-15e7-1b73-a16c7e107d62" + ] + } + ] + } + }, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [ + { + "Id": "ccfdf2a2-ac60-433a-41ea-22b4ffff2d4b", + "Name": { + "gno": "Massachusetts" + }, + "DeletedAt": null + } + ], + "VariantOf": [ + { + "Id": "9db32aab-3ce1-a8e8-3ed9-cf3b240f6968", + "MaybeId": "9db32aab-3ce1-a8e8-3ed9-cf3b240f6968", + "DeletedAt": null, + "VariantEntryId": "6d4179be-9789-faa0-a60d-0124b5e6aedc", + "VariantHeadword": "purple", + "MainEntryId": "36b6909e-b5e9-397d-05d4-1dbae22ec50a", + "MainSenseId": "266fba93-8a74-c0b3-ca71-65164b008f52", + "MainHeadword": "convergence", + "Types": [ + { + "Id": "54162871-9d18-ad79-b155-ce2f98f97265", + "Name": { + "bwh": "back up", + "xba": "reinvent", + "aza": "Mews" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": false, + "Comment": { + "niz": { + "Spans": [ + { + "Text": "alarm", + "Ws": "niz", + "Tags": [ + "8cf34d1a-b942-4794-a42d-568e56fb1249" + ] + }, + { + "Text": "Manager", + "Ws": "niz", + "Tags": [ + "749f132e-5b62-42b7-86ff-059a2a4fcd5e" + ] + }, + { + "Text": "Madagascar", + "Ws": "ktw", + "Bold": "Off", + "FontSize": -1245901176, + "ForeColor": "#00FFFF", + "Tags": [ + "f002ec10-2a72-7416-f135-278e82c48b14" + ] + }, + { + "Text": "Fresh", + "Ws": "niz", + "Tags": [ + "4257831c-6cf6-445c-bdfc-d2e10c6546fc" + ] + } + ] + }, + "pmz": { + "Spans": [ + { + "Text": "Realigned", + "Ws": "mzi", + "Bold": "Invert", + "FontSize": -208583590, + "ForeColor": "#00FFFF", + "Tags": [ + "946afd05-dfdd-48cf-6615-a55dbc30ce72" + ] + }, + { + "Text": "Optimized", + "Ws": "pmz", + "Tags": [ + "c14fd0d8-9f8f-4d81-b40e-0dc89703b261" + ] + } + ] + }, + "khr": { + "Spans": [ + { + "Text": "knowledge user", + "Ws": "mlc", + "Bold": "Off", + "FontSize": 81689857, + "ForeColor": "#ADFF2F", + "Tags": [ + "8a91586b-d2a7-c062-8089-300cf9e5b686" + ] + }, + { + "Text": "Trail", + "Ws": "khr", + "Tags": [ + "e75ec01a-e52c-4e30-b929-ad09a709fd7f" + ] + }, + { + "Text": "Metrics", + "Ws": "khr", + "Tags": [ + "f1c8ab11-3d04-484b-83aa-b473de8ce350" + ] + } + ] + } + } + } + ], + "Variants": [ + { + "Id": "9a6a68d5-58a6-81c0-ab95-e365558ee35a", + "MaybeId": "9a6a68d5-58a6-81c0-ab95-e365558ee35a", + "DeletedAt": null, + "VariantEntryId": "7618d904-0761-ab81-ba1c-853b9401d1d5", + "VariantHeadword": "interfaces", + "MainEntryId": "ccc647fd-fca5-9c93-d296-43f13c223506", + "MainSenseId": "90f4721d-d38c-497f-955b-955acb2499f4", + "MainHeadword": "Fresh", + "Types": [ + { + "Id": "aa41d766-846e-2d53-cebd-50ca612bd6de", + "Name": { + "pxm": "magenta", + "lmi": "database" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": false, + "Comment": { + "gcl": { + "Spans": [ + { + "Text": "Refined Rubber Sausages", + "Ws": "cmt", + "Bold": "Off", + "FontSize": -430354912, + "ForeColor": "#00FFFF", + "Tags": [ + "19fbeff0-b9b2-dbc0-83c0-18af65ac176d" + ] + }, + { + "Text": "Bedfordshire", + "Ws": "ald", + "Bold": "On", + "FontSize": -605772228, + "ForeColor": "#0000FF", + "Tags": [ + "ea667bb7-8cd0-872e-aff4-6534377ff096" + ] + }, + { + "Text": "Director", + "Ws": "gcl", + "Tags": [ + "45b61b57-989d-41f8-9ffd-ff957f611934" + ] + }, + { + "Text": "Generic Rubber Chicken", + "Ws": "omp", + "Bold": "On", + "FontSize": 1234054480, + "ForeColor": "#ADFF2F", + "Tags": [ + "93241b11-508c-6711-2e9f-99d55ed4c489" + ] + } + ] + }, + "sdu": { + "Spans": [ + { + "Text": "e-services", + "Ws": "sdu", + "Tags": [ + "69d83464-b127-45a3-8e80-1f12c6414995" + ] + }, + { + "Text": "rich", + "Ws": "psy", + "Bold": "Invert", + "FontSize": 425981535, + "ForeColor": "#A52A2A", + "Tags": [ + "cb4eafe1-71dc-53cf-e8d1-87fee8792d65" + ] + }, + { + "Text": "Cote d\u0027Ivoire", + "Ws": "gyi", + "Bold": "Off", + "FontSize": -802216504, + "ForeColor": "#ADFF2F", + "Tags": [ + "3be90aaa-fb8b-21c8-f217-daa170c8d4f6" + ] + } + ] + } + } + } + ], + "PublishIn": [ + { + "Id": "d2892b2c-fc81-8c2f-5586-baa81b6d1530", + "DeletedAt": null, + "IsMain": false, + "Name": { + "mnj": "Plastic" + } + } + ] + }, + "Id": "3cdafca5-46e6-60ed-0b8a-e302d40f7ab8", + "DeletedAt": null + }, + { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "8dbc0f41-998e-836a-97e1-f05d46d95c92", + "DeletedAt": null, + "LexemeForm": { + "mqs": "maximized" + }, + "CitationForm": { + "nrz": "Portugal" + }, + "LiteralMeaning": { + "juy": { + "Spans": [ + { + "Text": "Kyat", + "Ws": "juy", + "Tags": [ + "bc47798c-6e35-430e-a94a-2d1aa82d9119" + ] + }, + { + "Text": "synthesize", + "Ws": "juy", + "Tags": [ + "75fc659a-ae47-45ec-87a8-2475d5667496" + ] + } + ] + }, + "rer": { + "Spans": [ + { + "Text": "Licensed", + "Ws": "rer", + "Tags": [ + "adf734b1-3abb-4644-a5b7-e712c29a59e6" + ] + }, + { + "Text": "architectures", + "Ws": "dos", + "Bold": "On", + "FontSize": -1392951304, + "ForeColor": "#ADFF2F", + "Tags": [ + "b316a4f4-208a-e75f-13f0-09a91a2b3506" + ] + } + ] + }, + "zpa": { + "Spans": [ + { + "Text": "Concrete", + "Ws": "zpa", + "Tags": [ + "10cb16c2-6f15-4101-8689-7c77e6576f52" + ] + }, + { + "Text": "Shoals", + "Ws": "cjy", + "Bold": "Invert", + "FontSize": -437265941, + "ForeColor": "#ADFF2F", + "Tags": [ + "53cd8e2b-15c6-0490-70d6-738a6708b9ca" + ] + } + ] + } + }, + "MorphType": "BoundStem", + "HomographNumber": 0, + "Senses": [], + "Note": { + "rkw": { + "Spans": [ + { + "Text": "XML", + "Ws": "vot", + "Bold": "On", + "FontSize": -1698959192, + "ForeColor": "#ADFF2F", + "Tags": [ + "9218c79b-f453-0ef3-de05-ea5eeba26367" + ] + }, + { + "Text": "invoice", + "Ws": "rkw", + "Tags": [ + "6ef3cf72-b5a5-488c-9381-fb7a7f6f961e" + ] + }, + { + "Text": "bypass", + "Ws": "rkw", + "Tags": [ + "e615bb12-61d9-452e-bac5-06deb6942851" + ] + } + ] + }, + "kee": { + "Spans": [ + { + "Text": "Money Market Account", + "Ws": "ekp", + "Bold": "On", + "FontSize": -315220510, + "ForeColor": "#A52A2A", + "Tags": [ + "424e0f12-78a7-37c7-8fa5-74dd81ccc8a7" + ] + }, + { + "Text": "Glens", + "Ws": "kee", + "Tags": [ + "a323544c-2b85-4fa7-b3c7-f5321ad75c49" + ] + }, + { + "Text": "Buckinghamshire", + "Ws": "kee", + "Tags": [ + "13a974bf-8b90-4f36-99c6-9f0771f53db0" + ] + }, + { + "Text": "SMTP", + "Ws": "cly", + "Bold": "Invert", + "FontSize": 872689318, + "ForeColor": "#0000FF", + "Tags": [ + "498aea00-217b-9a3e-7fd0-2748edadf3b3" + ] + } + ] + } + }, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [ + { + "Id": "292e9847-8c7c-56e1-87fb-41d200c789e1", + "Name": { + "hup": "THX", + "rsk": "Reduced", + "zmq": "hard drive", + "nnx": "cyan" + }, + "DeletedAt": null + } + ], + "VariantOf": [], + "Variants": [], + "PublishIn": [ + { + "Id": "bd874c92-e063-2a20-d263-bdc6897a1e85", + "DeletedAt": null, + "IsMain": false, + "Name": { + "zrg": "cross-platform", + "bno": "heuristic" + } + } + ] + }, + "Id": "8dbc0f41-998e-836a-97e1-f05d46d95c92", + "DeletedAt": null + }, + { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "21b941a4-fbb7-f706-0aab-529c84b402b5", + "DeletedAt": null, + "LexemeForm": { + "nar": "Tasty Rubber Chair", + "luh": "Brunei Dollar", + "mok": "navigate" + }, + "CitationForm": { + "mih": "hub", + "tiq": "New Zealand Dollar" + }, + "LiteralMeaning": { + "mtu": { + "Spans": [ + { + "Text": "Unbranded Rubber Sausages", + "Ws": "qvo", + "Bold": "Off", + "FontSize": 1178067194, + "ForeColor": "#A52A2A", + "Tags": [ + "d321668f-b5fb-4eea-8064-de2784319aa4" + ] + }, + { + "Text": "Soft", + "Ws": "jio", + "Bold": "On", + "FontSize": 897718303, + "ForeColor": "#A52A2A", + "Tags": [ + "9a5e7604-a21f-546d-3b49-d730a05bacb7" + ] + }, + { + "Text": "haptic", + "Ws": "mtu", + "Tags": [ + "ba19fe02-0e18-4e92-9fb4-73f7b4ff7e29" + ] + } + ] + }, + "tnc": { + "Spans": [ + { + "Text": "Practical", + "Ws": "wof", + "Bold": "Off", + "FontSize": -1535748655, + "ForeColor": "#00FFFF", + "Tags": [ + "bfb0c24e-3275-7312-a6af-171f2e77adea" + ] + }, + { + "Text": "quantifying", + "Ws": "awy", + "Bold": "Off", + "FontSize": -281573942, + "ForeColor": "#ADFF2F", + "Tags": [ + "e9bdeced-7404-3248-6b7d-3d73579133b4" + ] + }, + { + "Text": "Lebanese Pound", + "Ws": "tnc", + "Tags": [ + "d9b188e4-9a17-4636-a39b-ca4268035281" + ] + }, + { + "Text": "Officer", + "Ws": "kwy", + "Bold": "Off", + "FontSize": -907207124, + "ForeColor": "#ADFF2F", + "Tags": [ + "6f598667-4c76-a59f-6639-d85fa5caaee3" + ] + } + ] + }, + "met": { + "Spans": [ + { + "Text": "incremental", + "Ws": "kpl", + "Bold": "On", + "FontSize": 309135679, + "ForeColor": "#A52A2A", + "Tags": [ + "b76f0bac-9fe3-afb3-cc64-c01aa7c650cc" + ] + }, + { + "Text": "Awesome Steel Shirt", + "Ws": "met", + "Tags": [ + "421ee914-5d3a-4ccb-b71e-114b560efe88" + ] + }, + { + "Text": "XSS", + "Ws": "met", + "Tags": [ + "9cf1278d-37a5-4ba7-968d-0817a1280b1d" + ] + }, + { + "Text": "Wyoming", + "Ws": "lkh", + "Bold": "Off", + "FontSize": 2029647080, + "ForeColor": "#00FFFF", + "Tags": [ + "ccf7b25b-931a-7f85-62e9-5fe9b49d7aa0" + ] + } + ] + }, + "bmk": { + "Spans": [ + { + "Text": "incubate", + "Ws": "bmk", + "Tags": [ + "27ff80df-e700-49db-8a7b-517933050d07" + ] + }, + { + "Text": "Rubber", + "Ws": "ddi", + "Bold": "Off", + "FontSize": 1247133799, + "ForeColor": "#A52A2A", + "Tags": [ + "520317dc-2190-3cf0-bbba-bcd6ff830999" + ] + }, + { + "Text": "Buckinghamshire", + "Ws": "bmk", + "Tags": [ + "35e9e4c6-24fe-46aa-b3ea-788e4729a500" + ] + } + ] + } + }, + "MorphType": "Enclitic", + "HomographNumber": 288646034, + "Senses": [], + "Note": { + "obl": { + "Spans": [ + { + "Text": "Maryland", + "Ws": "yhd", + "Bold": "Off", + "FontSize": -49334912, + "ForeColor": "#00000000", + "Tags": [ + "2d8fec7c-5396-ea81-55e2-28e9ca2fb19a" + ] + } + ] + }, + "urn": { + "Spans": [ + { + "Text": "PCI", + "Ws": "apz", + "Bold": "Invert", + "FontSize": -101349684, + "ForeColor": "#ADFF2F", + "Tags": [ + "3f4fcdb6-49ae-0047-84a9-dd8c5387e0c6" + ] + } + ] + }, + "vmd": { + "Spans": [ + { + "Text": "whiteboard", + "Ws": "vmd", + "Tags": [ + "ac082b83-c17e-4dde-88e4-f5496c06da55" + ] + }, + { + "Text": "cutting-edge", + "Ws": "vmd", + "Tags": [ + "ebc22ab4-9861-469b-8eb3-24bd8ee77271" + ] + } + ] + }, + "lo": { + "Spans": [ + { + "Text": "Graphical User Interface", + "Ws": "sjc", + "Bold": "Invert", + "FontSize": 1010008301, + "ForeColor": "#FF0000", + "Tags": [ + "738f95ee-777f-bd8e-9c25-fdf853919571" + ] + }, + { + "Text": "Trace", + "Ws": "lo", + "Tags": [ + "cec5d529-8bef-40d1-9007-8284f9b62813" + ] + } + ] + } + }, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [ + { + "Id": "e011543b-218d-8dc9-cb5b-ef51b039e01b", + "Name": { + "hih": "transition" + }, + "DeletedAt": null + } + ], + "VariantOf": [ + { + "Id": "81e7a0f3-07ae-9501-c9fc-012c9f4d72f8", + "MaybeId": "81e7a0f3-07ae-9501-c9fc-012c9f4d72f8", + "DeletedAt": null, + "VariantEntryId": "0d7ecb9e-640e-0136-3177-5f3725e3ff9c", + "VariantHeadword": "copying", + "MainEntryId": "c28531d2-4de4-3de3-36c3-c4eda08de343", + "MainSenseId": "917b785c-8a5c-d651-e6bf-8ee95b975268", + "MainHeadword": "matrix", + "Types": [ + { + "Id": "47b33565-0be3-32c4-e0ad-348f191b6763", + "Name": { + "tto": "Function-based", + "mln": "Toys \u0026 Health" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": false, + "Comment": { + "kdu": { + "Spans": [ + { + "Text": "Soft", + "Ws": "lbb", + "Bold": "Off", + "FontSize": 1504894779, + "ForeColor": "#ADFF2F", + "Tags": [ + "23000220-e88c-70d5-9add-4df3ce8fe113" + ] + }, + { + "Text": "Azerbaijanian Manat", + "Ws": "kdu", + "Tags": [ + "84781e74-2daf-4343-9163-07146adbf10d" + ] + }, + { + "Text": "Fantastic", + "Ws": "kdu", + "Tags": [ + "bf26f933-43e6-4836-8110-83a70c57ed9c" + ] + } + ] + }, + "kgu": { + "Spans": [ + { + "Text": "Savings Account", + "Ws": "hmi", + "Bold": "Invert", + "FontSize": -1415115979, + "ForeColor": "#A52A2A", + "Tags": [ + "eae2f706-1777-c843-9406-53c52fa6c245" + ] + }, + { + "Text": "index", + "Ws": "kgu", + "Tags": [ + "7a3a569c-2ed4-4fa2-8c32-79435d943ba6" + ] + } + ] + }, + "dlg": { + "Spans": [ + { + "Text": "Wooden", + "Ws": "dlg", + "Tags": [ + "fd4f43a8-1fa6-4269-aab0-4e6d4d4bcd92" + ] + }, + { + "Text": "website", + "Ws": "dlg", + "Tags": [ + "03d3f612-c192-428d-97f4-419ca77bed8e" + ] + }, + { + "Text": "Manager", + "Ws": "gvs", + "Bold": "On", + "FontSize": -1069962004, + "ForeColor": "#00FFFF", + "Tags": [ + "8dc4a280-da41-d085-2e52-9787f7db26ea" + ] + } + ] + }, + "mtf": { + "Spans": [ + { + "Text": "Licensed Plastic Sausages", + "Ws": "nra", + "Bold": "On", + "FontSize": -883851573, + "ForeColor": "#0000FF", + "Tags": [ + "4f6ea9d5-5680-42bb-93b4-ceb1d18b90a3" + ] + }, + { + "Text": "Progressive", + "Ws": "mtf", + "Tags": [ + "3a8e2fe9-679c-4a3d-a980-d82240464ed2" + ] + }, + { + "Text": "Borders", + "Ws": "mtf", + "Tags": [ + "0af175a1-59ef-42e2-886c-73b6a11ad0e1" + ] + } + ] + } + } + } + ], + "Variants": [ + { + "Id": "9bfecd7f-6382-5236-4f2f-0a762a72fb90", + "MaybeId": "9bfecd7f-6382-5236-4f2f-0a762a72fb90", + "DeletedAt": null, + "VariantEntryId": "43f0a46f-364f-eee0-a013-1812448b50e1", + "VariantHeadword": "olive", + "MainEntryId": "9441127f-18dd-b52f-d49e-629ca50611ac", + "MainSenseId": "519758f1-a6c0-7833-468e-8f326607cf0c", + "MainHeadword": "Orchestrator", + "Types": [ + { + "Id": "0bc3123f-673b-215f-1f24-5fae892969ee", + "Name": { + "blb": "calculating", + "rga": "Awesome Metal Chicken" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": true, + "Comment": { + "sfe": { + "Spans": [ + { + "Text": "synthesize", + "Ws": "wmc", + "Bold": "On", + "FontSize": -410677030, + "ForeColor": "#00FFFF", + "Tags": [ + "793b16c8-e48a-7890-bb1a-7381255585b4" + ] + }, + { + "Text": "Planner", + "Ws": "smc", + "Bold": "On", + "FontSize": 190202871, + "ForeColor": "#A52A2A", + "Tags": [ + "6109cb4e-9d80-7172-070f-aaab5148e02b" + ] + } + ] + }, + "mkp": { + "Spans": [ + { + "Text": "Port", + "Ws": "yxu", + "Bold": "Invert", + "FontSize": 1607188846, + "ForeColor": "#00FFFF", + "Tags": [ + "58bc979b-7c64-d947-165b-c7f2ebe2f63b" + ] + } + ] + }, + "ckz": { + "Spans": [ + { + "Text": "Product", + "Ws": "ywn", + "Bold": "Invert", + "FontSize": -23641957, + "ForeColor": "#A52A2A", + "Tags": [ + "b0594316-051c-beca-3f4a-fd5a3500a18d" + ] + }, + { + "Text": "approach", + "Ws": "pbm", + "Bold": "Off", + "FontSize": 1715313845, + "ForeColor": "#A52A2A", + "Tags": [ + "0eb2ca90-dde1-95d6-9801-54c992c804b3" + ] + } + ] + } + } + } + ], + "PublishIn": [ + { + "Id": "cb689065-ea18-98a0-74a6-5cb471da3fbc", + "DeletedAt": null, + "IsMain": false, + "Name": { + "lnu": "Applications" + } + } + ] + }, + "Id": "21b941a4-fbb7-f706-0aab-529c84b402b5", + "DeletedAt": null + }, + { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "84bb5f48-b2a9-d0c8-85ee-aec9203830ee", + "DeletedAt": null, + "LexemeForm": { + "dkk": "Product" + }, + "CitationForm": {}, + "LiteralMeaning": {}, + "MorphType": "Infix", + "HomographNumber": 1102525176, + "Senses": [], + "Note": {}, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], + "PublishIn": [ + { + "Id": "78c00e29-d69e-56ba-77f5-b5be25469c4f", + "DeletedAt": null, + "IsMain": true, + "Name": { + "mps": "Small Granite Salad" + } + } + ] + }, + "Id": "84bb5f48-b2a9-d0c8-85ee-aec9203830ee", + "DeletedAt": null + }, + { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "7ccb582e-442b-9cde-6f59-7d2658224810", + "DeletedAt": null, + "LexemeForm": { + "alt": "redefine", + "mtg": "feed", + "cie": "haptic" + }, + "CitationForm": { + "nqo": "Investment Account", + "dkg": "Optimization" + }, + "LiteralMeaning": { + "gnr": { + "Spans": [ + { + "Text": "Springs", + "Ws": "gnr", + "Tags": [ + "18fbfdb3-2e2a-4291-8b21-00702f47a4c6" + ] + }, + { + "Text": "human-resource", + "Ws": "gnr", + "Tags": [ + "90ec01f7-a258-41c9-b9dd-b4eccd570f9c" + ] + } + ] + }, + "stt": { + "Spans": [ + { + "Text": "withdrawal", + "Ws": "tpi", + "Bold": "On", + "FontSize": -1350488265, + "ForeColor": "#FF0000", + "Tags": [ + "39acebc8-f34a-93c9-4c84-f7cc84c5985d" + ] + }, + { + "Text": "Intelligent Concrete Table", + "Ws": "guq", + "Bold": "On", + "FontSize": -25655285, + "ForeColor": "#ADFF2F", + "Tags": [ + "b72087c2-32d8-29af-97ca-53158f52e13b" + ] + }, + { + "Text": "Research", + "Ws": "ani", + "Bold": "Invert", + "FontSize": 611743561, + "ForeColor": "#00FFFF", + "Tags": [ + "7debebd6-974d-0fd4-c077-c55407f924ea" + ] + } + ] + }, + "czh": { + "Spans": [ + { + "Text": "Future", + "Ws": "ypo", + "Bold": "Off", + "FontSize": 1307816951, + "ForeColor": "#FF0000", + "Tags": [ + "86cf0663-8ac2-0d8e-b85b-007c44ee27d2" + ] + }, + { + "Text": "Square", + "Ws": "czh", + "Tags": [ + "ca6c94cc-2237-4dad-af21-1e4f048b7ab4" + ] + } + ] + } + }, + "MorphType": "Circumfix", + "HomographNumber": -1416309114, + "Senses": [], + "Note": { + "xsy": { + "Spans": [ + { + "Text": "backing up", + "Ws": "nsh", + "Bold": "Off", + "FontSize": -559106786, + "ForeColor": "#FF0000", + "Tags": [ + "9c63fff5-5626-197d-9952-cca19e542578" + ] + } + ] + }, + "rgn": { + "Spans": [ + { + "Text": "Streamlined", + "Ws": "rgn", + "Tags": [ + "9edca3e0-5249-4f77-bfbb-c900353ae5c1" + ] + }, + { + "Text": "Micronesia", + "Ws": "env", + "Bold": "Invert", + "FontSize": 87635850, + "ForeColor": "#00FFFF", + "Tags": [ + "041fd30c-a5e7-f92a-e0b3-a59400a752af" + ] + }, + { + "Text": "transform", + "Ws": "cnc", + "Bold": "On", + "FontSize": -1985104153, + "ForeColor": "#FF0000", + "Tags": [ + "5c74852f-f7e5-249f-31f5-6b1d45ed8630" + ] + }, + { + "Text": "Identity", + "Ws": "byf", + "Bold": "Off", + "FontSize": -1853399160, + "ForeColor": "#0000FF", + "Tags": [ + "b6a400e8-2427-45a3-5ab1-758a2e28a6d1" + ] + } + ] + }, + "zkt": { + "Spans": [ + { + "Text": "COM", + "Ws": "yle", + "Bold": "Off", + "FontSize": 229320307, + "ForeColor": "#A52A2A", + "Tags": [ + "38575d9b-1ae7-0daa-3572-b22dcde78f5d" + ] + } + ] + }, + "sav": { + "Spans": [ + { + "Text": "Generic Steel Shirt", + "Ws": "cho", + "Bold": "Invert", + "FontSize": 1060021924, + "ForeColor": "#A52A2A", + "Tags": [ + "754ec847-76fb-1ccb-a494-dd703a87a162" + ] + }, + { + "Text": "Rustic Fresh Sausages", + "Ws": "mmv", + "Bold": "Off", + "FontSize": 1033279533, + "ForeColor": "#00000000", + "Tags": [ + "e2a95409-ebd0-322b-c20d-a2f3b3c98397" + ] + }, + { + "Text": "Tasty Plastic Table", + "Ws": "sav", + "Tags": [ + "0ac2af44-1be6-4bd7-9899-117faf3089ec" + ] + }, + { + "Text": "New Zealand", + "Ws": "sav", + "Tags": [ + "46d65c88-2ff5-4966-8463-cb5feade8426" + ] + } + ] + } + }, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [ + { + "Id": "e4009891-0d12-f226-b1c8-aa5558128394", + "Name": { + "ril": "Human" + }, + "DeletedAt": null + } + ], + "VariantOf": [ + { + "Id": "d1ceb8e2-7b90-c398-3589-7509df51c011", + "MaybeId": "d1ceb8e2-7b90-c398-3589-7509df51c011", + "DeletedAt": null, + "VariantEntryId": "9970c40e-d0c0-d21a-b1b9-1da8bc1e03de", + "VariantHeadword": "Sleek Soft Bacon", + "MainEntryId": "6638f491-2bb0-d597-aac2-c7a3f7401ac1", + "MainSenseId": "f145e4a2-c26e-6e1a-b638-cfa8e7c76b22", + "MainHeadword": "Coordinator", + "Types": [ + { + "Id": "9b171c50-74e6-0153-0532-9e150820fd84", + "Name": { + "daa": "next-generation", + "tzh": "Credit Card Account", + "soo": "Orchestrator" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": true, + "Comment": { + "put": { + "Spans": [ + { + "Text": "overriding", + "Ws": "put", + "Tags": [ + "73d43eb7-259e-46b6-b97e-e862bf483e93" + ] + }, + { + "Text": "Central", + "Ws": "jao", + "Bold": "On", + "FontSize": 583944008, + "ForeColor": "#00000000", + "Tags": [ + "67f97cd8-36bb-87d6-48c8-8032e5bc70f0" + ] + }, + { + "Text": "generate", + "Ws": "gbv", + "Bold": "On", + "FontSize": -1131714599, + "ForeColor": "#A52A2A", + "Tags": [ + "576874ce-c7a4-ca02-57f2-96707015cf7e" + ] + }, + { + "Text": "Baby \u0026 Grocery", + "Ws": "hur", + "Bold": "Off", + "FontSize": 105023831, + "ForeColor": "#0000FF", + "Tags": [ + "8ee1c6c3-4571-550f-aab0-c74250e744ae" + ] + } + ] + }, + "kdp": { + "Spans": [ + { + "Text": "EXE", + "Ws": "kdp", + "Tags": [ + "d81a9037-f01a-442e-945e-2da83fc59b72" + ] + }, + { + "Text": "Street", + "Ws": "bxb", + "Bold": "Off", + "FontSize": -1107158038, + "ForeColor": "#FF0000", + "Tags": [ + "86a630b1-0d04-0ce0-4e33-b4328f318e4f" + ] + }, + { + "Text": "Cross-group", + "Ws": "kdp", + "Tags": [ + "028304f1-6068-456c-9dd6-daf2e6318035" + ] + } + ] + }, + "slc": { + "Spans": [ + { + "Text": "fresh-thinking", + "Ws": "rn", + "Bold": "On", + "FontSize": -1290428814, + "ForeColor": "#00000000", + "Tags": [ + "c8622d2c-cfdd-f92c-85f3-0c594aee98e1" + ] + }, + { + "Text": "Executive", + "Ws": "slc", + "Tags": [ + "1024acaa-5a55-48f6-a801-6d033e58f225" + ] + }, + { + "Text": "Egyptian Pound", + "Ws": "slc", + "Tags": [ + "234f074f-8d0d-4629-884f-2441eea1ddfa" + ] + }, + { + "Text": "moderator", + "Ws": "slc", + "Tags": [ + "81b664ca-2179-43ec-a71c-025af7fe288d" + ] + } + ] + } + } + } + ], + "Variants": [ + { + "Id": "3f49ac95-a997-74af-e061-6159fc340fd2", + "MaybeId": "3f49ac95-a997-74af-e061-6159fc340fd2", + "DeletedAt": null, + "VariantEntryId": "36c20f18-c9ae-c828-7cea-7bf5f4ddee03", + "VariantHeadword": "Borders", + "MainEntryId": "cc77233c-a886-c6ee-703a-4e5a4443c087", + "MainSenseId": "18a2340e-56f8-94de-bf35-bef23f6a3d76", + "MainHeadword": "Concrete", + "Types": [ + { + "Id": "39b5de5d-fc3e-6516-2ac5-fbdde15e8d90", + "Name": { + "ygi": "Granite", + "ihp": "Small Granite Salad", + "bzx": "Avon" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": true, + "Comment": { + "pna": { + "Spans": [ + { + "Text": "Guinea", + "Ws": "twq", + "Bold": "Off", + "FontSize": 548037479, + "ForeColor": "#00FFFF", + "Tags": [ + "b31e5ede-63ce-0ec0-f672-6801296e0617" + ] + }, + { + "Text": "Minnesota", + "Ws": "zor", + "Bold": "On", + "FontSize": -1619185103, + "ForeColor": "#00000000", + "Tags": [ + "6db14049-c1d8-4610-67b6-f080a67d198c" + ] + } + ] + }, + "nii": { + "Spans": [ + { + "Text": "Florida", + "Ws": "kqj", + "Bold": "On", + "FontSize": 1839918198, + "ForeColor": "#00FFFF", + "Tags": [ + "54a11218-ede8-4a66-e796-8fb5954a2866" + ] + } + ] + }, + "goh": { + "Spans": [ + { + "Text": "Re-engineered", + "Ws": "ppu", + "Bold": "On", + "FontSize": 121777806, + "ForeColor": "#FF0000", + "Tags": [ + "d7394e85-12ef-0453-59a4-f789ec8cd6b6" + ] + } + ] + }, + "mss": { + "Spans": [ + { + "Text": "Rustic", + "Ws": "sok", + "Bold": "On", + "FontSize": -232538291, + "ForeColor": "#FF0000", + "Tags": [ + "672e67c4-f22f-4f38-e5ef-fa8230ae0642" + ] + }, + { + "Text": "Fantastic", + "Ws": "mss", + "Tags": [ + "4b2371f2-69a7-4056-a1c5-f0b4151e85b8" + ] + }, + { + "Text": "Gibraltar Pound", + "Ws": "mss", + "Tags": [ + "0ef5a73e-8c43-42b3-8637-1bb90d0b2b62" + ] + } + ] + } + } + } + ], + "PublishIn": [ + { + "Id": "a27a7789-bcba-ee7a-57d3-fa256d3356c1", + "DeletedAt": null, + "IsMain": false, + "Name": { + "kkk": "Analyst", + "dkk": "Investment Account" + } + } + ] + }, + "Id": "7ccb582e-442b-9cde-6f59-7d2658224810", + "DeletedAt": null + }, + { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "249c38f3-fc0d-195f-7533-97e8c140d0d7", + "DeletedAt": null, + "LexemeForm": { + "kvj": "Florida" + }, + "CitationForm": null, + "LiteralMeaning": null, + "MorphType": "Prefix", + "HomographNumber": 4, + "Senses": [], + "Note": null, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], + "PublishIn": [] + }, + "Id": "249c38f3-fc0d-195f-7533-97e8c140d0d7", + "DeletedAt": null + }, + { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "c3c7439d-8508-897d-ec90-dfb8c6233f52", + "DeletedAt": null, + "LexemeForm": { + "sbf": "Triple-buffered", + "nuo": "clear-thinking", + "ewo": "modular" + }, + "CitationForm": { + "mzp": "Rial Omani" + }, + "LiteralMeaning": { + "mku": { + "Spans": [ + { + "Text": "holistic", + "Ws": "mku", + "Tags": [ + "9350e875-0918-4188-8b80-e94b87a852bf" + ] + }, + { + "Text": "Oklahoma", + "Ws": "bnx", + "Bold": "On", + "FontSize": 1103510228, + "ForeColor": "#FF0000", + "Tags": [ + "ed09f714-b175-6596-9983-16cdf0cf34d8" + ] + }, + { + "Text": "Handcrafted", + "Ws": "mku", + "Tags": [ + "182d16db-157e-4fbc-9d8d-fb3df1acc534" + ] + } + ] + }, + "kdr": { + "Spans": [ + { + "Text": "Liaison", + "Ws": "kdr", + "Tags": [ + "f526be31-e1dc-4710-b90d-0c747d57434f" + ] + } + ] + } + }, + "MorphType": "Prefix", + "HomographNumber": -1630247524, + "Senses": [], + "Note": { + "crv": { + "Spans": [ + { + "Text": "Isle of Man", + "Ws": "crv", + "Tags": [ + "7bde6377-d4cb-49ae-9803-86cd678d56d7" + ] + }, + { + "Text": "projection", + "Ws": "crv", + "Tags": [ + "764ca726-5a42-499a-8965-0da244a52a6a" + ] + }, + { + "Text": "transmitting", + "Ws": "hnn", + "Bold": "Off", + "FontSize": -1687247291, + "ForeColor": "#ADFF2F", + "Tags": [ + "54262fd2-0ed1-d0ec-59b2-c2ade27b2a03" + ] + } + ] + }, + "gnw": { + "Spans": [ + { + "Text": "Neck", + "Ws": "bvo", + "Bold": "Off", + "FontSize": -990208762, + "ForeColor": "#00FFFF", "Tags": [ - "424e0f12-78a7-37c7-8fa5-74dd81ccc8a7" + "99ed537a-80b3-8de1-7650-6365d2e6083f" ] }, { - "Text": "Glens", - "Ws": "kee", + "Text": "Data", + "Ws": "gnw", "Tags": [ - "a323544c-2b85-4fa7-b3c7-f5321ad75c49" + "d241a639-233a-45c7-8935-7b9f3f06157a" ] }, { - "Text": "Buckinghamshire", - "Ws": "kee", + "Text": "withdrawal", + "Ws": "pmf", + "Bold": "Off", + "FontSize": -1959771791, + "ForeColor": "#0000FF", "Tags": [ - "13a974bf-8b90-4f36-99c6-9f0771f53db0" + "8fd780f0-42f6-34ec-0f95-356321691992" ] - }, + } + ] + }, + "ekm": { + "Spans": [ { - "Text": "SMTP", - "Ws": "cly", + "Text": "Developer", + "Ws": "hag", "Bold": "Invert", - "FontSize": 872689318, + "FontSize": -858017395, "ForeColor": "#0000FF", "Tags": [ - "498aea00-217b-9a3e-7fd0-2748edadf3b3" + "846f0198-2a38-de9c-5c83-d597ce88fecd" + ] + }, + { + "Text": "Handcrafted", + "Ws": "mix", + "Bold": "On", + "FontSize": -1819622732, + "ForeColor": "#FF0000", + "Tags": [ + "bce2d057-9660-de23-ad57-3783b9014de8" ] } ] @@ -392,84 +2606,204 @@ "ComplexForms": [], "ComplexFormTypes": [ { - "Id": "292e9847-8c7c-56e1-87fb-41d200c789e1", + "Id": "68f76f7d-5ec4-2006-ed56-236b8c0acdb3", "Name": { - "hup": "THX", - "rsk": "Reduced", - "zmq": "hard drive", - "nnx": "cyan" + "mtn": "Libyan Dinar", + "kot": "white", + "sax": "Accounts", + "tlu": "invoice" }, "DeletedAt": null } ], - "PublishIn": [ + "VariantOf": [ { - "Id": "bd874c92-e063-2a20-d263-bdc6897a1e85", + "Id": "30687039-cd15-839f-0f15-88239cea4ee7", + "MaybeId": "30687039-cd15-839f-0f15-88239cea4ee7", "DeletedAt": null, - "IsMain": false, - "Name": { - "zrg": "cross-platform", - "bno": "heuristic" + "VariantEntryId": "a7cea784-faa5-08b1-5a30-ea546c3e84a6", + "VariantHeadword": "methodologies", + "MainEntryId": "d38e046a-5051-8542-0ee0-a8816c4a38fc", + "MainSenseId": "20ae5516-4681-5b6f-9a37-441f37d30636", + "MainHeadword": "National", + "Types": [ + { + "Id": "4efbf4f2-7182-25a1-8279-18849ca5d1dc", + "Name": { + "xpu": "Intelligent Soft Shirt" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": false, + "Comment": { + "ug": { + "Spans": [ + { + "Text": "input", + "Ws": "ug", + "Tags": [ + "009c5014-9b97-498d-94d7-b49c2f60f7ce" + ] + }, + { + "Text": "high-level", + "Ws": "pub", + "Bold": "On", + "FontSize": 1878116492, + "ForeColor": "#0000FF", + "Tags": [ + "5a727ee0-4a4d-6d0f-5ff0-7225db4443b9" + ] + }, + { + "Text": "Liberian Dollar", + "Ws": "ug", + "Tags": [ + "9def2648-5fc8-473b-91a0-e4b870483323" + ] + }, + { + "Text": "teal", + "Ws": "dux", + "Bold": "On", + "FontSize": -447656843, + "ForeColor": "#00FFFF", + "Tags": [ + "3f01efa1-0307-9615-9c0a-abd13268297f" + ] + } + ] + }, + "tkx": { + "Spans": [ + { + "Text": "Handcrafted Plastic Gloves", + "Ws": "ktm", + "Bold": "Off", + "FontSize": 980860579, + "ForeColor": "#0000FF", + "Tags": [ + "3aa66e0d-0c3b-f1fe-000b-f2b073e8bbcf" + ] + }, + { + "Text": "teal", + "Ws": "tkx", + "Tags": [ + "ffc128c8-dd58-490e-bbb6-ff9c9dae2c21" + ] + } + ] + }, + "mvg": { + "Spans": [ + { + "Text": "Synchronised", + "Ws": "lof", + "Bold": "Off", + "FontSize": -448515709, + "ForeColor": "#A52A2A", + "Tags": [ + "cccf656b-6627-2403-6651-e9778e6784b3" + ] + }, + { + "Text": "pink", + "Ws": "mvg", + "Tags": [ + "227cf26e-397c-4d4c-9799-5bb7c880ffcd" + ] + }, + { + "Text": "Tasty Rubber Tuna", + "Ws": "jcs", + "Bold": "Invert", + "FontSize": -1218964834, + "ForeColor": "#FF0000", + "Tags": [ + "8d1b02a7-1a2b-3cad-ee5b-5d9d44e54785" + ] + }, + { + "Text": "Rue", + "Ws": "mvg", + "Tags": [ + "98ac4a79-c23c-47d3-af3b-6352a3905df4" + ] + } + ] + } } } - ] - }, - "Id": "8dbc0f41-998e-836a-97e1-f05d46d95c92", - "DeletedAt": null - }, - { - "$type": "MiniLcmCrdtAdapter", - "Obj": { - "$type": "Entry", - "Id": "84bb5f48-b2a9-d0c8-85ee-aec9203830ee", - "DeletedAt": null, - "LexemeForm": { - "dkk": "Product" - }, - "CitationForm": {}, - "LiteralMeaning": {}, - "MorphType": "Infix", - "HomographNumber": 1102525176, - "Senses": [], - "Note": {}, - "Components": [], - "ComplexForms": [], - "ComplexFormTypes": [], + ], + "Variants": [ + { + "Id": "eb7771bf-50ec-05c5-f943-2f36625e25db", + "MaybeId": "eb7771bf-50ec-05c5-f943-2f36625e25db", + "DeletedAt": null, + "VariantEntryId": "dd84ea90-cfe1-a254-021d-efca8b022ddf", + "VariantHeadword": "Configuration", + "MainEntryId": "2bae2145-2f23-b490-102b-cf1d03c8f5bf", + "MainSenseId": "bb0e0056-9948-fd94-0c89-e89fd4ba8cce", + "MainHeadword": "withdrawal", + "Types": [ + { + "Id": "e2b0fab5-16ff-63da-ab2c-3137e2d8fcea", + "Name": { + "nli": "Architect", + "dcc": "Decentralized", + "dgd": "leverage", + "pne": "Intelligent Steel Cheese" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": true, + "Comment": { + "afs": { + "Spans": [ + { + "Text": "Investment Account", + "Ws": "afs", + "Tags": [ + "222a259a-328a-41e6-8d2e-ad2e0a06cf21" + ] + }, + { + "Text": "Morocco", + "Ws": "afs", + "Tags": [ + "184ab8d1-b318-407d-8eaf-d60d2615e680" + ] + }, + { + "Text": "Kids \u0026 Kids", + "Ws": "afs", + "Tags": [ + "805122d3-96f3-4129-a887-edb34bd994c5" + ] + } + ] + } + } + } + ], "PublishIn": [ { - "Id": "78c00e29-d69e-56ba-77f5-b5be25469c4f", + "Id": "5421adab-b84b-1d1c-5da9-ff96c4e76d6f", "DeletedAt": null, - "IsMain": true, + "IsMain": false, "Name": { - "mps": "Small Granite Salad" + "arn": "Money Market Account", + "myt": "withdrawal", + "bni": "Libyan Arab Jamahiriya", + "peh": "web-readiness" } } ] }, - "Id": "84bb5f48-b2a9-d0c8-85ee-aec9203830ee", - "DeletedAt": null - }, - { - "$type": "MiniLcmCrdtAdapter", - "Obj": { - "$type": "Entry", - "Id": "249c38f3-fc0d-195f-7533-97e8c140d0d7", - "DeletedAt": null, - "LexemeForm": { - "kvj": "Florida" - }, - "CitationForm": null, - "LiteralMeaning": null, - "MorphType": "Prefix", - "HomographNumber": 4, - "Senses": [], - "Note": null, - "Components": [], - "ComplexForms": [], - "ComplexFormTypes": [], - "PublishIn": [] - }, - "Id": "249c38f3-fc0d-195f-7533-97e8c140d0d7", + "Id": "c3c7439d-8508-897d-ec90-dfb8c6233f52", "DeletedAt": null }, { @@ -3935,5 +6269,145 @@ }, "Id": "edd0c7a1-e37c-c67b-7522-eed5ec86fde8", "DeletedAt": null + }, + { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "VariantType", + "Id": "ab0ff154-d4bb-e26d-4136-805ff65fe3f7", + "Name": { + "kvv": "Idaho" + }, + "DeletedAt": null + }, + "Id": "ab0ff154-d4bb-e26d-4136-805ff65fe3f7", + "DeletedAt": null + }, + { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Variant", + "Id": "f3c8bd18-ddae-319c-7af9-aec8a1f24db9", + "MaybeId": "f3c8bd18-ddae-319c-7af9-aec8a1f24db9", + "DeletedAt": null, + "VariantEntryId": "8844401a-9b59-2dbb-d0a6-b8072698fdbe", + "VariantHeadword": "compressing", + "MainEntryId": "4c6734dd-5df2-ef98-f925-4bedccafffd6", + "MainSenseId": "5299433f-bed8-0440-f6b7-be7185a94c91", + "MainHeadword": "Future-proofed", + "Types": [ + { + "Id": "bd29dadc-ed05-75a2-2dd2-1f4e7a8ed28c", + "Name": { + "qvs": "transition", + "bnj": "input", + "prx": "1080p", + "stw": "Cotton" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": true, + "Comment": { + "mkv": { + "Spans": [ + { + "Text": "FTP", + "Ws": "afg", + "Bold": "Off", + "FontSize": 786310720, + "ForeColor": "#FF0000", + "Tags": [ + "080df177-19fa-0182-fd6d-8bfe3c6899b8" + ] + } + ] + }, + "jup": { + "Spans": [ + { + "Text": "Configuration", + "Ws": "jkr", + "Bold": "Invert", + "FontSize": 901303494, + "ForeColor": "#00000000", + "Tags": [ + "4764d0bd-8463-ac55-13e6-5c97bf5e1eeb" + ] + }, + { + "Text": "Extended", + "Ws": "jup", + "Tags": [ + "cc3de0c0-de63-4f90-b243-ed8cffce4b43" + ] + }, + { + "Text": "Berkshire", + "Ws": "duq", + "Bold": "Invert", + "FontSize": -820321295, + "ForeColor": "#FF0000", + "Tags": [ + "89b096e2-d417-54cc-90ce-6b3d0d6beea9" + ] + }, + { + "Text": "Handmade", + "Ws": "jup", + "Tags": [ + "8b3d963a-e282-4efa-b1b3-72bd5cc0b97a" + ] + } + ] + }, + "knq": { + "Spans": [ + { + "Text": "back-end", + "Ws": "rga", + "Bold": "On", + "FontSize": -1164842275, + "ForeColor": "#0000FF", + "Tags": [ + "e16af6f0-6073-064a-be78-5476ae80129b" + ] + }, + { + "Text": "Fresh", + "Ws": "hrt", + "Bold": "Off", + "FontSize": -1676676744, + "ForeColor": "#00FFFF", + "Tags": [ + "04081eef-8df9-8078-2aff-8a1fc6f565d6" + ] + }, + { + "Text": "Bedfordshire", + "Ws": "xag", + "Bold": "Off", + "FontSize": 588490506, + "ForeColor": "#ADFF2F", + "Tags": [ + "d5d24888-6538-6447-e34b-90436626e505" + ] + }, + { + "Text": "neural", + "Ws": "kpw", + "Bold": "Off", + "FontSize": 1635502143, + "ForeColor": "#FF0000", + "Tags": [ + "3ff5314e-8007-7517-f840-e3a86ec6f913" + ] + } + ] + } + } + }, + "Id": "f3c8bd18-ddae-319c-7af9-aec8a1f24db9", + "DeletedAt": null } ] \ No newline at end of file diff --git a/backend/FwLite/LcmCrdt.Tests/Data/SnapshotDeserializationRegressionData.legacy.verified.txt b/backend/FwLite/LcmCrdt.Tests/Data/SnapshotDeserializationRegressionData.legacy.verified.txt index a3fe21d28d..1dd30608e8 100644 --- a/backend/FwLite/LcmCrdt.Tests/Data/SnapshotDeserializationRegressionData.legacy.verified.txt +++ b/backend/FwLite/LcmCrdt.Tests/Data/SnapshotDeserializationRegressionData.legacy.verified.txt @@ -158,6 +158,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, "Id": "8f403ae3-9859-4a74-a52d-3c0736bb5917", @@ -246,6 +248,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, "Id": "82cf7254-3a4f-497a-9e15-7d93fc830356", @@ -3900,5 +3904,849 @@ "Id": "853b91e6-d738-7d5d-cc98-e62904160c35", "DeletedAt": null } + }, + { + "Input": { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "8f403ae3-9859-4a74-a52d-3c0736bb5917", + "DeletedAt": null, + "LexemeForm": { + "en": "Pineapple" + }, + "CitationForm": {}, + "LiteralMeaning": {}, + "MorphType": "Stem", + "HomographNumber": 0, + "Senses": [], + "Note": {}, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [ + { + "Id": "1f6ae209-141a-40db-983c-bee93af0ca3c", + "Name": { + "en": "Compound" + }, + "DeletedAt": null + } + ], + "PublishIn": [] + }, + "Id": "8f403ae3-9859-4a74-a52d-3c0736bb5917", + "DeletedAt": null + }, + "Output": { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "8f403ae3-9859-4a74-a52d-3c0736bb5917", + "DeletedAt": null, + "LexemeForm": { + "en": "Pineapple" + }, + "CitationForm": {}, + "LiteralMeaning": {}, + "MorphType": "Stem", + "HomographNumber": 0, + "Senses": [], + "Note": {}, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [ + { + "Id": "1f6ae209-141a-40db-983c-bee93af0ca3c", + "Name": { + "en": "Compound" + }, + "DeletedAt": null + } + ], + "VariantOf": [], + "Variants": [], + "PublishIn": [] + }, + "Id": "8f403ae3-9859-4a74-a52d-3c0736bb5917", + "DeletedAt": null + } + }, + { + "Input": { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "691dda9c-b83e-71c6-3638-e66a279c396e", + "DeletedAt": null, + "LexemeForm": { + "luq": "Communications" + }, + "CitationForm": { + "ykl": "Dominican Republic", + "tw": "Unbranded", + "sqh": "hack" + }, + "LiteralMeaning": { + "rpn": { + "Spans": [ + { + "Text": "Home Loan Account", + "Ws": "kmd", + "Bold": "On", + "FontSize": 1210454949, + "ForeColor": "#A52A2A", + "Tags": [ + "7231e128-410a-9cae-4141-997965f4a853" + ] + } + ] + } + }, + "MorphType": "Particle", + "HomographNumber": 0, + "Senses": [], + "Note": { + "ekl": { + "Spans": [ + { + "Text": "Sleek", + "Ws": "akv", + "Bold": "Off", + "FontSize": 2066121125, + "ForeColor": "#ADFF2F", + "Tags": [ + "82408188-7ce4-ba9a-5f35-8ffec5b3b254" + ] + } + ] + }, + "uki": { + "Spans": [ + { + "Text": "Refined Fresh Computer", + "Ws": "uki", + "Tags": [ + "122f575c-140b-4bb1-9c8c-f98e1969951d" + ] + }, + { + "Text": "internet solution", + "Ws": "uki", + "Tags": [ + "a5bd8ab1-99a0-4bcc-baaf-93c7ccc77429" + ] + }, + { + "Text": "wireless", + "Ws": "uki", + "Tags": [ + "005d71cb-4f05-486c-897c-710a7a6b5346" + ] + }, + { + "Text": "navigate", + "Ws": "uki", + "Tags": [ + "f04879c9-1e04-49b5-b4e0-0ce28e77aacd" + ] + } + ] + } + }, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [ + { + "Id": "15a8d32f-5cac-8a71-7b31-cbefa36ad322", + "Name": { + "tgi": "input", + "gnk": "silver", + "suo": "Refined Wooden Chair" + }, + "DeletedAt": null + } + ], + "PublishIn": [ + { + "Id": "ec21b4b7-3861-38d4-bc7b-fe77bd2321c2", + "DeletedAt": null, + "IsMain": false, + "Name": { + "nak": "CSS" + } + } + ] + }, + "Id": "691dda9c-b83e-71c6-3638-e66a279c396e", + "DeletedAt": null + }, + "Output": { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "691dda9c-b83e-71c6-3638-e66a279c396e", + "DeletedAt": null, + "LexemeForm": { + "luq": "Communications" + }, + "CitationForm": { + "ykl": "Dominican Republic", + "tw": "Unbranded", + "sqh": "hack" + }, + "LiteralMeaning": { + "rpn": { + "Spans": [ + { + "Text": "Home Loan Account", + "Ws": "kmd", + "Bold": "On", + "FontSize": 1210454949, + "ForeColor": "#A52A2A", + "Tags": [ + "7231e128-410a-9cae-4141-997965f4a853" + ] + } + ] + } + }, + "MorphType": "Particle", + "HomographNumber": 0, + "Senses": [], + "Note": { + "ekl": { + "Spans": [ + { + "Text": "Sleek", + "Ws": "akv", + "Bold": "Off", + "FontSize": 2066121125, + "ForeColor": "#ADFF2F", + "Tags": [ + "82408188-7ce4-ba9a-5f35-8ffec5b3b254" + ] + } + ] + }, + "uki": { + "Spans": [ + { + "Text": "Refined Fresh Computer", + "Ws": "uki", + "Tags": [ + "122f575c-140b-4bb1-9c8c-f98e1969951d" + ] + }, + { + "Text": "internet solution", + "Ws": "uki", + "Tags": [ + "a5bd8ab1-99a0-4bcc-baaf-93c7ccc77429" + ] + }, + { + "Text": "wireless", + "Ws": "uki", + "Tags": [ + "005d71cb-4f05-486c-897c-710a7a6b5346" + ] + }, + { + "Text": "navigate", + "Ws": "uki", + "Tags": [ + "f04879c9-1e04-49b5-b4e0-0ce28e77aacd" + ] + } + ] + } + }, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [ + { + "Id": "15a8d32f-5cac-8a71-7b31-cbefa36ad322", + "Name": { + "tgi": "input", + "gnk": "silver", + "suo": "Refined Wooden Chair" + }, + "DeletedAt": null + } + ], + "VariantOf": [], + "Variants": [], + "PublishIn": [ + { + "Id": "ec21b4b7-3861-38d4-bc7b-fe77bd2321c2", + "DeletedAt": null, + "IsMain": false, + "Name": { + "nak": "CSS" + } + } + ] + }, + "Id": "691dda9c-b83e-71c6-3638-e66a279c396e", + "DeletedAt": null + } + }, + { + "Input": { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "82cf7254-3a4f-497a-9e15-7d93fc830356", + "DeletedAt": null, + "LexemeForm": { + "en": "\uD83C\uDF4C", + "th": "\u0E01\u0E25\u0E49\u0E27\u0E22" + }, + "CitationForm": {}, + "LiteralMeaning": { + "en": { + "Spans": [ + { + "Text": "yellow fruit that comes in bunches.", + "Ws": "en" + } + ] + } + }, + "MorphType": "Stem", + "HomographNumber": 0, + "Senses": [], + "Note": { + "en": { + "Spans": [ + { + "Text": "often used in cartoon gags for slipping", + "Ws": "en" + } + ] + } + }, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [], + "PublishIn": [] + }, + "Id": "82cf7254-3a4f-497a-9e15-7d93fc830356", + "DeletedAt": null + }, + "Output": { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "82cf7254-3a4f-497a-9e15-7d93fc830356", + "DeletedAt": null, + "LexemeForm": { + "en": "\uD83C\uDF4C", + "th": "\u0E01\u0E25\u0E49\u0E27\u0E22" + }, + "CitationForm": {}, + "LiteralMeaning": { + "en": { + "Spans": [ + { + "Text": "yellow fruit that comes in bunches.", + "Ws": "en" + } + ] + } + }, + "MorphType": "Stem", + "HomographNumber": 0, + "Senses": [], + "Note": { + "en": { + "Spans": [ + { + "Text": "often used in cartoon gags for slipping", + "Ws": "en" + } + ] + } + }, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], + "PublishIn": [] + }, + "Id": "82cf7254-3a4f-497a-9e15-7d93fc830356", + "DeletedAt": null + } + }, + { + "Input": { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "8dbc0f41-998e-836a-97e1-f05d46d95c92", + "DeletedAt": null, + "LexemeForm": { + "mqs": "maximized" + }, + "CitationForm": { + "nrz": "Portugal" + }, + "LiteralMeaning": { + "juy": { + "Spans": [ + { + "Text": "Kyat", + "Ws": "juy", + "Tags": [ + "bc47798c-6e35-430e-a94a-2d1aa82d9119" + ] + }, + { + "Text": "synthesize", + "Ws": "juy", + "Tags": [ + "75fc659a-ae47-45ec-87a8-2475d5667496" + ] + } + ] + }, + "rer": { + "Spans": [ + { + "Text": "Licensed", + "Ws": "rer", + "Tags": [ + "adf734b1-3abb-4644-a5b7-e712c29a59e6" + ] + }, + { + "Text": "architectures", + "Ws": "dos", + "Bold": "On", + "FontSize": -1392951304, + "ForeColor": "#ADFF2F", + "Tags": [ + "b316a4f4-208a-e75f-13f0-09a91a2b3506" + ] + } + ] + }, + "zpa": { + "Spans": [ + { + "Text": "Concrete", + "Ws": "zpa", + "Tags": [ + "10cb16c2-6f15-4101-8689-7c77e6576f52" + ] + }, + { + "Text": "Shoals", + "Ws": "cjy", + "Bold": "Invert", + "FontSize": -437265941, + "ForeColor": "#ADFF2F", + "Tags": [ + "53cd8e2b-15c6-0490-70d6-738a6708b9ca" + ] + } + ] + } + }, + "MorphType": "BoundStem", + "HomographNumber": 0, + "Senses": [], + "Note": { + "rkw": { + "Spans": [ + { + "Text": "XML", + "Ws": "vot", + "Bold": "On", + "FontSize": -1698959192, + "ForeColor": "#ADFF2F", + "Tags": [ + "9218c79b-f453-0ef3-de05-ea5eeba26367" + ] + }, + { + "Text": "invoice", + "Ws": "rkw", + "Tags": [ + "6ef3cf72-b5a5-488c-9381-fb7a7f6f961e" + ] + }, + { + "Text": "bypass", + "Ws": "rkw", + "Tags": [ + "e615bb12-61d9-452e-bac5-06deb6942851" + ] + } + ] + }, + "kee": { + "Spans": [ + { + "Text": "Money Market Account", + "Ws": "ekp", + "Bold": "On", + "FontSize": -315220510, + "ForeColor": "#A52A2A", + "Tags": [ + "424e0f12-78a7-37c7-8fa5-74dd81ccc8a7" + ] + }, + { + "Text": "Glens", + "Ws": "kee", + "Tags": [ + "a323544c-2b85-4fa7-b3c7-f5321ad75c49" + ] + }, + { + "Text": "Buckinghamshire", + "Ws": "kee", + "Tags": [ + "13a974bf-8b90-4f36-99c6-9f0771f53db0" + ] + }, + { + "Text": "SMTP", + "Ws": "cly", + "Bold": "Invert", + "FontSize": 872689318, + "ForeColor": "#0000FF", + "Tags": [ + "498aea00-217b-9a3e-7fd0-2748edadf3b3" + ] + } + ] + } + }, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [ + { + "Id": "292e9847-8c7c-56e1-87fb-41d200c789e1", + "Name": { + "hup": "THX", + "rsk": "Reduced", + "zmq": "hard drive", + "nnx": "cyan" + }, + "DeletedAt": null + } + ], + "PublishIn": [ + { + "Id": "bd874c92-e063-2a20-d263-bdc6897a1e85", + "DeletedAt": null, + "IsMain": false, + "Name": { + "zrg": "cross-platform", + "bno": "heuristic" + } + } + ] + }, + "Id": "8dbc0f41-998e-836a-97e1-f05d46d95c92", + "DeletedAt": null + }, + "Output": { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "8dbc0f41-998e-836a-97e1-f05d46d95c92", + "DeletedAt": null, + "LexemeForm": { + "mqs": "maximized" + }, + "CitationForm": { + "nrz": "Portugal" + }, + "LiteralMeaning": { + "juy": { + "Spans": [ + { + "Text": "Kyat", + "Ws": "juy", + "Tags": [ + "bc47798c-6e35-430e-a94a-2d1aa82d9119" + ] + }, + { + "Text": "synthesize", + "Ws": "juy", + "Tags": [ + "75fc659a-ae47-45ec-87a8-2475d5667496" + ] + } + ] + }, + "rer": { + "Spans": [ + { + "Text": "Licensed", + "Ws": "rer", + "Tags": [ + "adf734b1-3abb-4644-a5b7-e712c29a59e6" + ] + }, + { + "Text": "architectures", + "Ws": "dos", + "Bold": "On", + "FontSize": -1392951304, + "ForeColor": "#ADFF2F", + "Tags": [ + "b316a4f4-208a-e75f-13f0-09a91a2b3506" + ] + } + ] + }, + "zpa": { + "Spans": [ + { + "Text": "Concrete", + "Ws": "zpa", + "Tags": [ + "10cb16c2-6f15-4101-8689-7c77e6576f52" + ] + }, + { + "Text": "Shoals", + "Ws": "cjy", + "Bold": "Invert", + "FontSize": -437265941, + "ForeColor": "#ADFF2F", + "Tags": [ + "53cd8e2b-15c6-0490-70d6-738a6708b9ca" + ] + } + ] + } + }, + "MorphType": "BoundStem", + "HomographNumber": 0, + "Senses": [], + "Note": { + "rkw": { + "Spans": [ + { + "Text": "XML", + "Ws": "vot", + "Bold": "On", + "FontSize": -1698959192, + "ForeColor": "#ADFF2F", + "Tags": [ + "9218c79b-f453-0ef3-de05-ea5eeba26367" + ] + }, + { + "Text": "invoice", + "Ws": "rkw", + "Tags": [ + "6ef3cf72-b5a5-488c-9381-fb7a7f6f961e" + ] + }, + { + "Text": "bypass", + "Ws": "rkw", + "Tags": [ + "e615bb12-61d9-452e-bac5-06deb6942851" + ] + } + ] + }, + "kee": { + "Spans": [ + { + "Text": "Money Market Account", + "Ws": "ekp", + "Bold": "On", + "FontSize": -315220510, + "ForeColor": "#A52A2A", + "Tags": [ + "424e0f12-78a7-37c7-8fa5-74dd81ccc8a7" + ] + }, + { + "Text": "Glens", + "Ws": "kee", + "Tags": [ + "a323544c-2b85-4fa7-b3c7-f5321ad75c49" + ] + }, + { + "Text": "Buckinghamshire", + "Ws": "kee", + "Tags": [ + "13a974bf-8b90-4f36-99c6-9f0771f53db0" + ] + }, + { + "Text": "SMTP", + "Ws": "cly", + "Bold": "Invert", + "FontSize": 872689318, + "ForeColor": "#0000FF", + "Tags": [ + "498aea00-217b-9a3e-7fd0-2748edadf3b3" + ] + } + ] + } + }, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [ + { + "Id": "292e9847-8c7c-56e1-87fb-41d200c789e1", + "Name": { + "hup": "THX", + "rsk": "Reduced", + "zmq": "hard drive", + "nnx": "cyan" + }, + "DeletedAt": null + } + ], + "VariantOf": [], + "Variants": [], + "PublishIn": [ + { + "Id": "bd874c92-e063-2a20-d263-bdc6897a1e85", + "DeletedAt": null, + "IsMain": false, + "Name": { + "zrg": "cross-platform", + "bno": "heuristic" + } + } + ] + }, + "Id": "8dbc0f41-998e-836a-97e1-f05d46d95c92", + "DeletedAt": null + } + }, + { + "Input": { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "84bb5f48-b2a9-d0c8-85ee-aec9203830ee", + "DeletedAt": null, + "LexemeForm": { + "dkk": "Product" + }, + "CitationForm": {}, + "LiteralMeaning": {}, + "MorphType": "Infix", + "HomographNumber": 1102525176, + "Senses": [], + "Note": {}, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [], + "PublishIn": [ + { + "Id": "78c00e29-d69e-56ba-77f5-b5be25469c4f", + "DeletedAt": null, + "IsMain": true, + "Name": { + "mps": "Small Granite Salad" + } + } + ] + }, + "Id": "84bb5f48-b2a9-d0c8-85ee-aec9203830ee", + "DeletedAt": null + }, + "Output": { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "84bb5f48-b2a9-d0c8-85ee-aec9203830ee", + "DeletedAt": null, + "LexemeForm": { + "dkk": "Product" + }, + "CitationForm": {}, + "LiteralMeaning": {}, + "MorphType": "Infix", + "HomographNumber": 1102525176, + "Senses": [], + "Note": {}, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], + "PublishIn": [ + { + "Id": "78c00e29-d69e-56ba-77f5-b5be25469c4f", + "DeletedAt": null, + "IsMain": true, + "Name": { + "mps": "Small Granite Salad" + } + } + ] + }, + "Id": "84bb5f48-b2a9-d0c8-85ee-aec9203830ee", + "DeletedAt": null + } + }, + { + "Input": { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "249c38f3-fc0d-195f-7533-97e8c140d0d7", + "DeletedAt": null, + "LexemeForm": { + "kvj": "Florida" + }, + "CitationForm": null, + "LiteralMeaning": null, + "MorphType": "Prefix", + "HomographNumber": 4, + "Senses": [], + "Note": null, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [], + "PublishIn": [] + }, + "Id": "249c38f3-fc0d-195f-7533-97e8c140d0d7", + "DeletedAt": null + }, + "Output": { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "249c38f3-fc0d-195f-7533-97e8c140d0d7", + "DeletedAt": null, + "LexemeForm": { + "kvj": "Florida" + }, + "CitationForm": null, + "LiteralMeaning": null, + "MorphType": "Prefix", + "HomographNumber": 4, + "Senses": [], + "Note": null, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], + "PublishIn": [] + }, + "Id": "249c38f3-fc0d-195f-7533-97e8c140d0d7", + "DeletedAt": null + } } ] \ No newline at end of file diff --git a/backend/FwLite/LcmCrdt.Tests/Data/VerifyRegeneratedSnapshotsAfterMigrationFromScriptedDb.v1.verified.json b/backend/FwLite/LcmCrdt.Tests/Data/VerifyRegeneratedSnapshotsAfterMigrationFromScriptedDb.v1.verified.json index b087157ce9..e733d6c2ac 100644 --- a/backend/FwLite/LcmCrdt.Tests/Data/VerifyRegeneratedSnapshotsAfterMigrationFromScriptedDb.v1.verified.json +++ b/backend/FwLite/LcmCrdt.Tests/Data/VerifyRegeneratedSnapshotsAfterMigrationFromScriptedDb.v1.verified.json @@ -70,6 +70,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, "Id": "Guid_7" diff --git a/backend/FwLite/LcmCrdt.Tests/Data/VerifyRegeneratedSnapshotsAfterMigrationFromScriptedDb.v2.verified.json b/backend/FwLite/LcmCrdt.Tests/Data/VerifyRegeneratedSnapshotsAfterMigrationFromScriptedDb.v2.verified.json index b10f437131..77a842a4ac 100644 --- a/backend/FwLite/LcmCrdt.Tests/Data/VerifyRegeneratedSnapshotsAfterMigrationFromScriptedDb.v2.verified.json +++ b/backend/FwLite/LcmCrdt.Tests/Data/VerifyRegeneratedSnapshotsAfterMigrationFromScriptedDb.v2.verified.json @@ -122,6 +122,8 @@ } } ], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, "Id": "Guid_4" @@ -163,6 +165,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, "Id": "Guid_3" @@ -204,6 +208,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, "Id": "Guid_16" @@ -245,6 +251,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, "Id": "Guid_19" diff --git a/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyChangeModels.verified.txt b/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyChangeModels.verified.txt index f11904f409..9b70a58db5 100644 --- a/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyChangeModels.verified.txt +++ b/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyChangeModels.verified.txt @@ -40,6 +40,14 @@ DerivedType: JsonPatchChange, TypeDiscriminator: jsonPatch:ComplexFormType }, + { + DerivedType: JsonPatchChange, + TypeDiscriminator: jsonPatch:VariantType + }, + { + DerivedType: JsonPatchChange, + TypeDiscriminator: jsonPatch:Variant + }, { DerivedType: JsonPatchChange, TypeDiscriminator: jsonPatch:MorphType @@ -76,6 +84,14 @@ DerivedType: DeleteChange, TypeDiscriminator: delete:ComplexFormComponent }, + { + DerivedType: DeleteChange, + TypeDiscriminator: delete:VariantType + }, + { + DerivedType: DeleteChange, + TypeDiscriminator: delete:Variant + }, { DerivedType: DeleteChange, TypeDiscriminator: delete:Publication @@ -208,6 +224,22 @@ DerivedType: CreateComplexFormType, TypeDiscriminator: CreateComplexFormType }, + { + DerivedType: AddVariantChange, + TypeDiscriminator: AddVariantChange + }, + { + DerivedType: AddVariantTypeChange, + TypeDiscriminator: AddVariantTypeChange + }, + { + DerivedType: RemoveVariantTypeChange, + TypeDiscriminator: RemoveVariantTypeChange + }, + { + DerivedType: CreateVariantType, + TypeDiscriminator: CreateVariantType + }, { DerivedType: CreateCustomViewChange, TypeDiscriminator: CreateCustomViewChange diff --git a/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyDbModel.verified.txt b/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyDbModel.verified.txt index 6eaccd9213..23715abfaf 100644 --- a/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyDbModel.verified.txt +++ b/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyDbModel.verified.txt @@ -160,6 +160,8 @@ ComplexForms (List) Collection ToDependent ComplexFormComponent Components (List) Collection ToDependent ComplexFormComponent Senses (List) Collection ToDependent Sense + VariantOf (List) Collection ToDependent Variant + Variants (List) Collection ToDependent Variant Keys: Id PK Foreign keys: @@ -344,6 +346,70 @@ Relational:TableName: Sense Relational:ViewName: Relational:ViewSchema: + EntityType: Variant + Properties: + Id (_id, Guid) Required PK AfterSave:Throw ValueGenerated.OnAdd + Comment (RichMultiString) Required + Annotations: + Relational:ColumnType: jsonb + DeletedAt (DateTimeOffset?) + HideMinorEntry (bool) Required + MainEntryId (Guid) Required FK Index + MainHeadword (string) + MainSenseId (Guid?) FK Index + Annotations: + Relational:ColumnName: MainSenseId + SnapshotId (no field, Guid?) Shadow FK Index + Types (List) Required + Annotations: + Relational:ColumnType: jsonb + VariantEntryId (Guid) Required FK Index + VariantHeadword (string) + Keys: + Id PK + Foreign keys: + Variant {'MainEntryId'} -> Entry {'Id'} Required Cascade ToDependent: Variants + Variant {'MainSenseId'} -> Sense {'Id'} Cascade + Variant {'SnapshotId'} -> ObjectSnapshot {'Id'} Unique SetNull + Variant {'VariantEntryId'} -> Entry {'Id'} Required Cascade ToDependent: VariantOf + Indexes: + MainEntryId + MainSenseId + SnapshotId Unique + VariantEntryId, MainEntryId Unique + Annotations: + Relational:Filter: MainSenseId IS NULL + VariantEntryId, MainEntryId, MainSenseId Unique + Annotations: + Relational:Filter: MainSenseId IS NOT NULL + Annotations: + Relational:FunctionName: + Relational:Schema: + Relational:SqlQuery: + Relational:TableName: Variants + Relational:ViewName: + Relational:ViewSchema: + EntityType: VariantType + Properties: + Id (Guid) Required PK AfterSave:Throw ValueGenerated.OnAdd + DeletedAt (DateTimeOffset?) + Name (MultiString) Required + Annotations: + Relational:ColumnType: jsonb + SnapshotId (no field, Guid?) Shadow FK Index + Keys: + Id PK + Foreign keys: + VariantType {'SnapshotId'} -> ObjectSnapshot {'Id'} Unique SetNull + Indexes: + SnapshotId Unique + Annotations: + Relational:FunctionName: + Relational:Schema: + Relational:SqlQuery: + Relational:TableName: VariantType + Relational:ViewName: + Relational:ViewSchema: EntityType: WritingSystem Properties: Id (_id, Guid) Required PK AfterSave:Throw ValueGenerated.OnAdd diff --git a/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyIObjectWithIdModels.verified.txt b/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyIObjectWithIdModels.verified.txt index 048b425e86..09a82c9b55 100644 --- a/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyIObjectWithIdModels.verified.txt +++ b/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyIObjectWithIdModels.verified.txt @@ -36,6 +36,14 @@ DerivedType: ComplexFormComponent, TypeDiscriminator: ComplexFormComponent }, + { + DerivedType: VariantType, + TypeDiscriminator: VariantType + }, + { + DerivedType: Variant, + TypeDiscriminator: Variant + }, { DerivedType: CustomView, TypeDiscriminator: CustomView diff --git a/backend/FwLite/LcmCrdt.Tests/MiniLcmTests/VariantTests.cs b/backend/FwLite/LcmCrdt.Tests/MiniLcmTests/VariantTests.cs new file mode 100644 index 0000000000..d6fdefe61f --- /dev/null +++ b/backend/FwLite/LcmCrdt.Tests/MiniLcmTests/VariantTests.cs @@ -0,0 +1,55 @@ +namespace LcmCrdt.Tests.MiniLcmTests; + +public class VariantTests : VariantTestsBase +{ + private readonly MiniLcmApiFixture _fixture = new(); + + protected override async Task NewApi() + { + await _fixture.InitializeAsync(); + return _fixture.Api; + } + + public override async Task DisposeAsync() + { + await base.DisposeAsync(); + await _fixture.DisposeAsync(); + } + + [Fact] + public async Task Create_AlwaysAssignsNewEntityId() + { + // The caller's entity ID is never used. This matches FwData behavior (which ignores + // the ID entirely) and prevents Harmony duplicate-ID pitfalls during sync. + var input = Variant.FromEntries( + (await Api.GetEntry(_variantEntryId))!, + (await Api.GetEntry(_mainEntryId))!); + var providedId = input.Id; + + var created = await Api.CreateVariant(input); + + created.MaybeId.Should().NotBeNull(); + created.Id.Should().NotBe(providedId); + } + + [Fact] + public async Task Create_ChangingProperty_ProducesNewEntityId() + { + // When the sync diff detects a property change (e.g. MainEntryId), it does + // remove + add. The "add" reuses the same input object with the old entity ID. + var newMainEntry = await Api.CreateEntry(new() + { + LexemeForm = { { "en", "New Main" } } + }); + + var input = Variant.FromEntries( + (await Api.GetEntry(_variantEntryId))!, + (await Api.GetEntry(_mainEntryId))!); + var first = await Api.CreateVariant(input); + + input.MainEntryId = newMainEntry.Id; + var second = await Api.CreateVariant(input); + + second.Id.Should().NotBe(first.Id); + } +} diff --git a/backend/FwLite/LcmCrdt.Tests/SnapshotAtCommitServiceTests.cs b/backend/FwLite/LcmCrdt.Tests/SnapshotAtCommitServiceTests.cs index 64ce9d5783..1622f1e89c 100644 --- a/backend/FwLite/LcmCrdt.Tests/SnapshotAtCommitServiceTests.cs +++ b/backend/FwLite/LcmCrdt.Tests/SnapshotAtCommitServiceTests.cs @@ -26,6 +26,7 @@ private void AssertSnapshotsAreEquivalentEqual(ProjectSnapshot expected, Project .WithoutStrictOrderingFor(x => x.SemanticDomains) .WithoutStrictOrderingFor(x => x.ComplexFormTypes) .WithoutStrictOrderingFor(x => x.MorphTypes) + .WithoutStrictOrderingFor(x => x.VariantTypes) ); } diff --git a/backend/FwLite/LcmCrdt/Changes/CreateVariantType.cs b/backend/FwLite/LcmCrdt/Changes/CreateVariantType.cs new file mode 100644 index 0000000000..cf39fc9d86 --- /dev/null +++ b/backend/FwLite/LcmCrdt/Changes/CreateVariantType.cs @@ -0,0 +1,21 @@ +using LcmCrdt.Objects; +using MiniLcm.Models; +using SIL.Harmony; +using SIL.Harmony.Changes; +using SIL.Harmony.Core; +using SIL.Harmony.Entities; + +namespace LcmCrdt.Changes; + +public class CreateVariantType(Guid entityId, MultiString name) : CreateChange(entityId), ISelfNamedType +{ + public MultiString Name { get; } = name; + public override ValueTask NewEntity(Commit commit, IChangeContext context) + { + return ValueTask.FromResult(new VariantType + { + Id = EntityId, + Name = Name + }); + } +} diff --git a/backend/FwLite/LcmCrdt/Changes/Entries/AddVariantChange.cs b/backend/FwLite/LcmCrdt/Changes/Entries/AddVariantChange.cs new file mode 100644 index 0000000000..d3c283d28f --- /dev/null +++ b/backend/FwLite/LcmCrdt/Changes/Entries/AddVariantChange.cs @@ -0,0 +1,125 @@ +using System.Text.Json.Serialization; +using SIL.Harmony; +using SIL.Harmony.Changes; +using SIL.Harmony.Core; +using SIL.Harmony.Entities; + +namespace LcmCrdt.Changes.Entries; + +public class AddVariantChange : CreateChange, ISelfNamedType +{ + public Guid VariantEntryId { get; } + public Guid MainEntryId { get; } + public Guid? MainSenseId { get; } + public List Types { get; } + public bool HideMinorEntry { get; } + public RichMultiString Comment { get; } + + [JsonConstructor] + public AddVariantChange(Guid entityId, + Guid variantEntryId, + Guid mainEntryId, + Guid? mainSenseId = null, + List? types = null, + bool hideMinorEntry = false, + RichMultiString? comment = null) : base(entityId) + { + VariantEntryId = variantEntryId; + MainEntryId = mainEntryId; + MainSenseId = mainSenseId; + Types = types ?? []; + HideMinorEntry = hideMinorEntry; + Comment = comment ?? new(); + } + + public AddVariantChange(Variant variant) : this(variant.MaybeId ?? Guid.NewGuid(), + variant.VariantEntryId, + variant.MainEntryId, + variant.MainSenseId, + [..variant.Types.Select(t => t.Copy())], + variant.HideMinorEntry, + variant.Comment.Copy()) + { + } + + public override async ValueTask NewEntity(Commit commit, IChangeContext context) + { + var variantEntry = await context.GetCurrent(VariantEntryId); + var mainEntry = await context.GetCurrent(MainEntryId); + Sense? mainSense = null; + if (MainSenseId is not null) + mainSense = await context.GetCurrent(MainSenseId.Value); + var shouldBeDeleted = (variantEntry is null or {DeletedAt: not null } || + mainEntry is null or { DeletedAt: not null } || + (MainSenseId.HasValue && mainSense?.DeletedAt is not null)); + var types = new List(Types.Count); + foreach (var type in Types) + { + if (await context.IsObjectDeleted(type.Id)) continue; + types.Add(type); + } + var variant = new Variant + { + Id = EntityId, + VariantEntryId = VariantEntryId, + VariantHeadword = variantEntry?.Headword(), + MainEntryId = MainEntryId, + MainHeadword = mainEntry?.Headword(), + MainSenseId = MainSenseId, + Types = types, + HideMinorEntry = HideMinorEntry, + Comment = Comment.Copy(), + DeletedAt = shouldBeDeleted + ? commit.DateTime + : (DateTime?)null, + }; + if (variant.DeletedAt is null && await CreatesReferenceCycleOrDuplicate(variant, context)) + { + variant.DeletedAt = commit.DateTime; + } + + return variant; + } + + private static async ValueTask CreatesReferenceCycleOrDuplicate(Variant parent, IChangeContext context) + { + if (parent.VariantEntryId == parent.MainEntryId) return true; + await foreach (var o in context.GetObjectsReferencing(parent.VariantEntryId)) + { + if (o is not Variant v) continue; + if (v.DeletedAt is not null) continue; + if (v.Id == parent.Id) continue; + var duplicate = v.VariantEntryId == parent.VariantEntryId && + v.MainEntryId == parent.MainEntryId && + v.MainSenseId == parent.MainSenseId; + if (duplicate) return true; + } + + //LCM enforces acyclicity over the COMBINED complex-form + variant component graph + //(LexEntryRef.ValidateAddObjectInternal → LexEntry.AllComponents), so mirror that: + //walk everything the main entry depends on through both link types; if the variant + //entry is reachable, this link would close a cycle FLEx rejects + HashSet visited = []; + Queue queue = new(); + queue.Enqueue(parent.MainEntryId); + while (queue.Count > 0) + { + var entryId = queue.Dequeue(); + if (entryId == parent.VariantEntryId) return true; + if (!visited.Add(entryId)) continue; + await foreach (var o in context.GetObjectsReferencing(entryId)) + { + switch (o) + { + case Variant v when v.DeletedAt is null && v.VariantEntryId == entryId: + queue.Enqueue(v.MainEntryId); + break; + case ComplexFormComponent cfc when cfc.DeletedAt is null && cfc.ComplexFormEntryId == entryId: + queue.Enqueue(cfc.ComponentEntryId); + break; + } + } + } + return false; + } +} diff --git a/backend/FwLite/LcmCrdt/Changes/Entries/AddVariantTypeChange.cs b/backend/FwLite/LcmCrdt/Changes/Entries/AddVariantTypeChange.cs new file mode 100644 index 0000000000..d6ea54bacb --- /dev/null +++ b/backend/FwLite/LcmCrdt/Changes/Entries/AddVariantTypeChange.cs @@ -0,0 +1,18 @@ +using SIL.Harmony.Changes; +using SIL.Harmony.Core; +using SIL.Harmony.Entities; + +namespace LcmCrdt.Changes.Entries; + +public class AddVariantTypeChange(Guid entityId, VariantType variantType) + : EditChange(entityId), ISelfNamedType +{ + public VariantType VariantType { get; } = variantType; + + public override async ValueTask ApplyChange(Variant entity, IChangeContext context) + { + if (entity.Types.Any(t => t.Id == VariantType.Id)) return; + if (await context.IsObjectDeleted(VariantType.Id)) return; + entity.Types.Add(VariantType); + } +} diff --git a/backend/FwLite/LcmCrdt/Changes/Entries/RemoveVariantTypeChange.cs b/backend/FwLite/LcmCrdt/Changes/Entries/RemoveVariantTypeChange.cs new file mode 100644 index 0000000000..27e3be012a --- /dev/null +++ b/backend/FwLite/LcmCrdt/Changes/Entries/RemoveVariantTypeChange.cs @@ -0,0 +1,15 @@ +using SIL.Harmony.Changes; +using SIL.Harmony.Core; +using SIL.Harmony.Entities; + +namespace LcmCrdt.Changes.Entries; + +public class RemoveVariantTypeChange(Guid entityId, Guid variantTypeId) : EditChange(entityId), ISelfNamedType +{ + public Guid VariantTypeId { get; } = variantTypeId; + public override ValueTask ApplyChange(Variant entity, IChangeContext context) + { + entity.Types.RemoveAll(t => t.Id == VariantTypeId); + return ValueTask.CompletedTask; + } +} diff --git a/backend/FwLite/LcmCrdt/CrdtMiniLcmApi.cs b/backend/FwLite/LcmCrdt/CrdtMiniLcmApi.cs index 1aa48ada4a..efc2f0833c 100644 --- a/backend/FwLite/LcmCrdt/CrdtMiniLcmApi.cs +++ b/backend/FwLite/LcmCrdt/CrdtMiniLcmApi.cs @@ -404,6 +404,135 @@ public async Task RemoveComplexFormType(Guid entryId, Guid complexFormTypeId) await AddChange(new RemoveComplexFormTypeChange(entryId, complexFormTypeId)); } + public async IAsyncEnumerable GetVariantTypes() + { + await using var repo = await repoFactory.CreateRepoAsync(); + await foreach (var variantType in repo.VariantTypes.AsAsyncEnumerable()) + { + yield return variantType; + } + } + + public async Task GetVariantType(Guid id) + { + await using var repo = await repoFactory.CreateRepoAsync(); + return await repo.VariantTypes.SingleOrDefaultAsync(v => v.Id == id); + } + + public async Task CreateVariantType(VariantType variantType) + { + await using var repo = await repoFactory.CreateRepoAsync(); + if (variantType.Id == default) variantType.Id = Guid.NewGuid(); + await AddChange(new CreateVariantType(variantType.Id, variantType.Name)); + return await repo.VariantTypes.SingleAsync(v => v.Id == variantType.Id); + } + + public async Task SubmitUpdateVariantType(Guid id, UpdateObjectInput update) + { + await AddChange(new JsonPatchChange(id, update.Patch)); + } + + public async Task UpdateVariantType(Guid id, UpdateObjectInput update) + { + await SubmitUpdateVariantType(id, update); + return await GetVariantType(id) ?? throw NotFoundException.ForType(id); + } + + public async Task UpdateVariantType(VariantType before, VariantType after, IMiniLcmApi? api = null) + { + await VariantTypeSync.Sync(before, after, api ?? this); + return await GetVariantType(after.Id) ?? throw NotFoundException.ForType(after.Id); + } + + public async Task DeleteVariantType(Guid id) + { + await AddChange(new DeleteChange(id)); + } + + public async Task SubmitCreateVariant(Variant variant) + { + await using var repo = await repoFactory.CreateRepoAsync(); + var existing = await repo.FindVariant(variant); + if (existing is not null) return; + // Always generate a new entity ID — the caller's ID is never used. + // This aligns with FwData (which ignores the ID entirely) and prevents + // Harmony duplicate-ID pitfalls during sync. + variant.Id = Guid.NewGuid(); + await AddChange(await CreateVariantChange(repo, variant)); + } + + private static async Task CreateVariantChange(MiniLcmRepository repo, Variant variant) + { + if (variant.MainSenseId is not null) + { + //a missing sense is tolerated (out-of-order sync; the change soft-deletes the link), + //but a sense that exists under a DIFFERENT entry is a bad request + var senseEntryId = await repo.Senses + .Where(s => s.Id == variant.MainSenseId.Value) + .Select(s => (Guid?)s.EntryId) + .FirstOrDefaultAsync(); + if (senseEntryId is not null && senseEntryId != variant.MainEntryId) + throw new InvalidOperationException($"Sense {variant.MainSenseId} does not belong to entry {variant.MainEntryId}, it belongs to {senseEntryId}"); + } + var typeIds = variant.Types.Select(t => t.Id).ToArray(); + var resolvedTypes = await repo.VariantTypes.Where(t => typeIds.Contains(t.Id)).ToArrayAsync(); + var missing = typeIds.Except(resolvedTypes.Select(t => t.Id)).ToArray(); + if (missing.Length > 0) + throw new InvalidOperationException($"Variant {variant} references variant types which do not exist: {string.Join(", ", missing)}"); + // use the repo's canonical type objects so embedded copies match CRDT state + return new AddVariantChange(variant with + { + Types = [..typeIds.Select(id => resolvedTypes.Single(t => t.Id == id))] + }); + } + + public async Task CreateVariant(Variant variant) + { + await SubmitCreateVariant(variant); + await using var repo = await repoFactory.CreateRepoAsync(); + return await repo.FindVariant(variant) ?? throw NotFoundException.ForType(variant.VariantEntryId); + } + + public async Task UpdateVariant(Variant before, Variant after, IMiniLcmApi? api = null) + { + await VariantSync.Sync(before, after, api ?? this); + await using var repo = await repoFactory.CreateRepoAsync(); + return await repo.FindVariant(after) ?? throw NotFoundException.ForType(after.VariantEntryId); + } + + public async Task SubmitUpdateVariant(Variant variant, UpdateObjectInput update) + { + await using var repo = await repoFactory.CreateRepoAsync(); + // resolved by composite key; a link deleted on the other side stays deleted (delete wins) + var existing = await repo.FindVariant(variant); + if (existing is null) return; + await AddChange(new JsonPatchChange(existing.Id, update.Patch)); + } + + public async Task DeleteVariant(Variant variant) + { + await using var repo = await repoFactory.CreateRepoAsync(); + var existing = await repo.FindVariant(variant); + if (existing is null) return; + await AddChange(new DeleteChange(existing.Id)); + } + + public async Task AddVariantType(Variant variant, Guid variantTypeId) + { + await using var repo = await repoFactory.CreateRepoAsync(); + var existing = await repo.FindVariant(variant); + if (existing is null) return; + await AddChange(new AddVariantTypeChange(existing.Id, await repo.VariantTypes.SingleAsync(vt => vt.Id == variantTypeId))); + } + + public async Task RemoveVariantType(Variant variant, Guid variantTypeId) + { + await using var repo = await repoFactory.CreateRepoAsync(); + var existing = await repo.FindVariant(variant); + if (existing is null) return; + await AddChange(new RemoveVariantTypeChange(existing.Id, variantTypeId)); + } + public async IAsyncEnumerable GetMorphTypes() { await using var repo = await repoFactory.CreateRepoAsync(); @@ -526,6 +655,18 @@ private IEnumerable CreateEntryChanges(Entry entry, if (!createdEntryIds.Contains(complexForm.ComplexFormEntryId)) continue; yield return new AddEntryComponentChange(complexForm); } + foreach (var variantOf in entry.VariantOf) + { + //only add variant links if the main entry was created already, otherwise it will be added when the main entry is created + if (!createdEntryIds.Contains(variantOf.MainEntryId)) continue; + yield return new AddVariantChange(variantOf); + } + foreach (var variant in entry.Variants) + { + //only add variant links if the variant entry was created already, otherwise it will be added when the variant entry is created + if (!createdEntryIds.Contains(variant.VariantEntryId)) continue; + yield return new AddVariantChange(variant); + } foreach (var addComplexFormTypeChange in entry.ComplexFormTypes.Select(c => new AddComplexFormTypeChange(entry.Id, c))) { yield return addComplexFormTypeChange; @@ -602,6 +743,12 @@ await ToComplexFormComponents(entry.Components).ToArrayAsync() : ..options.IncludeComplexFormsAndComponents ? await ToComplexFormComponents(entry.ComplexForms).ToArrayAsync() : Enumerable.Empty(), + ..options.IncludeComplexFormsAndComponents ? + await ToVariants(entry.VariantOf).ToArrayAsync() : + Enumerable.Empty(), + ..options.IncludeComplexFormsAndComponents ? + await ToVariants(entry.Variants).ToArrayAsync() : + Enumerable.Empty(), ..await ToComplexFormTypes(entry.ComplexFormTypes).ToArrayAsync() ]); return await repo.GetEntry(entry.Id) ?? throw NotFoundException.ForType(entry.Id); @@ -649,6 +796,21 @@ async IAsyncEnumerable ToComplexFormComponents(IList ToVariants(IList variants) + { + foreach (var variant in variants) + { + if (variant.VariantEntryId == default) variant.VariantEntryId = entry.Id; + if (variant.MainEntryId == default) variant.MainEntryId = entry.Id; + if (variant.VariantEntryId == variant.MainEntryId) + { + throw new InvalidOperationException($"Variant {variant} has the same variant entry id as its main entry"); + } + if (variant.MaybeId is null) variant.Id = Guid.NewGuid(); + yield return await CreateVariantChange(repo, variant); + } + } + async IAsyncEnumerable ToComplexFormTypes(IList complexFormTypes) { foreach (var complexFormType in complexFormTypes) diff --git a/backend/FwLite/LcmCrdt/Data/EntryQueryHelpers.cs b/backend/FwLite/LcmCrdt/Data/EntryQueryHelpers.cs index b2af7868fa..f6d816f351 100644 --- a/backend/FwLite/LcmCrdt/Data/EntryQueryHelpers.cs +++ b/backend/FwLite/LcmCrdt/Data/EntryQueryHelpers.cs @@ -42,6 +42,9 @@ public static string Headword(this Entry e, WritingSystemId ws) public static Entry? QueryComponentEntry(ComplexFormComponent c) => throw new NotSupportedException(); public static Sense? QueryComponentSense(ComplexFormComponent c) => throw new NotSupportedException(); public static Entry? QueryComplexFormEntry(ComplexFormComponent c) => throw new NotSupportedException(); + public static Entry? QueryVariantEntry(Variant v) => throw new NotSupportedException(); + public static Entry? QueryMainEntry(Variant v) => throw new NotSupportedException(); + public static Sense? QueryMainSense(Variant v) => throw new NotSupportedException(); [Sql.Expression(""" (select WsId diff --git a/backend/FwLite/LcmCrdt/Data/MiniLcmRepository.cs b/backend/FwLite/LcmCrdt/Data/MiniLcmRepository.cs index 4ed9fb5a2d..a426ee397e 100644 --- a/backend/FwLite/LcmCrdt/Data/MiniLcmRepository.cs +++ b/backend/FwLite/LcmCrdt/Data/MiniLcmRepository.cs @@ -66,6 +66,8 @@ public void Dispose() public IQueryable Entries => dbContext.Entries.ToLinqToDB(); public IQueryable ComplexFormComponents => dbContext.ComplexFormComponents; public IQueryable ComplexFormTypes => dbContext.ComplexFormTypes; + public IQueryable Variants => dbContext.Variants; + public IQueryable VariantTypes => dbContext.VariantTypes; public IQueryable MorphTypes => dbContext.MorphTypes; public IQueryable Senses => dbContext.Senses; public IQueryable ExampleSentences => dbContext.ExampleSentences; @@ -121,6 +123,15 @@ public async Task FindComplexFormComponent(Guid objectId) throw NotFoundException.ForType(objectId); } + public async Task FindVariant(Variant variant) + { + return await AsyncExtensions.SingleOrDefaultAsync(Variants, + v => + v.VariantEntryId == variant.VariantEntryId + && v.MainEntryId == variant.MainEntryId + && v.MainSenseId == variant.MainSenseId); + } + public async Task CountEntries(string? query = null, FilterQueryOptions? options = null) { options ??= FilterQueryOptions.Default; @@ -141,16 +152,17 @@ public async IAsyncEnumerable GetEntries( .LoadWith(e => e.Senses).ThenLoad(s => s.PartOfSpeech) .LoadWith(e => e.ComplexForms) .LoadWith(e => e.Components) + .LoadWith(e => e.VariantOf) + .LoadWith(e => e.Variants) .AsQueryable(); queryable = options.ApplyPaging(queryable); - var complexFormComparer = cultureProvider.GetCompareInfo(await GetWritingSystem(default, WritingSystemType.Vernacular)) - .AsComplexFormComparer(); + var compareInfo = cultureProvider.GetCompareInfo(await GetWritingSystem(default, WritingSystemType.Vernacular)); var entries = AsyncExtensions.AsAsyncEnumerable(queryable); await EnsureConnectionOpen();//sometimes there can be a race condition where the collations arent setup await foreach (var entry in EfExtensions.SafeIterate(entries)) { - entry.Finalize(complexFormComparer); + entry.Finalize(compareInfo); yield return entry; } } @@ -248,13 +260,13 @@ private ValueTask> ApplySorting(IQueryable queryable, Q .LoadWith(e => e.Senses).ThenLoad(s => s.PartOfSpeech) .LoadWith(e => e.ComplexForms) .LoadWith(e => e.Components) + .LoadWith(e => e.VariantOf) + .LoadWith(e => e.Variants) .AsQueryable(), e => e.Id == id); if (entry is not null) { var sortWs = await GetWritingSystem(WritingSystemId.Default, WritingSystemType.Vernacular); - var complexFormComparer = cultureProvider.GetCompareInfo(sortWs) - .AsComplexFormComparer(); - entry.Finalize(complexFormComparer); + entry.Finalize(cultureProvider.GetCompareInfo(sortWs)); } return entry; diff --git a/backend/FwLite/LcmCrdt/LcmCrdtDbContext.cs b/backend/FwLite/LcmCrdt/LcmCrdtDbContext.cs index af8cd93174..e65d39cee9 100644 --- a/backend/FwLite/LcmCrdt/LcmCrdtDbContext.cs +++ b/backend/FwLite/LcmCrdt/LcmCrdtDbContext.cs @@ -21,6 +21,8 @@ IOptions options public IQueryable Entries => Set().AsNoTracking(); public IQueryable ComplexFormComponents => Set().AsNoTracking(); public IQueryable ComplexFormTypes => Set().AsNoTracking(); + public IQueryable Variants => Set().AsNoTracking(); + public IQueryable VariantTypes => Set().AsNoTracking(); public IQueryable MorphTypes => Set().AsNoTracking(); public IQueryable Senses => Set().AsNoTracking(); public IQueryable ExampleSentences => Set().AsNoTracking(); diff --git a/backend/FwLite/LcmCrdt/LcmCrdtKernel.cs b/backend/FwLite/LcmCrdt/LcmCrdtKernel.cs index d6282371ed..569b52bbc6 100644 --- a/backend/FwLite/LcmCrdt/LcmCrdtKernel.cs +++ b/backend/FwLite/LcmCrdt/LcmCrdtKernel.cs @@ -144,6 +144,11 @@ public static void ConfigureDbOptions(IServiceProvider provider, DbContextOption .Entity().Association(c => EntryQueryHelpers.QueryComplexFormEntry(c), c => c.ComplexFormEntryId, e => e!.Id) .Entity().Property(c => c.ComponentHeadword).IsExpression(c => EntryQueryHelpers.QueryComponentEntry(c)!.QueryHeadwordWithTokens(EntryQueryHelpers.DefaultWritingSystem(WritingSystemType.Vernacular)), isColumn: true, alias: "componentHeadword") .Entity().Property(c => c.ComplexFormHeadword).IsExpression(c => EntryQueryHelpers.QueryComplexFormEntry(c)!.QueryHeadwordWithTokens(EntryQueryHelpers.DefaultWritingSystem(WritingSystemType.Vernacular)), isColumn: true, alias: "complexFormHeadword") + .Entity().Association(v => EntryQueryHelpers.QueryVariantEntry(v), v => v.VariantEntryId, e => e!.Id) + .Entity().Association(v => EntryQueryHelpers.QueryMainEntry(v), v => v.MainEntryId, e => e!.Id) + .Entity().Association(v => EntryQueryHelpers.QueryMainSense(v), v => v.MainSenseId, s => s!.Id) + .Entity().Property(v => v.VariantHeadword).IsExpression(v => EntryQueryHelpers.QueryVariantEntry(v)!.QueryHeadwordWithTokens(EntryQueryHelpers.DefaultWritingSystem(WritingSystemType.Vernacular)), isColumn: true, alias: "variantHeadword") + .Entity().Property(v => v.MainHeadword).IsExpression(v => EntryQueryHelpers.QueryMainEntry(v)!.QueryHeadwordWithTokens(EntryQueryHelpers.DefaultWritingSystem(WritingSystemType.Vernacular)), isColumn: true, alias: "mainHeadword") .Entity().Member(r => r.GetPlainText()).IsExpression(r => Json.GetPlainText(r)) .Entity().Member(g => g.ToString()).IsExpression(g => Json.ToString(g)) .Build(); @@ -199,6 +204,16 @@ public static void ConfigureCrdt(CrdtConfig config) .HasPrincipalKey(entry => entry.Id) .HasForeignKey(c => c.ComponentEntryId) .OnDelete(DeleteBehavior.Cascade); + builder.HasMany(e => e.VariantOf) + .WithOne() + .HasPrincipalKey(entry => entry.Id) + .HasForeignKey(v => v.VariantEntryId) + .OnDelete(DeleteBehavior.Cascade); + builder.HasMany(e => e.Variants) + .WithOne() + .HasPrincipalKey(entry => entry.Id) + .HasForeignKey(v => v.MainEntryId) + .OnDelete(DeleteBehavior.Cascade); builder .Property(e => e.ComplexFormTypes) .HasColumnType("jsonb") @@ -218,6 +233,10 @@ public static void ConfigureCrdt(CrdtConfig config) .WithOne() .HasForeignKey(c => c.ComponentSenseId) .OnDelete(DeleteBehavior.Cascade); + builder.HasMany() + .WithOne() + .HasForeignKey(v => v.MainSenseId) + .OnDelete(DeleteBehavior.Cascade); builder.HasOne() .WithMany(e => e.Senses) .HasForeignKey(sense => sense.EntryId); @@ -306,6 +325,32 @@ public static void ConfigureCrdt(CrdtConfig config) component.ComplexFormEntryId, component.ComponentEntryId }).IsUnique().HasFilter($"{componentSenseId} IS NULL"); + }) + .Add() + .Add(builder => + { + const string mainSenseId = "MainSenseId"; + builder.ToTable("Variants"); + builder.Property(v => v.MainSenseId).HasColumnName(mainSenseId); + builder + .Property(v => v.Types) + .HasColumnType("jsonb") + .HasConversion(list => JsonSerializer.Serialize(list, (JsonSerializerOptions?)null), + json => JsonSerializer.Deserialize>(json, + (JsonSerializerOptions?)null) ?? new()); + //these indexes are used to ensure that we don't create duplicate variant links + //we need the filter otherwise 2 links which are the same and have a null sense id can be created because 2 rows with the same null are not considered duplicates + builder.HasIndex(variant => new + { + variant.VariantEntryId, + variant.MainEntryId, + variant.MainSenseId + }).IsUnique().HasFilter($"{mainSenseId} IS NOT NULL"); + builder.HasIndex(variant => new + { + variant.VariantEntryId, + variant.MainEntryId + }).IsUnique().HasFilter($"{mainSenseId} IS NULL"); }); config.AddRemoteResourceEntity(); @@ -316,6 +361,8 @@ public static void ConfigureCrdt(CrdtConfig config) .Add>() .Add>() .Add>() + .Add>() + .Add>() .Add>() .Add>() .Add>() @@ -325,6 +372,8 @@ public static void ConfigureCrdt(CrdtConfig config) .Add>() .Add>() .Add>() + .Add>() + .Add>() .Add>() .Add() .Add() @@ -361,6 +410,10 @@ public static void ConfigureCrdt(CrdtConfig config) .Add() .Add() .Add() + .Add() + .Add() + .Add() + .Add() .Add() .Add() .Add>() diff --git a/backend/FwLite/LcmCrdt/Migrations/20260703134525_AddVariants.Designer.cs b/backend/FwLite/LcmCrdt/Migrations/20260703134525_AddVariants.Designer.cs new file mode 100644 index 0000000000..81306c0d27 --- /dev/null +++ b/backend/FwLite/LcmCrdt/Migrations/20260703134525_AddVariants.Designer.cs @@ -0,0 +1,972 @@ +// +using System; +using System.Collections.Generic; +using LcmCrdt; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace LcmCrdt.Migrations +{ + [DbContext(typeof(LcmCrdtDbContext))] + [Migration("20260703134525_AddVariants")] + partial class AddVariants + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder.HasAnnotation("ProductVersion", "10.0.8"); + + modelBuilder.Entity("LcmCrdt.FullTextSearch.EntrySearchRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("CitationForm") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Definition") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Gloss") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Headword") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("LexemeForm") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("EntrySearchRecord", null, t => + { + t.ExcludeFromMigrations(); + }); + }); + + modelBuilder.Entity("LcmCrdt.ProjectData", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("ClientId") + .HasColumnType("TEXT"); + + b.Property("Code") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("FwProjectId") + .HasColumnType("TEXT"); + + b.Property("LastUserId") + .HasColumnType("TEXT"); + + b.Property("LastUserName") + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("OriginDomain") + .HasColumnType("TEXT"); + + b.Property("Role") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasDefaultValue("Editor"); + + b.HasKey("Id"); + + b.ToTable("ProjectData"); + }); + + modelBuilder.Entity("MiniLcm.Models.ComplexFormComponent", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("ComplexFormEntryId") + .HasColumnType("TEXT"); + + b.Property("ComplexFormHeadword") + .HasColumnType("TEXT"); + + b.Property("ComponentEntryId") + .HasColumnType("TEXT"); + + b.Property("ComponentHeadword") + .HasColumnType("TEXT"); + + b.Property("ComponentSenseId") + .HasColumnType("TEXT") + .HasColumnName("ComponentSenseId"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("Order") + .HasColumnType("REAL"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("ComponentEntryId"); + + b.HasIndex("ComponentSenseId"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.HasIndex("ComplexFormEntryId", "ComponentEntryId") + .IsUnique() + .HasFilter("ComponentSenseId IS NULL"); + + b.HasIndex("ComplexFormEntryId", "ComponentEntryId", "ComponentSenseId") + .IsUnique() + .HasFilter("ComponentSenseId IS NOT NULL"); + + b.ToTable("ComplexFormComponents", (string)null); + }); + + modelBuilder.Entity("MiniLcm.Models.ComplexFormType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.ToTable("ComplexFormType"); + }); + + modelBuilder.Entity("MiniLcm.Models.CustomView", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("Analysis") + .HasColumnType("jsonb"); + + b.Property("Base") + .HasColumnType("INTEGER"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("EntryFields") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("ExampleFields") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("SenseFields") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.Property("Vernacular") + .HasColumnType("jsonb"); + + b.HasKey("Id"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.ToTable("CustomView"); + }); + + modelBuilder.Entity("MiniLcm.Models.Entry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("CitationForm") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("ComplexFormTypes") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("HomographNumber") + .HasColumnType("INTEGER"); + + b.Property("LexemeForm") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("LiteralMeaning") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("MorphType") + .HasColumnType("INTEGER"); + + b.Property("Note") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("PublishIn") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.ToTable("Entry"); + }); + + modelBuilder.Entity("MiniLcm.Models.ExampleSentence", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("Order") + .HasColumnType("REAL"); + + b.Property("Reference") + .HasColumnType("jsonb"); + + b.Property("SenseId") + .HasColumnType("TEXT"); + + b.Property("Sentence") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.Property("Translations") + .IsRequired() + .HasColumnType("jsonb"); + + b.HasKey("Id"); + + b.HasIndex("SenseId"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.ToTable("ExampleSentence"); + }); + + modelBuilder.Entity("MiniLcm.Models.MorphType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("Abbreviation") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("Description") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("Kind") + .HasColumnType("INTEGER"); + + b.Property("Name") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("Postfix") + .HasColumnType("TEXT"); + + b.Property("Prefix") + .HasColumnType("TEXT"); + + b.Property("SecondaryOrder") + .HasColumnType("INTEGER"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("Kind") + .IsUnique(); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.ToTable("MorphType"); + }); + + modelBuilder.Entity("MiniLcm.Models.PartOfSpeech", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("Predefined") + .HasColumnType("INTEGER"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.ToTable("PartOfSpeech"); + }); + + modelBuilder.Entity("MiniLcm.Models.Publication", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("IsMain") + .HasColumnType("INTEGER"); + + b.Property("Name") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.ToTable("Publication"); + }); + + modelBuilder.Entity("MiniLcm.Models.SemanticDomain", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("Code") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("Predefined") + .HasColumnType("INTEGER"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.ToTable("SemanticDomain"); + }); + + modelBuilder.Entity("MiniLcm.Models.Sense", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("Definition") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("EntryId") + .HasColumnType("TEXT"); + + b.Property("Gloss") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("Order") + .HasColumnType("REAL"); + + b.Property("PartOfSpeechId") + .HasColumnType("TEXT"); + + b.Property("Pictures") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasDefaultValueSql("'[]'"); + + b.Property("SemanticDomains") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("EntryId"); + + b.HasIndex("PartOfSpeechId"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.ToTable("Sense"); + }); + + modelBuilder.Entity("MiniLcm.Models.Variant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("Comment") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("HideMinorEntry") + .HasColumnType("INTEGER"); + + b.Property("MainEntryId") + .HasColumnType("TEXT"); + + b.Property("MainHeadword") + .HasColumnType("TEXT"); + + b.Property("MainSenseId") + .HasColumnType("TEXT") + .HasColumnName("MainSenseId"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.Property("Types") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("VariantEntryId") + .HasColumnType("TEXT"); + + b.Property("VariantHeadword") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("MainEntryId"); + + b.HasIndex("MainSenseId"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.HasIndex("VariantEntryId", "MainEntryId") + .IsUnique() + .HasFilter("MainSenseId IS NULL"); + + b.HasIndex("VariantEntryId", "MainEntryId", "MainSenseId") + .IsUnique() + .HasFilter("MainSenseId IS NOT NULL"); + + b.ToTable("Variants", (string)null); + }); + + modelBuilder.Entity("MiniLcm.Models.VariantType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.ToTable("VariantType"); + }); + + modelBuilder.Entity("MiniLcm.Models.WritingSystem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("Abbreviation") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("Exemplars") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("Font") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Order") + .HasColumnType("REAL"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.Property("Type") + .HasColumnType("INTEGER"); + + b.Property("WsId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.HasIndex("WsId", "Type") + .IsUnique(); + + b.ToTable("WritingSystem"); + }); + + modelBuilder.Entity("SIL.Harmony.Commit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("ClientId") + .HasColumnType("TEXT"); + + b.Property("Hash") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Metadata") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("ParentHash") + .IsRequired() + .HasColumnType("TEXT"); + + b.ComplexProperty(typeof(Dictionary), "HybridDateTime", "SIL.Harmony.Commit.HybridDateTime#HybridDateTime", b1 => + { + b1.IsRequired(); + + b1.Property("Counter") + .HasColumnType("INTEGER") + .HasColumnName("Counter"); + + b1.Property("DateTime") + .HasColumnType("TEXT") + .HasColumnName("DateTime"); + }); + + b.HasKey("Id"); + + b.ToTable("Commits", (string)null); + + b.HasAnnotation("CustomIndex:CompositeIndexes", "[{\"paths\":[\"HybridDateTime.DateTime\",\"HybridDateTime.Counter\",\"Id\"],\"unique\":false,\"name\":\"IX_Commits_DateTime_Counter_Id\"}]"); + }); + + modelBuilder.Entity("SIL.Harmony.Core.ChangeEntity", b => + { + b.Property("CommitId") + .HasColumnType("TEXT"); + + b.Property("Index") + .HasColumnType("INTEGER"); + + b.Property("Change") + .HasColumnType("jsonb"); + + b.Property("EntityId") + .HasColumnType("TEXT"); + + b.HasKey("CommitId", "Index"); + + b.ToTable("ChangeEntities", (string)null); + }); + + modelBuilder.Entity("SIL.Harmony.Db.ObjectSnapshot", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("CommitId") + .HasColumnType("TEXT"); + + b.Property("Entity") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("EntityId") + .HasColumnType("TEXT"); + + b.Property("EntityIsDeleted") + .HasColumnType("INTEGER"); + + b.Property("IsRoot") + .HasColumnType("INTEGER"); + + b.PrimitiveCollection("References") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("TypeName") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("EntityId"); + + b.HasIndex("CommitId", "EntityId") + .IsUnique(); + + b.ToTable("Snapshots", (string)null); + }); + + modelBuilder.Entity("SIL.Harmony.Resource.LocalResource", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("LocalPath") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("LocalResource"); + }); + + modelBuilder.Entity("SIL.Harmony.Resource.RemoteResource", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("RemoteId") + .HasColumnType("TEXT"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.ToTable("RemoteResource"); + }); + + modelBuilder.Entity("MiniLcm.Models.ComplexFormComponent", b => + { + b.HasOne("MiniLcm.Models.Entry", null) + .WithMany("Components") + .HasForeignKey("ComplexFormEntryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("MiniLcm.Models.Entry", null) + .WithMany("ComplexForms") + .HasForeignKey("ComponentEntryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("MiniLcm.Models.Sense", null) + .WithMany() + .HasForeignKey("ComponentSenseId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.ComplexFormComponent", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("MiniLcm.Models.ComplexFormType", b => + { + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.ComplexFormType", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("MiniLcm.Models.CustomView", b => + { + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.CustomView", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("MiniLcm.Models.Entry", b => + { + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.Entry", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("MiniLcm.Models.ExampleSentence", b => + { + b.HasOne("MiniLcm.Models.Sense", null) + .WithMany("ExampleSentences") + .HasForeignKey("SenseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.ExampleSentence", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("MiniLcm.Models.MorphType", b => + { + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.MorphType", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("MiniLcm.Models.PartOfSpeech", b => + { + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.PartOfSpeech", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("MiniLcm.Models.Publication", b => + { + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.Publication", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("MiniLcm.Models.SemanticDomain", b => + { + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.SemanticDomain", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("MiniLcm.Models.Sense", b => + { + b.HasOne("MiniLcm.Models.Entry", null) + .WithMany("Senses") + .HasForeignKey("EntryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("MiniLcm.Models.PartOfSpeech", "PartOfSpeech") + .WithMany() + .HasForeignKey("PartOfSpeechId") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.Sense", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("PartOfSpeech"); + }); + + modelBuilder.Entity("MiniLcm.Models.Variant", b => + { + b.HasOne("MiniLcm.Models.Entry", null) + .WithMany("Variants") + .HasForeignKey("MainEntryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("MiniLcm.Models.Sense", null) + .WithMany() + .HasForeignKey("MainSenseId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.Variant", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("MiniLcm.Models.Entry", null) + .WithMany("VariantOf") + .HasForeignKey("VariantEntryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("MiniLcm.Models.VariantType", b => + { + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.VariantType", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("MiniLcm.Models.WritingSystem", b => + { + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.WritingSystem", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("SIL.Harmony.Core.ChangeEntity", b => + { + b.HasOne("SIL.Harmony.Commit", null) + .WithMany("ChangeEntities") + .HasForeignKey("CommitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("SIL.Harmony.Db.ObjectSnapshot", b => + { + b.HasOne("SIL.Harmony.Commit", "Commit") + .WithMany("Snapshots") + .HasForeignKey("CommitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Commit"); + }); + + modelBuilder.Entity("SIL.Harmony.Resource.RemoteResource", b => + { + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("SIL.Harmony.Resource.RemoteResource", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("MiniLcm.Models.Entry", b => + { + b.Navigation("ComplexForms"); + + b.Navigation("Components"); + + b.Navigation("Senses"); + + b.Navigation("VariantOf"); + + b.Navigation("Variants"); + }); + + modelBuilder.Entity("MiniLcm.Models.Sense", b => + { + b.Navigation("ExampleSentences"); + }); + + modelBuilder.Entity("SIL.Harmony.Commit", b => + { + b.Navigation("ChangeEntities"); + + b.Navigation("Snapshots"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/backend/FwLite/LcmCrdt/Migrations/20260703134525_AddVariants.cs b/backend/FwLite/LcmCrdt/Migrations/20260703134525_AddVariants.cs new file mode 100644 index 0000000000..2e0dc6ac85 --- /dev/null +++ b/backend/FwLite/LcmCrdt/Migrations/20260703134525_AddVariants.cs @@ -0,0 +1,126 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace LcmCrdt.Migrations +{ + /// + public partial class AddVariants : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "Variants", + columns: table => new + { + Id = table.Column(type: "TEXT", nullable: false), + DeletedAt = table.Column(type: "TEXT", nullable: true), + VariantEntryId = table.Column(type: "TEXT", nullable: false), + VariantHeadword = table.Column(type: "TEXT", nullable: true), + MainEntryId = table.Column(type: "TEXT", nullable: false), + MainSenseId = table.Column(type: "TEXT", nullable: true), + MainHeadword = table.Column(type: "TEXT", nullable: true), + Types = table.Column(type: "jsonb", nullable: false), + HideMinorEntry = table.Column(type: "INTEGER", nullable: false), + Comment = table.Column(type: "jsonb", nullable: false), + SnapshotId = table.Column(type: "TEXT", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Variants", x => x.Id); + table.ForeignKey( + name: "FK_Variants_Entry_MainEntryId", + column: x => x.MainEntryId, + principalTable: "Entry", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Variants_Entry_VariantEntryId", + column: x => x.VariantEntryId, + principalTable: "Entry", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Variants_Sense_MainSenseId", + column: x => x.MainSenseId, + principalTable: "Sense", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Variants_Snapshots_SnapshotId", + column: x => x.SnapshotId, + principalTable: "Snapshots", + principalColumn: "Id", + onDelete: ReferentialAction.SetNull); + }); + + migrationBuilder.CreateTable( + name: "VariantType", + columns: table => new + { + Id = table.Column(type: "TEXT", nullable: false), + Name = table.Column(type: "jsonb", nullable: false), + DeletedAt = table.Column(type: "TEXT", nullable: true), + SnapshotId = table.Column(type: "TEXT", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_VariantType", x => x.Id); + table.ForeignKey( + name: "FK_VariantType_Snapshots_SnapshotId", + column: x => x.SnapshotId, + principalTable: "Snapshots", + principalColumn: "Id", + onDelete: ReferentialAction.SetNull); + }); + + migrationBuilder.CreateIndex( + name: "IX_Variants_MainEntryId", + table: "Variants", + column: "MainEntryId"); + + migrationBuilder.CreateIndex( + name: "IX_Variants_MainSenseId", + table: "Variants", + column: "MainSenseId"); + + migrationBuilder.CreateIndex( + name: "IX_Variants_SnapshotId", + table: "Variants", + column: "SnapshotId", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_Variants_VariantEntryId_MainEntryId", + table: "Variants", + columns: new[] { "VariantEntryId", "MainEntryId" }, + unique: true, + filter: "MainSenseId IS NULL"); + + migrationBuilder.CreateIndex( + name: "IX_Variants_VariantEntryId_MainEntryId_MainSenseId", + table: "Variants", + columns: new[] { "VariantEntryId", "MainEntryId", "MainSenseId" }, + unique: true, + filter: "MainSenseId IS NOT NULL"); + + migrationBuilder.CreateIndex( + name: "IX_VariantType_SnapshotId", + table: "VariantType", + column: "SnapshotId", + unique: true); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "Variants"); + + migrationBuilder.DropTable( + name: "VariantType"); + } + } +} diff --git a/backend/FwLite/LcmCrdt/Migrations/LcmCrdtDbContextModelSnapshot.cs b/backend/FwLite/LcmCrdt/Migrations/LcmCrdtDbContextModelSnapshot.cs index 650a5b9420..5818a033ab 100644 --- a/backend/FwLite/LcmCrdt/Migrations/LcmCrdtDbContextModelSnapshot.cs +++ b/backend/FwLite/LcmCrdt/Migrations/LcmCrdtDbContextModelSnapshot.cs @@ -484,6 +484,89 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.ToTable("Sense"); }); + modelBuilder.Entity("MiniLcm.Models.Variant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("Comment") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("HideMinorEntry") + .HasColumnType("INTEGER"); + + b.Property("MainEntryId") + .HasColumnType("TEXT"); + + b.Property("MainHeadword") + .HasColumnType("TEXT"); + + b.Property("MainSenseId") + .HasColumnType("TEXT") + .HasColumnName("MainSenseId"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.Property("Types") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("VariantEntryId") + .HasColumnType("TEXT"); + + b.Property("VariantHeadword") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("MainEntryId"); + + b.HasIndex("MainSenseId"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.HasIndex("VariantEntryId", "MainEntryId") + .IsUnique() + .HasFilter("MainSenseId IS NULL"); + + b.HasIndex("VariantEntryId", "MainEntryId", "MainSenseId") + .IsUnique() + .HasFilter("MainSenseId IS NOT NULL"); + + b.ToTable("Variants", (string)null); + }); + + modelBuilder.Entity("MiniLcm.Models.VariantType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.ToTable("VariantType"); + }); + modelBuilder.Entity("MiniLcm.Models.WritingSystem", b => { b.Property("Id") @@ -787,6 +870,39 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Navigation("PartOfSpeech"); }); + modelBuilder.Entity("MiniLcm.Models.Variant", b => + { + b.HasOne("MiniLcm.Models.Entry", null) + .WithMany("Variants") + .HasForeignKey("MainEntryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("MiniLcm.Models.Sense", null) + .WithMany() + .HasForeignKey("MainSenseId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.Variant", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("MiniLcm.Models.Entry", null) + .WithMany("VariantOf") + .HasForeignKey("VariantEntryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("MiniLcm.Models.VariantType", b => + { + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.VariantType", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + modelBuilder.Entity("MiniLcm.Models.WritingSystem", b => { b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) @@ -830,6 +946,10 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Navigation("Components"); b.Navigation("Senses"); + + b.Navigation("VariantOf"); + + b.Navigation("Variants"); }); modelBuilder.Entity("MiniLcm.Models.Sense", b => diff --git a/backend/FwLite/LcmCrdt/QueryHelpers.cs b/backend/FwLite/LcmCrdt/QueryHelpers.cs index 37e151c271..3bac06af0e 100644 --- a/backend/FwLite/LcmCrdt/QueryHelpers.cs +++ b/backend/FwLite/LcmCrdt/QueryHelpers.cs @@ -4,12 +4,13 @@ namespace LcmCrdt; public static class QueryHelpers { - public static void Finalize(this Entry entry, - IComparer complexFormComparer) + public static void Finalize(this Entry entry, CompareInfo compareInfo) { entry.Senses.ApplySortOrder(); entry.Components.ApplySortOrder(); - entry.ComplexForms.Sort(complexFormComparer); + entry.ComplexForms.Sort(compareInfo.AsComplexFormComparer()); + entry.VariantOf.Sort(Variant.VariantOfOrder); + entry.Variants.Sort(Variant.VariantsOrder); foreach (var sense in entry.Senses) { sense.Finalize(); @@ -55,4 +56,5 @@ public static IComparer AsComplexFormComparer(this Compare return a.ComplexFormEntryId.CompareTo(b.ComplexFormEntryId); }); } + } diff --git a/backend/FwLite/LcmCrdt/Templates/blank-project-template.json b/backend/FwLite/LcmCrdt/Templates/blank-project-template.json index 1958dfe164..6b08a17f7f 100644 --- a/backend/FwLite/LcmCrdt/Templates/blank-project-template.json +++ b/backend/FwLite/LcmCrdt/Templates/blank-project-template.json @@ -16739,8 +16739,8 @@ "WritingSystems": { "Analysis": [ { - "Id": "e15928c1-48ce-439c-bbf7-f23457718d72", - "MaybeId": "e15928c1-48ce-439c-bbf7-f23457718d72", + "Id": "53f7afa3-13c7-4c07-a9e4-038912170095", + "MaybeId": "53f7afa3-13c7-4c07-a9e4-038912170095", "WsId": "en", "IsAudio": false, "Name": "en", @@ -16780,5 +16780,56 @@ } ], "Vernacular": [] - } + }, + "VariantTypes": [ + { + "Id": "3942addb-99fd-43e9-ab7d-99025ceb0d4e", + "Name": { + "en": "Unspecified Variant" + }, + "DeletedAt": null + }, + { + "Id": "024b62c9-93b3-41a0-ab19-587a0030219a", + "Name": { + "en": "Dialectal Variant" + }, + "DeletedAt": null + }, + { + "Id": "4343b1ef-b54f-4fa4-9998-271319a6d74c", + "Name": { + "en": "Free Variant" + }, + "DeletedAt": null + }, + { + "Id": "01d4fbc1-3b0c-4f52-9163-7ab0d4f4711c", + "Name": { + "en": "Irregularly Inflected Form" + }, + "DeletedAt": null + }, + { + "Id": "a32f1d1c-4832-46a2-9732-c2276d6547e8", + "Name": { + "en": "Plural" + }, + "DeletedAt": null + }, + { + "Id": "837ebe72-8c1d-4864-95d9-fa313c499d78", + "Name": { + "en": "Past" + }, + "DeletedAt": null + }, + { + "Id": "0c4663b3-4d9a-47af-b9a1-c8565d8112ed", + "Name": { + "en": "Spelling Variant" + }, + "DeletedAt": null + } + ] } \ No newline at end of file diff --git a/backend/FwLite/MiniLcm.Tests/AutoFakerHelpers/EntryFakerHelper.cs b/backend/FwLite/MiniLcm.Tests/AutoFakerHelpers/EntryFakerHelper.cs index 71a884d72e..096dadb867 100644 --- a/backend/FwLite/MiniLcm.Tests/AutoFakerHelpers/EntryFakerHelper.cs +++ b/backend/FwLite/MiniLcm.Tests/AutoFakerHelpers/EntryFakerHelper.cs @@ -10,11 +10,12 @@ public static async Task EntryReadyForCreation(this AutoFaker autoFaker, bool createComplexForms = true, bool createComplexFormTypes = true, bool createComponents = true, - bool createPublications = true) + bool createPublications = true, + bool createVariants = true) { var entry = autoFaker.Generate(); if (entryId.HasValue) entry.Id = entryId.Value; - await PrepareToCreateEntry(api, entry, createComplexForms, createComplexFormTypes, createComponents, createPublications); + await PrepareToCreateEntry(api, entry, createComplexForms, createComplexFormTypes, createComponents, createPublications, createVariants); return entry; } @@ -27,12 +28,23 @@ public static async Task PrepareToCreateEntry( bool createComplexForms = true, bool createComplexFormTypes = true, bool createComponents = true, - bool createPublications = true) + bool createPublications = true, + bool createVariants = true) { if (createComponents) await CreateComplexFormComponentEntry(entry, true, entry.Components, api); if (createComplexForms) await CreateComplexFormComponentEntry(entry, false, entry.ComplexForms, api); if (createComplexFormTypes) await CreateComplexFormTypes(entry.ComplexFormTypes, api); if (createPublications) await CreatePublications(entry.PublishIn, api); + if (createVariants) + { + await CreateVariantLinkEntry(entry, isVariantOf: true, entry.VariantOf, api); + await CreateVariantLinkEntry(entry, isVariantOf: false, entry.Variants, api); + } + else + { + entry.VariantOf.Clear(); + entry.Variants.Clear(); + } foreach (var sense in entry.Senses) { @@ -130,6 +142,52 @@ private static async Task CreateComplexFormComponentEntry(Entry entry, } } + private static async Task CreateVariantLinkEntry(Entry entry, + bool isVariantOf, + IList variants, + IMiniLcmApi api) + { + int i = 1; + foreach (var variant in variants) + { + //generated entries won't have the expected ids, so fix them up here + if (isVariantOf) + { + variant.VariantEntryId = entry.Id; + } + else + { + variant.MainEntryId = entry.Id; + } + //generated sense ids don't reference real senses; targeting the entry is enough here + variant.MainSenseId = null; + + foreach (var variantType in variant.Types) + { + if (await api.GetVariantType(variantType.Id) is null) + await api.CreateVariantType(variantType); + } + + var name = $"test {(isVariantOf ? "main" : "variant")} entry {i}"; + var createdEntry = await api.CreateEntry(new() + { + Id = isVariantOf ? variant.MainEntryId : variant.VariantEntryId, + LexemeForm = { { "en", name } }, + }); + if (isVariantOf) + { + variant.MainHeadword = createdEntry.Headword(); + variant.VariantHeadword = entry.Headword(); + } + else + { + variant.VariantHeadword = createdEntry.Headword(); + variant.MainHeadword = entry.Headword(); + } + i++; + } + } + private static async Task CreateComplexFormTypes(IList complexFormTypes, IMiniLcmApi api) { foreach (var complexFormType in complexFormTypes) diff --git a/backend/FwLite/MiniLcm.Tests/FluentAssertGlobalConfig.cs b/backend/FwLite/MiniLcm.Tests/FluentAssertGlobalConfig.cs index c8b247b304..a71382a606 100644 --- a/backend/FwLite/MiniLcm.Tests/FluentAssertGlobalConfig.cs +++ b/backend/FwLite/MiniLcm.Tests/FluentAssertGlobalConfig.cs @@ -14,7 +14,7 @@ public static void Initialize() //however that will result in very poor error messages, so we override it .ComparingByMembers() .ComparingByMembers() - .Excluding(m => (m.DeclaringType == typeof(ComplexFormComponent) || m.DeclaringType == typeof(WritingSystem)) + .Excluding(m => (m.DeclaringType == typeof(ComplexFormComponent) || m.DeclaringType == typeof(Variant) || m.DeclaringType == typeof(WritingSystem)) && (m.Name == nameof(ComplexFormComponent.Id) || m.Name == nameof(ComplexFormComponent.MaybeId))) //Shadow query-rewrite targets — domain state lives on the underlying collection. .Excluding(m => (m.DeclaringType == typeof(Entry) && m.Name == nameof(Entry.PublishInRows)) diff --git a/backend/FwLite/MiniLcm.Tests/Validators/VariantTypeValidationTests.cs b/backend/FwLite/MiniLcm.Tests/Validators/VariantTypeValidationTests.cs new file mode 100644 index 0000000000..57ee87f7cc --- /dev/null +++ b/backend/FwLite/MiniLcm.Tests/Validators/VariantTypeValidationTests.cs @@ -0,0 +1,44 @@ +using FluentValidation.TestHelper; +using MiniLcm.Validators; + +namespace MiniLcm.Tests.Validators; + +public class VariantTypeValidationTests +{ + private readonly VariantTypeValidator _validator = new(); + + [Fact] + public void FailsForEmptyName() + { + var variantType = new VariantType() { Name = new MultiString() }; + _validator.TestValidate(variantType).ShouldHaveValidationErrorFor(c => c.Name); + } + + [Fact] + public void FailsForNameWithEmptyStringValue() + { + var variantType = new VariantType() { Name = new() { { "en", string.Empty } } }; + _validator.TestValidate(variantType).ShouldHaveValidationErrorFor(c => c.Name); + } + + [Fact] + public void FailsForNonNullDeletedAt() + { + var variantType = new VariantType() + { + Name = new() { { "en", "test" } }, DeletedAt = DateTimeOffset.UtcNow + }; + _validator.TestValidate(variantType).ShouldHaveValidationErrorFor(c => c.DeletedAt); + } + + [Fact] + public void Succeeds() + { + var variantType = new VariantType() + { + Name = new() { { "en", "test" } }, + DeletedAt = null + }; + _validator.TestValidate(variantType).ShouldNotHaveAnyValidationErrors(); + } +} diff --git a/backend/FwLite/MiniLcm.Tests/Validators/VariantValidationTests.cs b/backend/FwLite/MiniLcm.Tests/Validators/VariantValidationTests.cs new file mode 100644 index 0000000000..3e4830b672 --- /dev/null +++ b/backend/FwLite/MiniLcm.Tests/Validators/VariantValidationTests.cs @@ -0,0 +1,64 @@ +using FluentValidation.TestHelper; +using MiniLcm.Validators; + +namespace MiniLcm.Tests.Validators; + +public class VariantValidationTests +{ + private readonly VariantValidator _validator = new(); + + private static Variant NewVariant() + { + return new Variant + { + Id = Guid.NewGuid(), + VariantEntryId = Guid.NewGuid(), + MainEntryId = Guid.NewGuid(), + }; + } + + [Fact] + public void Succeeds() + { + _validator.TestValidate(NewVariant()).ShouldNotHaveAnyValidationErrors(); + } + + [Fact] + public void FailsForNonNullDeletedAt() + { + var variant = NewVariant() with { DeletedAt = DateTimeOffset.UtcNow }; + _validator.TestValidate(variant).ShouldHaveValidationErrorFor(v => v.DeletedAt); + } + + [Fact] + public void FailsForSelfReference() + { + var id = Guid.NewGuid(); + var variant = NewVariant() with { VariantEntryId = id, MainEntryId = id }; + _validator.TestValidate(variant).IsValid.Should().BeFalse(); + } + + [Fact] + public void SucceedsWhenVariantEntryIdIsEmpty() + { + // nested in an entry the variant-entry side may be inferred from the parent + var variant = NewVariant() with { VariantEntryId = Guid.Empty }; + _validator.TestValidate(variant).ShouldNotHaveAnyValidationErrors(); + } + + [Fact] + public void FailsForCommentWithEmptyStringValue() + { + var variant = NewVariant(); + variant.Comment = new() { { "en", new RichString(string.Empty) } }; + _validator.TestValidate(variant).ShouldHaveValidationErrorFor(v => v.Comment); + } + + [Fact] + public void FailsForTypeWithEmptyName() + { + var variant = NewVariant(); + variant.Types = [new VariantType { Id = Guid.NewGuid(), Name = new MultiString() }]; + _validator.TestValidate(variant).IsValid.Should().BeFalse(); + } +} diff --git a/backend/FwLite/MiniLcm.Tests/VariantTestsBase.cs b/backend/FwLite/MiniLcm.Tests/VariantTestsBase.cs new file mode 100644 index 0000000000..11aa7141ec --- /dev/null +++ b/backend/FwLite/MiniLcm.Tests/VariantTestsBase.cs @@ -0,0 +1,394 @@ +using MiniLcm.Models; + +namespace MiniLcm.Tests; + +public abstract class VariantTestsBase : MiniLcmTestBase +{ + protected readonly Guid _mainEntryId = Guid.NewGuid(); + protected readonly Guid _variantEntryId = Guid.NewGuid(); + protected readonly Guid _mainSenseId1 = Guid.NewGuid(); + protected readonly Guid _mainSenseId2 = Guid.NewGuid(); + protected Entry _mainEntry = null!; + protected Entry _variantEntry = null!; + + public override async Task InitializeAsync() + { + await base.InitializeAsync(); + _mainEntry = await Api.CreateEntry(new() + { + Id = _mainEntryId, + LexemeForm = { { "en", "main entry" } }, + Senses = + [ + new Sense + { + Id = _mainSenseId1, + Gloss = { { "en", "main sense 1" } } + }, + new Sense + { + Id = _mainSenseId2, + Gloss = { { "en", "main sense 2" } } + } + ] + }); + // deliberately sense-less: FLEx's "Insert Variant" creates variant entries without senses + _variantEntry = await Api.CreateEntry(new() + { + Id = _variantEntryId, + LexemeForm = { { "en", "variant form" } } + }); + } + + private async Task CreateVariantType(string name = "test type") + { + return await Api.CreateVariantType(new VariantType { Id = Guid.NewGuid(), Name = new() { { "en", name } } }); + } + + [Fact] + public async Task CreateVariant_Works() + { + var variant = await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + variant.VariantEntryId.Should().Be(_variantEntryId); + variant.MainEntryId.Should().Be(_mainEntryId); + variant.MainSenseId.Should().BeNull(); + variant.VariantHeadword.Should().Be("variant form"); + variant.MainHeadword.Should().Be("main entry"); + variant.Types.Should().BeEmpty(); + variant.HideMinorEntry.Should().BeFalse(); + variant.Comment.Should().BeEmpty(); + } + + [Fact] + public async Task CreateVariant_WithSense_Works() + { + var variant = await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry, _mainSenseId1)); + variant.MainSenseId.Should().Be(_mainSenseId1); + + // a sense-targeted link still surfaces under the owning entry's Variants + var mainEntry = await Api.GetEntry(_mainEntryId); + mainEntry!.Variants.Should().ContainSingle(v => v.VariantEntryId == _variantEntryId && v.MainSenseId == _mainSenseId1); + } + + [Fact] + public async Task CreateVariant_WithTypesCommentAndHideMinorEntry_RoundTrips() + { + var type = await CreateVariantType(); + var input = Variant.FromEntries(_variantEntry, _mainEntry) with + { + Types = [type], + HideMinorEntry = true, + Comment = new() { { "en", new RichString("originally meant something else") } }, + }; + await Api.CreateVariant(input); + + var variantEntry = await Api.GetEntry(_variantEntryId); + var link = variantEntry!.VariantOf.Should().ContainSingle().Subject; + link.Types.Should().ContainSingle(t => t.Id == type.Id); + link.HideMinorEntry.Should().BeTrue(); + link.Comment["en"].GetPlainText().Should().Be("originally meant something else"); + + var mainEntry = await Api.GetEntry(_mainEntryId); + var backLink = mainEntry!.Variants.Should().ContainSingle().Subject; + backLink.Types.Should().ContainSingle(t => t.Id == type.Id); + backLink.HideMinorEntry.Should().BeTrue(); + backLink.Comment["en"].GetPlainText().Should().Be("originally meant something else"); + } + + [Fact] + public async Task VariantHeadwords_UpdateWhenReferencedEntriesChange() + { + await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + + var beforeVariant = _variantEntry.Copy(); + _variantEntry.LexemeForm["en"] = "renamed variant"; + await Api.UpdateEntry(beforeVariant, _variantEntry); + + var mainEntry = (await Api.GetEntry(_mainEntryId))!; + var beforeMain = mainEntry.Copy(); + mainEntry.LexemeForm["en"] = "renamed main"; + await Api.UpdateEntry(beforeMain, mainEntry); + + var link = (await Api.GetEntry(_mainEntryId))!.Variants.Should().ContainSingle().Subject; + link.VariantHeadword.Should().Be("renamed variant"); + link.MainHeadword.Should().Be("renamed main"); + } + + [Fact] + public async Task DeleteVariant_Works() + { + var variant = await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + await Api.DeleteVariant(variant); + var entries = await Api.GetEntries().ToArrayAsync(); + var variantEntry = entries.Should().ContainSingle(e => e.Id == _variantEntryId).Subject; + var mainEntry = entries.Should().ContainSingle(e => e.Id == _mainEntryId).Subject; + variantEntry.VariantOf.Should().BeEmpty(); + mainEntry.Variants.Should().BeEmpty(); + } + + [Fact] + public async Task GetEntries_Works() + { + await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + var entries = await Api.GetEntries().ToArrayAsync(); + var variantEntry = entries.Should().ContainSingle(e => e.Id == _variantEntryId).Subject; + var mainEntry = entries.Should().ContainSingle(e => e.Id == _mainEntryId).Subject; + variantEntry.VariantOf.Should().ContainSingle(v => v.MainEntryId == _mainEntryId); + mainEntry.Variants.Should().ContainSingle(v => v.VariantEntryId == _variantEntryId); + } + + [Fact] + public async Task VariantEntryWithoutSenses_RoundTrips() + { + await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + var variantEntry = await Api.GetEntry(_variantEntryId); + variantEntry.Should().NotBeNull(); + variantEntry!.Senses.Should().BeEmpty(); + variantEntry.VariantOf.Should().ContainSingle(); + } + + [Fact] + public async Task CreateVariant_UsingTheSameLinkDoesNothing() + { + var variant1 = await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + var variant2 = await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + variant2.Should().BeEquivalentTo(variant1); + (await Api.GetEntry(_variantEntryId))!.VariantOf.Should().ContainSingle(); + } + + [Fact] + public async Task CreateVariant_UsingTheSameLinkWithSenseDoesNothing() + { + var variant1 = await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry, _mainSenseId1)); + var variant2 = await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry, _mainSenseId1)); + variant2.Should().BeEquivalentTo(variant1); + (await Api.GetEntry(_variantEntryId))!.VariantOf.Should().ContainSingle(); + } + + [Fact] + public async Task CreateVariant_ReplayingReturnedObject_IsIdempotent() + { + // Sync can be interrupted and replayed, so the exact same object (including its + // internal entity ID) may be passed to CreateVariant again. + var created = await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + var again = await Api.CreateVariant(created); + again.Should().BeEquivalentTo(created); + } + + [Fact] + public async Task CreateVariant_CanTargetMultipleSensesOfSameEntry() + { + var variant1 = await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry, _mainSenseId1)); + variant1.MainSenseId.Should().Be(_mainSenseId1); + var variant2 = await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry, _mainSenseId2)); + variant2.MainSenseId.Should().Be(_mainSenseId2); + + // ensure our sync code can handle them too + _variantEntry = (await Api.GetEntry(_variantEntryId))!; + await Api.UpdateEntry(_variantEntry, _variantEntry); + _mainEntry = (await Api.GetEntry(_mainEntryId))!; + await Api.UpdateEntry(_mainEntry, _mainEntry); + } + + [Fact] + public async Task CreateVariant_ChangingPropertyAndCreatingAgain_CreatesBoth() + { + var newMainEntry = await Api.CreateEntry(new() + { + Id = Guid.NewGuid(), + LexemeForm = { { "en", "new main" } } + }); + + var input = Variant.FromEntries(_variantEntry, _mainEntry); + var first = await Api.CreateVariant(input); + first.MainEntryId.Should().Be(_mainEntryId); + + // Mutate a property on the same object and create again. + // The sync diff does this when a property changes (remove + add). + input.MainEntryId = newMainEntry.Id; + var second = await Api.CreateVariant(input); + second.MainEntryId.Should().Be(newMainEntry.Id); + + var entry = await Api.GetEntry(_variantEntryId); + entry!.VariantOf.Should().HaveCount(2); + } + + [Fact] + public async Task CreateVariant_ThrowsOnSelfReference() + { + var act = async () => await Api.CreateVariant(Variant.FromEntries(_mainEntry, _mainEntry)); + await act.Should().ThrowAsync(); + } + + [Fact] + public async Task CreateVariant_ThrowsWhenSenseBelongsToADifferentEntry() + { + var otherEntry = await Api.CreateEntry(new() + { + Id = Guid.NewGuid(), + LexemeForm = { { "en", "other entry" } } + }); + //_mainSenseId1 belongs to _mainEntry, not otherEntry + var act = async () => await Api.CreateVariant(Variant.FromEntries(_variantEntry, otherEntry, _mainSenseId1)); + await act.Should().ThrowAsync(); + } + + [Fact] + public async Task CreateVariant_AllowsChains() + { + // FLEx allows variant chains (a variant of a variant); we must too + var entry3 = await Api.CreateEntry(new() + { + Id = Guid.NewGuid(), + LexemeForm = { { "en", "entry3" } } + }); + await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + await Api.CreateVariant(Variant.FromEntries(entry3, _variantEntry)); + var middle = await Api.GetEntry(_variantEntryId); + middle!.VariantOf.Should().ContainSingle(v => v.MainEntryId == _mainEntryId); + middle.Variants.Should().ContainSingle(v => v.VariantEntryId == entry3.Id); + } + + [Fact] + public async Task CreateVariant_ThrowsWhenMakingA2LayerReferenceCycle() + { + // LCM rejects circular component references (LexEntryRef.ValidateAddObjectInternal), + // so both implementations must too + await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + var act = async () => await Api.CreateVariant(Variant.FromEntries(_mainEntry, _variantEntry)); + await act.Should().ThrowAsync(); + } + + [Fact] + public async Task CreateVariant_ThrowsWhenMakingA3LayerReferenceCycle() + { + var entry3 = await Api.CreateEntry(new() + { + Id = Guid.NewGuid(), + LexemeForm = { { "en", "entry3" } } + }); + await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + await Api.CreateVariant(Variant.FromEntries(_mainEntry, entry3)); + var act = async () => await Api.CreateVariant(Variant.FromEntries(entry3, _variantEntry)); + await act.Should().ThrowAsync(); + } + + [Fact] + public async Task CreateVariant_ThrowsWhenClosingAMixedCycleThroughAComplexForm() + { + // LCM's cycle check spans the combined complex-form + variant component graph + await Api.CreateComplexFormComponent(ComplexFormComponent.FromEntries(_mainEntry, _variantEntry)); + var act = async () => await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + await act.Should().ThrowAsync(); + } + + [Fact] + public async Task CreateVariant_WorksWhenALinkWasDeletedWhichWouldCauseACycle() + { + var created = await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + await Api.DeleteVariant(created); + var act = async () => await Api.CreateVariant(Variant.FromEntries(_mainEntry, _variantEntry)); + await act.Should().NotThrowAsync("a link was deleted which was part of the cycle"); + } + + [Fact] + public async Task UpdateVariant_SyncsTypesAndScalars() + { + var typeA = await CreateVariantType("type a"); + var typeB = await CreateVariantType("type b"); + var created = await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry) with { Types = [typeA] }); + + var after = created.Copy(); + after.Types = [typeB]; + after.HideMinorEntry = true; + after.Comment = new() { { "en", new RichString("now hidden") } }; + await Api.UpdateVariant(created, after); + + var link = (await Api.GetEntry(_variantEntryId))!.VariantOf.Should().ContainSingle().Subject; + link.Types.Should().ContainSingle(t => t.Id == typeB.Id); + link.HideMinorEntry.Should().BeTrue(); + link.Comment["en"].GetPlainText().Should().Be("now hidden"); + } + + [Fact] + public async Task AddVariantType_Works() + { + var type = await CreateVariantType(); + var variant = await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + await Api.AddVariantType(variant, type.Id); + var link = (await Api.GetEntry(_variantEntryId))!.VariantOf.Should().ContainSingle().Subject; + link.Types.Should().ContainSingle(t => t.Id == type.Id); + } + + [Fact] + public async Task AddVariantType_IsIdempotent() + { + var type = await CreateVariantType(); + var variant = await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + await Api.AddVariantType(variant, type.Id); + await Api.AddVariantType(variant, type.Id); + var link = (await Api.GetEntry(_variantEntryId))!.VariantOf.Should().ContainSingle().Subject; + link.Types.Should().ContainSingle(t => t.Id == type.Id); + } + + [Fact] + public async Task RemoveVariantType_Works() + { + var type = await CreateVariantType(); + var variant = await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry) with { Types = [type] }); + await Api.RemoveVariantType(variant, type.Id); + var link = (await Api.GetEntry(_variantEntryId))!.VariantOf.Should().ContainSingle().Subject; + link.Types.Should().BeEmpty(); + } + + [Fact] + public async Task RemoveVariantType_WorksWhenTypeIsNotOnLink() + { + var variant = await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + await Api.RemoveVariantType(variant, Guid.NewGuid()); + } + + [Fact] + public async Task CreateVariantType_Works() + { + var variantType = new VariantType() { Id = Guid.NewGuid(), Name = new() { { "en", "test" } } }; + await Api.CreateVariantType(variantType); + var types = await Api.GetVariantTypes().ToArrayAsync(); + types.Should().ContainSingle(t => t.Id == variantType.Id); + } + + [Fact] + public async Task UpdateVariantType_Works() + { + var variantType = new VariantType() { Id = Guid.NewGuid(), Name = new() { { "en", "test" } } }; + await Api.CreateVariantType(variantType); + var updatedVariantType = await Api.UpdateVariantType(variantType.Id, new UpdateObjectInput().Set(c => c.Name["en"], "updated")); + updatedVariantType.Name["en"].Should().Be("updated"); + } + + [Fact] + public async Task UpdateVariantTypeSync_Works() + { + var variantType = new VariantType() { Id = Guid.NewGuid(), Name = new() { { "en", "test" } } }; + await Api.CreateVariantType(variantType); + var afterVariantType = variantType with { Name = new() { { "en", "updated" } } }; + var actualVariantType = await Api.UpdateVariantType(variantType, afterVariantType); + actualVariantType.Should().BeEquivalentTo(afterVariantType, options => options.Excluding(c => c.Id)); + } + + [Fact] + public async Task EntryCanBeBothVariantAndComponent() + { + var complexFormEntry = await Api.CreateEntry(new() + { + Id = Guid.NewGuid(), + LexemeForm = { { "en", "complex form" } } + }); + await Api.CreateComplexFormComponent(ComplexFormComponent.FromEntries(complexFormEntry, _variantEntry)); + await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + + var entry = await Api.GetEntry(_variantEntryId); + entry!.ComplexForms.Should().ContainSingle(c => c.ComplexFormEntryId == complexFormEntry.Id); + entry.VariantOf.Should().ContainSingle(v => v.MainEntryId == _mainEntryId); + } +} diff --git a/backend/FwLite/MiniLcm/CreateEntryOptions.cs b/backend/FwLite/MiniLcm/CreateEntryOptions.cs index 4816296074..5a2a81e446 100644 --- a/backend/FwLite/MiniLcm/CreateEntryOptions.cs +++ b/backend/FwLite/MiniLcm/CreateEntryOptions.cs @@ -2,7 +2,8 @@ namespace MiniLcm; public record CreateEntryOptions( /// - /// Can be excluded for the purpose of deferring referencing entities that might not exist yet. + /// Also gates variant links. Can be excluded for the purpose of deferring + /// referencing entities that might not exist yet. /// bool IncludeComplexFormsAndComponents = true, bool AutoAddMainPublication = false diff --git a/backend/FwLite/MiniLcm/IMiniLcmReadApi.cs b/backend/FwLite/MiniLcm/IMiniLcmReadApi.cs index 36523faf83..aadff068c1 100644 --- a/backend/FwLite/MiniLcm/IMiniLcmReadApi.cs +++ b/backend/FwLite/MiniLcm/IMiniLcmReadApi.cs @@ -15,8 +15,10 @@ public interface IMiniLcmReadApi IAsyncEnumerable GetPublications(); IAsyncEnumerable GetSemanticDomains(); IAsyncEnumerable GetComplexFormTypes(); + IAsyncEnumerable GetVariantTypes(); IAsyncEnumerable GetMorphTypes(); Task GetComplexFormType(Guid id); + Task GetVariantType(Guid id); Task GetMorphType(Guid id); Task GetMorphType(MorphTypeKind kind); Task CountEntries(string? query = null, FilterQueryOptions? options = null); diff --git a/backend/FwLite/MiniLcm/IMiniLcmWriteApi.cs b/backend/FwLite/MiniLcm/IMiniLcmWriteApi.cs index 310095dd30..8cecfdcca5 100644 --- a/backend/FwLite/MiniLcm/IMiniLcmWriteApi.cs +++ b/backend/FwLite/MiniLcm/IMiniLcmWriteApi.cs @@ -44,6 +44,13 @@ Task UpdateWritingSystem(WritingSystemId id, Task DeleteComplexFormType(Guid id); #endregion + #region VariantType + Task CreateVariantType(VariantType variantType); + Task UpdateVariantType(Guid id, UpdateObjectInput update); + Task UpdateVariantType(VariantType before, VariantType after, IMiniLcmApi? api = null); + Task DeleteVariantType(Guid id); + #endregion + #region MorphType Task CreateMorphType(MorphType morphType); Task UpdateMorphType(Guid id, UpdateObjectInput update); @@ -65,6 +72,13 @@ Task UpdateWritingSystem(WritingSystemId id, Task DeleteComplexFormComponent(ComplexFormComponent complexFormComponent); Task AddComplexFormType(Guid entryId, Guid complexFormTypeId); Task RemoveComplexFormType(Guid entryId, Guid complexFormTypeId); + // Variant links are unordered (no position/move) and resolved by their composite key + // (VariantEntryId, MainEntryId, MainSenseId) — see VARIANTS.md + Task CreateVariant(Variant variant); + Task UpdateVariant(Variant before, Variant after, IMiniLcmApi? api = null); + Task DeleteVariant(Variant variant); + Task AddVariantType(Variant variant, Guid variantTypeId); + Task RemoveVariantType(Variant variant, Guid variantTypeId); Task AddPublication(Guid entryId, Guid publicationId); Task RemovePublication(Guid entryId, Guid publicationId); #endregion @@ -146,6 +160,12 @@ Task UpdatePicture(Guid entryId, Task SubmitUpdateEntry(Guid id, UpdateObjectInput update) => UpdateEntry(id, update); Task SubmitCreateComplexFormComponent(ComplexFormComponent complexFormComponent, BetweenPosition? position = null) => CreateComplexFormComponent(complexFormComponent, position); Task SubmitMoveComplexFormComponent(ComplexFormComponent complexFormComponent, BetweenPosition between) => MoveComplexFormComponent(complexFormComponent, between); + Task SubmitCreateVariant(Variant variant) => CreateVariant(variant); + /// + /// Patches a variant link's own fields (HideMinorEntry, Comment) — the link is located by + /// its composite key, not its Id, since FwData links have no stable Id. + /// + Task SubmitUpdateVariant(Variant variant, UpdateObjectInput update); Task SubmitCreateSense(Guid entryId, Sense sense, BetweenPosition? position = null) => CreateSense(entryId, sense, position); Task SubmitUpdateSense(Guid entryId, Guid senseId, UpdateObjectInput update) => UpdateSense(entryId, senseId, update); Task SubmitCreateExampleSentence(Guid entryId, Guid senseId, ExampleSentence exampleSentence, BetweenPosition? position = null) => CreateExampleSentence(entryId, senseId, exampleSentence, position); @@ -157,6 +177,7 @@ Task UpdatePicture(Guid entryId, Task SubmitUpdatePublication(Guid id, UpdateObjectInput update) => UpdatePublication(id, update); Task SubmitUpdateSemanticDomain(Guid id, UpdateObjectInput update) => UpdateSemanticDomain(id, update); Task SubmitUpdateComplexFormType(Guid id, UpdateObjectInput update) => UpdateComplexFormType(id, update); + Task SubmitUpdateVariantType(Guid id, UpdateObjectInput update) => UpdateVariantType(id, update); #endregion #region CustomView diff --git a/backend/FwLite/MiniLcm/Import/ProjectImporter.cs b/backend/FwLite/MiniLcm/Import/ProjectImporter.cs index 95cf713b52..4084505f17 100644 --- a/backend/FwLite/MiniLcm/Import/ProjectImporter.cs +++ b/backend/FwLite/MiniLcm/Import/ProjectImporter.cs @@ -6,9 +6,9 @@ namespace MiniLcm.Import; /// /// Populates from a in dependency order -/// (writing systems → parts of speech → publications → complex-form types → morph types → -/// semantic domains → entries). Both FwData→CRDT import and template-based project creation funnel -/// through here, so the ordering and the create-vs-update rules live in exactly one place. +/// (writing systems → parts of speech → publications → complex-form types → variant types → +/// morph types → semantic domains → entries). Both FwData→CRDT import and template-based project +/// creation funnel through here, so the ordering and the create-vs-update rules live in exactly one place. /// public class ProjectImporter(ILogger logger) { @@ -39,6 +39,13 @@ public async Task ImportProject(IMiniLcmApi importTo, ProjectSnapshot snapshot) logger.LogInformation("Imported complex form type {Id}", complexFormType.Id); } + logger.LogInformation("Importing {Count} variant types", snapshot.VariantTypes.Length); + foreach (var variantType in snapshot.VariantTypes) + { + await importTo.CreateVariantType(variantType); + logger.LogInformation("Imported variant type {Id}", variantType.Id); + } + // Reconcile against the destination's existing morph types: MorphTypeSync updates them in place // and creates any missing, but rejects removals — canonical morph types can't be deleted. logger.LogInformation("Importing/Syncing {Count} morph types", snapshot.MorphTypes.Length); diff --git a/backend/FwLite/MiniLcm/MiniLcmApiExtensions.cs b/backend/FwLite/MiniLcm/MiniLcmApiExtensions.cs index e6165321c4..02bc3fa560 100644 --- a/backend/FwLite/MiniLcm/MiniLcmApiExtensions.cs +++ b/backend/FwLite/MiniLcm/MiniLcmApiExtensions.cs @@ -18,6 +18,7 @@ await api.GetPublications().ToArrayAsync(), await api.GetSemanticDomains().ToArrayAsync(), await api.GetComplexFormTypes().ToArrayAsync(), await api.GetMorphTypes().ToArrayAsync(), + await api.GetVariantTypes().ToArrayAsync(), await api.GetWritingSystems()); } } diff --git a/backend/FwLite/MiniLcm/Models/Entry.cs b/backend/FwLite/MiniLcm/Models/Entry.cs index f4ce83daa6..a7654f6487 100644 --- a/backend/FwLite/MiniLcm/Models/Entry.cs +++ b/backend/FwLite/MiniLcm/Models/Entry.cs @@ -33,6 +33,16 @@ public record Entry : IObjectWithId public virtual List ComplexFormTypes { get; set; } = []; + /// + /// This entry is a variant of these entries/senses + /// + public virtual List VariantOf { get; set; } = []; + + /// + /// Entries which are variants of this entry (or one of its senses) + /// + public virtual List Variants { get; set; } = []; + public virtual List PublishIn { get; set; } = []; //Server-side query rewrite target — LcmCrdt rewrites this to Json.Query(PublishIn) so @@ -78,6 +88,14 @@ public Entry Copy() [ ..ComplexFormTypes.Select(cft => cft.Copy()) ], + VariantOf = + [ + ..VariantOf.Select(v => v.Copy()) + ], + Variants = + [ + ..Variants.Select(v => v.Copy()) + ], PublishIn = [ ..PublishIn.Select(p => p.Copy())] }; } @@ -91,17 +109,3 @@ public void RemoveReference(Guid id, DateTimeOffset time) { } } - -public class Variants -{ - public Guid Id { get; set; } - public IList VariantsOf { get; set; } = []; - public IList Types { get; set; } = []; -} - - -public class VariantType -{ - public required Guid Id { get; set; } - public required MultiString Name { get; set; } -} diff --git a/backend/FwLite/MiniLcm/Models/IObjectWithId.cs b/backend/FwLite/MiniLcm/Models/IObjectWithId.cs index 606dca4192..f5ccc63290 100644 --- a/backend/FwLite/MiniLcm/Models/IObjectWithId.cs +++ b/backend/FwLite/MiniLcm/Models/IObjectWithId.cs @@ -12,6 +12,8 @@ namespace MiniLcm.Models; [JsonDerivedType(typeof(SemanticDomain), nameof(SemanticDomain))] [JsonDerivedType(typeof(ComplexFormType), nameof(ComplexFormType))] [JsonDerivedType(typeof(ComplexFormComponent), nameof(ComplexFormComponent))] +[JsonDerivedType(typeof(VariantType), nameof(VariantType))] +[JsonDerivedType(typeof(Variant), nameof(Variant))] [JsonDerivedType(typeof(CustomView), nameof(CustomView))] [JsonDerivedType(typeof(MorphType), nameof(MorphType))] public interface IObjectWithId diff --git a/backend/FwLite/MiniLcm/Models/Variant.cs b/backend/FwLite/MiniLcm/Models/Variant.cs new file mode 100644 index 0000000000..d21854bb34 --- /dev/null +++ b/backend/FwLite/MiniLcm/Models/Variant.cs @@ -0,0 +1,121 @@ +using System.Diagnostics; +using MiniLcm.Attributes; + +namespace MiniLcm.Models; + +/// +/// One variant relationship: a variant (minor) entry pointing at the main entry (or sense) +/// it is a variant of. Maps 1:1 to a FieldWorks LexEntryRef with RefType = Variant, so the +/// per-relationship fields (Types, HideMinorEntry, Comment) live here rather than on the +/// entry. Unlike there is no Order — variant lists have +/// no user-meaningful order in FieldWorks. +/// +public record Variant : IObjectWithId +{ + public static Variant FromEntries(Entry variantEntry, + Entry mainEntry, + Guid? mainSenseId = null) + { + if (mainEntry.Id == default) throw new ArgumentException("mainEntry.Id is empty"); + if (variantEntry.Id == default) throw new ArgumentException("variantEntry.Id is empty"); + return new Variant + { + Id = Guid.NewGuid(), + VariantEntryId = variantEntry.Id, + VariantHeadword = variantEntry.Headword(), + MainEntryId = mainEntry.Id, + MainHeadword = mainEntry.Headword(), + MainSenseId = mainSenseId, + }; + } + + private Guid _id; + [MiniLcmInternal] + public Guid Id + { + get + { + Debug.Assert(_id != Guid.Empty, "Id is not set and should not be used"); + return _id; + } + set + { + _id = value; + } + } + + [MiniLcmInternal] + public Guid? MaybeId => _id == Guid.Empty ? null : _id; + + public DateTimeOffset? DeletedAt { get; set; } + public virtual required Guid VariantEntryId { get; set; } + public string? VariantHeadword { get; set; } + public virtual required Guid MainEntryId { get; set; } + public virtual Guid? MainSenseId { get; set; } = null; + public string? MainHeadword { get; set; } + public virtual List Types { get; set; } = []; + public virtual bool HideMinorEntry { get; set; } + public virtual RichMultiString Comment { get; set; } = new(); + + public Guid[] GetReferences() + { + Span senseId = (MainSenseId.HasValue ? [MainSenseId.Value] : []); + return + [ + VariantEntryId, + MainEntryId, + ..senseId, + ..Types.Select(t => t.Id) + ]; + } + + public void RemoveReference(Guid id, DateTimeOffset time) + { + if (MainEntryId == id || VariantEntryId == id || MainSenseId == id) + { + DeletedAt = time; + return; + } + Types.RemoveAll(t => t.Id == id); + } + + public Variant Copy() + { + return new Variant + { + Id = _id, + VariantEntryId = VariantEntryId, + VariantHeadword = VariantHeadword, + MainEntryId = MainEntryId, + MainHeadword = MainHeadword, + MainSenseId = MainSenseId, + Types = [..Types.Select(t => t.Copy())], + HideMinorEntry = HideMinorEntry, + Comment = Comment.Copy(), + DeletedAt = DeletedAt, + }; + } + + //variant lists have no user-meaningful order, so both IMiniLcmApi implementations sort them by + //their composite key — deterministic and culture-free, unlike headword sorting (which is why + //ComplexForms sort alphabetically: FieldWorks does; there's no such convention for variants) + public static readonly Comparer VariantOfOrder = Comparer.Create((a, b) => + { + var result = a.MainEntryId.CompareTo(b.MainEntryId); + if (result != 0) return result; + return (a.MainSenseId ?? Guid.Empty).CompareTo(b.MainSenseId ?? Guid.Empty); + }); + + public static readonly Comparer VariantsOrder = Comparer.Create((a, b) => + { + var result = a.VariantEntryId.CompareTo(b.VariantEntryId); + if (result != 0) return result; + return (a.MainSenseId ?? Guid.Empty).CompareTo(b.MainSenseId ?? Guid.Empty); + }); + + public override string ToString() + { + return + $"{nameof(DeletedAt)}: {DeletedAt}, {nameof(VariantEntryId)}: {VariantEntryId}, {nameof(VariantHeadword)}: {VariantHeadword}, {nameof(MainEntryId)}: {MainEntryId}, {nameof(MainSenseId)}: {MainSenseId}, {nameof(MainHeadword)}: {MainHeadword}, Types: [{string.Join(", ", Types.Select(t => t.Id))}]"; + } +} diff --git a/backend/FwLite/MiniLcm/Models/VariantType.cs b/backend/FwLite/MiniLcm/Models/VariantType.cs new file mode 100644 index 0000000000..6531b0b6e9 --- /dev/null +++ b/backend/FwLite/MiniLcm/Models/VariantType.cs @@ -0,0 +1,23 @@ +namespace MiniLcm.Models; + +public record VariantType : IObjectWithId +{ + public virtual Guid Id { get; set; } + public virtual required MultiString Name { get; set; } + + public DateTimeOffset? DeletedAt { get; set; } + + public Guid[] GetReferences() + { + return []; + } + + public void RemoveReference(Guid id, DateTimeOffset time) + { + } + + public VariantType Copy() + { + return new VariantType { Id = Id, Name = Name.Copy(), DeletedAt = DeletedAt }; + } +} diff --git a/backend/FwLite/MiniLcm/Normalization/MiniLcmApiWriteNormalizationWrapper.cs b/backend/FwLite/MiniLcm/Normalization/MiniLcmApiWriteNormalizationWrapper.cs index dfb231e83d..0749e03776 100644 --- a/backend/FwLite/MiniLcm/Normalization/MiniLcmApiWriteNormalizationWrapper.cs +++ b/backend/FwLite/MiniLcm/Normalization/MiniLcmApiWriteNormalizationWrapper.cs @@ -207,6 +207,39 @@ private static ComplexFormType NormalizeComplexFormType(ComplexFormType cft) #endregion + #region VariantType + + public async Task CreateVariantType(VariantType variantType) + { + return await _api.CreateVariantType(NormalizeVariantType(variantType)); + } + + public Task UpdateVariantType(Guid id, UpdateObjectInput update) + { + return _api.UpdateVariantType(id, NormalizePatch(update)); + } + + + public async Task UpdateVariantType(VariantType before, VariantType after, IMiniLcmApi? api = null) + { + return await _api.UpdateVariantType(NormalizeVariantType(before), NormalizeVariantType(after), api); + } + + public Task DeleteVariantType(Guid id) + { + return _api.DeleteVariantType(id); + } + + private static VariantType NormalizeVariantType(VariantType vt) + { + return vt with + { + Name = StringNormalizer.Normalize(vt.Name) + }; + } + + #endregion + #region MorphType public async Task CreateMorphType(MorphType morphType) @@ -286,6 +319,36 @@ public Task RemoveComplexFormType(Guid entryId, Guid complexFormTypeId) return _api.RemoveComplexFormType(entryId, complexFormTypeId); } + public async Task CreateVariant(Variant variant) + { + return await _api.CreateVariant(NormalizeVariant(variant)); + } + + public async Task UpdateVariant(Variant before, Variant after, IMiniLcmApi? api = null) + { + return await _api.UpdateVariant(NormalizeVariant(before), NormalizeVariant(after), api); + } + + public Task SubmitUpdateVariant(Variant variant, UpdateObjectInput update) + { + return _api.SubmitUpdateVariant(variant, NormalizePatch(update)); + } + + public Task DeleteVariant(Variant variant) + { + return _api.DeleteVariant(variant); + } + + public Task AddVariantType(Variant variant, Guid variantTypeId) + { + return _api.AddVariantType(variant, variantTypeId); + } + + public Task RemoveVariantType(Variant variant, Guid variantTypeId) + { + return _api.RemoveVariantType(variant, variantTypeId); + } + public Task AddPublication(Guid entryId, Guid publicationId) { return _api.AddPublication(entryId, publicationId); @@ -306,7 +369,9 @@ private static Entry NormalizeEntry(Entry entry) Note = StringNormalizer.Normalize(entry.Note), Senses = [.. entry.Senses.Select(NormalizeSense)], Components = [.. entry.Components.Select(NormalizeComplexFormComponent)], - ComplexForms = [.. entry.ComplexForms.Select(NormalizeComplexFormComponent)] + ComplexForms = [.. entry.ComplexForms.Select(NormalizeComplexFormComponent)], + VariantOf = [.. entry.VariantOf.Select(NormalizeVariant)], + Variants = [.. entry.Variants.Select(NormalizeVariant)] }; } @@ -319,6 +384,17 @@ private static ComplexFormComponent NormalizeComplexFormComponent(ComplexFormCom }; } + private static Variant NormalizeVariant(Variant variant) + { + return variant with + { + VariantHeadword = StringNormalizer.Normalize(variant.VariantHeadword), + MainHeadword = StringNormalizer.Normalize(variant.MainHeadword), + Comment = StringNormalizer.Normalize(variant.Comment), + Types = [.. variant.Types.Select(NormalizeVariantType)] + }; + } + #endregion #region Sense diff --git a/backend/FwLite/MiniLcm/ProjectSnapshot.cs b/backend/FwLite/MiniLcm/ProjectSnapshot.cs index f6c880fe76..95ae5f8920 100644 --- a/backend/FwLite/MiniLcm/ProjectSnapshot.cs +++ b/backend/FwLite/MiniLcm/ProjectSnapshot.cs @@ -9,7 +9,11 @@ public record ProjectSnapshot( SemanticDomain[] SemanticDomains, ComplexFormType[] ComplexFormTypes, MorphType[] MorphTypes, + VariantType[] VariantTypes, WritingSystems WritingSystems) { - public static ProjectSnapshot Empty { get; } = new([], [], [], [], [], [], new WritingSystems()); + public static ProjectSnapshot Empty { get; } = new([], [], [], [], [], [], [], new WritingSystems()); + + //snapshots and templates serialized before variant support deserialize this as null + public VariantType[] VariantTypes { get; init; } = VariantTypes ?? []; } diff --git a/backend/FwLite/MiniLcm/SyncHelpers/EntrySync.cs b/backend/FwLite/MiniLcm/SyncHelpers/EntrySync.cs index 353b905113..bb19a2e751 100644 --- a/backend/FwLite/MiniLcm/SyncHelpers/EntrySync.cs +++ b/backend/FwLite/MiniLcm/SyncHelpers/EntrySync.cs @@ -70,6 +70,8 @@ public static async Task SyncComplexFormsAndComponents(Entry beforeEntry, E var changes = 0; changes += await SyncComplexFormComponents(beforeEntry.Components, afterEntry.Components, api); changes += await SyncComplexForms(beforeEntry.ComplexForms, afterEntry.ComplexForms, api); + changes += await SyncVariants(beforeEntry.VariantOf, afterEntry.VariantOf, api); + changes += await SyncVariants(beforeEntry.Variants, afterEntry.Variants, api); return changes; } catch (Exception e) @@ -118,6 +120,15 @@ private static async Task SyncComplexForms(IList befo ); } + private static async Task SyncVariants(IList beforeVariants, IList afterVariants, IMiniLcmApi api) + { + return await DiffCollection.Diff( + beforeVariants, + afterVariants, + new VariantsDiffApi(api) + ); + } + private static async Task SensesSync(Guid entryId, IList beforeSenses, IList afterSenses, @@ -286,6 +297,33 @@ public Task Replace(ComplexFormComponent beforeComponent, ComplexFormCompon } } + private class VariantsDiffApi(IMiniLcmApi api) : CollectionDiffApi + { + public override (Guid, Guid, Guid?) GetId(Variant variant) + { + //we can't use the ID as there's none defined by Fw so it won't work as a sync key + return (variant.VariantEntryId, variant.MainEntryId, variant.MainSenseId); + } + + public override async Task Add(Variant after) + { + await api.SubmitCreateVariant(after); + return 1; + } + + public override async Task Remove(Variant before) + { + await api.DeleteVariant(before); + return 1; + } + + public override Task Replace(Variant beforeVariant, Variant afterVariant) + { + //endpoints match (same composite key) — sync the link's own data (types, HideMinorEntry, Comment) + return VariantSync.Sync(beforeVariant, afterVariant, api); + } + } + private class SensesDiffApi(IMiniLcmApi api, Guid entryId, Dictionary? allBeforeSenses, Dictionary? allAfterSenses) : IOrderableCollectionDiffApi { public Guid GetId(Sense sense) diff --git a/backend/FwLite/MiniLcm/SyncHelpers/VariantSync.cs b/backend/FwLite/MiniLcm/SyncHelpers/VariantSync.cs new file mode 100644 index 0000000000..0b17ec7782 --- /dev/null +++ b/backend/FwLite/MiniLcm/SyncHelpers/VariantSync.cs @@ -0,0 +1,57 @@ +using MiniLcm.Models; +using SystemTextJsonPatch; +using SystemTextJsonPatch.Operations; + +namespace MiniLcm.SyncHelpers; + +public static class VariantSync +{ + /// + /// Syncs one variant link's own data (types, HideMinorEntry, Comment). The link is + /// located by its composite key; changing endpoints is delete-and-recreate, handled by + /// the collection diff in . + /// + public static async Task Sync(Variant before, Variant after, IMiniLcmApi api) + { + var changes = 0; + var updateObjectInput = VariantDiffToUpdate(before, after); + if (updateObjectInput is not null) + { + await api.SubmitUpdateVariant(after, updateObjectInput); + changes++; + } + changes += await DiffCollection.Diff(before.Types, after.Types, new VariantTypesDiffApi(api, after)); + return changes; + } + + public static UpdateObjectInput? VariantDiffToUpdate(Variant before, Variant after) + { + JsonPatchDocument patchDocument = new(); + if (before.HideMinorEntry != after.HideMinorEntry) + patchDocument.Operations.Add(new Operation("replace", $"/{nameof(Variant.HideMinorEntry)}", null, after.HideMinorEntry)); + patchDocument.Operations.AddRange(MultiStringDiff.GetMultiStringDiff(nameof(Variant.Comment), before.Comment, after.Comment)); + if (patchDocument.Operations.Count == 0) return null; + return new UpdateObjectInput(patchDocument); + } + + private class VariantTypesDiffApi(IMiniLcmApi api, Variant variant) : ObjectWithIdCollectionDiffApi + { + public override async Task Add(VariantType afterVariantType) + { + await api.AddVariantType(variant, afterVariantType.Id); + return 1; + } + + public override async Task Remove(VariantType beforeVariantType) + { + await api.RemoveVariantType(variant, beforeVariantType.Id); + return 1; + } + + public override Task Replace(VariantType before, VariantType after) + { + // type renames sync via VariantTypeSync (top-level list), not through the link + return Task.FromResult(0); + } + } +} diff --git a/backend/FwLite/MiniLcm/SyncHelpers/VariantTypeSync.cs b/backend/FwLite/MiniLcm/SyncHelpers/VariantTypeSync.cs new file mode 100644 index 0000000000..3ac8d7771e --- /dev/null +++ b/backend/FwLite/MiniLcm/SyncHelpers/VariantTypeSync.cs @@ -0,0 +1,56 @@ +using MiniLcm.Models; +using SystemTextJsonPatch; + +namespace MiniLcm.SyncHelpers; + +public static class VariantTypeSync +{ + public static async Task Sync(VariantType[] beforeVariantTypes, + VariantType[] afterVariantTypes, + IMiniLcmApi api) + { + return await DiffCollection.Diff( + beforeVariantTypes, + afterVariantTypes, + new VariantTypesDiffApi(api)); + } + + public static async Task Sync(VariantType before, + VariantType after, + IMiniLcmApi api) + { + var updateObjectInput = VariantTypeDiffToUpdate(before, after); + if (updateObjectInput is not null) await api.SubmitUpdateVariantType(after.Id, updateObjectInput); + return updateObjectInput is null ? 0 : 1; + } + + public static UpdateObjectInput? VariantTypeDiffToUpdate(VariantType before, VariantType after) + { + JsonPatchDocument patchDocument = new(); + patchDocument.Operations.AddRange(MultiStringDiff.GetMultiStringDiff(nameof(VariantType.Name), + before.Name, + after.Name)); + if (patchDocument.Operations.Count == 0) return null; + return new UpdateObjectInput(patchDocument); + } + + private class VariantTypesDiffApi(IMiniLcmApi api) : ObjectWithIdCollectionDiffApi + { + public override async Task Add(VariantType afterVariantType) + { + await api.CreateVariantType(afterVariantType); + return 1; + } + + public override async Task Remove(VariantType beforeVariantType) + { + await api.DeleteVariantType(beforeVariantType.Id); + return 1; + } + + public override Task Replace(VariantType beforeVariantType, VariantType afterVariantType) + { + return Sync(beforeVariantType, afterVariantType, api); + } + } +} diff --git a/backend/FwLite/MiniLcm/Validators/EntryValidator.cs b/backend/FwLite/MiniLcm/Validators/EntryValidator.cs index 3874801821..33a40fc5d3 100644 --- a/backend/FwLite/MiniLcm/Validators/EntryValidator.cs +++ b/backend/FwLite/MiniLcm/Validators/EntryValidator.cs @@ -22,6 +22,14 @@ public EntryValidator() // RuleForEach(e => e.ComplexForms).SetValidator(entry => new ComplexFormComponentValidator(entry)); // TODO: Not implemented yet // TODO: ComplexFormComponentValidator(entry) might need to know the "direction" of the entry it's validating, i.e. one class for "I'm a component" and another for "I'm the complex entry" RuleForEach(e => e.ComplexFormTypes).SetValidator(new ComplexFormTypeValidator()); + RuleForEach(e => e.VariantOf).Must(NotBeEmptyMainEntryReference).WithMessage("Variant main-entry reference must not be empty."); + RuleForEach(e => e.VariantOf).Must(NotBeVariantOfSelfReference).WithMessage("Variant main-entry reference must not be the same as the entry."); + RuleForEach(e => e.VariantOf).Must(HaveCorrectVariantEntryReference).WithMessage("Variant entry reference must be correct."); + RuleForEach(e => e.Variants).Must(NotBeEmptyVariantEntryReference).WithMessage("Variant entry reference must not be empty."); + RuleForEach(e => e.Variants).Must(NotBeVariantSelfReference).WithMessage("Variant entry reference must not be the same as the entry."); + RuleForEach(e => e.Variants).Must(HaveCorrectMainEntryReference).WithMessage("Variant main-entry reference must be correct."); + RuleForEach(e => e.VariantOf).SetValidator(new VariantValidator()); + RuleForEach(e => e.Variants).SetValidator(new VariantValidator()); } private bool NotBeEmptyComponentReference(Entry entry, ComplexFormComponent component) @@ -51,6 +59,38 @@ private bool HaveCorrectComponentEntryReference(Entry entry, ComplexFormComponen return component.ComponentEntryId == entry.Id || component.ComponentEntryId == Guid.Empty; } + private bool NotBeEmptyMainEntryReference(Entry entry, Variant variant) + { + return variant.MainEntryId != Guid.Empty; + } + + private bool NotBeEmptyVariantEntryReference(Entry entry, Variant variant) + { + return variant.VariantEntryId != Guid.Empty; + } + + private bool NotBeVariantOfSelfReference(Entry entry, Variant variant) + { + return variant.MainEntryId != entry.Id; + } + + private bool HaveCorrectVariantEntryReference(Entry entry, Variant variant) + { + // Empty GUID is okay here because it can be guessed from the parent object + return variant.VariantEntryId == entry.Id || variant.VariantEntryId == Guid.Empty; + } + + private bool NotBeVariantSelfReference(Entry entry, Variant variant) + { + return variant.VariantEntryId != entry.Id || variant.VariantEntryId == Guid.Empty; + } + + private bool HaveCorrectMainEntryReference(Entry entry, Variant variant) + { + // Empty GUID is okay here because it can be guessed from the parent object + return variant.MainEntryId == entry.Id || variant.MainEntryId == Guid.Empty; + } + private string GetEntryIdentifier(Entry entry) { return $"{entry.Headword()} - {entry.Id}"; diff --git a/backend/FwLite/MiniLcm/Validators/MiniLcmApiValidationWrapper.cs b/backend/FwLite/MiniLcm/Validators/MiniLcmApiValidationWrapper.cs index db2019ae15..3a696e1629 100644 --- a/backend/FwLite/MiniLcm/Validators/MiniLcmApiValidationWrapper.cs +++ b/backend/FwLite/MiniLcm/Validators/MiniLcmApiValidationWrapper.cs @@ -129,6 +129,30 @@ public async Task UpdateComplexFormType(ComplexFormType before, return await _api.UpdateComplexFormType(before, after, api ?? this); } + public async Task CreateVariantType(VariantType variantType) + { + await validators.ValidateAndThrow(variantType); + return await _api.CreateVariantType(variantType); + } + + public async Task UpdateVariantType(VariantType before, VariantType after, IMiniLcmApi? api = null) + { + await validators.ValidateAndThrow(after); + return await _api.UpdateVariantType(before, after, api ?? this); + } + + public async Task CreateVariant(Variant variant) + { + await validators.ValidateAndThrow(variant); + return await _api.CreateVariant(variant); + } + + public async Task UpdateVariant(Variant before, Variant after, IMiniLcmApi? api = null) + { + await validators.ValidateAndThrow(after); + return await _api.UpdateVariant(before, after, api ?? this); + } + public async Task UpdateMorphType(Guid id, UpdateObjectInput update) { await validators.ValidateAndThrow(update); diff --git a/backend/FwLite/MiniLcm/Validators/MiniLcmValidators.cs b/backend/FwLite/MiniLcm/Validators/MiniLcmValidators.cs index 4d516f6583..566d87f043 100644 --- a/backend/FwLite/MiniLcm/Validators/MiniLcmValidators.cs +++ b/backend/FwLite/MiniLcm/Validators/MiniLcmValidators.cs @@ -8,6 +8,8 @@ namespace MiniLcm.Validators; public record MiniLcmValidators( IValidator ComplexFormTypeValidator, + IValidator VariantTypeValidator, + IValidator VariantValidator, IValidator MorphTypeValidator, IValidator EntryValidator, IValidator SenseValidator, @@ -25,6 +27,16 @@ public async Task ValidateAndThrow(ComplexFormType value) await ComplexFormTypeValidator.ValidateAndThrowAsync(value); } + public async Task ValidateAndThrow(VariantType value) + { + await VariantTypeValidator.ValidateAndThrowAsync(value); + } + + public async Task ValidateAndThrow(Variant value) + { + await VariantValidator.ValidateAndThrowAsync(value); + } + public async Task ValidateAndThrow(MorphType value) { await MorphTypeValidator.ValidateAndThrowAsync(value); @@ -88,6 +100,8 @@ public static IServiceCollection AddMiniLcmValidators(this IServiceCollection se services.AddTransient(); services.AddTransient(); services.AddTransient, ComplexFormTypeValidator>(); + services.AddTransient, VariantTypeValidator>(); + services.AddTransient, VariantValidator>(); services.AddTransient, MorphTypeValidator>(); services.AddTransient, EntryValidator>(); services.AddTransient, SenseValidator>(); diff --git a/backend/FwLite/MiniLcm/Validators/VariantTypeValidator.cs b/backend/FwLite/MiniLcm/Validators/VariantTypeValidator.cs new file mode 100644 index 0000000000..0692ef36fc --- /dev/null +++ b/backend/FwLite/MiniLcm/Validators/VariantTypeValidator.cs @@ -0,0 +1,13 @@ +using FluentValidation; +using MiniLcm.Models; + +namespace MiniLcm.Validators; + +internal class VariantTypeValidator : AbstractValidator +{ + public VariantTypeValidator() + { + RuleFor(c => c.DeletedAt).Null(); + RuleFor(c => c.Name).Required(c => c.Id.ToString("D")); + } +} diff --git a/backend/FwLite/MiniLcm/Validators/VariantValidator.cs b/backend/FwLite/MiniLcm/Validators/VariantValidator.cs new file mode 100644 index 0000000000..f03f2799e4 --- /dev/null +++ b/backend/FwLite/MiniLcm/Validators/VariantValidator.cs @@ -0,0 +1,24 @@ +using FluentValidation; +using MiniLcm.Models; + +namespace MiniLcm.Validators; + +internal class VariantValidator : AbstractValidator +{ + public VariantValidator() + { + RuleFor(v => v.DeletedAt).Null(); + //one endpoint may be an empty guid when nested in an entry (inferred from the parent), + //so only reject self-reference when both are set + RuleFor(v => v) + .Must(v => v.VariantEntryId == Guid.Empty || v.VariantEntryId != v.MainEntryId) + .WithMessage(v => $"Variant {GetIdentifier(v)} must not be a variant of itself."); + RuleFor(v => v.Comment).NoEmptyValues(GetIdentifier).NoDefaultWritingSystems(GetIdentifier); + RuleForEach(v => v.Types).SetValidator(new VariantTypeValidator()); + } + + private string GetIdentifier(Variant variant) + { + return $"{variant.VariantHeadword} -> {variant.MainHeadword} ({variant.VariantEntryId} -> {variant.MainEntryId})"; + } +} diff --git a/backend/FwLite/VARIANTS.md b/backend/FwLite/VARIANTS.md new file mode 100644 index 0000000000..e7953ba1ea --- /dev/null +++ b/backend/FwLite/VARIANTS.md @@ -0,0 +1,317 @@ +# Variants in FieldWorks Lite — design & work log + +Working document for adding variant support to FwLite (model → sync → UI). Written so any +dev/agent can pick up the work mid-stream. Update the **Status** section as steps land. + +## Status + +- [x] Exploration (complex-forms blueprint, liblcm variant model, viewer UI) +- [x] Design review with Tim (2026-07-03): per-link model confirmed, naming settled +- [x] Step 1+2 — model, changes, both APIs, sync orchestration + round-trip suite + (all backend suites green: MiniLcm.Tests, LcmCrdt.Tests, FwDataMiniLcmBridge.Tests, + FwLiteProjectSync.Tests incl. Sena3 live db regen; the WS-font failure on Windows is + the known local-only false-fail) +- [x] Step 3 — Viewer UI (fields, per-link type menu, demo seed, i18n, Playwright green) +- [x] Review (8-agent pass; fixes: sense-move composite-key lookup in the FwData bridge, + type-toggle re-render, hub read parity) + draft PRs: + backend [#2408](https://github.com/sillsdev/languageforge-lexbox/pull/2408), + UI [#2409](https://github.com/sillsdev/languageforge-lexbox/pull/2409) (stacked) + +**Boundary change vs the original plan**: steps 1 and 2 merged — the moment the FwData +bridge reads variants, importing a variant-containing project crashes unless variant types +are imported before entries, so a "model-only" PR can't be green against real projects. +Final split: one backend PR (model through sync) + one UI PR stacked on it. + +### Step 2/3 decision addenda + +- **Deterministic variant-list order on both sides** (`Variant.VariantOfOrder`/`VariantsOrder`, + composite-key based, culture-free). ComplexForms sort alphabetically because FieldWorks + does; variants have no such convention, and guid order keeps snapshot comparisons and + sync stable across cultures. UI can sort for display later if wanted. +- **`CrdtMiniLcmApi.BulkCreateEntries`** (import fast path) emits `AddVariantChange` with the + same only-if-other-endpoint-already-created trick as components. +- **Sena3 verified live db/snapshot regenerated**: sena-3 really contains variants + (*inde*→*ande*, *yenda*→*enda*, custom bilingual "Pronunciation Variant" type), which now + round-trip — the diff was inspected and is purely additive. +- **Blank-project template regenerated**: new CRDT projects seed the 7 standard FLEx variant + types (well-known guids). +- **UI**: `Variant of` (picker: entries-and-senses) and `Variants` (picker: only-entries) + fields, both shown by default in both views; per-link variant types via a "Variant type" + checkbox submenu on each link badge; new links default to *Unspecified Variant* (FLEx + behavior); all edits flow through `updateEntry` (before/after diff → EntrySync), so the + in-memory demo works without dedicated endpoints. `useVariantTypes()` is **eager** — + the type list must be loaded before the first pick applies the default. +- **helpIds**: `Variant_of_field.htm` verified to exist (fetched); there's no dedicated + FLEx topic for the Variants back-reference field, so it reuses the same topic. + +## The LCM model (authority: liblcm) + +A variant relationship is a `LexEntryRef` **owned by the variant (minor) entry** +(`LexEntry.EntryRefsOS`), with: + +| LexEntryRef field | Variant usage | FLEx UI label | +|---|---|---| +| `RefType` | `LexEntryRefTags.krtVariant` (= 0; complex form = 1) | — | +| `ComponentLexemesRS` | The main entry **or sense** this is a variant of. Sequence — multiple targets allowed by the model; FLEx UI uses one per ref. | "Variant of" | +| `VariantEntryTypesRS` | Types from `LexDb.VariantEntryTypesOA` (per ref!) | "Variant Type" | +| `HideMinorEntry` | 0 = show as minor entry (default on create) | "Show Minor Entry" (inverted) | +| `Summary` | Per-ref note | "Comment" | +| `PrimaryLexemesRS` | **Unused** for variants (complex-forms only) | — | + +Key liblcm business rules (`SIL.LCModel/DomainImpl/OverridesLing_Lex.cs`): + +- `LexEntry.MakeVariantOf` creates the ref with `HideMinorEntry = 0` and defaults the type + to *Unspecified Variant* when none is given. +- A `LexEntryRef` is deleted when its `ComponentLexemesRS` becomes empty (merge/cleanup paths). +- An entry can own **multiple** variant refs (e.g. variant of two entries with different + types); back-refs (`VariantFormEntryBackRefs`, also on senses) are computed. +- Variant entries **may have senses** (no model restriction). An entry created *as* a variant + has none; an entry converted to a variant keeps its senses (FLEx course A7: *pagaye* vs + *placoter*). + +The variant-types list is **hierarchical**: *Irregularly Inflected Form* (a `LexEntryInflType`) +has child types *Plural* and *Past*. `LexEntryInflType` extends `LexEntryType` with +`GlossPrepend/GlossAppend/InflFeatsOA/SlotsRC` (not modeled in v1). Well-known GUIDs: +Unspecified `3942addb…`, Dialectal `024b62c9…`, Free `4343b1ef…`, Spelling `0c4663b3…`, +Irregularly Inflected Form `01d4fbc1…`, Plural `a32f1d1c…`, Past `837ebe72…`. + +## Design: one link = one LexEntryRef (per-link types) + +**FLEx compatibility is the top priority** (Tim, design review): we don't have to model every +field, but what we model must round-trip losslessly. Variant Type / Show Minor Entry / +Comment are **per relationship** in FLEx (they live on the `LexEntryRef`), so the MiniLcm +link carries them — unlike complex forms, which flatten types to entry level. + +```csharp +public record Variant : IObjectWithId +{ + Guid Id; // synthetic in CRDT; unset when read from FwData (sync keys on the composite below) + Guid VariantEntryId; // the variant (minor) entry — owns the LexEntryRef in FW + string? VariantHeadword; // derived cache, like ComplexFormComponent headwords + Guid MainEntryId; // the entry this is a variant of (LCM: ComponentLexemes) + Guid? MainSenseId; // …or a specific sense of it + string? MainHeadword; // derived cache + List Types; // LexEntryRef.VariantEntryTypesRS + bool HideMinorEntry; // LexEntryRef.HideMinorEntry != 0 (LCM polarity kept; UI shows "Show minor entry" inverted) + RichMultiString? Comment; // LexEntryRef.Summary (FLEx UI labels it "Comment") — check actual MultiString kind at impl time + DateTimeOffset? DeletedAt; +} +``` + +- **`Entry.Variants: List`** — links where this entry (or one of its senses) is the + main. Matches the FLEx "Variants" section on a main entry. +- **`Entry.VariantOf: List`** — links where this entry is the variant. Matches the + FLEx "Variant of" field on a minor entry. +- **`VariantType`**: `Id`, `Name`, `DeletedAt` — same shape as `ComplexFormType`, a + first-class CRDT object with its own sync. +- Sync key: **composite `(VariantEntryId, MainEntryId, MainSenseId)`**, never `Id` + (FW-side links are keyed by the ref they live in; ids don't line up across sides — + same rule as `ComplexFormComponent`). + +### Decisions (and the reasoning) + +1. **Per-link model, not complex-form parity flattening** (Tim confirmed). One `Variant` = + one `LexEntryRef` with exactly one target. Reading a multi-target ref (model-legal, rare, + not creatable in FLEx UI) yields one link per target sharing the ref's types/fields; + writing back would split into per-link refs. Two refs to the *same* target collapse to + one link (composite-key dedupe, first ref wins) — documented edge, mirrors complex forms. +2. **Naming leans FLEx-user-facing, not LCM-internal** (Tim: "Component = the main entry" is + unintuitive, even though liblcm's `ComponentLexemesRS` is exactly that). Hence + `MainEntryId`/`MainSenseId`, record name `Variant`, entry fields `Variants`/`VariantOf`. + `Comment` (FLEx label) maps to LCM `Summary`; precedent: MiniLcm `Entry.Note` ↔ LCM + `LexEntry.Comment`. `HideMinorEntry` keeps LCM's name *and polarity* so bridge code never + flips signs; the UI can present "Show minor entry". +3. **`HideMinorEntry` + `Comment` are modeled and synced in v1, UI deferred** (Tim). Cheap on + the link entity, avoids a second migration + sync fanout later, and deleting/recreating a + link in FWL can never silently drop FLEx data. +4. **Variant types are read *flattened*** (`GetVariantTypes` must be changed — it exists today + reading only top-level `PossibilitiesOS`): the IIF subtypes (*Plural*, *Past*) are children + in the list and are what IIF-heavy projects assign. Creating a type missing on the other + side creates a **plain top-level `LexEntryType`** — standard types exist everywhere + (well-known GUIDs), so this is rare; hierarchy and `LexEntryInflType` payloads don't + round-trip in v1. +5. **Link edits are allowed** (unlike complex forms' "delete and recreate"): type add/remove + are dedicated CRDT changes on the link (`AddVariantTypeChange`/`RemoveVariantTypeChange`, + `EditChange`); `HideMinorEntry`/`Comment` sync via `JsonPatchChange`. + This is what makes concurrent type edits merge instead of last-writer-wins. +6. **No ordering.** Variant lists have no user-meaningful order in FLEx; both directions diff + as sets. No `IOrderable`, no `SetOrderChange`, no Move API. +7. **Self-references, duplicates AND cycles are rejected; chains are allowed.** (This + decision reversed mid-implementation: `MakeVariantOf` has no cycle check, but the FwData + conformance tests proved liblcm rejects circular refs at a lower level — + `LexEntryRef.ValidateAddObjectInternal` → `LexEntry.AllComponents`, which walks the + **combined** complex-form + variant component graph. Allowing in the CRDT what FLEx + rejects would wedge sync, so `AddVariantChange` mirrors the combined-graph walk.) + The duplicate/cycle guard lives in `AddVariantChange` (soft-delete, sync-tolerant); + self-reference is additionally rejected by `VariantValidator` in the validation wrapper + (consistent across both implementations). Chains (a variant of a variant) remain legal, + as in FLEx. +8. **Deleted `VariantType` cleanup**: `Variant.GetReferences()` includes its `Types` ids, and + `RemoveReference` removes the type from the list (only endpoint ids soft-delete the link). + Better than the complex-forms quirk where deleted types linger in `Entry.ComplexFormTypes`. + Like `Entry.ComplexFormTypes`, `Variant.Types` stores denormalized copies (jsonb), so a + type *rename* reaches already-linked variants on the next sync/read, not instantly. +9. **Variant entries with no senses are first-class** and must be covered by tests both ways + (headline behavioral difference; FLEx "Insert Variant" creates sense-less entries). +10. **A variant can target a sense** (`MainSenseId`); on the main side such links still + surface under the owning entry's `Variants`. +11. **Minor-entry visibility in FWL UI** (step 3): users must be able to see at a glance that + an entry is a variant, not a first-class entry (badge / "Variant of X" in the editor; + list styling is a follow-up). + +### FwData bridge mapping + +Read (`FwDataMiniLcmApi.FromLexEntry`): +- `VariantOf` ← each `entry.VariantEntryRefs` ref × each `ComponentLexemesRS` target + (`ILexEntry`/`ILexSense`), `DistinctBy` composite key; per-link `Types`/`HideMinorEntry`/ + `Comment` from the ref. +- `Variants` ← back-refs: `entry.VariantFormEntryBackRefs` + per-sense back-refs (verify + exact liblcm property names at impl time), mapped the same way. +- `GetVariantTypes()` ← `LexDb.VariantEntryTypesOA` **flattened** (decision 4). + +Write: +- `CreateVariant` → **new** `LexEntryRef` on the variant entry (`RefType = krtVariant`), + `HideMinorEntry`/`Summary`/types from the link, add the single target. Idempotent when the + composite already exists. +- `DeleteVariant` → find the ref holding the target; remove the target; delete the ref when + its components empty (liblcm's own cleanup semantics). +- `AddVariantType`/`RemoveVariantType` (link-locator + type id) → that ref's + `VariantEntryTypesRS`. +- `SubmitUpdateVariant` (scalars) → proxy over the ref (`UpdateComplexFormTypeProxy` pattern). +- Type CRUD → possibility list (create = plain top-level `LexEntryType`). + +### CRDT side + +- `Variant` table (`Variants`): FK cascades — Entry×2 (`VariantEntryId`, `MainEntryId`), + Sense (`MainSenseId`); filtered unique indexes on the composite (sense null / not null), + mirroring `ComplexFormComponents`; `Types` jsonb; `Comment` jsonb. +- `VariantType` snapshot table (mirror `ComplexFormType`). +- linq2db headword expressions for `VariantHeadword`/`MainHeadword` (mirror the + `ComplexFormComponent` `IsExpression` mappings in `ConfigureDbOptions`), plus `Finalize` + sorting for deterministic list order. +- EF migration `AddVariants`. +- Changes (register in `LcmCrdtKernel.ConfigureCrdt` **and** add instances to + `UseChangesTests.GetAllChanges()` — kernel comment mandates it): + `AddVariantChange` (create; carries types+scalars; dedupe/cycle/deleted-ref handling + mirroring `AddEntryComponentChange`), + `AddVariantTypeChange`/`RemoveVariantTypeChange` (`EditChange`), + `CreateVariantType`, `JsonPatchChange`, `JsonPatchChange`, + `DeleteChange`, `DeleteChange`. + A `SetVariantChange` (mirror of `SetComplexFormComponentChange`) was considered and + dropped: that change turned out to be test/wire-legacy only for complex forms; variant + scalars go through `JsonPatchChange` and endpoint changes are delete+recreate. + +### API surface (both implementations + wrappers) + +Read: `GetVariantTypes()`, `GetVariantType(Guid)`. +Write: `CreateVariantType`, `UpdateVariantType` ×2, `DeleteVariantType`, +`CreateVariant(variant)`, `DeleteVariant(variant)`, `UpdateVariant(before, after)`, +`AddVariantType(variant, typeId)`, `RemoveVariantType(variant, typeId)` — link-locator +arguments resolve by composite key on both sides. +Submit (sync, result-less): `SubmitCreateVariant`, `SubmitUpdateVariant(variant, patch)`, +`SubmitUpdateVariantType`. + +Fanout sites that must stay in lockstep: +- `CrdtMiniLcmApi`, `FwDataMiniLcmApi` (manual implementations) +- `DryRunMiniLcmApi` (manual write methods; reads auto-forward) +- `MiniLcmApiWriteNormalizationWrapper` (manual write methods) +- `MiniLcmApiValidationWrapper` — **explicit** additions or the new writes silently skip + validation (BeaKona auto-forwards; the CreateEntry gap #2362 is the cautionary tale) +- `ResumableImportApi` — cache `CreateVariantType` like `CreateComplexFormType` (step 2) +- `MiniLcmApiNotifyWrapper` (FwLiteShared) — notify on variant writes for UI refresh +- `MiniLcmJsInvokable`, `InMemoryDemoApi`, generated TS types (step 3) + +### Sync design (step 2) + +- `VariantTypeSync` (mirror `ComplexFormTypeSync`); runs in `SyncInternal` next to + `ComplexFormTypeSync`, before entries. +- `VariantSync` (per-link): types diff via `Add/RemoveVariantType`; `HideMinorEntry`/`Comment` + via `SubmitUpdateVariant` patch. Used by EntrySync diff Replace and `UpdateVariant`. +- `VariantOf`/`Variants` link diffs join **phase 2** (`SyncComplexFormsAndComponents`, both + directions — a one-direction wiring won't reconcile deletes). Phase/option names stay + as-is in these PRs (`…ComplexFormsAndComponents` now covers variants too; renaming is a + separate no-behavior PR — reviewer advice, keeps the critical diff small). +- `CreateEntryOptions.IncludeComplexFormsAndComponents` also gates variant links (doc + comment updated; entry-to-entry refs need both endpoints to exist). +- `ProjectSnapshot` gains `VariantTypes` — update **`TakeProjectSnapshot()`** + (`MiniLcmApiExtensions`) and `ProjectSnapshot.Empty`, or it compiles-but-snapshots-empty + (landmine #1912-class). +- `ProjectImporter`/`MiniLcmImport`: explicit `VariantType` creation loop (same slot as + complex-form types, before entries) — import is a separate code path from sync. +- `ResumableImportApi`: cache `CreateVariantType`. +- Legacy snapshots need **no** MorphTypes-style patch: CRDT genuinely has no variants yet, so + the first sync after upgrade imports FwData variants into the CRDT (dedicated upgrade test: + snapshot without variants + FwData with variants → added to CRDT, nothing deleted from + FwData). +- **Verified files must be regenerated regardless of Sena3 content**: entry shape changes + break `ProjectSnapshotSerializationTests.LatestSena3SnapshotRoundTrips` (+ the dated + `Snapshots/` files) and possibly `LiveSena3Sync`'s `sena-3-live.verified.sqlite` / + `CrdtChanges == 0` assertion (Sena 3 contains variants → first sync after upgrade + produces changes). Regenerate + eyeball, don't hand-edit. +- `EntryFakerHelper`/AutoFaker: `CanSyncRandomEntries` will start generating variant links — + extend `PrepareToCreateEntry` to create referenced variant entries/types (mirror the + `createComponents` flag) and extend `SyncTests.SyncExclusions` for the derived + `VariantHeadword`/`MainHeadword` caches. + +### Rollout / compatibility notes + +- Same story as every previous model addition (MorphTypes, Publications): the lexbox server + stores change JSON opaquely, but **old FwLite clients cannot deserialize a new change + type** — they break only when someone actually uses variants in a synced project, and + auto-update closes the window. No extra gating exists or is added (precedent). +- FwHeadless consumes the same sync libraries; it must be deployed with/before a client + release that writes variant changes. + +### Test plan + +Mirror the *named* complex-forms cases (test-auditor sweep), not just categories: + +- `MiniLcm.Tests/VariantTestsBase` (subclassed by LcmCrdt.Tests + FwDataMiniLcmBridge.Tests): + create/delete; headwords update when referenced entries change; replaying returned object + is idempotent; same-link-again does nothing (null and non-null sense); changing a property + and creating again creates both; multi-layer cycle guards (1/2/3 levels) + works when a + would-be-cycle member was deleted; **variant entry without senses; variant-of-a-sense; + entry that is both a variant and a component; per-link types round-trip; type add/remove; + HideMinorEntry/Comment round-trip**. +- `LcmCrdt.Tests/Changes/VariantTests` (mirror `ComplexFormTests`: add/remove type, add + link, delete link, duplicate links are soft-deleted) + `UseChangesTests.GetAllChanges()` + entries + `ChangeSerializationTests` generator branch + regression-data regen. +- Validator tests (self-reference, empty refs, wrong-direction ids, nested type validation). +- `FwLiteProjectSync.Tests`: EntrySync diff tests; round-trip create/edit/delete both + directions (two named delete-cascade tests: delete main entry vs delete variant entry); + link-target deleted between syncs (delete-vs-edit race); sense-targeted link when the + sense moves entries; new link referencing a new sense; sense-less variant round-trip; + legacy-snapshot upgrade; flattened-type read + create-missing-type-lands-top-level + (FwData bridge); Sena3 + verified files regen. +- Playwright (step 3): add/remove a variant link + type via the demo project. + +## Stacked PR plan + +1. **`feat/variants-model`** — models, validators, API surface, CRDT entities + changes + + migration, FwData bridge read/write, SyncHelpers (`VariantTypeSync`, `VariantSync`, + EntrySync diffs — they also power `UpdateEntry(before, after)`), conformance tests. + Green standalone; project-sync orchestration doesn't move variants yet. +2. **`feat/variants-sync`** — `CrdtFwdataProjectSyncService` + `ProjectSnapshot.VariantTypes` + + `TakeProjectSnapshot`, `ProjectImporter`/`MiniLcmImport`/`ResumableImportApi`, + round-trip + upgrade tests, verified-file regens (incl. Sena3). +3. **`feat/variants-ui`** — `MiniLcmJsInvokable` + `MiniLcmApiNotifyWrapper` hooks, + regenerated dotnet-types, entity-config + view-data fields (`variantOf`, `variants` — + decide `show` defaults: mirror complexForms=true; variant-type picker inside the link + rows), `VariantOf.svelte`/`Variants.svelte` (reuse `EntryOrSensePicker` + + `EntryOrSenseItemList`, **both non-orderable**, `pt()` dual labels for FW-Classic view, + disable self/duplicates but allow cross-type overlap with components), variant badge for + minor entries (decision 11), demo data seeded with a variant pair + real (not stub) + `InMemoryDemoApi` support for the paths the UI uses, i18n extraction **with context + comments**, Playwright test. + +## Open questions / follow-ups (not blockers) + +- Dictionary preview (`DictionaryEntry.svelte`) shows neither complex forms nor variants; + "variant of X" there is a follow-up. +- `LexEntryInflType` extras (GlossPrepend/Append, InflFeats, Slots), type hierarchy + round-trip — future work. +- Entry-list styling of minor entries (beyond the editor badge) — follow-up. +- FLEx "Insert Variant" convenience (create variant entry + link in one step) in the + new-entry dialog — follow-up UX; v1 links existing entries. +- `HideMinorEntry` is modeled as bool; LCM docs hint the int may become per-publication bit + flags someday — revisit if FLEx ever uses values other than 0/1. diff --git a/backend/LfClassicData/LfClassicMiniLcmApi.cs b/backend/LfClassicData/LfClassicMiniLcmApi.cs index a9352a0e0d..284846fd09 100644 --- a/backend/LfClassicData/LfClassicMiniLcmApi.cs +++ b/backend/LfClassicData/LfClassicMiniLcmApi.cs @@ -26,6 +26,16 @@ public IAsyncEnumerable GetComplexFormTypes() return Task.FromResult(null); } + public IAsyncEnumerable GetVariantTypes() + { + return AsyncEnumerable.Empty(); + } + + public Task GetVariantType(Guid id) + { + return Task.FromResult(null); + } + public IAsyncEnumerable GetMorphTypes() { return AsyncEnumerable.Empty(); diff --git a/frontend/viewer/src/lib/dotnet-types/generated-types/FwLiteShared/Services/IMiniLcmJsInvokable.ts b/frontend/viewer/src/lib/dotnet-types/generated-types/FwLiteShared/Services/IMiniLcmJsInvokable.ts index 5fedeb1bfc..e3b406c812 100644 --- a/frontend/viewer/src/lib/dotnet-types/generated-types/FwLiteShared/Services/IMiniLcmJsInvokable.ts +++ b/frontend/viewer/src/lib/dotnet-types/generated-types/FwLiteShared/Services/IMiniLcmJsInvokable.ts @@ -19,6 +19,8 @@ import type {IWritingSystem} from '../../MiniLcm/Models/IWritingSystem'; import type {WritingSystemType} from '../../MiniLcm/Models/WritingSystemType'; import type {ICreateEntryOptions} from '../../MiniLcm/ICreateEntryOptions'; import type {IComplexFormComponent} from '../../MiniLcm/Models/IComplexFormComponent'; +import type {IVariantType} from '../../MiniLcm/Models/IVariantType'; +import type {IVariant} from '../../MiniLcm/Models/IVariant'; import type {ISense} from '../../MiniLcm/Models/ISense'; import type {IExampleSentence} from '../../MiniLcm/Models/IExampleSentence'; import type {IReadFileResponseJs} from './IReadFileResponseJs'; @@ -67,6 +69,12 @@ export interface IMiniLcmJsInvokable deleteComplexFormComponent(complexFormComponent: IComplexFormComponent) : Promise; addComplexFormType(entryId: string, complexFormTypeId: string) : Promise; removeComplexFormType(entryId: string, complexFormTypeId: string) : Promise; + getVariantTypes() : Promise; + getVariantType(id: string) : Promise; + createVariant(variant: IVariant) : Promise; + deleteVariant(variant: IVariant) : Promise; + addVariantType(variant: IVariant, variantTypeId: string) : Promise; + removeVariantType(variant: IVariant, variantTypeId: string) : Promise; createSense(entryId: string, sense: ISense) : Promise; updateSense(entryId: string, before: ISense, after: ISense) : Promise; deleteSense(entryId: string, senseId: string) : Promise; diff --git a/frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/IEntry.ts b/frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/IEntry.ts index eaf8d5ecb1..fa1724839d 100644 --- a/frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/IEntry.ts +++ b/frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/IEntry.ts @@ -10,6 +10,7 @@ import type {MorphTypeKind} from './MorphTypeKind'; import type {ISense} from './ISense'; import type {IComplexFormComponent} from './IComplexFormComponent'; import type {IComplexFormType} from './IComplexFormType'; +import type {IVariant} from './IVariant'; import type {IPublication} from './IPublication'; export interface IEntry extends IObjectWithId @@ -26,6 +27,8 @@ export interface IEntry extends IObjectWithId components: IComplexFormComponent[]; complexForms: IComplexFormComponent[]; complexFormTypes: IComplexFormType[]; + variantOf: IVariant[]; + variants: IVariant[]; publishIn: IPublication[]; } /* eslint-enable */ diff --git a/frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/IVariant.ts b/frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/IVariant.ts new file mode 100644 index 0000000000..ddbd970889 --- /dev/null +++ b/frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/IVariant.ts @@ -0,0 +1,22 @@ +/* eslint-disable */ +// This code was generated by a Reinforced.Typings tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. + +import type {IObjectWithId} from './IObjectWithId'; +import type {IVariantType} from './IVariantType'; +import type {IRichMultiString} from '$lib/dotnet-types/i-multi-string'; + +export interface IVariant extends IObjectWithId +{ + deletedAt?: string; + variantEntryId: string; + variantHeadword?: string; + mainEntryId: string; + mainSenseId?: string; + mainHeadword?: string; + types: IVariantType[]; + hideMinorEntry: boolean; + comment: IRichMultiString; +} +/* eslint-enable */ diff --git a/frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/IVariantType.ts b/frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/IVariantType.ts new file mode 100644 index 0000000000..9eafe80d30 --- /dev/null +++ b/frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/IVariantType.ts @@ -0,0 +1,15 @@ +/* eslint-disable */ +// This code was generated by a Reinforced.Typings tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. + +import type {IObjectWithId} from './IObjectWithId'; +import type {IMultiString} from '$lib/dotnet-types/i-multi-string'; + +export interface IVariantType extends IObjectWithId +{ + id: string; + name: IMultiString; + deletedAt?: string; +} +/* eslint-enable */ diff --git a/frontend/viewer/src/lib/dotnet-types/index.ts b/frontend/viewer/src/lib/dotnet-types/index.ts index 811b6979d1..f2d50fdaaf 100644 --- a/frontend/viewer/src/lib/dotnet-types/index.ts +++ b/frontend/viewer/src/lib/dotnet-types/index.ts @@ -10,6 +10,8 @@ export * from './generated-types/FwLiteShared/Services/IMiniLcmFeatures'; export * from './generated-types/FwLiteShared/Services/IMiniLcmJsInvokable'; export * from './generated-types/MiniLcm/Models/IComplexFormComponent'; export * from './generated-types/MiniLcm/Models/IComplexFormType'; +export * from './generated-types/MiniLcm/Models/IVariant'; +export * from './generated-types/MiniLcm/Models/IVariantType'; export * from './generated-types/MiniLcm/Models/IEntry'; export * from './generated-types/MiniLcm/Models/IExampleSentence'; export * from './generated-types/MiniLcm/Models/ITranslation'; diff --git a/frontend/viewer/src/lib/utils.ts b/frontend/viewer/src/lib/utils.ts index 55ccdacd9f..9e2c201945 100644 --- a/frontend/viewer/src/lib/utils.ts +++ b/frontend/viewer/src/lib/utils.ts @@ -44,6 +44,8 @@ export function defaultEntry(): IEntry { complexForms: [], complexFormTypes: [], components: [], + variantOf: [], + variants: [], publishIn: [], morphType: MorphTypeKind.Stem, homographNumber: 0, diff --git a/frontend/viewer/src/project/data/index.ts b/frontend/viewer/src/project/data/index.ts index e5735f3fa7..b8843ee062 100644 --- a/frontend/viewer/src/project/data/index.ts +++ b/frontend/viewer/src/project/data/index.ts @@ -3,5 +3,6 @@ export * from './custom-view-service.svelte'; export * from './publications.svelte'; export * from './parts-of-speech.svelte'; export * from './complex-form-types'; +export * from './variant-types'; export * from './project-stats'; export * from './semantic-domains'; diff --git a/frontend/viewer/src/project/data/variant-types.ts b/frontend/viewer/src/project/data/variant-types.ts new file mode 100644 index 0000000000..3e8d88b11c --- /dev/null +++ b/frontend/viewer/src/project/data/variant-types.ts @@ -0,0 +1,10 @@ +import {useProjectContext} from '$project/project-context.svelte'; + +const variantTypesSymbol = Symbol.for('fw-lite-variant-types'); +export function useVariantTypes() { + const projectContext = useProjectContext(); + return projectContext.getOrAddAsync(variantTypesSymbol, [], api => api.getVariantTypes()); +} + +/** Unspecified Variant — the type FLEx assigns when none is chosen (well-known guid) */ +export const UNSPECIFIED_VARIANT_TYPE_ID = '3942addb-99fd-43e9-ab7d-99025ceb0d4e'; diff --git a/frontend/viewer/src/project/demo/demo-entry-data.ts b/frontend/viewer/src/project/demo/demo-entry-data.ts index 787da7cb05..df73740b73 100644 --- a/frontend/viewer/src/project/demo/demo-entry-data.ts +++ b/frontend/viewer/src/project/demo/demo-entry-data.ts @@ -1,4 +1,4 @@ -import {type IEntry, type IMorphType, type IWritingSystems, MorphTypeKind, WritingSystemType} from '$lib/dotnet-types'; +import {type IEntry, type IMorphType, type IVariant, type IVariantType, type IWritingSystems, MorphTypeKind, WritingSystemType} from '$lib/dotnet-types'; export const projectName = 'Sena 3'; @@ -207,7 +207,7 @@ export const _entries: IEntry[] = [ 'exampleSentences': [] } ], 'note': {}, - complexForms: [], complexFormTypes: [], components: [], publishIn: [], + complexForms: [], complexFormTypes: [], components: [], variantOf: [], variants: [], publishIn: [], homographNumber: 0, }, { @@ -277,6 +277,8 @@ export const _entries: IEntry[] = [ complexForms: [], complexFormTypes: [], components: [], + variantOf: [], + variants: [], publishIn: [], homographNumber: 0, }, @@ -321,7 +323,7 @@ export const allWsEntry: IEntry = { }], }], note: {}, - complexForms: [], complexFormTypes: [], components: [], publishIn: [], + complexForms: [], complexFormTypes: [], components: [], variantOf: [], variants: [], publishIn: [], homographNumber: 0, }; @@ -334,4 +336,33 @@ export const entries: IEntry[] = JSON.parse( // Keep the array the same length and don't shift entries down, // so that tests keep passing +// entries in the JSON blob predate variants +for (const entry of entries) { + entry.variantOf ??= []; + entry.variants ??= []; +} + entries.splice(0, 1, allWsEntry); + +// FLEx standard variant types (well-known guids) +export const variantTypes: IVariantType[] = [ + {id: '3942addb-99fd-43e9-ab7d-99025ceb0d4e', name: {en: 'Unspecified Variant'}}, + {id: '024b62c9-93b3-41a0-ab19-587a0030219a', name: {en: 'Dialectal Variant'}}, + {id: '0c4663b3-4d9a-47af-b9a1-c8565d8112ed', name: {en: 'Spelling Variant'}}, +]; + +// seed a variant pair so the demo project shows the feature +const demoVariantEntry = entries[2]; +const demoMainEntry = entries[3]; +const demoVariant: IVariant = { + id: 'b6d5be87-9958-0d55-8788-79e04c8cc001', + variantEntryId: demoVariantEntry.id, + variantHeadword: Object.values(demoVariantEntry.citationForm)[0] ?? Object.values(demoVariantEntry.lexemeForm)[0], + mainEntryId: demoMainEntry.id, + mainHeadword: Object.values(demoMainEntry.citationForm)[0] ?? Object.values(demoMainEntry.lexemeForm)[0], + types: [variantTypes[0]], + hideMinorEntry: false, + comment: {}, +}; +demoVariantEntry.variantOf = [demoVariant]; +demoMainEntry.variants = [demoVariant]; diff --git a/frontend/viewer/src/project/demo/in-memory-demo-api.ts b/frontend/viewer/src/project/demo/in-memory-demo-api.ts index ee4b297943..34256b2ef3 100644 --- a/frontend/viewer/src/project/demo/in-memory-demo-api.ts +++ b/frontend/viewer/src/project/demo/in-memory-demo-api.ts @@ -3,6 +3,8 @@ import { DotnetService, type IComplexFormComponent, + type IVariant, + type IVariantType, type IComplexFormType, type ICreateEntryOptions, type IEntry, @@ -26,7 +28,7 @@ import { ViewBase, MorphTypeKind, } from '$lib/dotnet-types'; -import {entries, morphTypes, partsOfSpeech, projectName, writingSystems} from './demo-entry-data'; +import {entries, morphTypes, partsOfSpeech, projectName, variantTypes, writingSystems} from './demo-entry-data'; import {WritingSystemService} from '../data/writing-system-service.svelte'; import {FwLitePlatform} from '$lib/dotnet-types/generated-types/FwLiteShared/FwLitePlatform'; @@ -467,6 +469,30 @@ export class InMemoryDemoApi implements IMiniLcmJsInvokable { return Promise.resolve(); } + getVariantTypes(): Promise { + return Promise.resolve(variantTypes); + } + + getVariantType(_id: string): Promise { + return Promise.resolve(variantTypes.find(vt => vt.id === _id) ?? null); + } + + createVariant(_variant: IVariant): Promise { + throw new Error('Method not implemented.'); + } + + deleteVariant(_variant: IVariant): Promise { + throw new Error('Method not implemented.'); + } + + addVariantType(_variant: IVariant, _variantTypeId: string): Promise { + throw new Error('Method not implemented.'); + } + + removeVariantType(_variant: IVariant, _variantTypeId: string): Promise { + throw new Error('Method not implemented.'); + } + createComplexFormComponent(_complexFormComponent: IComplexFormComponent): Promise { throw new Error('Method not implemented.'); } diff --git a/frontend/viewer/src/stories/editor/entity-primitives/entry-editor-primitive.stories.svelte b/frontend/viewer/src/stories/editor/entity-primitives/entry-editor-primitive.stories.svelte index fda6e8d5fd..695c8f09c7 100644 --- a/frontend/viewer/src/stories/editor/entity-primitives/entry-editor-primitive.stories.svelte +++ b/frontend/viewer/src/stories/editor/entity-primitives/entry-editor-primitive.stories.svelte @@ -40,6 +40,8 @@ complexForms: [], complexFormTypes: [], components: [], + variantOf: [], + variants: [], publishIn: [], senses: [], morphType: MorphTypeKind.Stem, diff --git a/frontend/viewer/tests/entry-api-helper.ts b/frontend/viewer/tests/entry-api-helper.ts index 485cfe1164..3d4917d01b 100644 --- a/frontend/viewer/tests/entry-api-helper.ts +++ b/frontend/viewer/tests/entry-api-helper.ts @@ -79,6 +79,8 @@ export class EntryApiHelper { components: [], complexForms: [], complexFormTypes: [], + variantOf: [], + variants: [], publishIn: [], homographNumber: 0, }; @@ -101,6 +103,8 @@ export class EntryApiHelper { components: [], complexForms: [], complexFormTypes: [], + variantOf: [], + variants: [], publishIn: [], homographNumber: 0, };