diff --git a/backend/extensions/Squidex.Extensions/Actions/Comment/CommentActionHandler.cs b/backend/extensions/Squidex.Extensions/Actions/Comment/CommentActionHandler.cs index e3a794033..9dc19ff0a 100644 --- a/backend/extensions/Squidex.Extensions/Actions/Comment/CommentActionHandler.cs +++ b/backend/extensions/Squidex.Extensions/Actions/Comment/CommentActionHandler.cs @@ -12,11 +12,10 @@ using Squidex.Domain.Apps.Core.Rules.EnrichedEvents; using Squidex.Domain.Apps.Entities.Comments.Commands; using Squidex.Infrastructure; using Squidex.Infrastructure.Commands; -using Squidex.Infrastructure.Reflection; namespace Squidex.Extensions.Actions.Comment { - public sealed class CommentActionHandler : RuleActionHandler + public sealed class CommentActionHandler : RuleActionHandler { private const string Description = "Send a Comment"; private readonly ICommandBus commandBus; @@ -29,56 +28,48 @@ namespace Squidex.Extensions.Actions.Comment this.commandBus = commandBus; } - protected override async Task<(string Description, CommentJob Data)> CreateJobAsync(EnrichedEvent @event, CommentAction action) + protected override async Task<(string Description, CreateComment Data)> CreateJobAsync(EnrichedEvent @event, CommentAction action) { if (@event is EnrichedContentEvent contentEvent) { - var text = await FormatAsync(action.Text, @event); + var ruleJob = new CreateComment + { + AppId = contentEvent.AppId, + }; - var actor = contentEvent.Actor; + ruleJob.Text = await FormatAsync(action.Text, @event); if (!string.IsNullOrEmpty(action.Client)) { - actor = new RefToken(RefTokenType.Client, action.Client); + ruleJob.Actor = new RefToken(RefTokenType.Client, action.Client); } - - var ruleJob = new CommentJob + else { - AppId = contentEvent.AppId, - Actor = actor, - CommentsId = contentEvent.Id.ToString(), - Text = text - }; + ruleJob.Actor = contentEvent.Actor; + } + + ruleJob.CommentsId = contentEvent.Id.ToString(); return (Description, ruleJob); } - return ("Ignore", new CommentJob()); + return ("Ignore", new CreateComment()); } - protected override async Task ExecuteJobAsync(CommentJob job, CancellationToken ct = default) + protected override async Task ExecuteJobAsync(CreateComment job, CancellationToken ct = default) { - if (string.IsNullOrWhiteSpace(job.CommentsId)) + if (job.CommentsId == default) { return Result.Ignored(); } - var command = SimpleMapper.Map(job, new CreateComment()); + var command = job; + + command.FromRule = true; await commandBus.PublishAsync(command); return Result.Success($"Commented: {job.Text}"); } } - - public sealed class CommentJob - { - public NamedId AppId { get; set; } - - public RefToken Actor { get; set; } - - public string CommentsId { get; set; } - - public string Text { get; set; } - } } diff --git a/backend/extensions/Squidex.Extensions/Actions/CreateContent/CreateContentAction.cs b/backend/extensions/Squidex.Extensions/Actions/CreateContent/CreateContentAction.cs new file mode 100644 index 000000000..2689a30aa --- /dev/null +++ b/backend/extensions/Squidex.Extensions/Actions/CreateContent/CreateContentAction.cs @@ -0,0 +1,42 @@ +// ========================================================================== +// Squidex Headless CMS +// ========================================================================== +// Copyright (c) Squidex UG (haftungsbeschraenkt) +// All rights reserved. Licensed under the MIT license. +// ========================================================================== + +using System.ComponentModel.DataAnnotations; +using Squidex.Domain.Apps.Core.HandleRules; +using Squidex.Domain.Apps.Core.Rules; +using Squidex.Infrastructure.Validation; + +namespace Squidex.Extensions.Actions.CreateContent +{ + [RuleAction( + Title = "CreateContent", + IconImage = "", + IconColor = "#3389ff", + Display = "Create content", + Description = "Create a a new content item for any schema.")] + public sealed class CreateContentAction : RuleAction + { + [LocalizedRequired] + [Display(Name = "Data", Description = "The content data.")] + [DataType(DataType.MultilineText)] + [Formattable] + public string Data { get; set; } + + [LocalizedRequired] + [Display(Name = "Schema", Description = "The name of the schema.")] + [DataType(DataType.Text)] + public string Schema { get; set; } + + [Display(Name = "Client", Description = "An optional client name.")] + [DataType(DataType.Text)] + public string Client { get; set; } + + [Display(Name = "Publish", Description = "Publish the content.")] + [DataType(DataType.Text)] + public bool Publish { get; set; } + } +} diff --git a/backend/extensions/Squidex.Extensions/Actions/CreateContent/CreateContentActionHandler.cs b/backend/extensions/Squidex.Extensions/Actions/CreateContent/CreateContentActionHandler.cs new file mode 100644 index 000000000..3e87610d1 --- /dev/null +++ b/backend/extensions/Squidex.Extensions/Actions/CreateContent/CreateContentActionHandler.cs @@ -0,0 +1,87 @@ +// ========================================================================== +// Squidex Headless CMS +// ========================================================================== +// Copyright (c) Squidex UG (haftungsbeschraenkt) +// All rights reserved. Licensed under the MIT license. +// ========================================================================== + +using System; +using System.Threading; +using System.Threading.Tasks; +using Squidex.Domain.Apps.Core.Contents; +using Squidex.Domain.Apps.Core.HandleRules; +using Squidex.Domain.Apps.Core.Rules.EnrichedEvents; +using Squidex.Domain.Apps.Entities; +using Squidex.Domain.Apps.Entities.Schemas; +using Squidex.Infrastructure; +using Squidex.Infrastructure.Commands; +using Squidex.Infrastructure.Json; +using Command = Squidex.Domain.Apps.Entities.Contents.Commands.CreateContent; + +namespace Squidex.Extensions.Actions.CreateContent +{ + public sealed class CreateContentActionHandler : RuleActionHandler + { + private const string Description = "Create a content"; + private readonly ICommandBus commandBus; + private readonly IAppProvider appProvider; + private readonly IJsonSerializer jsonSerializer; + + public CreateContentActionHandler(RuleEventFormatter formatter, IAppProvider appProvider, ICommandBus commandBus, IJsonSerializer jsonSerializer) + : base(formatter) + { + Guard.NotNull(appProvider, nameof(appProvider)); + Guard.NotNull(commandBus, nameof(commandBus)); + Guard.NotNull(jsonSerializer, nameof(jsonSerializer)); + + this.appProvider = appProvider; + this.commandBus = commandBus; + this.jsonSerializer = jsonSerializer; + } + + protected override async Task<(string Description, Command Data)> CreateJobAsync(EnrichedEvent @event, CreateContentAction action) + { + var ruleJob = new Command + { + AppId = @event.AppId, + }; + + var schema = await appProvider.GetSchemaAsync(@event.AppId.Id, action.Schema, true); + + if (schema == null) + { + throw new InvalidOperationException($"Cannot find schema '{action.Schema}'"); + } + + ruleJob.SchemaId = schema.NamedId(); + + var json = await FormatAsync(action.Data, @event); + + ruleJob.Data = jsonSerializer.Deserialize(json); + + if (!string.IsNullOrEmpty(action.Client)) + { + ruleJob.Actor = new RefToken(RefTokenType.Client, action.Client); + } + else if (@event is EnrichedUserEventBase userEvent) + { + ruleJob.Actor = userEvent.Actor; + } + + ruleJob.Publish = action.Publish; + + return (Description, ruleJob); + } + + protected override async Task ExecuteJobAsync(Command job, CancellationToken ct = default) + { + var command = job; + + command.FromRule = true; + + await commandBus.PublishAsync(command); + + return Result.Success($"Created to: {job.SchemaId.Name}"); + } + } +} diff --git a/backend/extensions/Squidex.Extensions/Actions/CreateContent/CreateContentPlugin.cs b/backend/extensions/Squidex.Extensions/Actions/CreateContent/CreateContentPlugin.cs new file mode 100644 index 000000000..644917108 --- /dev/null +++ b/backend/extensions/Squidex.Extensions/Actions/CreateContent/CreateContentPlugin.cs @@ -0,0 +1,21 @@ +// ========================================================================== +// Squidex Headless CMS +// ========================================================================== +// Copyright (c) Squidex UG (haftungsbeschraenkt) +// All rights reserved. Licensed under the MIT license. +// ========================================================================== + +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Squidex.Infrastructure.Plugins; + +namespace Squidex.Extensions.Actions.CreateContent +{ + public sealed class CreateContentPlugin : IPlugin + { + public void ConfigureServices(IServiceCollection services, IConfiguration config) + { + services.AddRuleAction(); + } + } +} diff --git a/backend/extensions/Squidex.Extensions/Actions/Notification/NotificationActionHandler.cs b/backend/extensions/Squidex.Extensions/Actions/Notification/NotificationActionHandler.cs index ee569ccc8..e23d9d169 100644 --- a/backend/extensions/Squidex.Extensions/Actions/Notification/NotificationActionHandler.cs +++ b/backend/extensions/Squidex.Extensions/Actions/Notification/NotificationActionHandler.cs @@ -13,12 +13,11 @@ using Squidex.Domain.Apps.Core.Rules.EnrichedEvents; using Squidex.Domain.Apps.Entities.Comments.Commands; using Squidex.Infrastructure; using Squidex.Infrastructure.Commands; -using Squidex.Infrastructure.Reflection; using Squidex.Shared.Users; namespace Squidex.Extensions.Actions.Notification { - public sealed class NotificationActionHandler : RuleActionHandler + public sealed class NotificationActionHandler : RuleActionHandler { private const string Description = "Send a Notification"; private static readonly NamedId NoApp = NamedId.Of(DomainId.Empty, "none"); @@ -36,7 +35,7 @@ namespace Squidex.Extensions.Actions.Notification this.userResolver = userResolver; } - protected override async Task<(string Description, NotificationJob Data)> CreateJobAsync(EnrichedEvent @event, NotificationAction action) + protected override async Task<(string Description, CreateComment Data)> CreateJobAsync(EnrichedEvent @event, NotificationAction action) { if (@event is EnrichedUserEventBase userEvent) { @@ -56,7 +55,7 @@ namespace Squidex.Extensions.Actions.Notification throw new InvalidOperationException($"Cannot find user by '{action.User}'"); } - var ruleJob = new NotificationJob { Actor = actor, CommentsId = user.Id, Text = text }; + var ruleJob = new CreateComment { Actor = actor, CommentsId = user.Id, Text = text }; if (!string.IsNullOrWhiteSpace(action.Url)) { @@ -71,32 +70,24 @@ namespace Squidex.Extensions.Actions.Notification return (Description, ruleJob); } - return ("Ignore", new NotificationJob()); + return ("Ignore", new CreateComment()); } - protected override async Task ExecuteJobAsync(NotificationJob job, CancellationToken ct = default) + protected override async Task ExecuteJobAsync(CreateComment job, CancellationToken ct = default) { - if (string.IsNullOrWhiteSpace(job.CommentsId)) + if (job.CommentsId == default) { return Result.Ignored(); } - var command = SimpleMapper.Map(job, new CreateComment { AppId = NoApp }); + var command = job; + + command.AppId = NoApp; + command.FromRule = true; await commandBus.PublishAsync(command); return Result.Success($"Notified: {job.Text}"); } } - - public sealed class NotificationJob - { - public RefToken Actor { get; set; } - - public string CommentsId { get; set; } - - public string Text { get; set; } - - public Uri Url { get; set; } - } } diff --git a/backend/i18n/frontend_en.json b/backend/i18n/frontend_en.json index d923512e9..fe11289b7 100644 --- a/backend/i18n/frontend_en.json +++ b/backend/i18n/frontend_en.json @@ -58,6 +58,8 @@ "assets.deleteFolderConfirmTitle": "Delete folder", "assets.deleteMetadataConfirmText": "Do you really want to remove this metadata?", "assets.deleteMetadataConfirmTitle": "Remove metadata", + "assets.deleteReferrerConfirmText": "The asset is referenced by a content item.\n\nDo you really want to delete the asset?", + "assets.deleteReferrerConfirmTitle": "Delete asset", "assets.downloadVersion": "Download this Version", "assets.dropToUpdate": "Drop to update", "assets.duplicateFile": "Asset has already been uploaded.", @@ -286,6 +288,7 @@ "common.queryOperators.ne": "is not equals to", "common.queryOperators.startsWith": "starts with", "common.refresh": "Refresh", + "common.remember": "Remember my decision", "common.rename": "Rename", "common.requiredHint": "required", "common.reset": "Reset", @@ -301,6 +304,7 @@ "common.searchResults": "Search Results", "common.separateByLine": "Separate by line", "common.settings": "Settings", + "common.sidebar": "Sidebar Extension", "common.sidebarTour": "The sidebar navigation contains useful context specific links. Here you can view the history how this schema has changed over time.", "common.slug": "Slug", "common.stars.max": "Must not have more more than 15 stars", @@ -353,6 +357,8 @@ "contents.deleteConfirmTitle": "Delete content", "contents.deleteFailed": "Failed to delete content. Please reload.", "contents.deleteManyConfirmText": "Do you really want to delete the selected content items?", + "contents.deleteReferrerConfirmText": "The content is referenced by another content item.\n\nDo you really want to delete the content?", + "contents.deleteReferrerConfirmTitle": "Delete content", "contents.deleteVersionConfirmText": "Do you really want to delete this version?", "contents.deleteVersionFailed": "Failed to delete version. Please reload.", "contents.draftNew": "New Draft", @@ -622,6 +628,10 @@ "schemas.addNestedField": "Add Nested Field", "schemas.changeCategoryFailed": "Failed to change category. Please reload.", "schemas.clone": "Clone Schema", + "schemas.contentSidebarUrl": "Content Sidebar Extension", + "schemas.contentSidebarUrlHint": "URL to the plugin for the sidebar in the details view.", + "schemas.contentsSidebarUrl": "Contents Sidebar Extension", + "schemas.contentsSidebarUrlHint": "URL to the plugin for the sidebar in the list view.", "schemas.contextMenuTour": "Open the context menu to delete the schema or to create some scripts for content changes.", "schemas.create": "Create Schema", "schemas.createCategory": "Create new category...", diff --git a/backend/i18n/frontend_it.json b/backend/i18n/frontend_it.json index 0fcf9432b..ccc8d5834 100644 --- a/backend/i18n/frontend_it.json +++ b/backend/i18n/frontend_it.json @@ -58,6 +58,8 @@ "assets.deleteFolderConfirmTitle": "Elimina la cartella", "assets.deleteMetadataConfirmText": "Sei sicuro di voler rimuovere questi metadati?", "assets.deleteMetadataConfirmTitle": "Rimuovi metadati", + "assets.deleteReferrerConfirmText": "The asset is referenced by a content item.\n\nDo you really want to delete the asset?", + "assets.deleteReferrerConfirmTitle": "Delete asset", "assets.downloadVersion": "Scarica questa versione", "assets.dropToUpdate": "Trascina il file per aggiornare", "assets.duplicateFile": "La risorsa è già stata caricata.", @@ -286,6 +288,7 @@ "common.queryOperators.ne": "è uguale a", "common.queryOperators.startsWith": "inizia con", "common.refresh": "Aggiorna", + "common.remember": "Remember my decision", "common.rename": "Rinomina", "common.requiredHint": "obbligatorio", "common.reset": "Reimposta", @@ -301,6 +304,7 @@ "common.searchResults": "Risultati di ricerca", "common.separateByLine": "Separato dalla linea", "common.settings": "Impostazioni", + "common.sidebar": "Sidebar Extension", "common.sidebarTour": "La barra di navigazione laterale contiene specifici utili collegamenti per il contesto. Qui puoi visualizzare la cronologia dei cambiamenti di questo schema.", "common.slug": "Slug", "common.stars.max": "Non deve avere più di 15 stelle", @@ -353,6 +357,8 @@ "contents.deleteConfirmTitle": "Elimina il contenuto", "contents.deleteFailed": "Non è stato possibile eliminare il contenuto. Per favore ricarica.", "contents.deleteManyConfirmText": "Sei sicuro di voler eliminare gli elementi del contenuto selezionati?", + "contents.deleteReferrerConfirmText": "The content is referenced by another content item.\n\nDo you really want to delete the content?", + "contents.deleteReferrerConfirmTitle": "Delete content", "contents.deleteVersionConfirmText": "Do you really want to delete this version?", "contents.deleteVersionFailed": "Non è stato possibile eliminare la versione. Per favore ricarica.", "contents.draftNew": "Nuova bozza", @@ -622,6 +628,10 @@ "schemas.addNestedField": "Aggiungi un campo annidato", "schemas.changeCategoryFailed": "Non è stato possibile cambiare la categoria. Per favore ricarica.", "schemas.clone": "Clona lo Schema", + "schemas.contentSidebarUrl": "Content Sidebar Extension", + "schemas.contentSidebarUrlHint": "URL to the plugin for the sidebar in the details view.", + "schemas.contentsSidebarUrl": "Contents Sidebar Extension", + "schemas.contentsSidebarUrlHint": "URL to the plugin for the sidebar in the list view.", "schemas.contextMenuTour": "Apri il menu per cancellare lo schema o per inserire alcuni script che modificano il contenuto.", "schemas.create": "Crea uno Schema", "schemas.createCategory": "Crea una nuova categoria...", diff --git a/backend/i18n/frontend_nl.json b/backend/i18n/frontend_nl.json index a537dbf5e..57770b3be 100644 --- a/backend/i18n/frontend_nl.json +++ b/backend/i18n/frontend_nl.json @@ -58,6 +58,8 @@ "assets.deleteFolderConfirmTitle": "Map verwijderen", "assets.deleteMetadataConfirmText": "Wil je deze metadata echt verwijderen?", "assets.deleteMetadataConfirmTitle": "Metadata verwijderen", + "assets.deleteReferrerConfirmText": "The asset is referenced by a content item.\n\nDo you really want to delete the asset?", + "assets.deleteReferrerConfirmTitle": "Delete asset", "assets.downloadVersion": "Download deze versie", "assets.dropToUpdate": "Zet neer om te updaten", "assets.duplicateFile": "Asset is al geüpload.", @@ -286,6 +288,7 @@ "common.queryOperators.ne": "is not equals to", "common.queryOperators.startsWith": "starts with", "common.refresh": "Vernieuwen", + "common.remember": "Remember my decision", "common.rename": "Hernoemen", "common.requiredHint": "verplicht", "common.reset": "Reset", @@ -301,6 +304,7 @@ "common.searchResults": "Zoekresultaten", "common.separateByLine": "Scheiden op regel", "common.settings": "Instellingen", + "common.sidebar": "Sidebar Extension", "common.sidebarTour": "De zijbalknavigatie bevat nuttige contextspecifieke links. Hier kun je de geschiedenis bekijken hoe dit schema in de loop van de tijd is veranderd.", "common.slug": "Slug", "common.stars.max": "Mag niet meer dan 15 sterren hebben", @@ -353,6 +357,8 @@ "contents.deleteConfirmTitle": "Inhoud verwijderen", "contents.deleteFailed": "Verwijderen van inhoud is mislukt. Laad opnieuw.", "contents.deleteManyConfirmText": "Weet je zeker dat je de geselecteerde inhoudsitems wilt verwijderen?", + "contents.deleteReferrerConfirmText": "The content is referenced by another content item.\n\nDo you really want to delete the content?", + "contents.deleteReferrerConfirmTitle": "Delete content", "contents.deleteVersionConfirmText": "Wil je deze versie echt verwijderen?", "contents.deleteVersionFailed": "Verwijderen van versie is mislukt. Laad opnieuw.", "contents.draftNew": "Nieuw concept", @@ -622,6 +628,10 @@ "schemas.addNestedField": "Voeg genest veld toe", "schemas.changeCategoryFailed": "Kan categorie niet wijzigen. Laad opnieuw.", "schemas.clone": "Clone Schema", + "schemas.contentSidebarUrl": "Content Sidebar Extension", + "schemas.contentSidebarUrlHint": "URL to the plugin for the sidebar in the details view.", + "schemas.contentsSidebarUrl": "Contents Sidebar Extension", + "schemas.contentsSidebarUrlHint": "URL to the plugin for the sidebar in the list view.", "schemas.contextMenuTour": "Open het contextmenu om het schema te verwijderen of om scripts te maken voor wijzigingen in de inhoud.", "schemas.create": "Schema maken", "schemas.createCategory": "Nieuwe categorie maken ...", diff --git a/backend/i18n/source/backend_en.json b/backend/i18n/source/backend_en.json index e8451a51f..d81ad1a30 100644 --- a/backend/i18n/source/backend_en.json +++ b/backend/i18n/source/backend_en.json @@ -33,6 +33,7 @@ "assets.folderNotFound": "Asset folder does not exist.", "assets.folderRecursion": "Cannot add folder to its own child.", "assets.maxSizeReached": "You have reached your max asset size.", + "assets.referenced": "Assets is referenced by a content and cannot be deleted.", "backups.alreadyRunning": "Another backup process is already running.", "backups.maxReached": "You cannot have more than {max} backups.", "backups.restoreRunning": "A restore operation is already running.", @@ -136,6 +137,7 @@ "contents.invalidNumber": "Invalid json type, expected number.", "contents.invalidString": "Invalid json type, expected string.", "contents.listReferences": "{count} Reference(s)", + "contents.referenced": "Content is referenced by another content and cannot be deleted.", "contents.singletonNotChangeable": "Singleton content cannot be updated.", "contents.singletonNotCreatable": "Singleton content cannot be created.", "contents.singletonNotDeletable": "Singleton content cannot be deleted.", diff --git a/backend/i18n/source/frontend_en.json b/backend/i18n/source/frontend_en.json index d923512e9..fe11289b7 100644 --- a/backend/i18n/source/frontend_en.json +++ b/backend/i18n/source/frontend_en.json @@ -58,6 +58,8 @@ "assets.deleteFolderConfirmTitle": "Delete folder", "assets.deleteMetadataConfirmText": "Do you really want to remove this metadata?", "assets.deleteMetadataConfirmTitle": "Remove metadata", + "assets.deleteReferrerConfirmText": "The asset is referenced by a content item.\n\nDo you really want to delete the asset?", + "assets.deleteReferrerConfirmTitle": "Delete asset", "assets.downloadVersion": "Download this Version", "assets.dropToUpdate": "Drop to update", "assets.duplicateFile": "Asset has already been uploaded.", @@ -286,6 +288,7 @@ "common.queryOperators.ne": "is not equals to", "common.queryOperators.startsWith": "starts with", "common.refresh": "Refresh", + "common.remember": "Remember my decision", "common.rename": "Rename", "common.requiredHint": "required", "common.reset": "Reset", @@ -301,6 +304,7 @@ "common.searchResults": "Search Results", "common.separateByLine": "Separate by line", "common.settings": "Settings", + "common.sidebar": "Sidebar Extension", "common.sidebarTour": "The sidebar navigation contains useful context specific links. Here you can view the history how this schema has changed over time.", "common.slug": "Slug", "common.stars.max": "Must not have more more than 15 stars", @@ -353,6 +357,8 @@ "contents.deleteConfirmTitle": "Delete content", "contents.deleteFailed": "Failed to delete content. Please reload.", "contents.deleteManyConfirmText": "Do you really want to delete the selected content items?", + "contents.deleteReferrerConfirmText": "The content is referenced by another content item.\n\nDo you really want to delete the content?", + "contents.deleteReferrerConfirmTitle": "Delete content", "contents.deleteVersionConfirmText": "Do you really want to delete this version?", "contents.deleteVersionFailed": "Failed to delete version. Please reload.", "contents.draftNew": "New Draft", @@ -622,6 +628,10 @@ "schemas.addNestedField": "Add Nested Field", "schemas.changeCategoryFailed": "Failed to change category. Please reload.", "schemas.clone": "Clone Schema", + "schemas.contentSidebarUrl": "Content Sidebar Extension", + "schemas.contentSidebarUrlHint": "URL to the plugin for the sidebar in the details view.", + "schemas.contentsSidebarUrl": "Contents Sidebar Extension", + "schemas.contentsSidebarUrlHint": "URL to the plugin for the sidebar in the list view.", "schemas.contextMenuTour": "Open the context menu to delete the schema or to create some scripts for content changes.", "schemas.create": "Create Schema", "schemas.createCategory": "Create new category...", diff --git a/backend/src/Squidex.Domain.Apps.Core.Model/Contents/ContentFieldData.cs b/backend/src/Squidex.Domain.Apps.Core.Model/Contents/ContentFieldData.cs index 656e81abe..e0408b1df 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Model/Contents/ContentFieldData.cs +++ b/backend/src/Squidex.Domain.Apps.Core.Model/Contents/ContentFieldData.cs @@ -7,6 +7,7 @@ using System; using System.Collections.Generic; +using System.Linq; using Squidex.Infrastructure; using Squidex.Infrastructure.Json.Objects; @@ -88,5 +89,10 @@ namespace Squidex.Domain.Apps.Core.Contents { return this.DictionaryHashCode(); } + + public override string ToString() + { + return $"{{{string.Join(", ", this.Select(x => $"\"{x.Key}\":{x.Value.ToJsonString()}"))}}}"; + } } } \ No newline at end of file diff --git a/backend/src/Squidex.Domain.Apps.Core.Model/Contents/NamedContentData.cs b/backend/src/Squidex.Domain.Apps.Core.Model/Contents/NamedContentData.cs index 84ed62235..9eec25ad2 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Model/Contents/NamedContentData.cs +++ b/backend/src/Squidex.Domain.Apps.Core.Model/Contents/NamedContentData.cs @@ -7,6 +7,7 @@ using System; using System.Diagnostics.CodeAnalysis; +using System.Linq; using Squidex.Infrastructure; namespace Squidex.Domain.Apps.Core.Contents @@ -68,5 +69,10 @@ namespace Squidex.Domain.Apps.Core.Contents { return base.Equals(other); } + + public override string ToString() + { + return $"{{{string.Join(", ", this.Select(x => $"\"{x.Key}\":{x.Value}"))}}}"; + } } } diff --git a/backend/src/Squidex.Domain.Apps.Core.Model/Schemas/SchemaProperties.cs b/backend/src/Squidex.Domain.Apps.Core.Model/Schemas/SchemaProperties.cs index bb2e8a27c..fa06a7f61 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Model/Schemas/SchemaProperties.cs +++ b/backend/src/Squidex.Domain.Apps.Core.Model/Schemas/SchemaProperties.cs @@ -15,6 +15,10 @@ namespace Squidex.Domain.Apps.Core.Schemas { public ReadOnlyCollection? Tags { get; set; } + public string? ContentsSidebarUrl { get; set; } + + public string? ContentSidebarUrl { get; set; } + public bool DeepEquals(SchemaProperties properties) { return SimpleEquals.IsEquals(this, properties); diff --git a/backend/src/Squidex.Domain.Apps.Core.Operations/HandleRules/Extensions/EventFluidExtensions.cs b/backend/src/Squidex.Domain.Apps.Core.Operations/HandleRules/Extensions/EventFluidExtensions.cs index a6d0897f7..5fa237c5e 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Operations/HandleRules/Extensions/EventFluidExtensions.cs +++ b/backend/src/Squidex.Domain.Apps.Core.Operations/HandleRules/Extensions/EventFluidExtensions.cs @@ -10,6 +10,7 @@ using Fluid.Values; using Squidex.Domain.Apps.Core.Rules.EnrichedEvents; using Squidex.Domain.Apps.Core.Templates; using Squidex.Infrastructure; +using Squidex.Text; namespace Squidex.Domain.Apps.Core.HandleRules.Extensions { @@ -28,21 +29,34 @@ namespace Squidex.Domain.Apps.Core.HandleRules.Extensions { TemplateContext.GlobalFilters.AddFilter("contentUrl", ContentUrl); TemplateContext.GlobalFilters.AddFilter("assetContentUrl", AssetContentUrl); + TemplateContext.GlobalFilters.AddFilter("assetContentAppUrl", AssetContentAppUrl); + TemplateContext.GlobalFilters.AddFilter("assetContentSlugUrl", AssetContentSlugUrl); } private FluidValue ContentUrl(FluidValue input, FilterArguments arguments, TemplateContext context) { - if (input is ObjectValue objectValue) + var value = input.ToObjectValue(); + + switch (value) { - if (context.GetValue("event")?.ToObjectValue() is EnrichedContentEvent contentEvent) - { - if (objectValue.ToObjectValue() is DomainId id && id != DomainId.Empty) + case DomainId id: + { + if (context.GetValue("event")?.ToObjectValue() is EnrichedContentEvent contentEvent) + { + var result = urlGenerator.ContentUI(contentEvent.AppId, contentEvent.SchemaId, id.ToString()); + + return new StringValue(result); + } + + break; + } + + case EnrichedContentEvent contentEvent: { - var result = urlGenerator.ContentUI(contentEvent.AppId, contentEvent.SchemaId, id); + var result = urlGenerator.ContentUI(contentEvent.AppId, contentEvent.SchemaId, contentEvent.Id); return new StringValue(result); } - } } return NilValue.Empty; @@ -50,17 +64,86 @@ namespace Squidex.Domain.Apps.Core.HandleRules.Extensions private FluidValue AssetContentUrl(FluidValue input, FilterArguments arguments, TemplateContext context) { - if (input is ObjectValue objectValue) + var value = input.ToObjectValue(); + + switch (value) + { + case DomainId id: + { + if (context.GetValue("event")?.ToObjectValue() is EnrichedAssetEvent assetEvent) + { + var result = urlGenerator.AssetContent(assetEvent.AppId, id.ToString()); + + return new StringValue(result); + } + + break; + } + + case EnrichedAssetEvent assetEvent: + { + var result = urlGenerator.AssetContent(assetEvent.AppId, assetEvent.Id.ToString()); + + return new StringValue(result); + } + } + + return NilValue.Empty; + } + + private FluidValue AssetContentAppUrl(FluidValue input, FilterArguments arguments, TemplateContext context) + { + var value = input.ToObjectValue(); + + switch (value) { - if (context.GetValue("event")?.ToObjectValue() is EnrichedEvent @event) - { - if (objectValue.ToObjectValue() is DomainId id && id != DomainId.Empty) + case DomainId id: + { + if (context.GetValue("event")?.ToObjectValue() is EnrichedAssetEvent assetEvent) + { + var result = urlGenerator.AssetContent(assetEvent.AppId, id.ToString()); + + return new StringValue(result); + } + + break; + } + + case EnrichedAssetEvent assetEvent: + { + var result = urlGenerator.AssetContent(assetEvent.AppId, assetEvent.Id.ToString()); + + return new StringValue(result); + } + } + + return NilValue.Empty; + } + + private FluidValue AssetContentSlugUrl(FluidValue input, FilterArguments arguments, TemplateContext context) + { + var value = input.ToObjectValue(); + + switch (value) + { + case string s: + { + if (context.GetValue("event")?.ToObjectValue() is EnrichedAssetEvent assetEvent) + { + var result = urlGenerator.AssetContent(assetEvent.AppId, s.Slugify()); + + return new StringValue(result); + } + + break; + } + + case EnrichedAssetEvent assetEvent: { - var result = urlGenerator.AssetContent(@event.AppId, id); + var result = urlGenerator.AssetContent(assetEvent.AppId, assetEvent.FileName.Slugify()); return new StringValue(result); } - } } return NilValue.Empty; diff --git a/backend/src/Squidex.Domain.Apps.Core.Operations/HandleRules/Extensions/EventJintExtension.cs b/backend/src/Squidex.Domain.Apps.Core.Operations/HandleRules/Extensions/EventJintExtension.cs index 6620fcb4f..c08a08a61 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Operations/HandleRules/Extensions/EventJintExtension.cs +++ b/backend/src/Squidex.Domain.Apps.Core.Operations/HandleRules/Extensions/EventJintExtension.cs @@ -9,6 +9,7 @@ using Jint.Native; using Squidex.Domain.Apps.Core.Rules.EnrichedEvents; using Squidex.Domain.Apps.Core.Scripting; using Squidex.Infrastructure; +using Squidex.Text; namespace Squidex.Domain.Apps.Core.HandleRules.Extensions { @@ -50,7 +51,27 @@ namespace Squidex.Domain.Apps.Core.HandleRules.Extensions { if (context.TryGetValue("event", out var temp) && temp is EnrichedAssetEvent assetEvent) { - return urlGenerator.AssetContent(assetEvent.AppId, assetEvent.Id); + return urlGenerator.AssetContent(assetEvent.AppId, assetEvent.Id.ToString()); + } + + return JsValue.Null; + })); + + context.Engine.SetValue("assetContentAppUrl", new EventDelegate(() => + { + if (context.TryGetValue("event", out var temp) && temp is EnrichedAssetEvent assetEvent) + { + return urlGenerator.AssetContent(assetEvent.AppId, assetEvent.Id.ToString()); + } + + return JsValue.Null; + })); + + context.Engine.SetValue("assetContentSlugUrl", new EventDelegate(() => + { + if (context.TryGetValue("event", out var temp) && temp is EnrichedAssetEvent assetEvent) + { + return urlGenerator.AssetContent(assetEvent.AppId, assetEvent.FileName.Slugify()); } return JsValue.Null; diff --git a/backend/src/Squidex.Domain.Apps.Core.Operations/HandleRules/PredefinedPatternsFormatter.cs b/backend/src/Squidex.Domain.Apps.Core.Operations/HandleRules/PredefinedPatternsFormatter.cs index 5f2878a21..4f472a1cf 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Operations/HandleRules/PredefinedPatternsFormatter.cs +++ b/backend/src/Squidex.Domain.Apps.Core.Operations/HandleRules/PredefinedPatternsFormatter.cs @@ -11,6 +11,7 @@ using System.Globalization; using Squidex.Domain.Apps.Core.Rules.EnrichedEvents; using Squidex.Infrastructure; using Squidex.Shared.Users; +using Squidex.Text; namespace Squidex.Domain.Apps.Core.HandleRules { @@ -28,6 +29,8 @@ namespace Squidex.Domain.Apps.Core.HandleRules AddPattern("APP_ID", AppId); AddPattern("APP_NAME", AppName); AddPattern("ASSET_CONTENT_URL", AssetContentUrl); + AddPattern("ASSET_CONTENT_APP_URL", AssetContentAppUrl); + AddPattern("ASSET_CONTENT_SLUG_URL", AssetContentSlugUrl); AddPattern("CONTENT_ACTION", ContentAction); AddPattern("CONTENT_URL", ContentUrl); AddPattern("MENTIONED_ID", MentionedId); @@ -118,7 +121,27 @@ namespace Squidex.Domain.Apps.Core.HandleRules { if (@event is EnrichedAssetEvent assetEvent) { - return urlGenerator.AssetContent(assetEvent.AppId, assetEvent.Id); + return urlGenerator.AssetContent(assetEvent.AppId, assetEvent.Id.ToString()); + } + + return null; + } + + private string? AssetContentAppUrl(EnrichedEvent @event) + { + if (@event is EnrichedAssetEvent assetEvent) + { + return urlGenerator.AssetContent(assetEvent.AppId, assetEvent.Id.ToString()); + } + + return null; + } + + private string? AssetContentSlugUrl(EnrichedEvent @event) + { + if (@event is EnrichedAssetEvent assetEvent) + { + return urlGenerator.AssetContent(assetEvent.AppId, assetEvent.FileName.Slugify()); } return null; diff --git a/backend/src/Squidex.Domain.Apps.Core.Operations/HandleRules/RuleService.cs b/backend/src/Squidex.Domain.Apps.Core.Operations/HandleRules/RuleService.cs index 3675e71cf..3d0a92515 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Operations/HandleRules/RuleService.cs +++ b/backend/src/Squidex.Domain.Apps.Core.Operations/HandleRules/RuleService.cs @@ -89,6 +89,11 @@ namespace Squidex.Domain.Apps.Core.HandleRules var typed = @event.To(); + if (typed.Payload.FromRule) + { + return result; + } + var actionType = rule.Action.GetType(); if (!ruleTriggerHandlers.TryGetValue(rule.Trigger.GetType(), out var triggerHandler)) diff --git a/backend/src/Squidex.Domain.Apps.Core.Operations/IUrlGenerator.cs b/backend/src/Squidex.Domain.Apps.Core.Operations/IUrlGenerator.cs index 49751932a..10625d5ba 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Operations/IUrlGenerator.cs +++ b/backend/src/Squidex.Domain.Apps.Core.Operations/IUrlGenerator.cs @@ -16,15 +16,13 @@ namespace Squidex.Domain.Apps.Core string? AssetSource(NamedId appId, DomainId assetId, long fileVersion); - string? AssetThumbnail(NamedId appId, DomainId assetId, AssetType assetType); + string? AssetThumbnail(NamedId appId, string idOrSlug, AssetType assetType); string AppSettingsUI(NamedId appId); - string AssetsUI(NamedId appId); - string AssetsUI(NamedId appId, string? query = null); - string AssetContent(NamedId appId, DomainId assetId); + string AssetContent(NamedId appId, string idOrSlug); string BackupsUI(NamedId appId); diff --git a/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/ContentWrapper/ContentDataObject.cs b/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/ContentWrapper/ContentDataObject.cs index f57eaca91..148434072 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/ContentWrapper/ContentDataObject.cs +++ b/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/ContentWrapper/ContentDataObject.cs @@ -5,6 +5,7 @@ // All rights reserved. Licensed under the MIT license. // ========================================================================== +using System; using System.Collections.Generic; using System.Linq; using Jint; @@ -116,6 +117,11 @@ namespace Squidex.Domain.Apps.Core.Scripting.ContentWrapper var propertyName = property.AsString(); + if (propertyName.Equals("toJSON", StringComparison.OrdinalIgnoreCase)) + { + return PropertyDescriptor.Undefined; + } + return fieldProperties.GetOrAdd(propertyName, this, (k, c) => new ContentDataProperty(c, new ContentFieldObject(c, new ContentFieldData(), false))); } diff --git a/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/ContentWrapper/ContentFieldObject.cs b/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/ContentWrapper/ContentFieldObject.cs index c09a3f238..32f41ab9e 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/ContentWrapper/ContentFieldObject.cs +++ b/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/ContentWrapper/ContentFieldObject.cs @@ -5,6 +5,7 @@ // All rights reserved. Licensed under the MIT license. // ========================================================================== +using System; using System.Collections.Generic; using System.Linq; using Jint; @@ -128,6 +129,11 @@ namespace Squidex.Domain.Apps.Core.Scripting.ContentWrapper var propertyName = property.AsString(); + if (propertyName.Equals("toJSON", StringComparison.OrdinalIgnoreCase)) + { + return PropertyDescriptor.Undefined; + } + return valueProperties?.GetOrDefault(propertyName) ?? PropertyDescriptor.Undefined; } diff --git a/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Assets/Fields.cs b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Assets/Fields.cs new file mode 100644 index 000000000..4e1c0dd2e --- /dev/null +++ b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Assets/Fields.cs @@ -0,0 +1,32 @@ +// ========================================================================== +// Squidex Headless CMS +// ========================================================================== +// Copyright (c) Squidex UG (haftungsbeschraenkt) +// All rights reserved. Licensed under the MIT license. +// ========================================================================== + +using System; +using MongoDB.Bson.Serialization; + +namespace Squidex.Domain.Apps.Entities.MongoDb.Assets +{ + internal static class Fields + { + private static readonly Lazy AssetIdField = new Lazy(GetAssetIdField); + private static readonly Lazy AssetFolderIdField = new Lazy(GetAssetFolderIdField); + + public static string AssetId => AssetIdField.Value; + + public static string AssetFolderId => AssetFolderIdField.Value; + + private static string GetAssetIdField() + { + return BsonClassMap.LookupClassMap(typeof(MongoAssetEntity)).GetMemberMap(nameof(MongoAssetEntity.Id)).ElementName; + } + + private static string GetAssetFolderIdField() + { + return BsonClassMap.LookupClassMap(typeof(MongoAssetFolderEntity)).GetMemberMap(nameof(MongoAssetFolderEntity.Id)).ElementName; + } + } +} diff --git a/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Assets/MongoAssetFolderRepository.cs b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Assets/MongoAssetFolderRepository.cs index e4139890a..112c5cafe 100644 --- a/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Assets/MongoAssetFolderRepository.cs +++ b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Assets/MongoAssetFolderRepository.cs @@ -5,12 +5,10 @@ // All rights reserved. Licensed under the MIT license. // ========================================================================== -using System; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; -using MongoDB.Bson.Serialization; using MongoDB.Driver; using Squidex.Domain.Apps.Entities.Assets; using Squidex.Domain.Apps.Entities.Assets.Repositories; @@ -22,8 +20,6 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Assets { public sealed partial class MongoAssetFolderRepository : MongoRepositoryBase, IAssetFolderRepository { - private static readonly Lazy IdField = new Lazy(GetIdField); - public MongoAssetFolderRepository(IMongoDatabase database) : base(database) { @@ -67,7 +63,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Assets await Collection.Find(x => x.IndexedAppId == appId && !x.IsDeleted && x.ParentId == parentId).Only(x => x.Id) .ToListAsync(); - return assetFolderEntities.Select(x => DomainId.Create(x[IdField.Value].AsString)).ToList(); + return assetFolderEntities.Select(x => DomainId.Create(x[Fields.AssetFolderId].AsString)).ToList(); } } @@ -84,10 +80,5 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Assets return assetFolderEntity; } } - - private static string GetIdField() - { - return BsonClassMap.LookupClassMap(typeof(MongoAssetFolderEntity)).GetMemberMap(nameof(MongoAssetFolderEntity.DocumentId)).ElementName; - } } } diff --git a/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Assets/MongoAssetRepository.cs b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Assets/MongoAssetRepository.cs index d9c8bfaf5..c0eab4ea4 100644 --- a/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Assets/MongoAssetRepository.cs +++ b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Assets/MongoAssetRepository.cs @@ -5,12 +5,10 @@ // All rights reserved. Licensed under the MIT license. // ========================================================================== -using System; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; -using MongoDB.Bson.Serialization; using MongoDB.Driver; using Squidex.Domain.Apps.Entities.Assets; using Squidex.Domain.Apps.Entities.Assets.Repositories; @@ -27,8 +25,6 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Assets { public sealed partial class MongoAssetRepository : MongoRepositoryBase, IAssetRepository { - private static readonly Lazy IdField = new Lazy(GetIdField); - public MongoAssetRepository(IMongoDatabase database) : base(database) { @@ -105,7 +101,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Assets await Collection.Find(BuildFilter(appId, ids)).Only(x => x.Id) .ToListAsync(); - return assetEntities.Select(x => DomainId.Create(x[IdField.Value].AsString)).ToList(); + return assetEntities.Select(x => DomainId.Create(x[Fields.AssetId].AsString)).ToList(); } } @@ -117,7 +113,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Assets await Collection.Find(x => x.IndexedAppId == appId && !x.IsDeleted && x.ParentId == parentId).Only(x => x.DocumentId) .ToListAsync(); - return assetEntities.Select(x => DomainId.Create(x[IdField.Value].AsString)).ToList(); + return assetEntities.Select(x => DomainId.Create(x[Fields.AssetId].AsString)).ToList(); } } @@ -191,10 +187,5 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Assets Filter.In(x => x.DocumentId, documentIds), Filter.Ne(x => x.IsDeleted, true)); } - - private static string GetIdField() - { - return BsonClassMap.LookupClassMap(typeof(MongoAssetEntity)).GetMemberMap(nameof(MongoAssetEntity.Id)).ElementName; - } } } diff --git a/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Contents/Fields.cs b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Contents/Fields.cs new file mode 100644 index 000000000..7e7e988c8 --- /dev/null +++ b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Contents/Fields.cs @@ -0,0 +1,32 @@ +// ========================================================================== +// Squidex Headless CMS +// ========================================================================== +// Copyright (c) Squidex UG (haftungsbeschraenkt) +// All rights reserved. Licensed under the MIT license. +// ========================================================================== + +using System; +using MongoDB.Bson.Serialization; + +namespace Squidex.Domain.Apps.Entities.MongoDb.Contents +{ + internal static class Fields + { + private static readonly Lazy IdField = new Lazy(GetIdField); + private static readonly Lazy SchemaIdField = new Lazy(GetSchemaIdField); + + public static string Id => IdField.Value; + + public static string SchemaId => SchemaIdField.Value; + + private static string GetIdField() + { + return BsonClassMap.LookupClassMap(typeof(MongoContentEntity)).GetMemberMap(nameof(MongoContentEntity.Id)).ElementName; + } + + private static string GetSchemaIdField() + { + return BsonClassMap.LookupClassMap(typeof(MongoContentEntity)).GetMemberMap(nameof(MongoContentEntity.IndexedSchemaId)).ElementName; + } + } +} diff --git a/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Contents/MongoContentCollectionAll.cs b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Contents/MongoContentCollectionAll.cs index e835aeec3..f06b49f3d 100644 --- a/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Contents/MongoContentCollectionAll.cs +++ b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Contents/MongoContentCollectionAll.cs @@ -30,6 +30,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents private readonly QueryContentsByIds queryContentsById; private readonly QueryContentsByQuery queryContentsByQuery; private readonly QueryIdsAsync queryIdsAsync; + private readonly QueryReferrersAsync queryReferrersAsync; private readonly QueryScheduledContents queryScheduledItems; public MongoContentCollectionAll(IMongoDatabase database, IAppProvider appProvider, ITextIndex indexer, DataConverter converter) @@ -39,6 +40,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents queryContentsById = new QueryContentsByIds(converter, appProvider); queryContentsByQuery = new QueryContentsByQuery(converter, indexer); queryIdsAsync = new QueryIdsAsync(appProvider); + queryReferrersAsync = new QueryReferrersAsync(); queryScheduledItems = new QueryScheduledContents(); } @@ -58,6 +60,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents await queryContentsById.PrepareAsync(collection, ct); await queryContentsByQuery.PrepareAsync(collection, ct); await queryIdsAsync.PrepareAsync(collection, ct); + await queryReferrersAsync.PrepareAsync(collection, ct); await queryScheduledItems.PrepareAsync(collection, ct); } @@ -125,6 +128,14 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents } } + public async Task HasReferrersAsync(DomainId appId, DomainId contentId) + { + using (Profiler.TraceMethod()) + { + return await queryReferrersAsync.DoAsync(appId, contentId); + } + } + public Task ResetScheduledAsync(DomainId documentId) { return Collection.UpdateOneAsync(x => x.DocumentId == documentId, Update.Unset(x => x.ScheduleJob).Unset(x => x.ScheduledAt)); diff --git a/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Contents/MongoContentRepository.cs b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Contents/MongoContentRepository.cs index 34058077e..e522509aa 100644 --- a/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Contents/MongoContentRepository.cs +++ b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Contents/MongoContentRepository.cs @@ -114,9 +114,9 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents } } - public Task ResetScheduledAsync(DomainId id) + public Task ResetScheduledAsync(DomainId documentId) { - return collectionAll.ResetScheduledAsync(id); + return collectionAll.ResetScheduledAsync(documentId); } public Task QueryScheduledWithoutDataAsync(Instant now, Func callback) @@ -129,6 +129,11 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents return collectionAll.QueryIdsAsync(appId, schemaId, filterNode); } + public Task HasReferrersAsync(DomainId appId, DomainId contentId) + { + return collectionAll.HasReferrersAsync(appId, contentId); + } + public IEnumerable> GetInternalCollections() { yield return collectionAll.GetInternalCollection(); diff --git a/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Contents/Operations/OperationBase.cs b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Contents/Operations/OperationBase.cs index 90f40738c..edac8aac1 100644 --- a/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Contents/Operations/OperationBase.cs +++ b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Contents/Operations/OperationBase.cs @@ -8,7 +8,6 @@ using System.Threading; using System.Threading.Tasks; using MongoDB.Driver; -using Squidex.Infrastructure.MongoDb; namespace Squidex.Domain.Apps.Entities.MongoDb.Contents.Operations { @@ -16,7 +15,6 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents.Operations { protected static readonly SortDefinitionBuilder Sort = Builders.Sort; protected static readonly UpdateDefinitionBuilder Update = Builders.Update; - protected static readonly FieldDefinitionBuilder Fields = FieldDefinitionBuilder.Instance; protected static readonly FilterDefinitionBuilder Filter = Builders.Filter; protected static readonly IndexKeysDefinitionBuilder Index = Builders.IndexKeys; protected static readonly ProjectionDefinitionBuilder Projection = Builders.Projection; diff --git a/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Contents/Operations/QueryIdsAsync.cs b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Contents/Operations/QueryIdsAsync.cs index 5b5f46034..8c23e55bd 100644 --- a/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Contents/Operations/QueryIdsAsync.cs +++ b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Contents/Operations/QueryIdsAsync.cs @@ -5,12 +5,10 @@ // All rights reserved. Licensed under the MIT license. // ========================================================================== -using System; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; -using MongoDB.Bson.Serialization; using MongoDB.Driver; using Squidex.Infrastructure; using Squidex.Infrastructure.MongoDb; @@ -21,9 +19,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents.Operations { internal sealed class QueryIdsAsync : OperationBase { - private static readonly IReadOnlyList<(DomainId SchemaId, DomainId Id)> EmptyIds = new List<(DomainId SchemaId, DomainId Id)>(); - private static readonly Lazy IdField = new Lazy(GetIdField); - private static readonly Lazy SchemaIdField = new Lazy(GetSchemaIdField); + private static readonly List<(DomainId SchemaId, DomainId Id)> EmptyIds = new List<(DomainId SchemaId, DomainId Id)>(); private readonly IAppProvider appProvider; public QueryIdsAsync(IAppProvider appProvider) @@ -55,7 +51,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents.Operations await Collection.Find(filter).Only(x => x.Id, x => x.IndexedSchemaId) .ToListAsync(); - return contentEntities.Select(x => (DomainId.Create(x[SchemaIdField.Value].AsString), DomainId.Create(x[IdField.Value].AsString))).ToList(); + return contentEntities.Select(x => (DomainId.Create(x[Fields.SchemaId].AsString), DomainId.Create(x[Fields.Id].AsString))).ToList(); } public async Task> DoAsync(DomainId appId, DomainId schemaId, FilterNode filterNode) @@ -73,7 +69,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents.Operations await Collection.Find(filter).Only(x => x.Id, x => x.IndexedSchemaId) .ToListAsync(); - return contentEntities.Select(x => (DomainId.Create(x[SchemaIdField.Value].AsString), DomainId.Create(x[IdField.Value].AsString))).ToList(); + return contentEntities.Select(x => (DomainId.Create(x[Fields.SchemaId].AsString), DomainId.Create(x[Fields.Id].AsString))).ToList(); } public static FilterDefinition BuildFilter(FilterNode? filterNode, DomainId appId, DomainId schemaId) @@ -92,15 +88,5 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents.Operations return Filter.And(filters); } - - private static string GetIdField() - { - return BsonClassMap.LookupClassMap(typeof(MongoContentEntity)).GetMemberMap(nameof(MongoContentEntity.Id)).ElementName; - } - - private static string GetSchemaIdField() - { - return BsonClassMap.LookupClassMap(typeof(MongoContentEntity)).GetMemberMap(nameof(MongoContentEntity.IndexedSchemaId)).ElementName; - } } } \ No newline at end of file diff --git a/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Contents/Operations/QueryReferrersAsync.cs b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Contents/Operations/QueryReferrersAsync.cs new file mode 100644 index 000000000..861db95cc --- /dev/null +++ b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Contents/Operations/QueryReferrersAsync.cs @@ -0,0 +1,47 @@ +// ========================================================================== +// Squidex Headless CMS +// ========================================================================== +// Copyright (c) Squidex UG (haftungsbeschraenkt) +// All rights reserved. Licensed under the MIT license. +// ========================================================================== + +using System.Threading; +using System.Threading.Tasks; +using MongoDB.Driver; +using Squidex.Infrastructure; +using Squidex.Infrastructure.MongoDb; + +namespace Squidex.Domain.Apps.Entities.MongoDb.Contents.Operations +{ + internal sealed class QueryReferrersAsync : OperationBase + { + protected override Task PrepareAsync(CancellationToken ct = default) + { + var index = + new CreateIndexModel(Index + .Ascending(x => x.ReferencedIds) + .Ascending(x => x.IndexedAppId) + .Ascending(x => x.IsDeleted)); + + return Collection.Indexes.CreateOneAsync(index, cancellationToken: ct); + } + + public async Task DoAsync(DomainId appId, DomainId contentId) + { + var currentId = DomainId.Combine(appId, contentId); + + var filter = + Filter.And( + Filter.AnyEq(x => x.ReferencedIds, appId), + Filter.Eq(x => x.IndexedAppId, appId), + Filter.Ne(x => x.IsDeleted, true), + Filter.Ne(x => x.Id, currentId)); + + var hasReferrerAsync = + await Collection.Find(filter).Only(x => x.Id) + .AnyAsync(); + + return hasReferrerAsync; + } + } +} \ No newline at end of file diff --git a/backend/src/Squidex.Domain.Apps.Entities/Apps/AppDomainObject.cs b/backend/src/Squidex.Domain.Apps.Entities/Apps/AppDomainObject.cs index 6f700b17e..970829f9d 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Apps/AppDomainObject.cs +++ b/backend/src/Squidex.Domain.Apps.Entities/Apps/AppDomainObject.cs @@ -32,10 +32,8 @@ namespace Squidex.Domain.Apps.Entities.Apps private readonly IAppPlanBillingManager appPlansBillingManager; private readonly IUserResolver userResolver; - public AppDomainObject( + public AppDomainObject(IStore store, ISemanticLog log, InitialPatterns initialPatterns, - IStore store, - ISemanticLog log, IAppPlansProvider appPlansProvider, IAppPlanBillingManager appPlansBillingManager, IUserResolver userResolver) diff --git a/backend/src/Squidex.Domain.Apps.Entities/Apps/AppSettingsSearchSource.cs b/backend/src/Squidex.Domain.Apps.Entities/Apps/AppSettingsSearchSource.cs index 6d78c37f3..e171f81bf 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Apps/AppSettingsSearchSource.cs +++ b/backend/src/Squidex.Domain.Apps.Entities/Apps/AppSettingsSearchSource.cs @@ -48,7 +48,7 @@ namespace Squidex.Domain.Apps.Entities.Apps } Search("Assets", Permissions.AppAssetsRead, - urlGenerator.AssetsUI, SearchResultType.Asset); + a => urlGenerator.AssetsUI(a), SearchResultType.Asset); Search("Backups", Permissions.AppBackupsRead, urlGenerator.BackupsUI, SearchResultType.Setting); diff --git a/backend/src/Squidex.Domain.Apps.Entities/Apps/Diagnostics/OrleansAppsHealthCheck.cs b/backend/src/Squidex.Domain.Apps.Entities/Apps/Diagnostics/OrleansAppsHealthCheck.cs index 729ef1441..2ba4138f9 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Apps/Diagnostics/OrleansAppsHealthCheck.cs +++ b/backend/src/Squidex.Domain.Apps.Entities/Apps/Diagnostics/OrleansAppsHealthCheck.cs @@ -17,20 +17,25 @@ namespace Squidex.Domain.Apps.Entities.Apps.Diagnostics { public sealed class OrleansAppsHealthCheck : IHealthCheck { - private readonly IAppsByNameIndexGrain index; + private readonly IGrainFactory grainFactory; public OrleansAppsHealthCheck(IGrainFactory grainFactory) { Guard.NotNull(grainFactory, nameof(grainFactory)); - index = grainFactory.GetGrain(SingleGrain.Id); + this.grainFactory = grainFactory; } public async Task CheckHealthAsync(HealthCheckContext context, CancellationToken cancellationToken = default) { - await index.CountAsync(); + await GetGrain().CountAsync(); return HealthCheckResult.Healthy("Orleans must establish communication."); } + + private IAppsByNameIndexGrain GetGrain() + { + return grainFactory.GetGrain(SingleGrain.Id); + } } } diff --git a/backend/src/Squidex.Domain.Apps.Entities/Apps/Plans/UsageGate.cs b/backend/src/Squidex.Domain.Apps.Entities/Apps/Plans/UsageGate.cs index 1e6596fbe..000282550 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Apps/Plans/UsageGate.cs +++ b/backend/src/Squidex.Domain.Apps.Entities/Apps/Plans/UsageGate.cs @@ -24,7 +24,7 @@ namespace Squidex.Domain.Apps.Entities.Apps.Plans private readonly MemoryCache memoryCache = new MemoryCache(Options.Create(new MemoryCacheOptions())); private readonly IAppPlansProvider appPlansProvider; private readonly IApiUsageTracker apiUsageTracker; - private readonly IUsageNotifierGrain usageLimitNotifier; + private readonly IGrainFactory grainFactory; public UsageGate(IAppPlansProvider appPlansProvider, IApiUsageTracker apiUsageTracker, IGrainFactory grainFactory) { @@ -34,8 +34,7 @@ namespace Squidex.Domain.Apps.Entities.Apps.Plans this.appPlansProvider = appPlansProvider; this.apiUsageTracker = apiUsageTracker; - - usageLimitNotifier = grainFactory.GetGrain(SingleGrain.Id); + this.grainFactory = grainFactory; } public virtual async Task IsBlockedAsync(IAppEntity app, string? clientId, DateTime today) @@ -72,7 +71,7 @@ namespace Squidex.Domain.Apps.Entities.Apps.Plans Users = users }; - usageLimitNotifier.NotifyAsync(notification).Forget(); + GetGrain().NotifyAsync(notification).Forget(); TrackNotified(appId); } @@ -83,6 +82,11 @@ namespace Squidex.Domain.Apps.Entities.Apps.Plans return isBlocked; } + private IUsageNotifierGrain GetGrain() + { + return grainFactory.GetGrain(SingleGrain.Id); + } + private bool HasNotifiedBefore(DomainId appId) { return memoryCache.Get(appId); diff --git a/backend/src/Squidex.Domain.Apps.Entities/Assets/AssetDomainObject.cs b/backend/src/Squidex.Domain.Apps.Entities/Assets/AssetDomainObject.cs index ad434c0b6..7e4b3a29c 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Assets/AssetDomainObject.cs +++ b/backend/src/Squidex.Domain.Apps.Entities/Assets/AssetDomainObject.cs @@ -12,6 +12,7 @@ using Squidex.Domain.Apps.Core.Tags; using Squidex.Domain.Apps.Entities.Assets.Commands; using Squidex.Domain.Apps.Entities.Assets.Guards; using Squidex.Domain.Apps.Entities.Assets.State; +using Squidex.Domain.Apps.Entities.Contents.Repositories; using Squidex.Domain.Apps.Events; using Squidex.Domain.Apps.Events.Assets; using Squidex.Infrastructure; @@ -20,23 +21,30 @@ using Squidex.Infrastructure.EventSourcing; using Squidex.Infrastructure.Log; using Squidex.Infrastructure.Reflection; using Squidex.Infrastructure.States; +using Squidex.Infrastructure.Translations; +using IAssetTagService = Squidex.Domain.Apps.Core.Tags.ITagService; namespace Squidex.Domain.Apps.Entities.Assets { public class AssetDomainObject : LogSnapshotDomainObject { - private readonly ITagService tagService; + private readonly IContentRepository contentRepository; + private readonly IAssetTagService assetTags; private readonly IAssetQueryService assetQuery; - public AssetDomainObject(IStore store, ITagService tagService, IAssetQueryService assetQuery, ISemanticLog log) + public AssetDomainObject(IStore store, ISemanticLog log, + IAssetTagService assetTags, + IAssetQueryService assetQuery, + IContentRepository contentRepository) : base(store, log) { - Guard.NotNull(tagService, nameof(tagService)); + Guard.NotNull(assetTags, nameof(assetTags)); Guard.NotNull(assetQuery, nameof(assetQuery)); + Guard.NotNull(contentRepository, nameof(contentRepository)); - this.tagService = tagService; - + this.assetTags = assetTags; this.assetQuery = assetQuery; + this.contentRepository = contentRepository; } protected override bool IsDeleted() @@ -105,7 +113,17 @@ namespace Squidex.Domain.Apps.Entities.Assets { GuardAsset.CanDelete(c); - await tagService.NormalizeTagsAsync(Snapshot.AppId.Id, TagGroups.Assets, null, Snapshot.Tags); + if (c.CheckReferrers) + { + var hasReferrer = await contentRepository.HasReferrersAsync(Snapshot.AppId.Id, c.AssetId); + + if (hasReferrer) + { + throw new DomainException(T.Get("assets.referenced")); + } + } + + await assetTags.NormalizeTagsAsync(Snapshot.AppId.Id, TagGroups.Assets, null, Snapshot.Tags); Delete(c); }); @@ -121,7 +139,7 @@ namespace Squidex.Domain.Apps.Entities.Assets return null; } - var normalized = await tagService.NormalizeTagsAsync(appId, TagGroups.Assets, tags, Snapshot.Tags); + var normalized = await assetTags.NormalizeTagsAsync(appId, TagGroups.Assets, tags, Snapshot.Tags); return new HashSet(normalized.Values); } @@ -130,10 +148,10 @@ namespace Squidex.Domain.Apps.Entities.Assets { var @event = SimpleMapper.Map(command, new AssetCreated { + MimeType = command.File.MimeType, FileName = command.File.FileName, FileSize = command.File.FileSize, FileVersion = 0, - MimeType = command.File.MimeType, Slug = command.File.FileName.ToAssetSlug() }); @@ -146,9 +164,9 @@ namespace Squidex.Domain.Apps.Entities.Assets { var @event = SimpleMapper.Map(command, new AssetUpdated { + MimeType = command.File.MimeType, FileVersion = Snapshot.FileVersion + 1, FileSize = command.File.FileSize, - MimeType = command.File.MimeType }); RaiseEvent(@event); diff --git a/backend/src/Squidex.Domain.Apps.Entities/Assets/AssetFolderDomainObject.cs b/backend/src/Squidex.Domain.Apps.Entities/Assets/AssetFolderDomainObject.cs index 2db6c6e01..982082bdc 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Assets/AssetFolderDomainObject.cs +++ b/backend/src/Squidex.Domain.Apps.Entities/Assets/AssetFolderDomainObject.cs @@ -26,7 +26,8 @@ namespace Squidex.Domain.Apps.Entities.Assets { private readonly IAssetQueryService assetQuery; - public AssetFolderDomainObject(IStore store, IAssetQueryService assetQuery, ISemanticLog log) + public AssetFolderDomainObject(IStore store, ISemanticLog log, + IAssetQueryService assetQuery) : base(store, log) { Guard.NotNull(assetQuery, nameof(assetQuery)); diff --git a/backend/src/Squidex.Domain.Apps.Entities/Assets/Commands/DeleteAsset.cs b/backend/src/Squidex.Domain.Apps.Entities/Assets/Commands/DeleteAsset.cs index 4848be209..c06b7ac1d 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Assets/Commands/DeleteAsset.cs +++ b/backend/src/Squidex.Domain.Apps.Entities/Assets/Commands/DeleteAsset.cs @@ -9,5 +9,6 @@ namespace Squidex.Domain.Apps.Entities.Assets.Commands { public sealed class DeleteAsset : AssetCommand { + public bool CheckReferrers { get; set; } } } diff --git a/backend/src/Squidex.Domain.Apps.Entities/Assets/RecursiveDeleter.cs b/backend/src/Squidex.Domain.Apps.Entities/Assets/RecursiveDeleter.cs index 4a1a48288..a5b33e8dd 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Assets/RecursiveDeleter.cs +++ b/backend/src/Squidex.Domain.Apps.Entities/Assets/RecursiveDeleter.cs @@ -88,14 +88,14 @@ namespace Squidex.Domain.Apps.Entities.Assets foreach (var assetFolderId in childAssetFolders) { - await PublishAsync(new DeleteAssetFolder { AssetFolderId = assetFolderId }); + await PublishAsync(new DeleteAssetFolder { AppId = appId, AssetFolderId = assetFolderId }); } var childAssets = await assetRepository.QueryChildIdsAsync(appId.Id, folderDeleted.AssetFolderId); foreach (var assetId in childAssets) { - await PublishAsync(new DeleteAsset { AssetId = assetId }); + await PublishAsync(new DeleteAsset { AppId = appId, AssetId = assetId }); } } } diff --git a/backend/src/Squidex.Domain.Apps.Entities/Comments/CommentsCommandMiddleware.cs b/backend/src/Squidex.Domain.Apps.Entities/Comments/CommentsCommandMiddleware.cs index de1d96a39..cffb3de90 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Comments/CommentsCommandMiddleware.cs +++ b/backend/src/Squidex.Domain.Apps.Entities/Comments/CommentsCommandMiddleware.cs @@ -52,13 +52,16 @@ namespace Squidex.Domain.Apps.Entities.Comments private async Task ExecuteCommandAsync(CommandContext context, CommentsCommand commentsCommand) { - var grain = grainFactory.GetGrain(commentsCommand.CommentsId.ToString()); - - var result = await grain.ExecuteAsync(commentsCommand.AsJ()); + var result = await GetGrain(commentsCommand).ExecuteAsync(commentsCommand.AsJ()); context.Complete(result.Value); } + private ICommentsGrain GetGrain(CommentsCommand commentsCommand) + { + return grainFactory.GetGrain(commentsCommand.CommentsId.ToString()); + } + private static bool IsMention(CreateComment createComment) { return createComment.IsMention; diff --git a/backend/src/Squidex.Domain.Apps.Entities/Contents/Commands/DeleteContent.cs b/backend/src/Squidex.Domain.Apps.Entities/Contents/Commands/DeleteContent.cs index 28a0bd836..4d7c41f5f 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Contents/Commands/DeleteContent.cs +++ b/backend/src/Squidex.Domain.Apps.Entities/Contents/Commands/DeleteContent.cs @@ -9,5 +9,6 @@ namespace Squidex.Domain.Apps.Entities.Contents.Commands { public sealed class DeleteContent : ContentCommand { + public bool CheckReferrers { get; set; } } } diff --git a/backend/src/Squidex.Domain.Apps.Entities/Contents/ContentDomainObject.cs b/backend/src/Squidex.Domain.Apps.Entities/Contents/ContentDomainObject.cs index ea8ddb950..6f30436ad 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Contents/ContentDomainObject.cs +++ b/backend/src/Squidex.Domain.Apps.Entities/Contents/ContentDomainObject.cs @@ -12,6 +12,7 @@ using Squidex.Domain.Apps.Core.Contents; using Squidex.Domain.Apps.Core.Scripting; using Squidex.Domain.Apps.Entities.Contents.Commands; using Squidex.Domain.Apps.Entities.Contents.Guards; +using Squidex.Domain.Apps.Entities.Contents.Repositories; using Squidex.Domain.Apps.Entities.Contents.State; using Squidex.Domain.Apps.Events; using Squidex.Domain.Apps.Events.Contents; @@ -28,15 +29,21 @@ namespace Squidex.Domain.Apps.Entities.Contents public class ContentDomainObject : LogSnapshotDomainObject { private readonly IContentWorkflow contentWorkflow; + private readonly IContentRepository contentRepository; private readonly ContentOperationContext context; - public ContentDomainObject(IStore store, IContentWorkflow contentWorkflow, ContentOperationContext context, ISemanticLog log) + public ContentDomainObject(IStore store, ISemanticLog log, + IContentWorkflow contentWorkflow, + IContentRepository contentRepository, + ContentOperationContext context) : base(store, log) { - Guard.NotNull(context, nameof(context)); + Guard.NotNull(contentRepository, nameof(contentRepository)); Guard.NotNull(contentWorkflow, nameof(contentWorkflow)); + Guard.NotNull(context, nameof(context)); this.contentWorkflow = contentWorkflow; + this.contentRepository = contentRepository; this.context = context; } @@ -238,6 +245,16 @@ namespace Squidex.Domain.Apps.Entities.Contents }); } + if (c.CheckReferrers) + { + var hasReferrer = await contentRepository.HasReferrersAsync(Snapshot.AppId.Id, c.AggregateId); + + if (hasReferrer) + { + throw new DomainException(T.Get("contents.referenced")); + } + } + Delete(c); }); diff --git a/backend/src/Squidex.Domain.Apps.Entities/Contents/ContentOperationContext.cs b/backend/src/Squidex.Domain.Apps.Entities/Contents/ContentOperationContext.cs index 82a424df3..097aba0d8 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Contents/ContentOperationContext.cs +++ b/backend/src/Squidex.Domain.Apps.Entities/Contents/ContentOperationContext.cs @@ -43,7 +43,11 @@ namespace Squidex.Domain.Apps.Entities.Contents private ContentCommand command; private ValidationContext validationContext; - public ContentOperationContext(IAppProvider appProvider, IEnumerable factories, IScriptEngine scriptEngine, ISemanticLog log) + public ContentOperationContext( + IAppProvider appProvider, + IEnumerable factories, + IScriptEngine scriptEngine, + ISemanticLog log) { this.appProvider = appProvider; this.factories = factories; diff --git a/backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/AssetResolvers.cs b/backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/AssetResolvers.cs index cd30394eb..4b101b786 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/AssetResolvers.cs +++ b/backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/AssetResolvers.cs @@ -18,7 +18,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL.Types { public static readonly IFieldResolver Url = Resolve((asset, _, context) => { - return context.UrlGenerator.AssetContent(asset.AppId, asset.Id); + return context.UrlGenerator.AssetContent(asset.AppId, asset.Id.ToString()); }); public static readonly IFieldResolver SourceUrl = Resolve((asset, _, context) => @@ -28,7 +28,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL.Types public static readonly IFieldResolver ThumbnailUrl = Resolve((asset, _, context) => { - return context.UrlGenerator.AssetThumbnail(asset.AppId, asset.Id, asset.Type); + return context.UrlGenerator.AssetThumbnail(asset.AppId, asset.Id.ToString(), asset.Type); }); public static readonly IFieldResolver FileHash = Resolve(x => x.FileHash); diff --git a/backend/src/Squidex.Domain.Apps.Entities/Contents/Queries/Steps/ResolveAssets.cs b/backend/src/Squidex.Domain.Apps.Entities/Contents/Queries/Steps/ResolveAssets.cs index 370b63ed3..3652bc177 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Contents/Queries/Steps/ResolveAssets.cs +++ b/backend/src/Squidex.Domain.Apps.Entities/Contents/Queries/Steps/ResolveAssets.cs @@ -92,7 +92,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.Queries.Steps { var url = urlGenerator.AssetContent( referencedAsset.AppId, - referencedAsset.Id); + referencedAsset.Id.ToString()); array = JsonValue.Array(url, referencedAsset.FileName); } diff --git a/backend/src/Squidex.Domain.Apps.Entities/Contents/Repositories/IContentRepository.cs b/backend/src/Squidex.Domain.Apps.Entities/Contents/Repositories/IContentRepository.cs index 2cd7a893d..c094e401c 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Contents/Repositories/IContentRepository.cs +++ b/backend/src/Squidex.Domain.Apps.Entities/Contents/Repositories/IContentRepository.cs @@ -30,7 +30,9 @@ namespace Squidex.Domain.Apps.Entities.Contents.Repositories Task FindContentAsync(IAppEntity app, ISchemaEntity schema, DomainId id, SearchScope scope); - Task ResetScheduledAsync(DomainId id); + Task HasReferrersAsync(DomainId appId, DomainId contentId); + + Task ResetScheduledAsync(DomainId documentId); Task QueryScheduledWithoutDataAsync(Instant now, Func callback); } diff --git a/backend/src/Squidex.Domain.Apps.Entities/Rules/IRuleEnqueuer.cs b/backend/src/Squidex.Domain.Apps.Entities/Rules/IRuleEnqueuer.cs index 1d1ace9c9..8366f7df5 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Rules/IRuleEnqueuer.cs +++ b/backend/src/Squidex.Domain.Apps.Entities/Rules/IRuleEnqueuer.cs @@ -14,6 +14,6 @@ namespace Squidex.Domain.Apps.Entities.Rules { public interface IRuleEnqueuer { - Task Enqueue(Rule rule, DomainId ruleId, Envelope @event); + Task EnqueueAsync(Rule rule, DomainId ruleId, Envelope @event); } } \ No newline at end of file diff --git a/backend/src/Squidex.Domain.Apps.Entities/Rules/Indexes/RulesIndex.cs b/backend/src/Squidex.Domain.Apps.Entities/Rules/Indexes/RulesIndex.cs index 94a89f41c..4808385fa 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Rules/Indexes/RulesIndex.cs +++ b/backend/src/Squidex.Domain.Apps.Entities/Rules/Indexes/RulesIndex.cs @@ -46,14 +46,6 @@ namespace Squidex.Domain.Apps.Entities.Rules.Indexes } } - private async Task GetRuleAsync(DomainId appId, DomainId id) - { - using (Profiler.TraceMethod()) - { - return await GetRuleCoreAsync(DomainId.Combine(appId, id)); - } - } - private async Task> GetRuleIdsAsync(DomainId appId) { using (Profiler.TraceMethod()) @@ -95,15 +87,6 @@ namespace Squidex.Domain.Apps.Entities.Rules.Indexes } } - private async Task GetRuleInternalAsync(DomainId appId, DomainId id) - { - var key = DomainId.Combine(appId, id).ToString(); - - var rule = await grainFactory.GetGrain(key).GetStateAsync(); - - return rule.Value; - } - private IRulesByAppIndexGrain Index(DomainId appId) { return grainFactory.GetGrain(appId.ToString()); diff --git a/backend/src/Squidex.Domain.Apps.Entities/Rules/RuleDomainObject.cs b/backend/src/Squidex.Domain.Apps.Entities/Rules/RuleDomainObject.cs index 4707495d3..6dc522c92 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Rules/RuleDomainObject.cs +++ b/backend/src/Squidex.Domain.Apps.Entities/Rules/RuleDomainObject.cs @@ -26,14 +26,14 @@ namespace Squidex.Domain.Apps.Entities.Rules private readonly IAppProvider appProvider; private readonly IRuleEnqueuer ruleEnqueuer; - public RuleDomainObject(IStore store, ISemanticLog log, IAppProvider appProvider, IRuleEnqueuer ruleEnqueuer) + public RuleDomainObject(IStore store, ISemanticLog log, + IAppProvider appProvider, IRuleEnqueuer ruleEnqueuer) : base(store, log) { Guard.NotNull(appProvider, nameof(appProvider)); Guard.NotNull(ruleEnqueuer, nameof(ruleEnqueuer)); this.appProvider = appProvider; - this.ruleEnqueuer = ruleEnqueuer; } @@ -114,7 +114,7 @@ namespace Squidex.Domain.Apps.Entities.Rules var @event = SimpleMapper.Map(command, new RuleManuallyTriggered { RuleId = Snapshot.Id, AppId = Snapshot.AppId }); - await ruleEnqueuer.Enqueue(Snapshot.RuleDef, Snapshot.Id, Envelope.Create(@event)); + await ruleEnqueuer.EnqueueAsync(Snapshot.RuleDef, Snapshot.UniqueId, Envelope.Create(@event)); return null; } diff --git a/backend/src/Squidex.Domain.Apps.Entities/Rules/RuleEnqueuer.cs b/backend/src/Squidex.Domain.Apps.Entities/Rules/RuleEnqueuer.cs index 981b60ae4..da9cd36de 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Rules/RuleEnqueuer.cs +++ b/backend/src/Squidex.Domain.Apps.Entities/Rules/RuleEnqueuer.cs @@ -50,46 +50,46 @@ namespace Squidex.Domain.Apps.Entities.Rules this.localCache = localCache; } - public async Task Enqueue(Rule rule, DomainId ruleId, Envelope @event) + public async Task EnqueueAsync(Rule rule, DomainId ruleId, Envelope @event) { Guard.NotNull(rule, nameof(rule)); Guard.NotNull(@event, nameof(@event)); - using (localCache.StartContext()) - { - var jobs = await ruleService.CreateJobsAsync(rule, ruleId, @event); + var jobs = await ruleService.CreateJobsAsync(rule, ruleId, @event); - foreach (var (job, ex) in jobs) + foreach (var (job, ex) in jobs) + { + if (ex != null) { - if (ex != null) - { - await ruleEventRepository.EnqueueAsync(job, null); + await ruleEventRepository.EnqueueAsync(job, null); - await ruleEventRepository.UpdateAsync(job, new RuleJobUpdate - { - JobResult = RuleJobResult.Failed, - ExecutionResult = RuleResult.Failed, - ExecutionDump = ex.ToString(), - Finished = job.Created - }); - } - else + await ruleEventRepository.UpdateAsync(job, new RuleJobUpdate { - await ruleEventRepository.EnqueueAsync(job, job.Created); - } + JobResult = RuleJobResult.Failed, + ExecutionResult = RuleResult.Failed, + ExecutionDump = ex.ToString(), + Finished = job.Created + }); + } + else + { + await ruleEventRepository.EnqueueAsync(job, job.Created); } } } public async Task On(Envelope @event) { - if (@event.Payload is AppEvent appEvent) + using (localCache.StartContext()) { - var rules = await GetRulesAsync(appEvent.AppId.Id); - - foreach (var ruleEntity in rules) + if (@event.Payload is AppEvent appEvent) { - await Enqueue(ruleEntity.RuleDef, ruleEntity.Id, @event); + var rules = await GetRulesAsync(appEvent.AppId.Id); + + foreach (var ruleEntity in rules) + { + await EnqueueAsync(ruleEntity.RuleDef, ruleEntity.Id, @event); + } } } } diff --git a/backend/src/Squidex.Domain.Apps.Entities/Rules/UsageTracking/UsageTrackerCommandMiddleware.cs b/backend/src/Squidex.Domain.Apps.Entities/Rules/UsageTracking/UsageTrackerCommandMiddleware.cs index 8431cc114..24d75a853 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Rules/UsageTracking/UsageTrackerCommandMiddleware.cs +++ b/backend/src/Squidex.Domain.Apps.Entities/Rules/UsageTracking/UsageTrackerCommandMiddleware.cs @@ -17,13 +17,13 @@ namespace Squidex.Domain.Apps.Entities.Rules.UsageTracking { public sealed class UsageTrackerCommandMiddleware : ICommandMiddleware { - private readonly IUsageTrackerGrain usageTrackerGrain; + private readonly IGrainFactory grainFactory; public UsageTrackerCommandMiddleware(IGrainFactory grainFactory) { Guard.NotNull(grainFactory, nameof(grainFactory)); - usageTrackerGrain = grainFactory.GetGrain(SingleGrain.Id); + this.grainFactory = grainFactory; } public async Task HandleAsync(CommandContext context, NextDelegate next) @@ -31,13 +31,13 @@ namespace Squidex.Domain.Apps.Entities.Rules.UsageTracking switch (context.Command) { case DeleteRule deleteRule: - await usageTrackerGrain.RemoveTargetAsync(deleteRule.RuleId); + await GetGrain().RemoveTargetAsync(deleteRule.RuleId); break; case CreateRule createRule: { if (createRule.Trigger is UsageTrigger usage) { - await usageTrackerGrain.AddTargetAsync(createRule.RuleId, createRule.AppId, usage.Limit, usage.NumDays); + await GetGrain().AddTargetAsync(createRule.RuleId, createRule.AppId, usage.Limit, usage.NumDays); } break; @@ -47,7 +47,7 @@ namespace Squidex.Domain.Apps.Entities.Rules.UsageTracking { if (ruleUpdated.Trigger is UsageTrigger usage) { - await usageTrackerGrain.UpdateTargetAsync(ruleUpdated.RuleId, usage.Limit, usage.NumDays); + await GetGrain().UpdateTargetAsync(ruleUpdated.RuleId, usage.Limit, usage.NumDays); } break; @@ -56,5 +56,10 @@ namespace Squidex.Domain.Apps.Entities.Rules.UsageTracking await next(context); } + + private IUsageTrackerGrain GetGrain() + { + return grainFactory.GetGrain(SingleGrain.Id); + } } } diff --git a/backend/src/Squidex.Domain.Apps.Entities/SquidexCommand.cs b/backend/src/Squidex.Domain.Apps.Entities/SquidexCommand.cs index e5dbccb20..c1c4d484d 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/SquidexCommand.cs +++ b/backend/src/Squidex.Domain.Apps.Entities/SquidexCommand.cs @@ -17,6 +17,8 @@ namespace Squidex.Domain.Apps.Entities public ClaimsPrincipal User { get; set; } + public bool FromRule { get; set; } + public long ExpectedVersion { get; set; } = EtagVersion.Auto; } } diff --git a/backend/src/Squidex.Domain.Apps.Events/SquidexEvent.cs b/backend/src/Squidex.Domain.Apps.Events/SquidexEvent.cs index 8d42986bf..93cc78a14 100644 --- a/backend/src/Squidex.Domain.Apps.Events/SquidexEvent.cs +++ b/backend/src/Squidex.Domain.Apps.Events/SquidexEvent.cs @@ -13,5 +13,7 @@ namespace Squidex.Domain.Apps.Events public abstract class SquidexEvent : IEvent { public RefToken Actor { get; set; } + + public bool FromRule { get; set; } } } diff --git a/backend/src/Squidex.Infrastructure.MongoDb/EventSourcing/MongoEventStore.cs b/backend/src/Squidex.Infrastructure.MongoDb/EventSourcing/MongoEventStore.cs index 33eef572b..9a1e0c534 100644 --- a/backend/src/Squidex.Infrastructure.MongoDb/EventSourcing/MongoEventStore.cs +++ b/backend/src/Squidex.Infrastructure.MongoDb/EventSourcing/MongoEventStore.cs @@ -16,10 +16,10 @@ namespace Squidex.Infrastructure.EventSourcing { public partial class MongoEventStore : MongoRepositoryBase, IEventStore { - private static readonly FieldDefinition TimestampField = Fields.Build(x => x.Timestamp); - private static readonly FieldDefinition EventsCountField = Fields.Build(x => x.EventsCount); - private static readonly FieldDefinition EventStreamOffsetField = Fields.Build(x => x.EventStreamOffset); - private static readonly FieldDefinition EventStreamField = Fields.Build(x => x.EventStream); + private static readonly FieldDefinition TimestampField = FieldBuilder.Build(x => x.Timestamp); + private static readonly FieldDefinition EventsCountField = FieldBuilder.Build(x => x.EventsCount); + private static readonly FieldDefinition EventStreamOffsetField = FieldBuilder.Build(x => x.EventStreamOffset); + private static readonly FieldDefinition EventStreamField = FieldBuilder.Build(x => x.EventStream); private readonly IEventNotifier notifier; public IMongoCollection RawCollection diff --git a/backend/src/Squidex.Infrastructure.MongoDb/MongoDb/MongoRepositoryBase.cs b/backend/src/Squidex.Infrastructure.MongoDb/MongoDb/MongoRepositoryBase.cs index 43f462791..edb6ec628 100644 --- a/backend/src/Squidex.Infrastructure.MongoDb/MongoDb/MongoRepositoryBase.cs +++ b/backend/src/Squidex.Infrastructure.MongoDb/MongoDb/MongoRepositoryBase.cs @@ -23,7 +23,7 @@ namespace Squidex.Infrastructure.MongoDb protected static readonly ReplaceOptions UpsertReplace = new ReplaceOptions { IsUpsert = true }; protected static readonly SortDefinitionBuilder Sort = Builders.Sort; protected static readonly UpdateDefinitionBuilder Update = Builders.Update; - protected static readonly FieldDefinitionBuilder Fields = FieldDefinitionBuilder.Instance; + protected static readonly FieldDefinitionBuilder FieldBuilder = FieldDefinitionBuilder.Instance; protected static readonly FilterDefinitionBuilder Filter = Builders.Filter; protected static readonly IndexKeysDefinitionBuilder Index = Builders.IndexKeys; protected static readonly ProjectionDefinitionBuilder Projection = Builders.Projection; diff --git a/backend/src/Squidex.Infrastructure/Orleans/IBackgroundGrain.cs b/backend/src/Squidex.Infrastructure/Orleans/IBackgroundGrain.cs index b23313685..e30295b8a 100644 --- a/backend/src/Squidex.Infrastructure/Orleans/IBackgroundGrain.cs +++ b/backend/src/Squidex.Infrastructure/Orleans/IBackgroundGrain.cs @@ -7,13 +7,11 @@ using System.Threading.Tasks; using Orleans; -using Orleans.Concurrency; namespace Squidex.Infrastructure.Orleans { public interface IBackgroundGrain : IGrainWithStringKey { - [OneWay] Task ActivateAsync(); } } diff --git a/backend/src/Squidex.Shared/Texts.it.resx b/backend/src/Squidex.Shared/Texts.it.resx index 9e3252b56..1285956db 100644 --- a/backend/src/Squidex.Shared/Texts.it.resx +++ b/backend/src/Squidex.Shared/Texts.it.resx @@ -184,6 +184,9 @@ Hai raggiunto la dimensione massima consentito per le risorse. + + Assets is referenced by a content and cannot be deleted. + E' in esecuzione una altro processo di backup. @@ -493,6 +496,9 @@ {count} Collegamenti(s) + + Content is referenced by another content and cannot be deleted. + Il contenuto singleton non può essere aggiornato diff --git a/backend/src/Squidex.Shared/Texts.nl.resx b/backend/src/Squidex.Shared/Texts.nl.resx index e42015e7e..5bc4dd751 100644 --- a/backend/src/Squidex.Shared/Texts.nl.resx +++ b/backend/src/Squidex.Shared/Texts.nl.resx @@ -184,6 +184,9 @@ Je hebt jouw maximale assetgrootte bereikt. + + Assets is referenced by a content and cannot be deleted. + Er wordt al een ander back-upproces uitgevoerd. @@ -493,6 +496,9 @@ {count} referentie (s) + + Content is referenced by another content and cannot be deleted. + Singleton-inhoud kan niet worden bijgewerkt. diff --git a/backend/src/Squidex.Shared/Texts.resx b/backend/src/Squidex.Shared/Texts.resx index f6c05d539..28dcca1d2 100644 --- a/backend/src/Squidex.Shared/Texts.resx +++ b/backend/src/Squidex.Shared/Texts.resx @@ -184,6 +184,9 @@ You have reached your max asset size. + + Assets is referenced by a content and cannot be deleted. + Another backup process is already running. @@ -493,6 +496,9 @@ {count} Reference(s) + + Content is referenced by another content and cannot be deleted. + Singleton content cannot be updated. diff --git a/backend/src/Squidex.Web/Services/UrlGenerator.cs b/backend/src/Squidex.Web/Services/UrlGenerator.cs index eb021c1ba..293faf74c 100644 --- a/backend/src/Squidex.Web/Services/UrlGenerator.cs +++ b/backend/src/Squidex.Web/Services/UrlGenerator.cs @@ -32,14 +32,14 @@ namespace Squidex.Web.Services CanGenerateAssetSourceUrl = allowAssetSourceUrl; } - public string? AssetThumbnail(NamedId appId, DomainId assetId, AssetType assetType) + public string? AssetThumbnail(NamedId appId, string idOrSlug, AssetType assetType) { if (assetType != AssetType.Image) { return null; } - return urlsOptions.BuildUrl($"api/assets/{appId.Name}/{assetId}?width=100&mode=Max"); + return urlsOptions.BuildUrl($"api/assets/{appId.Name}/{idOrSlug}?width=100&mode=Max"); } public string AppSettingsUI(NamedId appId) @@ -52,19 +52,19 @@ namespace Squidex.Web.Services return urlsOptions.BuildUrl($"api/assets/{appId.Name}/{assetId}"); } - public string? AssetSource(NamedId appId, DomainId assetId, long fileVersion) + public string AssetContent(NamedId appId, string idOrSlug) { - return assetFileStore.GeneratePublicUrl(appId.Id, assetId, fileVersion); + return urlsOptions.BuildUrl($"assets/{appId.Name}/{idOrSlug}"); } - public string AssetsUI(NamedId appId) + public string? AssetSource(NamedId appId, DomainId assetId, long fileVersion) { - return urlsOptions.BuildUrl($"app/{appId.Name}/assets", false); + return assetFileStore.GeneratePublicUrl(appId.Id, assetId, fileVersion); } public string AssetsUI(NamedId appId, string? query = null) { - return urlsOptions.BuildUrl($"app/{appId.Name}/assets?query={query}", false); + return urlsOptions.BuildUrl($"app/{appId.Name}/assets", false) + query != null ? $"?query={query}" : string.Empty; } public string BackupsUI(NamedId appId) diff --git a/backend/src/Squidex/Areas/Api/Controllers/Assets/AssetContentController.cs b/backend/src/Squidex/Areas/Api/Controllers/Assets/AssetContentController.cs index 38d106704..ee5b61617 100644 --- a/backend/src/Squidex/Areas/Api/Controllers/Assets/AssetContentController.cs +++ b/backend/src/Squidex/Areas/Api/Controllers/Assets/AssetContentController.cs @@ -73,13 +73,9 @@ namespace Squidex.Areas.Api.Controllers.Assets [AllowAnonymous] public async Task GetAssetContentBySlug(string app, string idOrSlug, [FromQuery] AssetContentQueryDto queries, string? more = null) { - IAssetEntity? asset; + var asset = await assetRepository.FindAssetAsync(AppId, idOrSlug); - if (Guid.TryParse(idOrSlug, out var guid)) - { - asset = await assetRepository.FindAssetAsync(AppId, guid); - } - else + if (asset == null) { asset = await assetRepository.FindAssetBySlugAsync(AppId, idOrSlug); } diff --git a/backend/src/Squidex/Areas/Api/Controllers/Assets/AssetsController.cs b/backend/src/Squidex/Areas/Api/Controllers/Assets/AssetsController.cs index 85bf0681d..e6992d328 100644 --- a/backend/src/Squidex/Areas/Api/Controllers/Assets/AssetsController.cs +++ b/backend/src/Squidex/Areas/Api/Controllers/Assets/AssetsController.cs @@ -290,6 +290,7 @@ namespace Squidex.Areas.Api.Controllers.Assets /// /// The name of the app. /// The id of the asset to delete. + /// True to check referrers of this asset. /// /// 204 => Asset deleted. /// 404 => Asset or app not found. @@ -298,9 +299,9 @@ namespace Squidex.Areas.Api.Controllers.Assets [Route("apps/{app}/assets/{id}/")] [ApiPermissionOrAnonymous(Permissions.AppAssetsDelete)] [ApiCosts(1)] - public async Task DeleteAsset(string app, string id) + public async Task DeleteAsset(string app, string id, [FromQuery] bool checkReferrers = false) { - await CommandBus.PublishAsync(new DeleteAsset { AssetId = id }); + await CommandBus.PublishAsync(new DeleteAsset { AssetId = id, CheckReferrers = checkReferrers }); return NoContent(); } diff --git a/backend/src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs b/backend/src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs index 84dfeecce..d174baa59 100644 --- a/backend/src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs +++ b/backend/src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs @@ -586,6 +586,7 @@ namespace Squidex.Areas.Api.Controllers.Contents /// The name of the app. /// The name of the schema. /// The id of the content item to delete. + /// True to check referrers of this content. /// /// 204 => Content deleted. /// 404 => Content, schema or app not found. @@ -597,9 +598,9 @@ namespace Squidex.Areas.Api.Controllers.Contents [Route("content/{app}/{name}/{id}/")] [ApiPermissionOrAnonymous(Permissions.AppContentsDelete)] [ApiCosts(1)] - public async Task DeleteContent(string app, string name, string id) + public async Task DeleteContent(string app, string name, string id, [FromQuery] bool checkReferrers = false) { - var command = new DeleteContent { ContentId = id }; + var command = new DeleteContent { ContentId = id, CheckReferrers = checkReferrers }; await CommandBus.PublishAsync(command); diff --git a/backend/src/Squidex/Areas/Api/Controllers/News/Service/FeaturesService.cs b/backend/src/Squidex/Areas/Api/Controllers/News/Service/FeaturesService.cs index 58e16646e..a0bbae023 100644 --- a/backend/src/Squidex/Areas/Api/Controllers/News/Service/FeaturesService.cs +++ b/backend/src/Squidex/Areas/Api/Controllers/News/Service/FeaturesService.cs @@ -16,7 +16,7 @@ namespace Squidex.Areas.Api.Controllers.News.Service { public sealed class FeaturesService { - private const int FeatureVersion = 9; + private const int FeatureVersion = 11; private readonly QueryContext flatten = QueryContext.Default.Flatten(); private readonly IContentsClient client; diff --git a/backend/src/Squidex/Areas/Api/Controllers/Schemas/Models/SchemaPropertiesDto.cs b/backend/src/Squidex/Areas/Api/Controllers/Schemas/Models/SchemaPropertiesDto.cs index cc629a5e5..c8630b2df 100644 --- a/backend/src/Squidex/Areas/Api/Controllers/Schemas/Models/SchemaPropertiesDto.cs +++ b/backend/src/Squidex/Areas/Api/Controllers/Schemas/Models/SchemaPropertiesDto.cs @@ -24,6 +24,16 @@ namespace Squidex.Areas.Api.Controllers.Schemas.Models [LocalizedStringLength(1000)] public string? Hints { get; set; } + /// + /// The url to a the sidebar plugin for content lists. + /// + public string? ContentsSidebarUrl { get; set; } + + /// + /// The url to a the sidebar plugin for content items. + /// + public string? ContentSidebarUrl { get; set; } + /// /// Tags for automation processes. /// diff --git a/backend/src/Squidex/Areas/Api/Controllers/Schemas/Models/UpdateSchemaDto.cs b/backend/src/Squidex/Areas/Api/Controllers/Schemas/Models/UpdateSchemaDto.cs index 576fc669f..fec58f16c 100644 --- a/backend/src/Squidex/Areas/Api/Controllers/Schemas/Models/UpdateSchemaDto.cs +++ b/backend/src/Squidex/Areas/Api/Controllers/Schemas/Models/UpdateSchemaDto.cs @@ -27,6 +27,16 @@ namespace Squidex.Areas.Api.Controllers.Schemas.Models [LocalizedStringLength(1000)] public string? Hints { get; set; } + /// + /// The url to a the sidebar plugin for content lists. + /// + public string? ContentsSidebarUrl { get; set; } + + /// + /// The url to a the sidebar plugin for content items. + /// + public string? ContentSidebarUrl { get; set; } + /// /// Tags for automation processes. /// diff --git a/backend/src/Squidex/Config/Orleans/OrleansServices.cs b/backend/src/Squidex/Config/Orleans/OrleansServices.cs index 080301dd3..41ec6a8ce 100644 --- a/backend/src/Squidex/Config/Orleans/OrleansServices.cs +++ b/backend/src/Squidex/Config/Orleans/OrleansServices.cs @@ -59,10 +59,10 @@ namespace Squidex.Config.Orleans options.HostSelf = false; }); + builder.AddIncomingGrainCallFilter(); builder.AddIncomingGrainCallFilter(); builder.AddIncomingGrainCallFilter(); builder.AddIncomingGrainCallFilter(); - builder.AddIncomingGrainCallFilter(); builder.AddIncomingGrainCallFilter(); var orleansPortSilo = config.GetOptionalValue("orleans:siloPort", 11111); diff --git a/backend/src/Squidex/wwwroot/scripts/context-editor.html b/backend/src/Squidex/wwwroot/scripts/context-editor.html deleted file mode 100644 index e44344ae8..000000000 --- a/backend/src/Squidex/wwwroot/scripts/context-editor.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/backend/src/Squidex/wwwroot/scripts/combined-editor.html b/backend/src/Squidex/wwwroot/scripts/editor-combined.html similarity index 88% rename from backend/src/Squidex/wwwroot/scripts/combined-editor.html rename to backend/src/Squidex/wwwroot/scripts/editor-combined.html index 556b6ebb8..5d2abe715 100644 --- a/backend/src/Squidex/wwwroot/scripts/combined-editor.html +++ b/backend/src/Squidex/wwwroot/scripts/editor-combined.html @@ -14,7 +14,9 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/backend/src/Squidex/wwwroot/scripts/editor-json-schema.html b/backend/src/Squidex/wwwroot/scripts/editor-json-schema.html index 281af4e8b..2054ad8cd 100644 --- a/backend/src/Squidex/wwwroot/scripts/editor-json-schema.html +++ b/backend/src/Squidex/wwwroot/scripts/editor-json-schema.html @@ -29,6 +29,9 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/backend/src/Squidex/wwwroot/scripts/sidebar-context.html b/backend/src/Squidex/wwwroot/scripts/sidebar-context.html new file mode 100644 index 000000000..71dada824 --- /dev/null +++ b/backend/src/Squidex/wwwroot/scripts/sidebar-context.html @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/backend/src/Squidex/wwwroot/scripts/sidebar-search.html b/backend/src/Squidex/wwwroot/scripts/sidebar-search.html new file mode 100644 index 000000000..8ba7ff6a3 --- /dev/null +++ b/backend/src/Squidex/wwwroot/scripts/sidebar-search.html @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+ + + + + \ No newline at end of file diff --git a/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/ConvertContent/ValueConvertersTests.cs b/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/ConvertContent/ValueConvertersTests.cs index 82c45ae54..808313c2f 100644 --- a/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/ConvertContent/ValueConvertersTests.cs +++ b/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/ConvertContent/ValueConvertersTests.cs @@ -27,8 +27,8 @@ namespace Squidex.Domain.Apps.Core.Operations.ConvertContent public ValueConvertersTests() { - A.CallTo(() => urlGenerator.AssetContent(appId, A._)) - .ReturnsLazily(ctx => $"url/to/{ctx.GetArgument(1)}"); + A.CallTo(() => urlGenerator.AssetContent(appId, A._)) + .ReturnsLazily(ctx => $"url/to/{ctx.GetArgument(1)}"); } [Fact] diff --git a/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/HandleRules/RuleEventFormatterCompareTests.cs b/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/HandleRules/RuleEventFormatterCompareTests.cs index a3ca8234b..69f934e78 100644 --- a/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/HandleRules/RuleEventFormatterCompareTests.cs +++ b/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/HandleRules/RuleEventFormatterCompareTests.cs @@ -67,9 +67,12 @@ namespace Squidex.Domain.Apps.Core.Operations.HandleRules A.CallTo(() => urlGenerator.ContentUI(appId, schemaId, contentId)) .Returns("content-url"); - A.CallTo(() => urlGenerator.AssetContent(appId, assetId)) + A.CallTo(() => urlGenerator.AssetContent(appId, assetId.ToString())) .Returns("asset-content-url"); + A.CallTo(() => urlGenerator.AssetContent(appId, "file-name")) + .Returns("asset-content-slug-url"); + A.CallTo(() => user.Id) .Returns("user123"); @@ -301,6 +304,7 @@ namespace Squidex.Domain.Apps.Core.Operations.HandleRules "Download at ${assetContentUrl()}", "Download at {{event.id | assetContentUrl}}" )] + [InlineData("Liquid(Download at {{event | assetContentUrl}})")] public async Task Should_format_asset_content_url_from_event(string script) { var @event = new EnrichedAssetEvent { Id = assetId, AppId = appId }; @@ -317,6 +321,7 @@ namespace Squidex.Domain.Apps.Core.Operations.HandleRules "Download at ${assetContentUrl()}", "Download at {{event.id | assetContentUrl | default: 'null'}}" )] + [InlineData("Liquid(Download at {{event | assetContentUrl | default: 'null'}})")] public async Task Should_return_null_when_asset_content_url_not_found(string script) { var @event = new EnrichedContentEvent(); @@ -326,6 +331,74 @@ namespace Squidex.Domain.Apps.Core.Operations.HandleRules Assert.Equal("Download at null", result); } + [Theory] + [Expressions( + "Download at $ASSET_CONTENT_APP_URL", + null, + "Download at ${assetContentAppUrl()}", + "Download at {{event.id | assetContentAppUrl | default: 'null'}}" + )] + [InlineData("Liquid(Download at {{event | assetContentAppUrl | default: 'null'}})")] + public async Task Should_format_asset_content_app_url_from_event(string script) + { + var @event = new EnrichedAssetEvent { AppId = appId, Id = assetId, FileName = "File Name" }; + + var result = await sut.FormatAsync(script, @event); + + Assert.Equal("Download at asset-content-url", result); + } + + [Theory] + [Expressions( + "Download at $ASSET_CONTENT_APP_URL", + null, + "Download at ${assetContentAppUrl()}", + "Download at {{event.id | assetContentAppUrl | default: 'null'}}" + )] + [InlineData("Liquid(Download at {{event | assetContentAppUrl | default: 'null'}})")] + public async Task Should_return_null_when_asset_content_app_url_not_found(string script) + { + var @event = new EnrichedContentEvent(); + + var result = await sut.FormatAsync(script, @event); + + Assert.Equal("Download at null", result); + } + + [Theory] + [Expressions( + "Download at $ASSET_CONTENT_SLUG_URL", + null, + "Download at ${assetContentSlugUrl()}", + "Download at {{event.fileName | assetContentSlugUrl | default: 'null'}}" + )] + [InlineData("Liquid(Download at {{event | assetContentSlugUrl | default: 'null'}})")] + public async Task Should_format_asset_content_slug_url_from_event(string script) + { + var @event = new EnrichedAssetEvent { AppId = appId, Id = assetId, FileName = "File Name" }; + + var result = await sut.FormatAsync(script, @event); + + Assert.Equal("Download at asset-content-slug-url", result); + } + + [Theory] + [Expressions( + "Download at $ASSET_CONTENT_SLUG_URL", + null, + "Download at ${assetContentSlugUrl()}", + "Download at {{event.id | assetContentSlugUrl | default: 'null'}}" + )] + [InlineData("Liquid(Download at {{event | assetContentSlugUrl | default: 'null'}})")] + public async Task Should_return_null_when_asset_content_slug_url_not_found(string script) + { + var @event = new EnrichedContentEvent(); + + var result = await sut.FormatAsync(script, @event); + + Assert.Equal("Download at null", result); + } + [Theory] [Expressions( "Go to $CONTENT_URL", @@ -629,6 +702,29 @@ namespace Squidex.Domain.Apps.Core.Operations.HandleRules Assert.Equal("[1,2,3]", result?.Replace(" ", string.Empty)); } + [Theory] + [Expressions( + "$CONTENT_DATA", + "${CONTENT_DATA}", + "${JSON.stringify(event.data)}", + null + )] + public async Task Should_return_json_string_when_data(string script) + { + var @event = new EnrichedContentEvent + { + Data = + new NamedContentData() + .AddField("city", + new ContentFieldData() + .AddJsonValue(JsonValue.Object().Add("name", "Berlin"))) + }; + + var result = await sut.FormatAsync(script, @event); + + Assert.Equal("{\"city\":{\"iv\":{\"name\":\"Berlin\"}}}", result); + } + [Theory] [Expressions( null, diff --git a/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/HandleRules/RuleEventFormatterTests.cs b/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/HandleRules/RuleEventFormatterTests.cs index 1cb861d56..655713b55 100644 --- a/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/HandleRules/RuleEventFormatterTests.cs +++ b/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/HandleRules/RuleEventFormatterTests.cs @@ -63,7 +63,7 @@ namespace Squidex.Domain.Apps.Core.Operations.HandleRules A.CallTo(() => urlGenerator.ContentUI(appId, schemaId, contentId)) .Returns("content-url"); - A.CallTo(() => urlGenerator.AssetContent(appId, assetId)) + A.CallTo(() => urlGenerator.AssetContent(appId, assetId.ToString())) .Returns("asset-content-url"); A.CallTo(() => user.Id) diff --git a/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/HandleRules/RuleServiceTests.cs b/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/HandleRules/RuleServiceTests.cs index 6d1ff256b..a4f27c2a6 100644 --- a/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/HandleRules/RuleServiceTests.cs +++ b/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/HandleRules/RuleServiceTests.cs @@ -173,6 +173,24 @@ namespace Squidex.Domain.Apps.Core.Operations.HandleRules .MustHaveHappened(); } + [Fact] + public async Task Should_not_create_job_if_event_created_by_rule() + { + var rule = ValidRule(); + + var @event = Envelope.Create(new ContentCreated { FromRule = true }); + + var jobs = await sut.CreateJobsAsync(rule, ruleId, @event); + + Assert.Empty(jobs); + + A.CallTo(() => ruleTriggerHandler.Trigger(@event.Payload, rule.Trigger, ruleId)) + .MustNotHaveHappened(); + + A.CallTo(() => ruleTriggerHandler.CreateEnrichedEventsAsync(A>._)) + .MustNotHaveHappened(); + } + [Fact] public async Task Should_not_create_job_if_not_triggered_with_precheck() { diff --git a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Apps/AppDomainObjectTests.cs b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Apps/AppDomainObjectTests.cs index 2b79282ed..305f7f537 100644 --- a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Apps/AppDomainObjectTests.cs +++ b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Apps/AppDomainObjectTests.cs @@ -71,7 +71,7 @@ namespace Squidex.Domain.Apps.Entities.Apps { patternId2, new AppPattern("Numbers", "[0-9]*") } }; - sut = new AppDomainObject(initialPatterns, Store, A.Dummy(), appPlansProvider, appPlansBillingManager, userResolver); + sut = new AppDomainObject(Store, A.Dummy(), initialPatterns, appPlansProvider, appPlansBillingManager, userResolver); sut.Setup(Id); } diff --git a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Apps/AppSettingsSearchSourceTests.cs b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Apps/AppSettingsSearchSourceTests.cs index 139c7ec2e..1dee663cc 100644 --- a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Apps/AppSettingsSearchSourceTests.cs +++ b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Apps/AppSettingsSearchSourceTests.cs @@ -155,7 +155,7 @@ namespace Squidex.Domain.Apps.Entities.Apps var ctx = ContextWithPermission(permission.Id); - A.CallTo(() => urlGenerator.AssetsUI(appId)) + A.CallTo(() => urlGenerator.AssetsUI(appId, A._)) .Returns("assets-url"); var result = await sut.SearchAsync("assets", ctx); diff --git a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Assets/AssetCommandMiddlewareTests.cs b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Assets/AssetCommandMiddlewareTests.cs index d404f0d33..a6d24ff65 100644 --- a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Assets/AssetCommandMiddlewareTests.cs +++ b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Assets/AssetCommandMiddlewareTests.cs @@ -15,6 +15,7 @@ using Orleans; using Squidex.Domain.Apps.Core.Tags; using Squidex.Domain.Apps.Entities.Assets.Commands; using Squidex.Domain.Apps.Entities.Assets.State; +using Squidex.Domain.Apps.Entities.Contents.Repositories; using Squidex.Domain.Apps.Entities.TestHelpers; using Squidex.Infrastructure; using Squidex.Infrastructure.Assets; @@ -31,6 +32,7 @@ namespace Squidex.Domain.Apps.Entities.Assets private readonly IAssetFileStore assetFileStore = A.Fake(); private readonly IAssetMetadataSource assetMetadataSource = A.Fake(); private readonly IAssetQueryService assetQuery = A.Fake(); + private readonly IContentRepository contentRepository = A.Fake(); private readonly IContextProvider contextProvider = A.Fake(); private readonly IGrainFactory grainFactory = A.Fake(); private readonly IServiceProvider serviceProvider = A.Fake(); @@ -54,7 +56,7 @@ namespace Squidex.Domain.Apps.Entities.Assets { file = new NoopAssetFile(); - var assetDomainObject = new AssetDomainObject(Store, tagService, assetQuery, A.Dummy()); + var assetDomainObject = new AssetDomainObject(Store, A.Dummy(), tagService, assetQuery, contentRepository); A.CallTo(() => serviceProvider.GetService(typeof(AssetDomainObject))) .Returns(assetDomainObject); diff --git a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Assets/AssetDomainObjectTests.cs b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Assets/AssetDomainObjectTests.cs index 336b74b32..957820359 100644 --- a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Assets/AssetDomainObjectTests.cs +++ b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Assets/AssetDomainObjectTests.cs @@ -13,6 +13,7 @@ using Squidex.Domain.Apps.Core.Assets; using Squidex.Domain.Apps.Core.Tags; using Squidex.Domain.Apps.Entities.Assets.Commands; using Squidex.Domain.Apps.Entities.Assets.State; +using Squidex.Domain.Apps.Entities.Contents.Repositories; using Squidex.Domain.Apps.Entities.TestHelpers; using Squidex.Domain.Apps.Events.Assets; using Squidex.Infrastructure; @@ -25,6 +26,7 @@ namespace Squidex.Domain.Apps.Entities.Assets { public class AssetDomainObjectTests : HandlerTestBase { + private readonly IContentRepository contentRepository = A.Fake(); private readonly ITagService tagService = A.Fake(); private readonly IAssetQueryService assetQuery = A.Fake(); private readonly DomainId parentId = DomainId.NewGuid(); @@ -45,7 +47,7 @@ namespace Squidex.Domain.Apps.Entities.Assets A.CallTo(() => tagService.NormalizeTagsAsync(AppId, TagGroups.Assets, A>._, A>._)) .ReturnsLazily(x => Task.FromResult(x.GetArgument>(2)?.ToDictionary(x => x)!)); - sut = new AssetDomainObject(Store, tagService, assetQuery, A.Dummy()); + sut = new AssetDomainObject(Store, A.Dummy(), tagService, assetQuery, contentRepository); sut.Setup(Id); } @@ -245,6 +247,32 @@ namespace Squidex.Domain.Apps.Entities.Assets ); } + [Fact] + public async Task Delete_should_throw_exception_if_referenced_by_other_item() + { + var command = new DeleteAsset { CheckReferrers = true }; + + await ExecuteCreateAsync(); + + A.CallTo(() => contentRepository.HasReferrersAsync(AppId, Id)) + .Returns(true); + + await Assert.ThrowsAsync(() => PublishAsync(command)); + } + + [Fact] + public async Task Delete_should_not_throw_exception_if_referenced_by_other_item_but_forced() + { + var command = new DeleteAsset(); + + await ExecuteCreateAsync(); + + A.CallTo(() => contentRepository.HasReferrersAsync(AppId, Id)) + .Returns(true); + + await PublishAsync(command); + } + private Task ExecuteCreateAsync() { return PublishAsync(new CreateAsset { File = file }); diff --git a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Assets/AssetFolderDomainObjectTests.cs b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Assets/AssetFolderDomainObjectTests.cs index 30eb7b83d..a131c764e 100644 --- a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Assets/AssetFolderDomainObjectTests.cs +++ b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Assets/AssetFolderDomainObjectTests.cs @@ -36,7 +36,7 @@ namespace Squidex.Domain.Apps.Entities.Assets A.CallTo(() => assetQuery.FindAssetFolderAsync(AppId, parentId)) .Returns(new List { A.Fake() }); - sut = new AssetFolderDomainObject(Store, assetQuery, A.Dummy()); + sut = new AssetFolderDomainObject(Store, A.Dummy(), assetQuery); sut.Setup(Id); } diff --git a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/ContentDomainObjectTests.cs b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/ContentDomainObjectTests.cs index dbfb26cd7..02efe1dba 100644 --- a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/ContentDomainObjectTests.cs +++ b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/ContentDomainObjectTests.cs @@ -16,6 +16,7 @@ using Squidex.Domain.Apps.Core.Scripting; using Squidex.Domain.Apps.Core.ValidateContent; using Squidex.Domain.Apps.Entities.Apps; using Squidex.Domain.Apps.Entities.Contents.Commands; +using Squidex.Domain.Apps.Entities.Contents.Repositories; using Squidex.Domain.Apps.Entities.Contents.State; using Squidex.Domain.Apps.Entities.Schemas; using Squidex.Domain.Apps.Entities.TestHelpers; @@ -34,6 +35,7 @@ namespace Squidex.Domain.Apps.Entities.Contents private readonly IAppEntity app; private readonly IAppProvider appProvider = A.Fake(); private readonly IContentWorkflow contentWorkflow = A.Fake(x => x.Wrapping(new DefaultContentWorkflow())); + private readonly IContentRepository contentRepository = A.Fake(); private readonly ISchemaEntity schema; private readonly IScriptEngine scriptEngine = A.Fake(); @@ -104,9 +106,11 @@ namespace Squidex.Domain.Apps.Entities.Contents patched = patch.MergeInto(data); - var context = new ContentOperationContext(appProvider, Enumerable.Repeat(new DefaultValidatorsFactory(), 1), scriptEngine, A.Fake()); + var validators = Enumerable.Repeat(new DefaultValidatorsFactory(), 1); - sut = new ContentDomainObject(Store, contentWorkflow, context, A.Dummy()); + var context = new ContentOperationContext(appProvider, validators, scriptEngine, A.Fake()); + + sut = new ContentDomainObject(Store, A.Dummy(), contentWorkflow, contentRepository, context); sut.Setup(Id); } @@ -124,7 +128,7 @@ namespace Squidex.Domain.Apps.Entities.Contents { var command = new CreateContent { Data = data }; - var result = await PublishAsync(CreateContentCommand(command)); + var result = await PublishAsync(command); result.ShouldBeEquivalent(sut.Snapshot); @@ -147,7 +151,7 @@ namespace Squidex.Domain.Apps.Entities.Contents { var command = new CreateContent { Data = data, Publish = true }; - var result = await PublishAsync(CreateContentCommand(command)); + var result = await PublishAsync(command); result.ShouldBeEquivalent(sut.Snapshot); @@ -170,7 +174,7 @@ namespace Squidex.Domain.Apps.Entities.Contents { var command = new CreateContent { Data = invalidData }; - await Assert.ThrowsAsync(() => PublishAsync(CreateContentCommand(command))); + await Assert.ThrowsAsync(() => PublishAsync(command)); } [Fact] @@ -224,7 +228,7 @@ namespace Squidex.Domain.Apps.Entities.Contents await ExecuteCreateAsync(); - var result = await PublishAsync(CreateContentCommand(command)); + var result = await PublishAsync(command); result.ShouldBeEquivalent(sut.Snapshot); @@ -248,7 +252,7 @@ namespace Squidex.Domain.Apps.Entities.Contents await ExecutePublishAsync(); await ExecuteCreateDraftAsync(); - var result = await PublishAsync(CreateContentCommand(command)); + var result = await PublishAsync(command); result.ShouldBeEquivalent(sut.Snapshot); @@ -270,7 +274,7 @@ namespace Squidex.Domain.Apps.Entities.Contents await ExecuteCreateAsync(); - var result = await PublishAsync(CreateContentCommand(command)); + var result = await PublishAsync(command); result.ShouldBeEquivalent(sut.Snapshot); @@ -287,7 +291,7 @@ namespace Squidex.Domain.Apps.Entities.Contents await ExecuteCreateAsync(); - await Assert.ThrowsAsync(() => PublishAsync(CreateContentCommand(command))); + await Assert.ThrowsAsync(() => PublishAsync(command)); } [Fact] @@ -297,7 +301,7 @@ namespace Squidex.Domain.Apps.Entities.Contents await ExecuteCreateAsync(); - var result = await PublishAsync(CreateContentCommand(command)); + var result = await PublishAsync(command); result.ShouldBeEquivalent(sut.Snapshot); @@ -321,7 +325,7 @@ namespace Squidex.Domain.Apps.Entities.Contents await ExecutePublishAsync(); await ExecuteCreateDraftAsync(); - var result = await PublishAsync(CreateContentCommand(command)); + var result = await PublishAsync(command); result.ShouldBeEquivalent(sut.Snapshot); @@ -343,7 +347,7 @@ namespace Squidex.Domain.Apps.Entities.Contents await ExecuteCreateAsync(); - var result = await PublishAsync(CreateContentCommand(command)); + var result = await PublishAsync(command); result.ShouldBeEquivalent(sut.Snapshot); @@ -360,7 +364,7 @@ namespace Squidex.Domain.Apps.Entities.Contents await ExecuteCreateAsync(); - var result = await PublishAsync(CreateContentCommand(command)); + var result = await PublishAsync(command); result.ShouldBeEquivalent(sut.Snapshot); @@ -382,7 +386,7 @@ namespace Squidex.Domain.Apps.Entities.Contents await ExecuteCreateAsync(); - var result = await PublishAsync(CreateContentCommand(command)); + var result = await PublishAsync(command); result.ShouldBeEquivalent(sut.Snapshot); @@ -405,7 +409,7 @@ namespace Squidex.Domain.Apps.Entities.Contents await ExecuteCreateAsync(); await ExecutePublishAsync(); - var result = await PublishAsync(CreateContentCommand(command)); + var result = await PublishAsync(command); result.ShouldBeEquivalent(sut.Snapshot); @@ -429,7 +433,7 @@ namespace Squidex.Domain.Apps.Entities.Contents await ExecutePublishAsync(); await ExecuteCreateDraftAsync(); - var result = await PublishAsync(CreateContentCommand(command)); + var result = await PublishAsync(command); result.ShouldBeEquivalent(sut.Snapshot); @@ -453,7 +457,7 @@ namespace Squidex.Domain.Apps.Entities.Contents await ExecuteCreateAsync(); - var result = await PublishAsync(CreateContentCommand(command)); + var result = await PublishAsync(command); result.ShouldBeEquivalent(sut.Snapshot); @@ -484,7 +488,7 @@ namespace Squidex.Domain.Apps.Entities.Contents A.CallTo(() => contentWorkflow.CanMoveToAsync(A._, Status.Draft, Status.Archived, User)) .Returns(true); - var result = await PublishAsync(CreateContentCommand(command)); + var result = await PublishAsync(command); result.ShouldBeEquivalent(sut.Snapshot); @@ -512,7 +516,7 @@ namespace Squidex.Domain.Apps.Entities.Contents A.CallTo(() => contentWorkflow.CanMoveToAsync(A._, Status.Draft, Status.Published, User)) .Returns(false); - var result = await PublishAsync(CreateContentCommand(command)); + var result = await PublishAsync(command); result.ShouldBeEquivalent(sut.Snapshot); @@ -534,7 +538,7 @@ namespace Squidex.Domain.Apps.Entities.Contents await ExecuteCreateAsync(); - var result = await PublishAsync(CreateContentCommand(command)); + var result = await PublishAsync(command); result.ShouldBeEquivalent(new EntitySavedResult(1)); @@ -549,6 +553,32 @@ namespace Squidex.Domain.Apps.Entities.Contents .MustHaveHappened(); } + [Fact] + public async Task Delete_should_throw_exception_if_referenced_by_other_item() + { + var command = new DeleteContent { CheckReferrers = true }; + + await ExecuteCreateAsync(); + + A.CallTo(() => contentRepository.HasReferrersAsync(AppId, Id)) + .Returns(true); + + await Assert.ThrowsAsync(() => PublishAsync(command)); + } + + [Fact] + public async Task Delete_should_not_throw_exception_if_referenced_by_other_item_but_forced() + { + var command = new DeleteContent(); + + await ExecuteCreateAsync(); + + A.CallTo(() => contentRepository.HasReferrersAsync(AppId, Id)) + .Returns(true); + + await PublishAsync(command); + } + [Fact] public async Task CreateDraft_should_create_events_and_update_new_state() { @@ -557,7 +587,7 @@ namespace Squidex.Domain.Apps.Entities.Contents await ExecuteCreateAsync(); await ExecutePublishAsync(); - var result = await PublishAsync(CreateContentCommand(command)); + var result = await PublishAsync(command); result.ShouldBeEquivalent(sut.Snapshot); @@ -578,7 +608,7 @@ namespace Squidex.Domain.Apps.Entities.Contents await ExecutePublishAsync(); await ExecuteCreateDraftAsync(); - var result = await PublishAsync(CreateContentCommand(command)); + var result = await PublishAsync(command); result.ShouldBeEquivalent(new EntitySavedResult(3)); @@ -592,22 +622,22 @@ namespace Squidex.Domain.Apps.Entities.Contents private Task ExecuteCreateAsync() { - return PublishAsync(CreateContentCommand(new CreateContent { Data = data })); + return PublishAsync(new CreateContent { Data = data }); } private Task ExecuteUpdateAsync() { - return PublishAsync(CreateContentCommand(new UpdateContent { Data = otherData })); + return PublishAsync(new UpdateContent { Data = otherData }); } private Task ExecuteCreateDraftAsync() { - return PublishAsync(CreateContentCommand(new CreateContentDraft())); + return PublishAsync(new CreateContentDraft()); } private Task ExecuteChangeStatusAsync(Status status, Instant? dueTime = null) { - return PublishAsync(CreateContentCommand(new ChangeContentStatus { Status = status, DueTime = dueTime })); + return PublishAsync(new ChangeContentStatus { Status = status, DueTime = dueTime }); } private Task ExecuteDeleteAsync() diff --git a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/GraphQLMutationTests.cs b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/GraphQLMutationTests.cs index a793571fd..9582c9e55 100644 --- a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/GraphQLMutationTests.cs +++ b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/GraphQLMutationTests.cs @@ -30,7 +30,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL public GraphQLMutationTests() { - content = TestContent.Create(schemaId, contentId, schemaRefId1.Id, schemaRefId2.Id, null); + content = TestContent.Create(appId, schemaId, contentId, schemaRefId1.Id, schemaRefId2.Id, null); A.CallTo(() => commandBus.PublishAsync(A.Ignored)) .Returns(commandContext); diff --git a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/GraphQLQueriesTests.cs b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/GraphQLQueriesTests.cs index d8f615cc4..ba4cafe94 100644 --- a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/GraphQLQueriesTests.cs +++ b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/GraphQLQueriesTests.cs @@ -46,7 +46,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL } }".Replace("", TestAsset.AllFields); - var asset = TestAsset.Create(DomainId.NewGuid()); + var asset = TestAsset.Create(appId, DomainId.NewGuid()); A.CallTo(() => assetQuery.QueryAsync(MatchsAssetContext(), null, A.That.HasOData("?$top=30&$skip=5&$filter=my-query"))) .Returns(ResultList.CreateFrom(0, asset)); @@ -80,7 +80,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL } }".Replace("", TestAsset.AllFields); - var asset = TestAsset.Create(DomainId.NewGuid()); + var asset = TestAsset.Create(appId, DomainId.NewGuid()); A.CallTo(() => assetQuery.QueryAsync(MatchsAssetContext(), null, A.That.HasOData("?$top=30&$skip=5&$filter=my-query"))) .Returns(ResultList.CreateFrom(10, asset)); @@ -137,7 +137,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL public async Task Should_return_single_asset_when_finding_asset() { var assetId = DomainId.NewGuid(); - var asset = TestAsset.Create(assetId); + var asset = TestAsset.Create(appId, assetId); var query = @" query { @@ -195,7 +195,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL } }"; - var content = TestContent.Create(schemaId, DomainId.NewGuid(), DomainId.Empty, DomainId.Empty); + var content = TestContent.Create(appId, schemaId, DomainId.NewGuid(), DomainId.Empty, DomainId.Empty); A.CallTo(() => contentQuery.QueryAsync(MatchsContentContext(), schemaId.Id.ToString(), A.That.HasOData("?$top=30&$skip=5"))) .Returns(ResultList.CreateFrom(0, content)); @@ -273,7 +273,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL } }".Replace("", TestContent.AllFields); - var content = TestContent.Create(schemaId, DomainId.NewGuid(), DomainId.Empty, DomainId.Empty); + var content = TestContent.Create(appId, schemaId, DomainId.NewGuid(), DomainId.Empty, DomainId.Empty); A.CallTo(() => contentQuery.QueryAsync(MatchsContentContext(), schemaId.Id.ToString(), A.That.HasOData("?$top=30&$skip=5"))) .Returns(ResultList.CreateFrom(0, content)); @@ -307,7 +307,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL } }".Replace("", TestContent.AllFields); - var content = TestContent.Create(schemaId, DomainId.NewGuid(), DomainId.Empty, DomainId.Empty); + var content = TestContent.Create(appId, schemaId, DomainId.NewGuid(), DomainId.Empty, DomainId.Empty); A.CallTo(() => contentQuery.QueryAsync(MatchsContentContext(), schemaId.Id.ToString(), A.That.HasOData("?$top=30&$skip=5"))) .Returns(ResultList.CreateFrom(10, content)); @@ -364,7 +364,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL public async Task Should_return_single_content_when_finding_content() { var contentId = DomainId.NewGuid(); - var content = TestContent.Create(schemaId, contentId, DomainId.Empty, DomainId.Empty); + var content = TestContent.Create(appId, schemaId, contentId, DomainId.Empty, DomainId.Empty); var query = @" query { @@ -396,7 +396,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL var contentRef = TestContent.CreateRef(schemaRefId1, contentRefId, "ref1-field", "ref1"); var contentId = DomainId.NewGuid(); - var content = TestContent.Create(schemaId, contentId, contentRefId, DomainId.Empty); + var content = TestContent.Create(appId, schemaId, contentId, contentRefId, DomainId.Empty); var query = @" query { @@ -466,7 +466,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL var contentRef = TestContent.CreateRef(schemaRefId1, contentRefId, "ref1-field", "ref1"); var contentId = DomainId.NewGuid(); - var content = TestContent.Create(schemaId, contentId, contentRefId, DomainId.Empty); + var content = TestContent.Create(appId, schemaId, contentId, contentRefId, DomainId.Empty); var query = @" query { @@ -539,10 +539,10 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL public async Task Should_also_fetch_referenced_assets_when_field_is_included_in_query() { var assetRefId = DomainId.NewGuid(); - var assetRef = TestAsset.Create(assetRefId); + var assetRef = TestAsset.Create(appId, assetRefId); var contentId = DomainId.NewGuid(); - var content = TestContent.Create(schemaId, contentId, DomainId.Empty, assetRefId); + var content = TestContent.Create(appId, schemaId, contentId, DomainId.Empty, assetRefId); var query = @" query { @@ -598,8 +598,8 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL { var assetId1 = DomainId.NewGuid(); var assetId2 = DomainId.NewGuid(); - var asset1 = TestAsset.Create(assetId1); - var asset2 = TestAsset.Create(assetId2); + var asset1 = TestAsset.Create(appId, assetId1); + var asset2 = TestAsset.Create(appId, assetId2); var query1 = @" query { @@ -653,7 +653,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL public async Task Should_not_return_data_when_field_not_part_of_content() { var contentId = DomainId.NewGuid(); - var content = TestContent.Create(schemaId, contentId, DomainId.Empty, DomainId.Empty, new NamedContentData()); + var content = TestContent.Create(appId, schemaId, contentId, DomainId.Empty, DomainId.Empty, new NamedContentData()); var query = @" query { diff --git a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/TestAsset.cs b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/TestAsset.cs index a6620b6cc..155b4f123 100644 --- a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/TestAsset.cs +++ b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/TestAsset.cs @@ -42,13 +42,14 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL metadata slug"; - public static IEnrichedAssetEntity Create(DomainId id) + public static IEnrichedAssetEntity Create(NamedId appId, DomainId id) { var now = SystemClock.Instance.GetCurrentInstant(); var asset = new AssetEntity { Id = id, + AppId = appId, Version = 1, Created = now, CreatedBy = new RefToken(RefTokenType.Subject, "user1"), @@ -86,8 +87,8 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL createdBy = asset.CreatedBy.ToString(), lastModified = asset.LastModified, lastModifiedBy = asset.LastModifiedBy.ToString(), - url = $"assets/{asset.Id}", - thumbnailUrl = $"assets/{asset.Id}?width=100", + url = $"assets/{asset.AppId.Name}/{asset.Id}", + thumbnailUrl = $"assets/{asset.AppId.Name}/{asset.Id}?width=100", sourceUrl = $"assets/source/{asset.Id}", mimeType = asset.MimeType, fileName = asset.FileName, diff --git a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/TestContent.cs b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/TestContent.cs index 8462d5305..b481d48aa 100644 --- a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/TestContent.cs +++ b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/TestContent.cs @@ -68,7 +68,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL } }"; - public static IEnrichedContentEntity Create(NamedId schemaId, DomainId id, DomainId refId, DomainId assetId, NamedContentData? data = null) + public static IEnrichedContentEntity Create(NamedId appId, NamedId schemaId, DomainId id, DomainId refId, DomainId assetId, NamedContentData? data = null) { var now = SystemClock.Instance.GetCurrentInstant(); @@ -131,6 +131,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL var content = new ContentEntity { Id = id, + AppId = appId, Version = 1, Created = now, CreatedBy = new RefToken(RefTokenType.Subject, "user1"), diff --git a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Queries/ResolveAssetsTests.cs b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Queries/ResolveAssetsTests.cs index 041bc63b9..eec644181 100644 --- a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Queries/ResolveAssetsTests.cs +++ b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Queries/ResolveAssetsTests.cs @@ -53,8 +53,8 @@ namespace Squidex.Domain.Apps.Entities.Contents.Queries }) .SetFieldsInLists("asset1", "asset2"); - A.CallTo(() => urlGenerator.AssetContent(appId, A._)) - .ReturnsLazily(ctx => $"url/to/{ctx.GetArgument(1)}"); + A.CallTo(() => urlGenerator.AssetContent(appId, A._)) + .ReturnsLazily(ctx => $"url/to/{ctx.GetArgument(1)}"); schemaProvider = x => { diff --git a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/TestData/FakeUrlGenerator.cs b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/TestData/FakeUrlGenerator.cs index bfd4845ea..d54d4210d 100644 --- a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/TestData/FakeUrlGenerator.cs +++ b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/TestData/FakeUrlGenerator.cs @@ -16,9 +16,9 @@ namespace Squidex.Domain.Apps.Entities.Contents.TestData { public bool CanGenerateAssetSourceUrl { get; } = true; - public string? AssetThumbnail(NamedId appId, DomainId assetId, AssetType assetType) + public string? AssetThumbnail(NamedId appId, string idOrSlug, AssetType assetType) { - return $"assets/{assetId}?width=100"; + return $"assets/{appId.Name}/{idOrSlug}?width=100"; } public string? AssetSource(NamedId appId, DomainId assetId, long fileVersion) @@ -26,9 +26,9 @@ namespace Squidex.Domain.Apps.Entities.Contents.TestData return $"assets/source/{assetId}"; } - public string AssetContent(NamedId appId, DomainId assetId) + public string AssetContent(NamedId appId, string idOrSlug) { - return $"assets/{assetId}"; + return $"assets/{appId.Name}/{idOrSlug}"; } public string ContentUI(NamedId appId, NamedId schemaId, DomainId contentId) @@ -41,11 +41,6 @@ namespace Squidex.Domain.Apps.Entities.Contents.TestData throw new NotSupportedException(); } - public string AssetsUI(NamedId appId) - { - throw new NotSupportedException(); - } - public string AssetsUI(NamedId appId, string? query = null) { throw new NotSupportedException(); diff --git a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Rules/RuleDomainObjectTests.cs b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Rules/RuleDomainObjectTests.cs index 4171677b5..0664fac76 100644 --- a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Rules/RuleDomainObjectTests.cs +++ b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Rules/RuleDomainObjectTests.cs @@ -164,7 +164,7 @@ namespace Squidex.Domain.Apps.Entities.Rules Assert.Null(result); - A.CallTo(() => ruleEnqueuer.Enqueue(sut.Snapshot.RuleDef, sut.Snapshot.Id, + A.CallTo(() => ruleEnqueuer.EnqueueAsync(sut.Snapshot.RuleDef, sut.UniqueId, A>.That.Matches(x => x.Payload is RuleManuallyTriggered))) .MustHaveHappened(); } diff --git a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Rules/RuleEnqueuerTests.cs b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Rules/RuleEnqueuerTests.cs index 3c4313ea5..bfc54d65e 100644 --- a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Rules/RuleEnqueuerTests.cs +++ b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Rules/RuleEnqueuerTests.cs @@ -86,13 +86,10 @@ namespace Squidex.Domain.Apps.Entities.Rules A.CallTo(() => ruleService.CreateJobsAsync(rule.RuleDef, rule.Id, @event, true)) .Returns(new List<(RuleJob, Exception?)> { (job, null) }); - await sut.Enqueue(rule.RuleDef, rule.Id, @event); + await sut.EnqueueAsync(rule.RuleDef, rule.Id, @event); A.CallTo(() => ruleEventRepository.EnqueueAsync(job, now, default)) .MustHaveHappened(); - - A.CallTo(() => localCache.StartContext()) - .MustHaveHappened(); } [Fact] diff --git a/backend/tests/Squidex.Infrastructure.Tests/Orleans/AsyncLocalTests.cs b/backend/tests/Squidex.Infrastructure.Tests/Orleans/AsyncLocalTests.cs new file mode 100644 index 000000000..90a632d84 --- /dev/null +++ b/backend/tests/Squidex.Infrastructure.Tests/Orleans/AsyncLocalTests.cs @@ -0,0 +1,60 @@ +// ========================================================================== +// Squidex Headless CMS +// ========================================================================== +// Copyright (c) Squidex UG (haftungsbeschraenkt) +// All rights reserved. Licensed under the MIT license. +// ========================================================================== + +using System.Threading; +using System.Threading.Tasks; +using Orleans; +using Orleans.TestingHost; +using Xunit; + +namespace Squidex.Infrastructure.Orleans +{ + [Trait("Category", "Dependencies")] + public class AsyncLocalTests + { + public interface IAsyncLocalGrain : IGrainWithStringKey + { + public Task GetValueAsync(); + } + + public class AsyncLocalGrain : Grain, IAsyncLocalGrain + { + private readonly AsyncLocal temp = new AsyncLocal(); + + public Task GetValueAsync() + { + temp.Value++; + + return Task.FromResult(temp.Value); + } + } + + [Fact] + public async Task Should_use_async_local() + { + var cluster = + new TestClusterBuilder(1) + .Build(); + + await cluster.DeployAsync(); + + var grain = cluster.GrainFactory.GetGrain(SingleGrain.Id); + + var result1 = await grain.GetValueAsync(); + var result2 = await grain.GetValueAsync(); + + await cluster.KillSiloAsync(cluster.Silos[0]); + await cluster.StartAdditionalSiloAsync(); + + var result3 = await grain.GetValueAsync(); + + Assert.Equal(1, result1); + Assert.Equal(1, result2); + Assert.Equal(1, result3); + } + } +} diff --git a/frontend/app/features/content/declarations.ts b/frontend/app/features/content/declarations.ts index 2245c5082..7b1c41dcf 100644 --- a/frontend/app/features/content/declarations.ts +++ b/frontend/app/features/content/declarations.ts @@ -16,6 +16,7 @@ export * from './pages/contents/contents-filters-page.component'; export * from './pages/contents/contents-page.component'; export * from './pages/contents/custom-view-editor.component'; export * from './pages/schemas/schemas-page.component'; +export * from './pages/sidebar/sidebar-page.component'; export * from './shared/content-status.component'; export * from './shared/due-time-selector.component'; export * from './shared/forms/array-editor.component'; diff --git a/frontend/app/features/content/module.ts b/frontend/app/features/content/module.ts index a16823683..4848f56f9 100644 --- a/frontend/app/features/content/module.ts +++ b/frontend/app/features/content/module.ts @@ -10,7 +10,7 @@ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; import { CanDeactivateGuard, ContentMustExistGuard, LoadLanguagesGuard, SchemaMustExistPublishedGuard, SchemaMustNotBeSingletonGuard, SqxFrameworkModule, SqxSharedModule, UnsetContentGuard } from '@app/shared'; -import { ArrayEditorComponent, ArrayItemComponent, ArraySectionComponent, AssetsEditorComponent, CommentsPageComponent, ContentComponent, ContentCreatorComponent, ContentEventComponent, ContentFieldComponent, ContentHistoryPageComponent, ContentListCellDirective, ContentListFieldComponent, ContentListHeaderComponent, ContentListWidthPipe, ContentPageComponent, ContentSectionComponent, ContentSelectorComponent, ContentSelectorItemComponent, ContentsFiltersPageComponent, ContentsPageComponent, ContentStatusComponent, ContentValueComponent, ContentValueEditorComponent, CustomViewEditorComponent, DueTimeSelectorComponent, FieldEditorComponent, FieldLanguagesComponent, PreviewButtonComponent, ReferenceItemComponent, ReferencesEditorComponent, SchemasPageComponent, StockPhotoEditorComponent } from './declarations'; +import { ArrayEditorComponent, ArrayItemComponent, ArraySectionComponent, AssetsEditorComponent, CommentsPageComponent, ContentComponent, ContentCreatorComponent, ContentEventComponent, ContentFieldComponent, ContentHistoryPageComponent, ContentListCellDirective, ContentListFieldComponent, ContentListHeaderComponent, ContentListWidthPipe, ContentPageComponent, ContentSectionComponent, ContentSelectorComponent, ContentSelectorItemComponent, ContentsFiltersPageComponent, ContentsPageComponent, ContentStatusComponent, ContentValueComponent, ContentValueEditorComponent, CustomViewEditorComponent, DueTimeSelectorComponent, FieldEditorComponent, FieldLanguagesComponent, PreviewButtonComponent, ReferenceItemComponent, ReferencesEditorComponent, SchemasPageComponent, SidebarPageComponent, StockPhotoEditorComponent } from './declarations'; const routes: Routes = [ { @@ -28,12 +28,16 @@ const routes: Routes = [ { path: '', component: ContentsPageComponent, - canActivate: [SchemaMustNotBeSingletonGuard], + canActivate: [SchemaMustNotBeSingletonGuard, UnsetContentGuard], canDeactivate: [CanDeactivateGuard], children: [ { path: 'filters', component: ContentsFiltersPageComponent + }, + { + path: 'sidebar', + component: SidebarPageComponent } ] }, @@ -59,7 +63,11 @@ const routes: Routes = [ { path: 'comments', component: CommentsPageComponent - } + }, + { + path: 'sidebar', + component: SidebarPageComponent + } ] } ] @@ -105,6 +113,7 @@ const routes: Routes = [ ReferenceItemComponent, ReferencesEditorComponent, SchemasPageComponent, + SidebarPageComponent, StockPhotoEditorComponent ] }) diff --git a/frontend/app/features/content/pages/comments/comments-page.component.html b/frontend/app/features/content/pages/comments/comments-page.component.html index 5a63794b5..d3d658289 100644 --- a/frontend/app/features/content/pages/comments/comments-page.component.html +++ b/frontend/app/features/content/pages/comments/comments-page.component.html @@ -1 +1,9 @@ - \ No newline at end of file + + + {{ 'comments.title' | sqxTranslate }} + + + + + + \ No newline at end of file diff --git a/frontend/app/features/content/pages/content/content-field.component.ts b/frontend/app/features/content/pages/content/content-field.component.ts index 2857e5b69..05181c54c 100644 --- a/frontend/app/features/content/pages/content/content-field.component.ts +++ b/frontend/app/features/content/pages/content/content-field.component.ts @@ -7,8 +7,8 @@ import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core'; import { AppLanguageDto, AppsState, EditContentForm, FieldForm, invalid$, LocalStoreService, SchemaDto, Settings, StringFieldPropertiesDto, TranslationsService, Types, value$ } from '@app/shared'; -import { Observable } from 'rxjs'; -import { combineLatest } from 'rxjs/operators'; +import { combineLatest, Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; @Component({ selector: 'sqx-content-field', @@ -78,9 +78,10 @@ export class ContentFieldComponent implements OnChanges { if ((changes['formModel'] || changes['formModelCompare']) && this.formModelCompare) { this.isDifferent = - value$(this.formModel.form).pipe( - combineLatest(value$(this.formModelCompare!.form), - (lhs, rhs) => !Types.equals(lhs, rhs, true))); + combineLatest([ + value$(this.formModel.form), + value$(this.formModelCompare!.form) + ]).pipe(map(([lhs, rhs]) => !Types.equals(lhs, rhs, true))); } } diff --git a/frontend/app/features/content/pages/content/content-history-page.component.html b/frontend/app/features/content/pages/content/content-history-page.component.html index 954456e14..9b009c7f1 100644 --- a/frontend/app/features/content/pages/content/content-history-page.component.html +++ b/frontend/app/features/content/pages/content/content-history-page.component.html @@ -36,7 +36,8 @@ + confirmText="i18n:contents.deleteVersionConfirmText" + confirmRememberKey="deleteDraft"> {{ 'contents.versionDelete' | sqxTranslate }} @@ -45,7 +46,8 @@ + confirmText="i18n:contents.deleteConfirmText" + confirmRememberKey="deleteContent"> {{ 'common.delete' | sqxTranslate }} @@ -85,7 +87,8 @@ + confirmText="i18n:contents.deleteConfirmText" + confirmRememberKey="deleteContent"> {{ 'common.delete' | sqxTranslate }} diff --git a/frontend/app/features/content/pages/content/content-page.component.html b/frontend/app/features/content/pages/content/content-page.component.html index 03e956b27..98f4b25ef 100644 --- a/frontend/app/features/content/pages/content/content-page.component.html +++ b/frontend/app/features/content/pages/content/content-page.component.html @@ -36,7 +36,8 @@ + confirmText="i18n:contents.deleteConfirmText" + confirmRememberKey="deleteContent"> {{ 'common.delete' | sqxTranslate }} @@ -104,6 +105,10 @@ + + + + {{ 'common.sidebarTour' | sqxTranslate }} diff --git a/frontend/app/features/content/pages/content/content-page.component.ts b/frontend/app/features/content/pages/content/content-page.component.ts index a88859e67..7947d9bd8 100644 --- a/frontend/app/features/content/pages/content/content-page.component.ts +++ b/frontend/app/features/content/pages/content/content-page.component.ts @@ -9,9 +9,9 @@ import { Component, OnInit } from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; -import { ApiUrlConfig, AppLanguageDto, AuthService, AutoSaveKey, AutoSaveService, CanComponentDeactivate, ContentDto, ContentsState, DialogService, EditContentForm, fadeAnimation, FieldForm, FieldSection, LanguagesState, ModalModel, ResourceOwner, RootFieldDto, SchemaDetailsDto, SchemasState, TempService, valueAll$, Version } from '@app/shared'; +import { ApiUrlConfig, AppLanguageDto, AppsState, AuthService, AutoSaveKey, AutoSaveService, CanComponentDeactivate, ContentDto, ContentsState, DialogService, EditContentForm, fadeAnimation, FieldForm, FieldSection, LanguagesState, ModalModel, ResourceOwner, RootFieldDto, SchemaDetailsDto, SchemasState, TempService, valueAll$, Version } from '@app/shared'; import { Observable, of } from 'rxjs'; -import { debounceTime, filter, onErrorResumeNext, tap } from 'rxjs/operators'; +import { debounceTime, filter, tap } from 'rxjs/operators'; @Component({ selector: 'sqx-content-page', @@ -39,7 +39,7 @@ export class ContentPageComponent extends ResourceOwner implements CanComponentD public language: AppLanguageDto; public languages: ReadonlyArray; - constructor(apiUrl: ApiUrlConfig, authService: AuthService, + constructor(apiUrl: ApiUrlConfig, authService: AuthService, appsState: AppsState, public readonly contentsState: ContentsState, private readonly autoSaveService: AutoSaveService, private readonly dialogs: DialogService, @@ -51,7 +51,12 @@ export class ContentPageComponent extends ResourceOwner implements CanComponentD ) { super(); - this.formContext = { user: authService.user, apiUrl: apiUrl.buildUrl('api') }; + this.formContext = { + apiUrl: apiUrl.buildUrl('api'), + appId: appsState.snapshot.selectedApp!.id, + appName: appsState.snapshot.selectedApp!.name, + user: authService.user + }; } public ngOnInit() { @@ -187,10 +192,7 @@ export class ContentPageComponent extends ResourceOwner implements CanComponentD const content = this.content; if (content) { - this.contentsState.deleteMany([content]).pipe(onErrorResumeNext()) - .subscribe(() => { - this.back(); - }); + this.contentsState.deleteMany([content]); } } diff --git a/frontend/app/features/content/pages/contents/contents-page.component.html b/frontend/app/features/content/pages/contents/contents-page.component.html index 8dc4ecce3..40f51bffb 100644 --- a/frontend/app/features/content/pages/contents/contents-page.component.html +++ b/frontend/app/features/content/pages/contents/contents-page.component.html @@ -55,7 +55,8 @@ @@ -130,6 +131,10 @@ + + + + diff --git a/frontend/app/features/content/pages/contents/contents-page.component.ts b/frontend/app/features/content/pages/contents/contents-page.component.ts index f69c41cef..ee362526d 100644 --- a/frontend/app/features/content/pages/contents/contents-page.component.ts +++ b/frontend/app/features/content/pages/contents/contents-page.component.ts @@ -65,17 +65,17 @@ export class ContentsPageComponent extends ResourceOwner implements OnInit { public ngOnInit() { this.own( - combineLatest( + combineLatest([ this.schemasState.selectedSchema, this.languagesState.languages, this.contentsState.statuses - ).subscribe(([schema, languages, statuses]) => { + ]).subscribe(([schema, languages, statuses]) => { this.queryModel = queryModelFromSchema(schema, languages.map(x => x.language), statuses); })); this.own( this.route.params.pipe( - switchMap(x => this.schemasState.selectedSchema), distinctUntilChanged()) + switchMap(() => this.schemasState.selectedSchema), distinctUntilChanged()) .subscribe(schema => { this.resetSelection(); @@ -202,8 +202,10 @@ export class ContentsPageComponent extends ResourceOwner implements OnInit { this.selectionCount++; for (const action in this.nextStatuses) { - if (!content.statusUpdates.find(x => x.status === action)) { - delete this.nextStatuses[action]; + if (this.nextStatuses.hasOwnProperty(action)) { + if (!content.statusUpdates.find(x => x.status === action)) { + delete this.nextStatuses[action]; + } } } diff --git a/frontend/app/features/content/pages/sidebar/sidebar-page.component.html b/frontend/app/features/content/pages/sidebar/sidebar-page.component.html new file mode 100644 index 000000000..f8a1476f9 --- /dev/null +++ b/frontend/app/features/content/pages/sidebar/sidebar-page.component.html @@ -0,0 +1,15 @@ + + + {{ 'common.sidebar' | sqxTranslate }} + + + +
+ +
+
+
+ + + + diff --git a/frontend/app/features/content/pages/sidebar/sidebar-page.component.scss b/frontend/app/features/content/pages/sidebar/sidebar-page.component.scss new file mode 100644 index 000000000..ae2678456 --- /dev/null +++ b/frontend/app/features/content/pages/sidebar/sidebar-page.component.scss @@ -0,0 +1,5 @@ +iframe { + background: 0; + border: 0; + overflow: hidden; +} \ No newline at end of file diff --git a/frontend/app/features/content/pages/sidebar/sidebar-page.component.ts b/frontend/app/features/content/pages/sidebar/sidebar-page.component.ts new file mode 100644 index 000000000..e54fee3d8 --- /dev/null +++ b/frontend/app/features/content/pages/sidebar/sidebar-page.component.ts @@ -0,0 +1,113 @@ +/* + * Squidex Headless CMS + * + * @license + * Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. + */ + +import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, Renderer2, ViewChild } from '@angular/core'; +import { Router } from '@angular/router'; +import { ApiUrlConfig, ResourceOwner, Types } from '@app/framework/internal'; +import { AppsState, AuthService, ContentsState, SchemasState } from '@app/shared'; +import { combineLatest } from 'rxjs'; + +@Component({ + selector: 'sqx-sidebar-page', + styleUrls: ['./sidebar-page.component.scss'], + templateUrl: './sidebar-page.component.html', + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class SidebarPageComponent extends ResourceOwner implements AfterViewInit { + private readonly context: any; + private content: any; + private isInitialized = false; + + @ViewChild('iframe', { static: false }) + public iframe: ElementRef; + + constructor(apiUrl: ApiUrlConfig, authService: AuthService, appsState: AppsState, + private readonly contentsState: ContentsState, + private readonly schemasState: SchemasState, + private readonly renderer: Renderer2, + private readonly router: Router + ) { + super(); + + this.context = { + apiUrl: apiUrl.buildUrl('api'), + appId: appsState.snapshot.selectedApp!.id, + appName: appsState.snapshot.selectedApp!.name, + user: authService.user + }; + } + + public ngAfterViewInit() { + this.own( + combineLatest([ + this.schemasState.selectedSchema, + this.contentsState.selectedContent + ]).subscribe(([schema, content]) => { + const url = + content ? + schema.properties.contentSidebarUrl : + schema.properties.contentsSidebarUrl; + + this.context['schemaName'] = schema.name; + this.context['schemaId'] = schema.id; + + this.iframe.nativeElement.src = url || ''; + })); + + this.own( + this.contentsState.selectedContent + .subscribe(content => { + this.content = content; + + this.sendContent(); + })); + + this.own( + this.renderer.listen('window', 'message', (event: MessageEvent) => { + if (event.source === this.iframe.nativeElement.contentWindow) { + const { type } = event.data; + + if (type === 'started') { + this.isInitialized = true; + + this.sendInit(); + this.sendContent(); + } else if (type === 'resize') { + const { height } = event.data; + + this.iframe.nativeElement.height = height + 'px'; + } else if (type === 'navigate') { + const { url } = event.data; + + this.router.navigateByUrl(url); + } + } + })); + } + + private sendInit() { + this.sendMessage('init', { context: this.context }); + } + + private sendContent() { + this.sendMessage('contentChanged', { content: this.content }); + } + + private sendMessage(type: string, payload: any) { + if (!this.iframe) { + return; + } + + const iframe = this.iframe.nativeElement; + + if (this.isInitialized && iframe.contentWindow && Types.isFunction(iframe.contentWindow.postMessage)) { + const message = { type, ...payload }; + + iframe.contentWindow.postMessage(message, '*'); + } + } +} \ No newline at end of file diff --git a/frontend/app/features/content/shared/due-time-selector.component.ts b/frontend/app/features/content/shared/due-time-selector.component.ts index 0c1abfa79..0aaeac08a 100644 --- a/frontend/app/features/content/shared/due-time-selector.component.ts +++ b/frontend/app/features/content/shared/due-time-selector.component.ts @@ -17,7 +17,7 @@ const OPTION_IMMEDIATELY = 'Immediately'; templateUrl: './due-time-selector.component.html' }) export class DueTimeSelectorComponent { - private disabled: boolean; + private readonly disabled: boolean; private dueTimeResult: Subject; public dueTimeDialog = new DialogModel(); diff --git a/frontend/app/features/content/shared/forms/array-editor.component.html b/frontend/app/features/content/shared/forms/array-editor.component.html index 864b63810..9c760a428 100644 --- a/frontend/app/features/content/shared/forms/array-editor.component.html +++ b/frontend/app/features/content/shared/forms/array-editor.component.html @@ -1,43 +1,47 @@ -
-
- - - + +
+
+ + + +
-
-
-
- +
+
+ +
+ +
+ + +
+ -
- - -
-
- - - {{ 'contents.arrayNoFields' | sqxTranslate }} - \ No newline at end of file + + + {{ 'contents.arrayNoFields' | sqxTranslate }} + + \ No newline at end of file diff --git a/frontend/app/features/content/shared/forms/array-editor.component.ts b/frontend/app/features/content/shared/forms/array-editor.component.ts index f81c6b3af..1e59e0f22 100644 --- a/frontend/app/features/content/shared/forms/array-editor.component.ts +++ b/frontend/app/features/content/shared/forms/array-editor.component.ts @@ -6,8 +6,8 @@ */ import { CdkDragDrop } from '@angular/cdk/drag-drop'; -import { ChangeDetectionStrategy, Component, Input, QueryList, ViewChildren } from '@angular/core'; -import { AppLanguageDto, EditContentForm, FieldArrayForm, FieldArrayItemForm, sorted } from '@app/shared'; +import { ChangeDetectionStrategy, Component, Input, OnChanges, QueryList, SimpleChanges, ViewChildren } from '@angular/core'; +import { AppLanguageDto, ArrayFieldPropertiesDto, EditContentForm, FieldArrayForm, FieldArrayItemForm, sorted } from '@app/shared'; import { ArrayItemComponent } from './array-item.component'; @Component({ @@ -16,7 +16,7 @@ import { ArrayItemComponent } from './array-item.component'; templateUrl: './array-editor.component.html', changeDetection: ChangeDetectionStrategy.OnPush }) -export class ArrayEditorComponent { +export class ArrayEditorComponent implements OnChanges { @Input() public form: EditContentForm; @@ -38,10 +38,28 @@ export class ArrayEditorComponent { @ViewChildren(ArrayItemComponent) public children: QueryList; + public maxItems: number; + public get field() { return this.formModel.field; } + public get hasFields() { + return this.field.nested.length > 0; + } + + public get canAdd() { + return this.formModel.items.length < this.maxItems; + } + + public ngOnChanges(changes: SimpleChanges) { + if (changes['formModel']) { + const properties = this.field.properties as ArrayFieldPropertiesDto; + + this.maxItems = properties.maxItems || Number.MAX_VALUE; + } + } + public itemRemove(index: number) { this.formModel.removeItemAt(index); } diff --git a/frontend/app/features/content/shared/list/content.component.html b/frontend/app/features/content/shared/list/content.component.html index cdef0e7cd..816bb890b 100644 --- a/frontend/app/features/content/shared/list/content.component.html +++ b/frontend/app/features/content/shared/list/content.component.html @@ -41,7 +41,8 @@ + confirmText="i18n:contents.deleteConfirmText" + confirmRememberKey="deleteContent"> {{ 'common.delete' | sqxTranslate }}
diff --git a/frontend/app/features/content/shared/references/reference-item.component.html b/frontend/app/features/content/shared/references/reference-item.component.html index 83a1667e8..03e68b105 100644 --- a/frontend/app/features/content/shared/references/reference-item.component.html +++ b/frontend/app/features/content/shared/references/reference-item.component.html @@ -29,7 +29,8 @@
diff --git a/frontend/app/features/dashboard/pages/dashboard-config.component.html b/frontend/app/features/dashboard/pages/dashboard-config.component.html index 98f186417..d3784d209 100644 --- a/frontend/app/features/dashboard/pages/dashboard-config.component.html +++ b/frontend/app/features/dashboard/pages/dashboard-config.component.html @@ -26,7 +26,8 @@ + confirmText="i18n:dashboard.resetConfigConfirmText" + confirmRememberKey="resetConfig"> {{ 'common.reset' | sqxTranslate }} diff --git a/frontend/app/features/rules/pages/rules/actions/generic-action.component.html b/frontend/app/features/rules/pages/rules/actions/generic-action.component.html index 038c5d184..a3fca239d 100644 --- a/frontend/app/features/rules/pages/rules/actions/generic-action.component.html +++ b/frontend/app/features/rules/pages/rules/actions/generic-action.component.html @@ -13,8 +13,8 @@
- -
diff --git a/frontend/app/features/rules/pages/rules/rule.component.html b/frontend/app/features/rules/pages/rules/rule.component.html index af003078c..c8ce33832 100644 --- a/frontend/app/features/rules/pages/rules/rule.component.html +++ b/frontend/app/features/rules/pages/rules/rule.component.html @@ -20,14 +20,16 @@ + confirmText="i18n:rules.runRuleConfirmText" + confirmRememberKey="runRule"> {{ 'rules.run' | sqxTranslate }} + confirmText="i18n:rules.deleteConfirmText" + confirmRememberKey="deleteContent"> {{ 'common.delete' | sqxTranslate }} @@ -58,7 +60,8 @@
diff --git a/frontend/app/features/rules/pages/rules/rules-page.component.html b/frontend/app/features/rules/pages/rules/rules-page.component.html index 6a86d80f2..d7a77c019 100644 --- a/frontend/app/features/rules/pages/rules/rules-page.component.html +++ b/frontend/app/features/rules/pages/rules/rules-page.component.html @@ -71,11 +71,9 @@ +
+ + + + + + + {{ 'schemas.contentsSidebarUrl' | sqxTranslate }} +
+ +
+ + + + + + + {{ 'schemas.contentSidebarUrlHint' | sqxTranslate }} +
+
diff --git a/frontend/app/features/schemas/pages/schema/fields/field.component.html b/frontend/app/features/schemas/pages/schema/fields/field.component.html index 12c15e90e..cddad0626 100644 --- a/frontend/app/features/schemas/pages/schema/fields/field.component.html +++ b/frontend/app/features/schemas/pages/schema/fields/field.component.html @@ -69,7 +69,8 @@ + confirmText="i18n:schemas.field.lockConfirmText" + confirmRememberKey="lockField"> {{ 'schemas.field.lock' | sqxTranslate }} @@ -80,7 +81,8 @@ + confirmText="i18n:schemas.field.deleteConfirmText" + confirmRememberKey="deleteField"> {{ 'common.delete' | sqxTranslate }} diff --git a/frontend/app/features/schemas/pages/schema/fields/forms/field-form-ui.component.html b/frontend/app/features/schemas/pages/schema/fields/forms/field-form-ui.component.html index e8e41106b..5b6edff4c 100644 --- a/frontend/app/features/schemas/pages/schema/fields/forms/field-form-ui.component.html +++ b/frontend/app/features/schemas/pages/schema/fields/forms/field-form-ui.component.html @@ -3,7 +3,7 @@
- + {{ 'schemas.field.editorUrlHint' | sqxTranslate }} diff --git a/frontend/app/features/schemas/pages/schema/preview/schema-preview-urls-form.component.html b/frontend/app/features/schemas/pages/schema/preview/schema-preview-urls-form.component.html index f5924e9e0..8b832f51f 100644 --- a/frontend/app/features/schemas/pages/schema/preview/schema-preview-urls-form.component.html +++ b/frontend/app/features/schemas/pages/schema/preview/schema-preview-urls-form.component.html @@ -29,7 +29,8 @@
diff --git a/frontend/app/features/schemas/pages/schema/preview/schema-preview-urls-form.component.ts b/frontend/app/features/schemas/pages/schema/preview/schema-preview-urls-form.component.ts index 102b2b80d..0576086dd 100644 --- a/frontend/app/features/schemas/pages/schema/preview/schema-preview-urls-form.component.ts +++ b/frontend/app/features/schemas/pages/schema/preview/schema-preview-urls-form.component.ts @@ -48,7 +48,7 @@ export class SchemaPreviewUrlsFormComponent implements OnChanges { if (value) { this.schemasState.configurePreviewUrls(this.schema, value) - .subscribe(update => { + .subscribe(() => { this.editForm.submitCompleted({ noReset: true }); }, error => { this.editForm.submitFailed(error); diff --git a/frontend/app/features/schemas/pages/schema/rules/schema-field-rules-form.component.html b/frontend/app/features/schemas/pages/schema/rules/schema-field-rules-form.component.html index 463d50bc6..14434ba82 100644 --- a/frontend/app/features/schemas/pages/schema/rules/schema-field-rules-form.component.html +++ b/frontend/app/features/schemas/pages/schema/rules/schema-field-rules-form.component.html @@ -39,7 +39,8 @@
diff --git a/frontend/app/features/schemas/pages/schema/schema-page.component.html b/frontend/app/features/schemas/pages/schema/schema-page.component.html index 295baacf5..af9467156 100644 --- a/frontend/app/features/schemas/pages/schema/schema-page.component.html +++ b/frontend/app/features/schemas/pages/schema/schema-page.component.html @@ -40,7 +40,8 @@ + confirmText="i18n:schemas.deleteConfirmText" + confirmRememberKey="deleteSchema"> {{ 'common.delete' | sqxTranslate }}
diff --git a/frontend/app/features/settings/pages/backups/backup.component.html b/frontend/app/features/settings/pages/backups/backup.component.html index c4b8cdfe8..5068bc9a7 100644 --- a/frontend/app/features/settings/pages/backups/backup.component.html +++ b/frontend/app/features/settings/pages/backups/backup.component.html @@ -40,7 +40,8 @@ diff --git a/frontend/app/features/settings/pages/clients/client.component.html b/frontend/app/features/settings/pages/clients/client.component.html index 4b3eecec9..1c7a8c04c 100644 --- a/frontend/app/features/settings/pages/clients/client.component.html +++ b/frontend/app/features/settings/pages/clients/client.component.html @@ -12,7 +12,8 @@ diff --git a/frontend/app/features/settings/pages/contributors/contributor.component.html b/frontend/app/features/settings/pages/contributors/contributor.component.html index f047c4879..c26bfde61 100644 --- a/frontend/app/features/settings/pages/contributors/contributor.component.html +++ b/frontend/app/features/settings/pages/contributors/contributor.component.html @@ -14,7 +14,8 @@ diff --git a/frontend/app/features/settings/pages/contributors/import-contributors-dialog.component.ts b/frontend/app/features/settings/pages/contributors/import-contributors-dialog.component.ts index 0cb034bd6..4b8d4f678 100644 --- a/frontend/app/features/settings/pages/contributors/import-contributors-dialog.component.ts +++ b/frontend/app/features/settings/pages/contributors/import-contributors-dialog.component.ts @@ -8,7 +8,7 @@ import { Component, EventEmitter, Input, Output } from '@angular/core'; import { FormBuilder } from '@angular/forms'; import { ContributorsState, ErrorDto, ImportContributorsForm, RoleDto } from '@app/shared'; -import { empty, of } from 'rxjs'; +import { EMPTY, of } from 'rxjs'; import { catchError, mergeMap, tap } from 'rxjs/operators'; type ImportStatus = { @@ -79,7 +79,7 @@ export class ImportContributorsDialogComponent { status.result = 'Failed'; } - return empty(); + return EMPTY; }) ), 1) ).subscribe(); diff --git a/frontend/app/features/settings/pages/languages/language.component.html b/frontend/app/features/settings/pages/languages/language.component.html index 219b13ce4..d23b6feeb 100644 --- a/frontend/app/features/settings/pages/languages/language.component.html +++ b/frontend/app/features/settings/pages/languages/language.component.html @@ -16,7 +16,8 @@ diff --git a/frontend/app/features/settings/pages/patterns/pattern.component.html b/frontend/app/features/settings/pages/patterns/pattern.component.html index 6944ec286..85186665d 100644 --- a/frontend/app/features/settings/pages/patterns/pattern.component.html +++ b/frontend/app/features/settings/pages/patterns/pattern.component.html @@ -27,7 +27,8 @@ diff --git a/frontend/app/features/settings/pages/plans/plan.component.html b/frontend/app/features/settings/pages/plans/plan.component.html index 388c0598c..44aa3c0dc 100644 --- a/frontend/app/features/settings/pages/plans/plan.component.html +++ b/frontend/app/features/settings/pages/plans/plan.component.html @@ -27,6 +27,7 @@ diff --git a/frontend/app/features/settings/pages/roles/role.component.ts b/frontend/app/features/settings/pages/roles/role.component.ts index 823a19df9..30bbaa136 100644 --- a/frontend/app/features/settings/pages/roles/role.component.ts +++ b/frontend/app/features/settings/pages/roles/role.component.ts @@ -59,7 +59,7 @@ export class RoleComponent implements OnChanges { public properties: {}; public propertiesSimple = SIMPLE_PROPERTIES; - public isEditing = true; + public isEditing = false; public isEditable = false; public addPermissionForm = new AddPermissionForm(this.formBuilder); diff --git a/frontend/app/features/settings/pages/workflows/workflow.component.html b/frontend/app/features/settings/pages/workflows/workflow.component.html index de30cf102..0058d3885 100644 --- a/frontend/app/features/settings/pages/workflows/workflow.component.html +++ b/frontend/app/features/settings/pages/workflows/workflow.component.html @@ -5,7 +5,11 @@ {{workflow.displayName}}
- +
@@ -17,7 +21,8 @@
@@ -62,7 +67,10 @@
- + @@ -71,7 +79,15 @@
- + diff --git a/frontend/app/shared/components/assets/asset-folder.component.html b/frontend/app/shared/components/assets/asset-folder.component.html index 079c6bf76..a6d0864e7 100644 --- a/frontend/app/shared/components/assets/asset-folder.component.html +++ b/frontend/app/shared/components/assets/asset-folder.component.html @@ -26,7 +26,8 @@ + confirmText="i18n:assets.deleteFolderConfirmText" + confirmRememberKey="deleteAssetFolder"> {{ 'common.delete' | sqxTranslate }} diff --git a/frontend/app/shared/components/assets/asset.component.html b/frontend/app/shared/components/assets/asset.component.html index 529a4f2c6..12a59f209 100644 --- a/frontend/app/shared/components/assets/asset.component.html +++ b/frontend/app/shared/components/assets/asset.component.html @@ -33,14 +33,16 @@ + confirmText="i18n:assets.deleteConfirmText" + confirmRememberKey="deleteAsset"> + confirmText="i18n:assets.removeConfirmText" + confirmRememberKey="removeAsset"> @@ -134,14 +136,16 @@ diff --git a/frontend/app/shared/components/comments/comment.component.html b/frontend/app/shared/components/comments/comment.component.html index 403732ad9..16d95918d 100644 --- a/frontend/app/shared/components/comments/comment.component.html +++ b/frontend/app/shared/components/comments/comment.component.html @@ -49,6 +49,7 @@ (sqxConfirmClick)="delete()" confirmTitle="i18n:comments.deleteConfirmTitle" confirmText="i18n:comments.deleteConfirmText" + confirmRememberKey="deleteComment" [confirmRequired]="confirmDelete"> diff --git a/frontend/app/shared/components/comments/comments.component.html b/frontend/app/shared/components/comments/comments.component.html index 7599d054c..6dd0ba859 100644 --- a/frontend/app/shared/components/comments/comments.component.html +++ b/frontend/app/shared/components/comments/comments.component.html @@ -1,27 +1,28 @@ - - - {{ 'comments.title' | sqxTranslate }} - - - - - -
-
- - -
-
- - -
-
-
- + +
+
+ + +
+
+ + +
diff --git a/frontend/app/shared/components/forms/references-checkboxes.component.ts b/frontend/app/shared/components/forms/references-checkboxes.component.ts index 40c0e63ec..ade5e5137 100644 --- a/frontend/app/shared/components/forms/references-checkboxes.component.ts +++ b/frontend/app/shared/components/forms/references-checkboxes.component.ts @@ -31,7 +31,7 @@ const NO_EMIT = { emitEvent: false }; changeDetection: ChangeDetectionStrategy.OnPush }) export class ReferencesCheckboxesComponent extends StatefulControlComponent> implements OnChanges { - private itemCount: number; + private readonly itemCount: number; private contentItems: ReadonlyArray | null = null; @Input() diff --git a/frontend/app/shared/components/forms/references-dropdown.component.ts b/frontend/app/shared/components/forms/references-dropdown.component.ts index e7e8aa2c7..4d457c460 100644 --- a/frontend/app/shared/components/forms/references-dropdown.component.ts +++ b/frontend/app/shared/components/forms/references-dropdown.component.ts @@ -38,9 +38,9 @@ const NO_EMIT = { emitEvent: false }; changeDetection: ChangeDetectionStrategy.OnPush }) export class ReferencesDropdownComponent extends StatefulControlComponent | string> implements OnChanges { + private readonly itemCount: number; private languageField: LanguageDto; private selectedId: string | undefined; - private itemCount: number; @Input() public schemaId: string; diff --git a/frontend/app/shared/components/forms/references-tags.component.ts b/frontend/app/shared/components/forms/references-tags.component.ts index a79297305..dca5d2909 100644 --- a/frontend/app/shared/components/forms/references-tags.component.ts +++ b/frontend/app/shared/components/forms/references-tags.component.ts @@ -31,7 +31,7 @@ const NO_EMIT = { emitEvent: false }; changeDetection: ChangeDetectionStrategy.OnPush }) export class ReferencesTagsComponent extends StatefulControlComponent> implements OnChanges { - private itemCount: number; + private readonly itemCount: number; private contentItems: ReadonlyArray | null = null; @Input() diff --git a/frontend/app/shared/guards/content-must-exist.guard.spec.ts b/frontend/app/shared/guards/content-must-exist.guard.spec.ts index 9dd51e1d3..a7e99b0dc 100644 --- a/frontend/app/shared/guards/content-must-exist.guard.spec.ts +++ b/frontend/app/shared/guards/content-must-exist.guard.spec.ts @@ -18,8 +18,8 @@ describe('ContentMustExistGuard', () => { } }; - let contentsState: IMock; let router: IMock; + let contentsState: IMock; let contentGuard: ContentMustExistGuard; beforeEach(() => { diff --git a/frontend/app/shared/guards/load-apps.guard.ts b/frontend/app/shared/guards/load-apps.guard.ts index ead7f12bd..7712803c3 100644 --- a/frontend/app/shared/guards/load-apps.guard.ts +++ b/frontend/app/shared/guards/load-apps.guard.ts @@ -19,6 +19,6 @@ export class LoadAppsGuard implements CanActivate { } public canActivate(): Observable { - return this.appsState.load().pipe(map(a => true)); + return this.appsState.load().pipe(map(_ => true)); } } \ No newline at end of file diff --git a/frontend/app/shared/guards/load-languages.guard.ts b/frontend/app/shared/guards/load-languages.guard.ts index 45ce8f593..c6c18e2be 100644 --- a/frontend/app/shared/guards/load-languages.guard.ts +++ b/frontend/app/shared/guards/load-languages.guard.ts @@ -19,6 +19,6 @@ export class LoadLanguagesGuard implements CanActivate { } public canActivate(): Observable { - return this.languagesState.load().pipe(map(a => true)); + return this.languagesState.load().pipe(map(_ => true)); } } \ No newline at end of file diff --git a/frontend/app/shared/interceptors/auth.interceptor.ts b/frontend/app/shared/interceptors/auth.interceptor.ts index 000d6cdce..50009ec90 100644 --- a/frontend/app/shared/interceptors/auth.interceptor.ts +++ b/frontend/app/shared/interceptors/auth.interceptor.ts @@ -9,13 +9,13 @@ import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest import { Injectable } from '@angular/core'; import { Router } from '@angular/router'; import { ApiUrlConfig, ErrorDto } from '@app/framework'; -import { empty, Observable, throwError } from 'rxjs'; +import { EMPTY, Observable, throwError } from 'rxjs'; import { catchError, switchMap, take } from 'rxjs/operators'; import { AuthService, Profile } from './../services/auth.service'; @Injectable() export class AuthInterceptor implements HttpInterceptor { - private baseUrl: string; + private readonly baseUrl: string; constructor(apiUrlConfig: ApiUrlConfig, private readonly authService: AuthService, @@ -52,7 +52,7 @@ export class AuthInterceptor implements HttpInterceptor { catchError(() => { this.authService.logoutRedirect(); - return empty(); + return EMPTY; }), switchMap(u => this.makeRequest(req, next, u))); } else if (error.status === 401 || error.status === 403) { @@ -63,7 +63,7 @@ export class AuthInterceptor implements HttpInterceptor { this.router.navigate(['/forbidden'], { replaceUrl: true }); } - return empty(); + return EMPTY; } else { return throwError(new ErrorDto(403, 'i18n:common.errorNoPermission')); } diff --git a/frontend/app/shared/services/assets.service.spec.ts b/frontend/app/shared/services/assets.service.spec.ts index edd344773..041b9beb6 100644 --- a/frontend/app/shared/services/assets.service.spec.ts +++ b/frontend/app/shared/services/assets.service.spec.ts @@ -376,9 +376,9 @@ describe('AssetsService', () => { } }; - assetsService.deleteAssetItem('my-app', resource, version).subscribe(); + assetsService.deleteAssetItem('my-app', resource, true, version).subscribe(); - const req = httpMock.expectOne('http://service/p/api/apps/my-app/assets/123'); + const req = httpMock.expectOne('http://service/p/api/apps/my-app/assets/123?checkReferrers=true'); expect(req.request.method).toEqual('DELETE'); expect(req.request.headers.get('If-Match')).toEqual(version.value); diff --git a/frontend/app/shared/services/assets.service.ts b/frontend/app/shared/services/assets.service.ts index 882f48aa1..186282208 100644 --- a/frontend/app/shared/services/assets.service.ts +++ b/frontend/app/shared/services/assets.service.ts @@ -394,10 +394,10 @@ export class AssetsService { pretifyError('i18n:assets.moveFailed')); } - public deleteAssetItem(appName: string, asset: Resource, version: Version): Observable> { + public deleteAssetItem(appName: string, asset: Resource, checkReferrers: boolean, version: Version): Observable> { const link = asset._links['delete']; - const url = this.apiUrl.buildUrl(link.href); + const url = this.apiUrl.buildUrl(link.href) + `?checkReferrers=${checkReferrers}`; return HTTP.requestVersioned(this.http, link.method, url, version).pipe( tap(() => { diff --git a/frontend/app/shared/services/contents.service.spec.ts b/frontend/app/shared/services/contents.service.spec.ts index 9beafccec..199271193 100644 --- a/frontend/app/shared/services/contents.service.spec.ts +++ b/frontend/app/shared/services/contents.service.spec.ts @@ -389,9 +389,9 @@ describe('ContentsService', () => { } }; - contentsService.deleteContent('my-app', resource, version).subscribe(); + contentsService.deleteContent('my-app', resource, true, version).subscribe(); - const req = httpMock.expectOne('http://service/p/api/content/my-app/my-schema/content1'); + const req = httpMock.expectOne('http://service/p/api/content/my-app/my-schema/content1?checkReferrers=true'); expect(req.request.method).toEqual('DELETE'); expect(req.request.headers.get('If-Match')).toEqual(version.value); diff --git a/frontend/app/shared/services/contents.service.ts b/frontend/app/shared/services/contents.service.ts index 55e49386e..c5db772f2 100644 --- a/frontend/app/shared/services/contents.service.ts +++ b/frontend/app/shared/services/contents.service.ts @@ -316,10 +316,10 @@ export class ContentsService { pretifyError(`Failed to ${status} content. Please reload.`)); } - public deleteContent(appName: string, resource: Resource, version: Version): Observable> { + public deleteContent(appName: string, resource: Resource, checkReferrers: boolean, version: Version): Observable> { const link = resource._links['delete']; - const url = this.apiUrl.buildUrl(link.href); + const url = this.apiUrl.buildUrl(link.href) + `?checkReferrers=${checkReferrers}`; return HTTP.requestVersioned(this.http, link.method, url, version).pipe( tap(() => { diff --git a/frontend/app/shared/services/schemas.service.spec.ts b/frontend/app/shared/services/schemas.service.spec.ts index 0ac097ec3..b2084aef5 100644 --- a/frontend/app/shared/services/schemas.service.spec.ts +++ b/frontend/app/shared/services/schemas.service.spec.ts @@ -613,8 +613,12 @@ describe('SchemasService', () => { lastModifiedBy: `modifier${id}`, properties: { label: `label${id}${suffix}`, - hints: `hints${id}${suffix}`, - tags: [`tags${id}${suffix}`] + contentsSidebarUrl: `url/to/contents/${id}${suffix}`, + contentSidebarUrl: `url/to/content/${id}${suffix}`, + tags: [ + `tags${id}${suffix}` + ], + hints: `hints${id}${suffix}` }, version: `${id}`, _links: { @@ -637,6 +641,8 @@ describe('SchemasService', () => { version: `${id}`, properties: { label: `label${id}${suffix}`, + contentsSidebarUrl: `url/to/contents/${id}${suffix}`, + contentSidebarUrl: `url/to/content/${id}${suffix}`, tags: [ `tags${id}${suffix}` ], @@ -811,6 +817,18 @@ describe('SchemasService', () => { } }); +function createSchemaProperties(id: number, suffix = '') { + return new SchemaPropertiesDto( + `label${id}${suffix}`, + `hints${id}${suffix}`, + `url/to/contents/${id}${suffix}`, + `url/to/content/${id}${suffix}`, + [ + `tags${id}${suffix}` + ] + ); +} + export function createSchema(id: number, suffix = '') { const links: ResourceLinks = { update: { method: 'PUT', href: `/schemas/${id}` } @@ -820,7 +838,7 @@ export function createSchema(id: number, suffix = '') { `schema-id${id}`, `schema-name${id}${suffix}`, `category${id}${suffix}`, - new SchemaPropertiesDto(`label${id}${suffix}`, `hints${id}${suffix}`, [`tags${id}${suffix}`]), + createSchemaProperties(id, suffix), id % 2 === 0, id % 3 === 0, DateTime.parseISO(`${id % 1000 + 2000}-12-12T10:10:00Z`), `creator${id}`, @@ -837,7 +855,7 @@ export function createSchemaDetails(id: number, suffix = '') { `schema-id${id}`, `schema-name${id}${suffix}`, `category${id}${suffix}`, - new SchemaPropertiesDto(`label${id}${suffix}`, `hints${id}${suffix}`, [`tags${id}${suffix}`]), + createSchemaProperties(id, suffix), id % 2 === 0, id % 3 === 0, DateTime.parseISO(`${id % 1000 + 2000}-12-12T10:10:00Z`), `creator${id}`, diff --git a/frontend/app/shared/services/schemas.service.ts b/frontend/app/shared/services/schemas.service.ts index 712d4b837..1b39a7fa1 100644 --- a/frontend/app/shared/services/schemas.service.ts +++ b/frontend/app/shared/services/schemas.service.ts @@ -323,6 +323,8 @@ export class SchemaPropertiesDto { constructor( public readonly label?: string, public readonly hints?: string, + public readonly contentsSidebarUrl?: string, + public readonly contentSidebarUrl?: string, public readonly tags?: ReadonlyArray ) { } @@ -362,6 +364,8 @@ export interface SynchronizeSchemaDto { export interface UpdateSchemaDto { readonly label?: string; readonly hints?: string; + readonly contentsSidebarUrl?: string; + readonly contentSidebarUrl?: string; readonly tags?: ReadonlyArray; } @@ -698,7 +702,7 @@ function parseSchemas(response: any) { item.id, item.name, item.category, - new SchemaPropertiesDto(item.properties.label, item.properties.hints, item.properties.tags), + parseProperties(item.properties), item.isSingleton, item.isPublished, DateTime.parseISO(item.created), item.createdBy, @@ -713,13 +717,11 @@ function parseSchemas(response: any) { function parseSchemaWithDetails(response: any) { const fields = response.fields.map((item: any) => parseField(item)); - const properties = new SchemaPropertiesDto(response.properties.label, response.properties.hints, response.properties.tags); - return new SchemaDetailsDto(response._links, response.id, response.name, response.category, - properties, + parseProperties(response.properties), response.isSingleton, response.isPublished, DateTime.parseISO(response.created), response.createdBy, @@ -733,6 +735,15 @@ function parseSchemaWithDetails(response: any) { response.previewUrls || {}); } +function parseProperties(response: any) { + return new SchemaPropertiesDto( + response.label, + response.hints, + response.contentsSidebarUrl, + response.contentSidebarUrl, + response.tags); +} + export function parseField(item: any) { const propertiesDto = createProperties( diff --git a/frontend/app/shared/services/users-provider.service.ts b/frontend/app/shared/services/users-provider.service.ts index 5901bc07d..87f29e36d 100644 --- a/frontend/app/shared/services/users-provider.service.ts +++ b/frontend/app/shared/services/users-provider.service.ts @@ -27,7 +27,7 @@ export class UsersProviderService { if (!result) { const request = this.usersService.getUser(id).pipe( - catchError(error => { + catchError(() => { return of(new UserDto('Unknown', 'Unknown')); }), publishLast()); diff --git a/frontend/app/shared/state/assets.state.spec.ts b/frontend/app/shared/state/assets.state.spec.ts index 4571ade2a..d2e75f056 100644 --- a/frontend/app/shared/state/assets.state.spec.ts +++ b/frontend/app/shared/state/assets.state.spec.ts @@ -1,3 +1,4 @@ +import { ErrorDto } from '@app/framework'; /* * Squidex Headless CMS * @@ -331,7 +332,7 @@ describe('AssetsState', () => { }); it('should remove asset from snapshot when deleted', () => { - assetsService.setup(x => x.deleteAssetItem(app, asset1, asset1.version)) + assetsService.setup(x => x.deleteAssetItem(app, asset1, true, asset1.version)) .returns(() => of(versioned(newVersion))); assetsState.deleteAsset(asset1).subscribe(); @@ -341,8 +342,37 @@ describe('AssetsState', () => { expect(assetsState.snapshot.tagsAvailable).toEqual({ shared: 1, tag2: 1 }); }); + it('should remove asset from snapshot when when referenced and not confirmed', () => { + assetsService.setup(x => x.deleteAssetItem(app, asset1, false, asset1.version)) + .returns(() => throwError(new ErrorDto(404, 'Referenced'))); + + assetsService.setup(x => x.deleteAssetItem(app, asset1, true, asset1.version)) + .returns(() => of(versioned(newVersion))); + + dialogs.setup(x => x.confirm(It.isAnyString(), It.isAnyString(), It.isAnyString())) + .returns(() => of(true)); + + assetsState.deleteAsset(asset1).subscribe(); + + expect(assetsState.snapshot.assets.length).toBe(1); + expect(assetsState.snapshot.assetsPager.numberOfItems).toBe(199); + expect(assetsState.snapshot.tagsAvailable).toEqual({ shared: 1, tag2: 1 }); + }); + + it('should not remove asset when referenced and not confirmed', () => { + assetsService.setup(x => x.deleteAssetItem(app, asset1, true, asset1.version)) + .returns(() => throwError(new ErrorDto(404, 'Referenced'))); + + dialogs.setup(x => x.confirm(It.isAnyString(), It.isAnyString(), It.isAnyString())) + .returns(() => of(false)); + + assetsState.deleteAsset(asset1).pipe(onErrorResumeNext()).subscribe(); + + expect(assetsState.snapshot.assets.length).toBe(2); + }); + it('should remove asset folder from snapshot when deleted', () => { - assetsService.setup(x => x.deleteAssetItem(app, assetFolder1, assetFolder1.version)) + assetsService.setup(x => x.deleteAssetItem(app, assetFolder1, false, assetFolder1.version)) .returns(() => of(versioned(newVersion))); assetsState.deleteAssetFolder(assetFolder1).subscribe(); diff --git a/frontend/app/shared/state/assets.state.ts b/frontend/app/shared/state/assets.state.ts index f52f93156..1db02e762 100644 --- a/frontend/app/shared/state/assets.state.ts +++ b/frontend/app/shared/state/assets.state.ts @@ -6,9 +6,9 @@ */ import { Injectable } from '@angular/core'; -import { compareStrings, DialogService, MathHelper, Pager, shareSubscribed, State, StateSynchronizer } from '@app/framework'; -import { empty, forkJoin, Observable, of, throwError } from 'rxjs'; -import { catchError, finalize, tap } from 'rxjs/operators'; +import { compareStrings, DialogService, ErrorDto, MathHelper, Pager, shareSubscribed, State, StateSynchronizer } from '@app/framework'; +import { EMPTY, forkJoin, Observable, of, throwError } from 'rxjs'; +import { catchError, finalize, switchMap, tap } from 'rxjs/operators'; import { AnnotateAssetDto, AssetDto, AssetFolderDto, AssetsService, RenameAssetFolderDto } from './../services/assets.service'; import { AppsState } from './apps.state'; import { Query, QueryFullTextSynchronizer } from './query'; @@ -274,7 +274,7 @@ export class AssetsState extends State { public moveAsset(asset: AssetDto, parentId?: string) { if (asset.parentId === parentId) { - return empty(); + return EMPTY; } this.next(s => { @@ -298,7 +298,7 @@ export class AssetsState extends State { public moveAssetFolder(assetFolder: AssetFolderDto, parentId?: string) { if (assetFolder.id === parentId || assetFolder.parentId === parentId) { - return empty(); + return EMPTY; } this.next(s => { @@ -320,8 +320,27 @@ export class AssetsState extends State { shareSubscribed(this.dialogs)); } - public deleteAsset(asset: AssetDto): Observable { - return this.assetsService.deleteAssetItem(this.appName, asset, asset.version).pipe( + public deleteAsset(asset: AssetDto) { + return this.assetsService.deleteAssetItem(this.appName, asset, true, asset.version).pipe( + catchError((error: ErrorDto) => { + if (error.statusCode === 400) { + return this.dialogs.confirm( + 'i18n:assets.deleteReferrerConfirmTitle', + 'i18n:assets.deleteReferrerConfirmText', + 'deleteReferencedAsset' + ).pipe( + switchMap(confirmed => { + if (confirmed) { + return this.assetsService.deleteAssetItem(this.appName, asset, false, asset.version); + } else { + return EMPTY; + } + }) + ); + } else { + return throwError(error); + } + }), tap(() => { this.next(s => { const assets = s.assets.filter(x => x.id !== asset.id); @@ -336,7 +355,7 @@ export class AssetsState extends State { } public deleteAssetFolder(assetFolder: AssetFolderDto): Observable { - return this.assetsService.deleteAssetItem(this.appName, assetFolder, assetFolder.version).pipe( + return this.assetsService.deleteAssetItem(this.appName, assetFolder, false, assetFolder.version).pipe( tap(() => { this.next(s => { const assetFolders = s.assetFolders.filter(x => x.id !== assetFolder.id); diff --git a/frontend/app/shared/state/contents.forms-helpers.ts b/frontend/app/shared/state/contents.forms-helpers.ts index c8c2dfa26..cc09196d9 100644 --- a/frontend/app/shared/state/contents.forms-helpers.ts +++ b/frontend/app/shared/state/contents.forms-helpers.ts @@ -71,7 +71,7 @@ export class PartitionConfig { } export class CompiledRule { - private function: Function; + private readonly function: Function; public get field() { return this.rule.field; diff --git a/frontend/app/shared/state/contents.forms.visitors.ts b/frontend/app/shared/state/contents.forms.visitors.ts index f39f8e452..e4f9e8243 100644 --- a/frontend/app/shared/state/contents.forms.visitors.ts +++ b/frontend/app/shared/state/contents.forms.visitors.ts @@ -39,7 +39,7 @@ export function getContentValue(content: ContentDto, language: LanguageDto, fiel fieldValue = reference[fieldInvariant]; } - let value: string | undefined = undefined; + let value: string | undefined; if (Types.isObject(fieldValue)) { value = fieldValue[language.iso2Code]; diff --git a/frontend/app/shared/state/contents.state.ts b/frontend/app/shared/state/contents.state.ts index be7117ee1..2f34bdde3 100644 --- a/frontend/app/shared/state/contents.state.ts +++ b/frontend/app/shared/state/contents.state.ts @@ -7,8 +7,8 @@ import { Injectable } from '@angular/core'; import { DialogService, ErrorDto, Pager, shareSubscribed, State, StateSynchronizer, Types, Version, Versioned } from '@app/framework'; -import { empty, forkJoin, Observable, of } from 'rxjs'; -import { catchError, finalize, switchMap, tap } from 'rxjs/operators'; +import { EMPTY, forkJoin, Observable, of } from 'rxjs'; +import { catchError, finalize, map, switchMap, tap } from 'rxjs/operators'; import { ContentDto, ContentsService, StatusInfo } from './../services/contents.service'; import { SchemaDto } from './../services/schemas.service'; import { AppsState } from './apps.state'; @@ -16,6 +16,8 @@ import { SavedQuery } from './queries'; import { Query, QuerySynchronizer } from './query'; import { SchemasState } from './schemas.state'; +type Updated = { content: ContentDto, error?: ErrorDto }; + interface Snapshot { // The current comments. contents: ReadonlyArray; @@ -141,7 +143,7 @@ export abstract class ContentsStateBase extends State { public loadIfNotLoaded(): Observable { if (this.snapshot.isLoaded) { - return empty(); + return EMPTY; } return this.loadInternal(false); @@ -153,7 +155,7 @@ export abstract class ContentsStateBase extends State { private loadInternalCore(isReload: boolean) { if (!this.appName || !this.schemaName) { - return empty(); + return EMPTY; } this.next({ isLoading: true }); @@ -221,39 +223,82 @@ export abstract class ContentsStateBase extends State { shareSubscribed(this.dialogs, {silent: true})); } - public changeManyStatus(contents: ReadonlyArray, status: string, dueTime: string | null): Observable { - return forkJoin( - contents.map(c => - this.contentsService.putStatus(this.appName, c, status, dueTime, c.version).pipe( - catchError(error => of(error))))).pipe( + public changeManyStatus(contentsToChange: ReadonlyArray, status: string, dueTime: string | null): Observable { + return this.updateManyStatus(contentsToChange, status, dueTime).pipe( tap(results => { - const error = results.find(x => x instanceof ErrorDto); + const errors = results.filter(x => !!x.error); + + if (errors.length > 0) { + const errror = errors[0].error!; - if (error) { - this.dialogs.notifyError(error); + if (errors.length === contentsToChange.length) { + throw errror; + } else { + this.dialogs.notifyError(errror); + } } - return of(error); + this.next(s => { + let contents = s.contents; + + for (const updated of results.filter(x => !x.error).map(x => x.content)) { + contents = contents.replaceBy('id', updated); + } + + return { ...s, contents }; + }); }), - switchMap(() => this.loadInternalCore(false)), - shareSubscribed(this.dialogs, { silent: true })); + shareSubscribed(this.dialogs)); } - public deleteMany(contents: ReadonlyArray): Observable { - return forkJoin( - contents.map(c => - this.contentsService.deleteContent(this.appName, c, c.version).pipe( - catchError(error => of(error))))).pipe( + public deleteMany(contentsToDelete: ReadonlyArray) { + return this.deleteManyCore(contentsToDelete, true).pipe( + switchMap(results => { + const referenced = results.filter(x => x.error?.statusCode === 400).map(x => x.content); + + if (referenced.length > 0) { + return this.dialogs.confirm( + 'i18n:contents.deleteReferrerConfirmTitle', + 'i18n:contents.deleteReferrerConfirmText', + 'deleteReferencedAsset' + ).pipe( + switchMap(confirmed => { + if (confirmed) { + return this.deleteManyCore(referenced, false); + } else { + return of([]); + } + }) + ); + } else { + return of(results); + } + }), tap(results => { - const error = results.find(x => x instanceof ErrorDto); + const errors = results.filter(x => !!x.error); + + if (errors.length > 0) { + const errror = errors[0].error!; - if (error) { - this.dialogs.notifyError(error); + if (errors.length === contentsToDelete.length) { + throw errror; + } else { + this.dialogs.notifyError(errror); + } } - return of(error); + this.next(s => { + let contents = s.contents; + let contentsPager = s.contentsPager; + + for (const content of results.filter(x => !x.error).map(x => x.content)) { + contents = contents.filter(x => x.id !== content.id); + contentsPager = contentsPager.decrementCount(); + } + + return { ...s, contents, contentsPager }; + }); }), - switchMap(() => this.loadInternal(false)), shareSubscribed(this.dialogs, { silent: true })); } @@ -329,6 +374,26 @@ export abstract class ContentsStateBase extends State { } } + private deleteManyCore(contents: ReadonlyArray, checkReferrers: boolean): Observable> { + return forkJoin( + contents.map(c => this.deleteCore(c, checkReferrers))); + } + + private updateManyStatus(contents: ReadonlyArray, status: string, dueTime: string | null): Observable> { + return forkJoin( + contents.map(c => this.updateStatus(c, status, dueTime))); + } + + private deleteCore(content: ContentDto, checkReferrers: boolean): Observable { + return this.contentsService.deleteContent(this.appName, content, checkReferrers, content.version).pipe( + map(() => ({ content })), catchError(error => of({ content, error }))); + } + + private updateStatus(content: ContentDto, status: string, dueTime: string | null): Observable { + return this.contentsService.putStatus(this.appName, content, status, dueTime, content.version).pipe( + map(x => ({ content: x })), catchError(error => of({ content, error }))); + } + public abstract get schemaId(): string; public abstract get schemaName(): string; diff --git a/frontend/app/shared/state/contributors.state.spec.ts b/frontend/app/shared/state/contributors.state.spec.ts index 5a6847c40..5953a99c5 100644 --- a/frontend/app/shared/state/contributors.state.spec.ts +++ b/frontend/app/shared/state/contributors.state.spec.ts @@ -7,7 +7,7 @@ import { ErrorDto } from '@app/framework'; import { ContributorDto, ContributorsPayload, ContributorsService, ContributorsState, DialogService, Pager, versioned } from '@app/shared/internal'; -import { empty, of, throwError } from 'rxjs'; +import { EMPTY, of, throwError } from 'rxjs'; import { catchError, onErrorResumeNext } from 'rxjs/operators'; import { IMock, It, Mock, Times } from 'typemoq'; import { createContributors } from './../services/contributors.service.spec'; @@ -164,7 +164,7 @@ describe('ContributorsState', () => { catchError(err => { error = err; - return empty(); + return EMPTY; }) ).subscribe(); @@ -183,7 +183,7 @@ describe('ContributorsState', () => { catchError(err => { error = err; - return empty(); + return EMPTY; }) ).subscribe(); diff --git a/frontend/app/shared/state/rule-events.state.ts b/frontend/app/shared/state/rule-events.state.ts index d849711d2..9c714087b 100644 --- a/frontend/app/shared/state/rule-events.state.ts +++ b/frontend/app/shared/state/rule-events.state.ts @@ -7,7 +7,7 @@ import { Injectable } from '@angular/core'; import { DialogService, Pager, Router2State, shareSubscribed, State } from '@app/framework'; -import { empty, Observable } from 'rxjs'; +import { EMPTY, Observable } from 'rxjs'; import { finalize, tap } from 'rxjs/operators'; import { RuleEventDto, RulesService } from './../services/rules.service'; import { AppsState } from './apps.state'; @@ -122,7 +122,7 @@ export class RuleEventsState extends State { public filterByRule(ruleId?: string) { if (ruleId === this.snapshot.ruleId) { - return empty(); + return EMPTY; } this.next(s => ({ ...s, ruleEventsPager: s.ruleEventsPager.reset(), ruleId })); diff --git a/frontend/app/shared/state/schemas.forms.ts b/frontend/app/shared/state/schemas.forms.ts index c40f4af14..882d083d9 100644 --- a/frontend/app/shared/state/schemas.forms.ts +++ b/frontend/app/shared/state/schemas.forms.ts @@ -232,6 +232,8 @@ export class EditSchemaForm extends Form { public loadIfNotLoaded(): Observable { if (this.snapshot.isLoaded) { - return empty(); + return EMPTY; } return this.loadInternal(false); diff --git a/frontend/app/shell/pages/home/home-page.component.ts b/frontend/app/shell/pages/home/home-page.component.ts index a277baac0..42da3b5f5 100644 --- a/frontend/app/shell/pages/home/home-page.component.ts +++ b/frontend/app/shell/pages/home/home-page.component.ts @@ -30,7 +30,7 @@ export class HomePageComponent { this.authService.loginPopup() .subscribe(() => { this.router.navigate(['/app']); - }, error => { + }, _ => { this.showLoginError = true; }); } diff --git a/frontend/app/theme/_panels.scss b/frontend/app/theme/_panels.scss index 78b7ed93f..268559060 100644 --- a/frontend/app/theme/_panels.scss +++ b/frontend/app/theme/_panels.scss @@ -106,6 +106,8 @@ &-blank { background: $panel-light-background; border: 0; + border-radius: 0; + padding-top: 0; } &-blank-bordered { diff --git a/frontend/app/theme/icomoon/demo-files/demo.css b/frontend/app/theme/icomoon/demo-files/demo.css index 57fe09d51..8bd1225b0 100644 --- a/frontend/app/theme/icomoon/demo-files/demo.css +++ b/frontend/app/theme/icomoon/demo-files/demo.css @@ -150,7 +150,7 @@ p { font-size: 24px; } .fs2 { - font-size: 28px; + font-size: 24px; } .fs3 { font-size: 24px; diff --git a/frontend/app/theme/icomoon/demo.html b/frontend/app/theme/icomoon/demo.html index 2d8f8172e..c23924031 100644 --- a/frontend/app/theme/icomoon/demo.html +++ b/frontend/app/theme/icomoon/demo.html @@ -9,18 +9,18 @@
-

Font Name: icomoon (Glyphs: 136)

+

Font Name: icomoon (Glyphs: 137)

-

Grid Size: 24

+

Grid Size: 14

- - icon-enter + + icon-plugin
- - + +
liga: @@ -29,12 +29,12 @@
- - icon-zoom_out + + icon-angle-double-right
- - + +
liga: @@ -43,12 +43,12 @@
- - icon-zoom_in + + icon-angle-double-left
- - + +
liga: @@ -57,12 +57,12 @@
- - icon-flip + + icon-filter-filled
- - + +
liga: @@ -71,12 +71,12 @@
- - icon-rotate_right + + icon-clone
- - + +
liga: @@ -85,12 +85,12 @@
- - icon-rotate_left + + icon-control-Tags
- - + +
liga: @@ -99,12 +99,12 @@
- - icon-create_new_folder + + icon-control-Checkboxes
- - + +
liga: @@ -113,12 +113,12 @@
- - icon-folder + + icon-control-List
- - + +
liga: @@ -127,12 +127,12 @@
- - icon-help2 + + icon-control-Html
- - + +
liga: @@ -141,12 +141,12 @@
- - icon-trigger-Manual + + icon-single-content
- - + +
liga: @@ -155,12 +155,12 @@
- - icon-play-line + + icon-search-Content
- - + +
liga: @@ -169,12 +169,12 @@
- - icon-corner-down-right + + icon-multiple-content
- - + +
liga: @@ -183,12 +183,12 @@
- - icon-info-outline + + icon-type-Array
- - + +
liga: @@ -197,12 +197,12 @@
- - icon-upload-2 + + icon-exclamation
- - + +
liga: @@ -211,12 +211,12 @@
- - icon-translate + + icon-orleans
- - + +
liga: @@ -225,12 +225,12 @@
- - icon-arrow_back + + icon-document-lock
- - + +
liga: @@ -239,12 +239,12 @@
- - icon-external-link + + icon-document-unpublish
- - + +
liga: @@ -253,12 +253,12 @@
- - icon-minus-square + + icon-angle-down
- - + +
liga: @@ -267,12 +267,12 @@
- - icon-plus-square + + icon-angle-left
- - + +
liga: @@ -281,12 +281,12 @@
- - icon-drag2 + + icon-angle-right
- - + +
liga: @@ -295,12 +295,12 @@
- - icon-comments + + icon-angle-up
- - + +
liga: @@ -309,12 +309,12 @@
- - icon-backup + + icon-api
- - + +
liga: @@ -323,12 +323,12 @@
- - icon-support + + icon-assets
- - + +
liga: @@ -337,12 +337,12 @@
- - icon-control-RichText + + icon-search-Asset
- - + +
liga: @@ -351,211 +351,225 @@
- - icon-download + + icon-bug
- - + +
liga:
-
-
-

Grid Size: 14

-
+
- - icon-angle-double-right + + icon-caret-down
- - + +
liga:
-
+
- - icon-angle-double-left + + icon-caret-left
- - + +
liga:
-
+
- - icon-filter-filled + + icon-caret-right
- - + +
liga:
-
+
- - icon-clone + + icon-caret-up
- - + +
liga:
-
+
- - icon-control-Tags + + icon-contents
- - + +
liga:
-
+
- - icon-control-Checkboxes -
+ + icon-trigger-ContentChanged +
- - + +
liga:
-
+
- - icon-control-List + + icon-control-Date
- - + +
liga:
-
+
- - icon-control-Html + + icon-control-DateTime
- - + +
liga:
-
+
- - icon-single-content + + icon-control-Markdown
- - + +
liga:
-
+
- - icon-search-Content + + icon-grid
- - + +
liga:
-
+
- - icon-multiple-content + + icon-list1
- - + +
liga:
-
+
- - icon-type-Array + + icon-user-o
- - + +
liga:
-
+
- - icon-exclamation + + icon-rules
- - + +
liga:
+
+
+ + icon-search-Rule +
+
+ + +
+
+ liga: + +
+
+
+
+

Grid Size: 24

- - icon-orleans + + icon-enter
- - + +
liga: @@ -564,12 +578,12 @@
- - icon-document-lock + + icon-zoom_out
- - + +
liga: @@ -578,12 +592,12 @@
- - icon-document-unpublish + + icon-zoom_in
- - + +
liga: @@ -592,12 +606,12 @@
- - icon-angle-down + + icon-flip
- - + +
liga: @@ -606,12 +620,12 @@
- - icon-angle-left + + icon-rotate_right
- - + +
liga: @@ -620,12 +634,12 @@
- - icon-angle-right + + icon-rotate_left
- - + +
liga: @@ -634,12 +648,12 @@
- - icon-angle-up + + icon-create_new_folder
- - + +
liga: @@ -648,12 +662,12 @@
- - icon-api + + icon-folder
- - + +
liga: @@ -662,12 +676,12 @@
- - icon-assets + + icon-help2
- - + +
liga: @@ -676,12 +690,12 @@
- - icon-search-Asset + + icon-trigger-Manual
- - + +
liga: @@ -690,12 +704,12 @@
- - icon-bug + + icon-play-line
- - + +
liga: @@ -704,12 +718,12 @@
- - icon-caret-down + + icon-corner-down-right
- - + +
liga: @@ -718,12 +732,12 @@
- - icon-caret-left + + icon-info-outline
- - + +
liga: @@ -732,12 +746,12 @@
- - icon-caret-right + + icon-upload-2
- - + +
liga: @@ -746,12 +760,12 @@
- - icon-caret-up + + icon-translate
- - + +
liga: @@ -760,12 +774,12 @@
- - icon-contents + + icon-arrow_back
- - + +
liga: @@ -774,12 +788,12 @@
- - icon-trigger-ContentChanged + + icon-external-link
- - + +
liga: @@ -788,12 +802,12 @@
- - icon-control-Date + + icon-minus-square
- - + +
liga: @@ -802,12 +816,12 @@
- - icon-control-DateTime + + icon-plus-square
- - + +
liga: @@ -816,12 +830,12 @@
- - icon-control-Markdown + + icon-drag2
- - + +
liga: @@ -830,12 +844,12 @@
- - icon-grid + + icon-comments
- - + +
liga: @@ -844,12 +858,12 @@
- - icon-list1 + + icon-backup
- - + +
liga: @@ -858,12 +872,12 @@
- - icon-user-o + + icon-support
- - + +
liga: @@ -872,12 +886,12 @@
- - icon-rules + + icon-control-RichText
- - + +
liga: @@ -886,12 +900,12 @@
- - icon-search-Rule + + icon-download
- - + +
liga: diff --git a/frontend/app/theme/icomoon/fonts/icomoon.eot b/frontend/app/theme/icomoon/fonts/icomoon.eot index b29ef24de..413597637 100644 Binary files a/frontend/app/theme/icomoon/fonts/icomoon.eot and b/frontend/app/theme/icomoon/fonts/icomoon.eot differ diff --git a/frontend/app/theme/icomoon/fonts/icomoon.svg b/frontend/app/theme/icomoon/fonts/icomoon.svg index 4091bbac1..dbfc77c9e 100644 --- a/frontend/app/theme/icomoon/fonts/icomoon.svg +++ b/frontend/app/theme/icomoon/fonts/icomoon.svg @@ -140,6 +140,7 @@ + diff --git a/frontend/app/theme/icomoon/fonts/icomoon.ttf b/frontend/app/theme/icomoon/fonts/icomoon.ttf index f50d96a39..4fb2ed015 100644 Binary files a/frontend/app/theme/icomoon/fonts/icomoon.ttf and b/frontend/app/theme/icomoon/fonts/icomoon.ttf differ diff --git a/frontend/app/theme/icomoon/fonts/icomoon.woff b/frontend/app/theme/icomoon/fonts/icomoon.woff index 6baddf7d0..053a550d3 100644 Binary files a/frontend/app/theme/icomoon/fonts/icomoon.woff and b/frontend/app/theme/icomoon/fonts/icomoon.woff differ diff --git a/frontend/app/theme/icomoon/selection.json b/frontend/app/theme/icomoon/selection.json index 8a186faf0..1670911c0 100644 --- a/frontend/app/theme/icomoon/selection.json +++ b/frontend/app/theme/icomoon/selection.json @@ -1 +1 @@ -{"IcoMoonType":"selection","icons":[{"icon":{"paths":["M470 384l60 60-154 154h392v-428h86v512h-478l154 154-60 60-256-256z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["subdirectory_arrow_left"],"grid":24},"attrs":[{}],"properties":{"order":1,"id":0,"prevSize":24,"code":59780,"name":"enter"},"setIdx":0,"setId":1,"iconIdx":0},{"icon":{"paths":["M298 384h214v42h-214v-42zM406 598q80 0 136-56t56-136-56-136-136-56-136 56-56 136 56 136 136 56zM662 598l212 212-64 64-212-212v-34l-12-12q-76 66-180 66-116 0-197-80t-81-196 81-197 197-81 196 81 80 197q0 42-20 95t-46 85l12 12h34z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["zoom_out"],"grid":24},"attrs":[{}],"properties":{"order":1,"id":4,"prevSize":24,"code":59778,"name":"zoom_out"},"setIdx":0,"setId":1,"iconIdx":1},{"icon":{"paths":["M512 426h-86v86h-42v-86h-86v-42h86v-86h42v86h86v42zM406 598q80 0 136-56t56-136-56-136-136-56-136 56-56 136 56 136 136 56zM662 598l212 212-64 64-212-212v-34l-12-12q-76 66-180 66-116 0-197-80t-81-196 81-197 197-81 196 81 80 197q0 42-20 95t-46 85l12 12h34z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["zoom_in"],"grid":24},"attrs":[{}],"properties":{"order":2,"id":3,"prevSize":24,"code":59779,"name":"zoom_in"},"setIdx":0,"setId":1,"iconIdx":2},{"icon":{"paths":["M810 896v-86h86q0 34-26 60t-60 26zM810 554v-84h86v84h-86zM640 214v-86h86v86h-86zM810 726v-86h86v86h-86zM470 982v-940h84v940h-84zM810 128q34 0 60 26t26 60h-86v-86zM128 214q0-34 26-60t60-26h170v86h-170v596h170v86h-170q-34 0-60-26t-26-60v-596zM810 384v-86h86v86h-86zM640 896v-86h86v86h-86z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["flip"],"grid":24},"attrs":[{}],"properties":{"order":1,"id":2,"name":"flip","prevSize":24,"code":59775},"setIdx":0,"setId":1,"iconIdx":3},{"icon":{"paths":["M720 660q34-46 44-106h86q-12 92-68 166zM554 764q60-10 106-44l62 62q-72 56-168 68v-86zM850 470h-86q-10-60-44-106l62-60q58 72 68 166zM664 236l-194 190v-166q-92 16-153 87t-61 165 61 165 153 87v86q-126-16-213-112t-87-226 87-226 213-112v-132z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["rotate_right"],"grid":24},"attrs":[{}],"properties":{"order":1,"id":1,"name":"rotate_right","prevSize":24,"code":59776},"setIdx":0,"setId":1,"iconIdx":4},{"icon":{"paths":["M554 174q126 16 213 112t87 226-87 226-213 112v-86q92-16 153-87t61-165-61-165-153-87v166l-194-190 194-194v132zM302 782l62-62q46 34 106 44v86q-96-12-168-68zM260 554q10 58 42 106l-60 60q-56-74-68-166h86zM304 364q-36 52-44 106h-86q12-90 70-166z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["rotate_left"],"grid":24},"attrs":[{}],"properties":{"order":2,"id":0,"name":"rotate_left","prevSize":24,"code":59777},"setIdx":0,"setId":1,"iconIdx":5},{"icon":{"paths":["M810 598v-86h-128v-128h-84v128h-128v86h128v128h84v-128h128zM854 256q36 0 60 25t24 61v426q0 36-24 61t-60 25h-684q-36 0-60-25t-24-61v-512q0-36 24-61t60-25h256l86 86h342z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["create_new_folder"],"grid":24},"attrs":[{}],"properties":{"order":1,"id":1,"prevSize":24,"code":59771,"name":"create_new_folder"},"setIdx":0,"setId":1,"iconIdx":6},{"icon":{"paths":["M426 170l86 86h342q34 0 59 26t25 60v426q0 34-25 60t-59 26h-684q-34 0-59-26t-25-60v-512q0-34 25-60t59-26h256z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["folder"],"grid":24},"attrs":[{}],"properties":{"order":2,"id":0,"prevSize":24,"code":59772,"name":"folder"},"setIdx":0,"setId":1,"iconIdx":7},{"icon":{"paths":["M512 256q70 0 120 50t50 120q0 54-64 111t-64 103h-84q0-46 20-79t44-48 44-37 20-50q0-34-26-59t-60-25-60 25-26 59h-84q0-70 50-120t120-50zM512 854q140 0 241-101t101-241-101-241-241-101-241 101-101 241 101 241 241 101zM512 86q176 0 301 125t125 301-125 301-301 125-301-125-125-301 125-301 301-125zM470 768v-86h84v86h-84z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["help_outline"],"grid":24},"attrs":[{}],"properties":{"order":1,"id":0,"prevSize":24,"code":59770,"name":"help2"},"setIdx":0,"setId":1,"iconIdx":8},{"icon":{"paths":["M236.416 92.117c-6.528-4.267-14.507-6.784-23.083-6.784-23.552 0-42.667 19.115-42.667 42.667v768c-0.043 7.765 2.133 15.872 6.784 23.083 12.757 19.84 39.125 25.557 58.965 12.8l597.333-384c4.864-3.072 9.344-7.424 12.8-12.8 12.757-19.84 6.997-46.208-12.8-58.965zM256 206.165l475.776 305.835-475.776 305.835z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["play"],"grid":24},"attrs":[{}],"properties":{"order":1,"id":0,"prevSize":24,"code":59769,"name":"trigger-Manual, play-line"},"setIdx":0,"setId":1,"iconIdx":9},{"icon":{"paths":["M128 170.667v298.667c0 58.88 23.936 112.299 62.464 150.869s91.989 62.464 150.869 62.464h409.003l-140.501 140.501c-16.683 16.683-16.683 43.691 0 60.331s43.691 16.683 60.331 0l213.333-213.333c3.925-3.925 7.083-8.619 9.259-13.824s3.243-10.795 3.243-16.341c0-10.923-4.181-21.845-12.501-30.165l-213.333-213.333c-16.683-16.683-43.691-16.683-60.331 0s-16.683 43.691 0 60.331l140.501 140.501h-409.003c-35.371 0-67.285-14.293-90.496-37.504s-37.504-55.125-37.504-90.496v-298.667c0-23.552-19.115-42.667-42.667-42.667s-42.667 19.115-42.667 42.667z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["corner-down-right"],"grid":24},"attrs":[{}],"properties":{"order":1,"id":0,"prevSize":24,"code":59767,"name":"corner-down-right"},"setIdx":0,"setId":1,"iconIdx":10},{"icon":{"paths":["M470 384v-86h84v86h-84zM512 854c188 0 342-154 342-342s-154-342-342-342-342 154-342 342 154 342 342 342zM512 86c236 0 426 190 426 426s-190 426-426 426-426-190-426-426 190-426 426-426zM470 726v-256h84v256h-84z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["info_outline"],"grid":24},"attrs":[{}],"properties":{"order":128,"id":0,"prevSize":24,"code":59764,"name":"info-outline"},"setIdx":0,"setId":1,"iconIdx":11},{"icon":{"paths":["M214 768h596v86h-596v-86zM384 682v-256h-170l298-298 298 298h-170v256h-256z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["file_upload"],"grid":24},"attrs":[{}],"properties":{"order":1,"id":0,"prevSize":24,"code":59762,"name":"upload-2"},"setIdx":0,"setId":1,"iconIdx":12},{"icon":{"paths":["M678 726h138l-70-186zM790 426l192 512h-86l-48-128h-202l-48 128h-86l192-512h86zM550 642l-34 88-132-132-214 212-60-60 218-214c-54-60-96-124-128-194h86c26 50 58 98 98 142 62-68 108-146 136-228h-478v-86h300v-84h84v84h300v86h-126c-32 100-84 196-158 278l-2 2z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["translate"],"grid":24},"attrs":[{}],"properties":{"order":1,"id":0,"prevSize":24,"code":59759,"name":"translate"},"setIdx":0,"setId":1,"iconIdx":13},{"icon":{"paths":["M854 470v84h-520l238 240-60 60-342-342 342-342 60 60-238 240h520z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["arrow_back"],"grid":24},"attrs":[{}],"properties":{"order":1,"id":1,"prevSize":24,"code":59758,"name":"arrow_back"},"setIdx":0,"setId":1,"iconIdx":14},{"icon":{"paths":["M768 512c-25.6 0-42.667 17.067-42.667 42.667v256c0 25.6-17.067 42.667-42.667 42.667h-469.333c-25.6 0-42.667-17.067-42.667-42.667v-469.333c0-25.6 17.067-42.667 42.667-42.667h256c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-256c-72.533 0-128 55.467-128 128v469.333c0 72.533 55.467 128 128 128h469.333c72.533 0 128-55.467 128-128v-256c0-25.6-17.067-42.667-42.667-42.667z","M934.4 110.933c-4.267-8.533-12.8-17.067-21.333-21.333-4.267-4.267-12.8-4.267-17.067-4.267h-256c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h153.6l-396.8 396.8c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l396.8-396.8v153.6c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-256c0-4.267 0-12.8-4.267-17.067z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["external-link"],"grid":24},"attrs":[{},{}],"properties":{"order":1,"id":2,"prevSize":24,"code":59757,"name":"external-link"},"setIdx":0,"setId":1,"iconIdx":15},{"icon":{"paths":["M810.667 85.333h-597.333c-72.533 0-128 55.467-128 128v597.333c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-597.333c0-72.533-55.467-128-128-128zM853.333 810.667c0 25.6-17.067 42.667-42.667 42.667h-597.333c-25.6 0-42.667-17.067-42.667-42.667v-597.333c0-25.6 17.067-42.667 42.667-42.667h597.333c25.6 0 42.667 17.067 42.667 42.667v597.333z","M682.667 469.333h-341.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h341.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["minus-square"],"grid":24},"attrs":[{},{}],"properties":{"order":1,"id":3,"prevSize":24,"code":59753,"name":"minus-square"},"setIdx":0,"setId":1,"iconIdx":16},{"icon":{"paths":["M810.667 85.333h-597.333c-72.533 0-128 55.467-128 128v597.333c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-597.333c0-72.533-55.467-128-128-128zM853.333 810.667c0 25.6-17.067 42.667-42.667 42.667h-597.333c-25.6 0-42.667-17.067-42.667-42.667v-597.333c0-25.6 17.067-42.667 42.667-42.667h597.333c25.6 0 42.667 17.067 42.667 42.667v597.333z","M682.667 469.333h-128v-128c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v128h-128c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h128v128c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-128h128c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["plus-square"],"grid":24},"attrs":[{},{}],"properties":{"order":1,"id":4,"name":"plus-square","prevSize":24,"code":59752},"setIdx":0,"setId":1,"iconIdx":17},{"icon":{"paths":["M170 640v-86h684v86h-684zM854 384v86h-684v-86h684z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["drag_handle"],"grid":24},"attrs":[{}],"properties":{"order":1,"id":5,"prevSize":24,"code":59745,"name":"drag2"},"setIdx":0,"setId":1,"iconIdx":18},{"icon":{"paths":["M854 682v-512h-684v598l86-86h598zM854 86c46 0 84 38 84 84v512c0 46-38 86-84 86h-598l-170 170v-768c0-46 38-84 84-84h684z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["chat_bubble_outline"],"grid":24},"attrs":[{}],"properties":{"order":133,"id":6,"name":"comments","prevSize":24,"code":59743},"setIdx":0,"setId":1,"iconIdx":19},{"icon":{"paths":["M512 128c212 0 384 172 384 384s-172 384-384 384c-88 0-170-30-234-80l60-60c50 34 110 54 174 54 166 0 298-132 298-298s-132-298-298-298-298 132-298 298h128l-172 170-170-170h128c0-212 172-384 384-384zM598 512c0 46-40 86-86 86s-86-40-86-86 40-86 86-86 86 40 86 86z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["settings_backup_restore"],"grid":24},"attrs":[{}],"properties":{"order":1,"id":7,"prevSize":24,"code":59739,"name":"backup"},"setIdx":0,"setId":1,"iconIdx":20},{"icon":{"paths":["M726 512c0 24-20 42-44 42h-426l-170 172v-598c0-24 18-42 42-42h554c24 0 44 18 44 42v384zM896 256c24 0 42 18 42 42v640l-170-170h-470c-24 0-42-18-42-42v-86h554v-384h86z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["question_answer"],"grid":24},"attrs":[{}],"properties":{"order":1,"id":8,"prevSize":24,"code":59738,"name":"support"},"setIdx":0,"setId":1,"iconIdx":21},{"icon":{"paths":["M918 384v128h-128v298h-128v-298h-128v-128h384zM106 170h556v128h-214v512h-128v-512h-214v-128z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["text_fields"],"grid":24},"attrs":[{}],"properties":{"order":75,"id":9,"prevSize":24,"code":59705,"name":"control-RichText"},"setIdx":0,"setId":1,"iconIdx":22},{"icon":{"paths":["M640 85.333q78 0 149.167 30.5t122.5 81.833 81.833 122.5 30.5 149.167q0 85-35 160.667t-96.667 129.167-140 77.5l21-20.667q18-18.333 28-42.667 9.333-22.667 9.333-49.333 0-6.667-0.333-9.333 59.333-41.333 93.833-105.833t34.5-139.5q0-60.667-23.667-116t-63.667-95.333-95.333-63.667-116-23.667q-55.333 0-106.5 19.833t-90 53.833-65 81.333-33.833 101h-88.667q-70.667 0-120.667 50t-50 120.667q0 38.667 15.167 71.667t39.833 54.167 54.833 33 60.833 11.833h50q11.667 29.333 30 48l37.667 37.333h-117.667q-69.667 0-128.5-34.333t-93.167-93.167-34.333-128.5 34.333-128.5 93.167-93.167 128.5-34.333h22q26.333-74.333 79.333-132.167t126.833-90.833 155.833-33zM554.667 426.667q17.667 0 30.167 12.5t12.5 30.167v281l55-55.333q12.333-12.333 30.333-12.333 18.333 0 30.5 12.167t12.167 30.5q0 18-12.333 30.333l-128 128q-12.333 12.333-30.333 12.333t-30.333-12.333l-128-128q-12.333-13-12.333-30.333 0-17.667 12.5-30.167t30.167-12.5q18 0 30.333 12.333l55 55.333v-281q0-17.667 12.5-30.167t30.167-12.5z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["cloud-download"],"grid":24},"attrs":[{}],"properties":{"order":1,"id":10,"prevSize":24,"code":59710,"name":"download"},"setIdx":0,"setId":1,"iconIdx":23},{"icon":{"paths":["M340 548.571c0 4.571-2.286 9.714-5.714 13.143l-266.286 266.286c-3.429 3.429-8.571 5.714-13.143 5.714s-9.714-2.286-13.143-5.714l-28.571-28.571c-3.429-3.429-5.714-8.571-5.714-13.143s2.286-9.714 5.714-13.143l224.571-224.571-224.571-224.571c-3.429-3.429-5.714-8.571-5.714-13.143s2.286-9.714 5.714-13.143l28.571-28.571c3.429-3.429 8.571-5.714 13.143-5.714s9.714 2.286 13.143 5.714l266.286 266.286c3.429 3.429 5.714 8.571 5.714 13.143zM559.429 548.571c0 4.571-2.286 9.714-5.714 13.143l-266.286 266.286c-3.429 3.429-8.571 5.714-13.143 5.714s-9.714-2.286-13.143-5.714l-28.571-28.571c-3.429-3.429-5.714-8.571-5.714-13.143s2.286-9.714 5.714-13.143l224.571-224.571-224.571-224.571c-3.429-3.429-5.714-8.571-5.714-13.143s2.286-9.714 5.714-13.143l28.571-28.571c3.429-3.429 8.571-5.714 13.143-5.714s9.714 2.286 13.143 5.714l266.286 266.286c3.429 3.429 5.714 8.571 5.714 13.143z"],"attrs":[{}],"width":567,"isMulticolor":false,"isMulticolor2":false,"tags":["angle-double-right"],"grid":14},"attrs":[{}],"properties":{"order":1,"id":1,"prevSize":28,"code":59773,"name":"angle-double-right"},"setIdx":0,"setId":1,"iconIdx":24},{"icon":{"paths":["M358.286 786.286c0 4.571-2.286 9.714-5.714 13.143l-28.571 28.571c-3.429 3.429-8.571 5.714-13.143 5.714s-9.714-2.286-13.143-5.714l-266.286-266.286c-3.429-3.429-5.714-8.571-5.714-13.143s2.286-9.714 5.714-13.143l266.286-266.286c3.429-3.429 8.571-5.714 13.143-5.714s9.714 2.286 13.143 5.714l28.571 28.571c3.429 3.429 5.714 8.571 5.714 13.143s-2.286 9.714-5.714 13.143l-224.571 224.571 224.571 224.571c3.429 3.429 5.714 8.571 5.714 13.143zM577.714 786.286c0 4.571-2.286 9.714-5.714 13.143l-28.571 28.571c-3.429 3.429-8.571 5.714-13.143 5.714s-9.714-2.286-13.143-5.714l-266.286-266.286c-3.429-3.429-5.714-8.571-5.714-13.143s2.286-9.714 5.714-13.143l266.286-266.286c3.429-3.429 8.571-5.714 13.143-5.714s9.714 2.286 13.143 5.714l28.571 28.571c3.429 3.429 5.714 8.571 5.714 13.143s-2.286 9.714-5.714 13.143l-224.571 224.571 224.571 224.571c3.429 3.429 5.714 8.571 5.714 13.143z"],"attrs":[{}],"width":603,"isMulticolor":false,"isMulticolor2":false,"tags":["angle-double-left"],"grid":14},"attrs":[{}],"properties":{"order":2,"id":0,"prevSize":28,"code":59774,"name":"angle-double-left"},"setIdx":0,"setId":1,"iconIdx":25},{"icon":{"paths":["M801.714 168.571c5.714 13.714 2.857 29.714-8 40l-281.714 281.714v424c0 14.857-9.143 28-22.286 33.714-4.571 1.714-9.714 2.857-14.286 2.857-9.714 0-18.857-3.429-25.714-10.857l-146.286-146.286c-6.857-6.857-10.857-16-10.857-25.714v-277.714l-281.714-281.714c-10.857-10.286-13.714-26.286-8-40 5.714-13.143 18.857-22.286 33.714-22.286h731.429c14.857 0 28 9.143 33.714 22.286z"],"attrs":[{}],"width":805,"isMulticolor":false,"isMulticolor2":false,"tags":["filter"],"grid":14},"attrs":[{}],"properties":{"order":1,"id":0,"prevSize":28,"code":59768,"name":"filter-filled"},"setIdx":0,"setId":1,"iconIdx":26},{"icon":{"paths":["M950.857 932.571v-621.714c0-9.714-8.571-18.286-18.286-18.286h-621.714c-9.714 0-18.286 8.571-18.286 18.286v621.714c0 9.714 8.571 18.286 18.286 18.286h621.714c9.714 0 18.286-8.571 18.286-18.286zM1024 310.857v621.714c0 50.286-41.143 91.429-91.429 91.429h-621.714c-50.286 0-91.429-41.143-91.429-91.429v-621.714c0-50.286 41.143-91.429 91.429-91.429h621.714c50.286 0 91.429 41.143 91.429 91.429zM804.571 91.429v91.429h-73.143v-91.429c0-9.714-8.571-18.286-18.286-18.286h-621.714c-9.714 0-18.286 8.571-18.286 18.286v621.714c0 9.714 8.571 18.286 18.286 18.286h91.429v73.143h-91.429c-50.286 0-91.429-41.143-91.429-91.429v-621.714c0-50.286 41.143-91.429 91.429-91.429h621.714c50.286 0 91.429 41.143 91.429 91.429z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["clone"],"grid":14},"attrs":[{}],"properties":{"order":1,"id":0,"prevSize":28,"code":59754,"name":"clone"},"setIdx":0,"setId":1,"iconIdx":27},{"icon":{"paths":["M498.787 330.323v-49.548h112.31v-66.065c0-49.548-39.639-89.187-89.187-89.187s-89.187 39.639-89.187 89.187v541.729l89.187 161.858 89.187-161.858v-426.116z","M360.052 716.8h-66.065c-59.458 0-105.703-46.245-105.703-105.703v-254.348c0-59.458 46.245-105.703 105.703-105.703h66.065v-42.942h-66.065c-82.581 0-148.645 66.065-148.645 148.645v254.348c0 82.581 66.065 148.645 148.645 148.645h66.065z","M852.232 260.955c-26.426-33.032-66.065-52.852-109.006-52.852h-59.458v42.942h39.639c42.942 0 82.581 19.819 109.006 52.852l145.342 181.677-142.039 178.374c-26.426 33.032-69.368 52.852-112.31 52.852h-36.335v42.942h56.155c42.942 0 85.884-19.819 112.31-52.852l178.374-221.316z"],"width":1140,"attrs":[{},{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["control-Tags"],"grid":14},"attrs":[{},{},{}],"properties":{"order":119,"id":1,"name":"control-Tags","prevSize":28,"code":59747},"setIdx":0,"setId":1,"iconIdx":28},{"icon":{"paths":["M384 179.2h614.4c14.157 0 25.6-11.443 25.6-25.6s-11.443-25.6-25.6-25.6h-614.4c-14.131 0-25.6 11.443-25.6 25.6s11.469 25.6 25.6 25.6zM998.4 486.4h-614.4c-14.131 0-25.6 11.443-25.6 25.6s11.469 25.6 25.6 25.6h614.4c14.157 0 25.6-11.443 25.6-25.6s-11.443-25.6-25.6-25.6zM998.4 844.8h-614.4c-38.406 15.539-22.811 37.543 0 51.2h614.4c14.157 0 25.6-11.443 25.6-25.6s-11.443-25.6-25.6-25.6z","M0 0v307.2h307.2v-307.2zM47.4 47.4h212.4v212.4h-212.4z","M0 716.8v307.2h307.2v-307.2zM47.4 764.2h212.4v212.4h-212.4z","M0 358.4v307.2h307.2v-307.2zM47.4 405.8h212.4v212.4h-212.4z","M89.6 89.6h128v128h-128v-128z"],"attrs":[{},{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["control-Checkboxes"],"grid":14},"attrs":[{},{},{},{},{}],"properties":{"order":118,"id":2,"name":"control-Checkboxes, control-List","prevSize":28,"code":59746},"setIdx":0,"setId":1,"iconIdx":29},{"icon":{"paths":["M159.073 665.6l-159.073-134.055 159.073-133.819 36.818 37.29-117.062 96.057 117.062 97.237z","M493.247 536.029q0 33.042-9.441 57.115-9.205 24.073-25.961 40.122-16.521 15.813-39.178 23.601-22.657 7.552-49.327 7.552-26.197 0-48.855-4.012-22.421-3.776-42.954-10.385v-323.338h57.587v78.356l-2.36 47.203q12.981-16.757 30.21-26.905 17.465-10.149 41.774-10.149 21.241 0 37.762 8.496t27.614 24.309q11.329 15.577 17.229 37.998 5.9 22.185 5.9 50.035zM432.828 538.389q0-19.825-2.832-33.75t-8.26-22.893q-5.192-8.969-12.981-12.981-7.552-4.248-17.465-4.248-14.633 0-28.086 11.801-13.217 11.801-28.086 32.098v104.79q6.844 2.596 16.757 4.248 10.149 1.652 20.533 1.652 13.689 0 24.781-5.664 11.329-5.664 19.117-16.049 8.024-10.385 12.273-25.253 4.248-15.105 4.248-33.75z","M700.682 513.608q0.472-13.453-1.416-22.893-1.652-9.441-5.664-15.577-3.776-6.136-9.441-8.968t-12.981-2.832q-12.745 0-26.433 10.621-13.453 10.385-29.738 34.458v151.756h-59.003v-239.789h52.159l2.124 34.93q5.9-9.205 13.217-16.521 7.552-7.316 16.521-12.509 9.205-5.428 20.297-8.26t24.309-2.832q18.173 0 32.098 6.372 14.161 6.136 23.601 18.409 9.677 12.273 14.161 30.918 4.72 18.409 4.012 42.718z","M864.927 397.725l159.073 133.819-159.073 134.055-36.582-37.29 116.826-96.293-116.826-97.001z"],"attrs":[{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["control-Html"],"grid":14},"attrs":[{},{},{},{}],"properties":{"order":116,"id":3,"name":"control-Html","prevSize":28,"code":59744},"setIdx":0,"setId":1,"iconIdx":30},{"icon":{"paths":["M251.429 100.58c-87.896 0-160 72.104-160 160v525.714c0 87.896 72.104 160 160 160h525.714c87.896 0 160-72.104 160-160v-525.714c0-87.896-72.104-160-160-160zM251.429 146.295h525.714c62.961 0 114.286 51.325 114.286 114.286v525.714c0 62.961-51.325 114.286-114.286 114.286h-525.714c-62.961 0-114.286-51.325-114.286-114.286v-525.714c0-62.961 51.325-114.286 114.286-114.286z","M251.429 306.295c-0.096-0.001-0.21-0.002-0.323-0.002-12.625 0-22.859 10.235-22.859 22.859s10.235 22.859 22.859 22.859c0.114 0 0.227-0.001 0.34-0.002l-0.017 0h525.714c0.096 0.001 0.21 0.002 0.323 0.002 12.625 0 22.859-10.235 22.859-22.859s-10.235-22.859-22.859-22.859c-0.114 0-0.227 0.001-0.34 0.002l0.017-0z","M251.429 443.438c-0.096-0.001-0.21-0.002-0.323-0.002-12.625 0-22.859 10.235-22.859 22.859s10.235 22.859 22.859 22.859c0.114 0 0.227-0.001 0.34-0.002l-0.017 0h297.143c0.096 0.001 0.21 0.002 0.323 0.002 12.625 0 22.859-10.235 22.859-22.859s-10.235-22.859-22.859-22.859c-0.114 0-0.227 0.001-0.34 0.002l0.017-0z","M251.429 580.58c-0.096-0.001-0.21-0.002-0.323-0.002-12.625 0-22.859 10.235-22.859 22.859s10.235 22.859 22.859 22.859c0.114 0 0.227-0.001 0.34-0.002l-0.017 0h297.143c0.096 0.001 0.21 0.002 0.323 0.002 12.625 0 22.859-10.235 22.859-22.859s-10.235-22.859-22.859-22.859c-0.114 0-0.227 0.001-0.34 0.002l0.017-0z"],"width":1029,"attrs":[{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["single-content"],"grid":14},"attrs":[{},{},{},{}],"properties":{"order":112,"id":4,"name":"single-content, search-Content","prevSize":28,"code":59736},"setIdx":0,"setId":1,"iconIdx":31},{"icon":{"paths":["M777.143 946.286h-525.714c-89.143 0-160-70.857-160-160v-297.143c0-89.143 70.857-160 160-160h525.714c89.143 0 160 70.857 160 160v297.143c0 89.143-70.857 160-160 160zM251.429 374.857c-64 0-114.286 50.286-114.286 114.286v297.143c0 64 50.286 114.286 114.286 114.286h525.714c64 0 114.286-50.286 114.286-114.286v-297.143c0-64-50.286-114.286-114.286-114.286h-525.714z","M731.429 580.571h-457.143c-13.714 0-22.857-9.143-22.857-22.857s9.143-22.857 22.857-22.857h457.143c13.714 0 22.857 9.143 22.857 22.857s-9.143 22.857-22.857 22.857z","M502.857 740.571h-228.571c-13.714 0-22.857-9.143-22.857-22.857s9.143-22.857 22.857-22.857h228.571c13.714 0 22.857 9.143 22.857 22.857s-9.143 22.857-22.857 22.857z","M777.143 260.571h-525.714c-13.714 0-22.857-9.143-22.857-22.857s9.143-22.857 22.857-22.857h525.714c13.714 0 22.857 9.143 22.857 22.857s-9.143 22.857-22.857 22.857z","M685.714 146.286h-342.857c-13.714 0-22.857-9.143-22.857-22.857s9.143-22.857 22.857-22.857h342.857c13.714 0 22.857 9.143 22.857 22.857s-9.143 22.857-22.857 22.857z"],"width":1029,"attrs":[{},{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["multiple-content"],"grid":14},"attrs":[{},{},{},{},{}],"properties":{"order":113,"id":5,"name":"multiple-content","prevSize":28,"code":59735},"setIdx":0,"setId":1,"iconIdx":32},{"icon":{"paths":["M832 268.8h-657.92c-15.36 0-25.6-10.24-25.6-25.6s10.24-25.6 25.6-25.6h657.92c15.36 0 25.6 10.24 25.6 25.6s-10.24 25.6-25.6 25.6z","M832 453.12h-409.6c-15.36 0-25.6-10.24-25.6-25.6s10.24-25.6 25.6-25.6h409.6c15.36 0 25.6 10.24 25.6 25.6s-10.24 25.6-25.6 25.6z","M832 642.56h-409.6c-15.36 0-25.6-10.24-25.6-25.6s10.24-25.6 25.6-25.6h409.6c15.36 0 25.6 10.24 25.6 25.6s-10.24 25.6-25.6 25.6z","M832 832h-409.6c-15.36 0-25.6-10.24-25.6-25.6s10.24-25.6 25.6-25.6h409.6c15.36 0 25.6 10.24 25.6 25.6s-10.24 25.6-25.6 25.6z"],"attrs":[{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["type-Array"],"grid":14},"attrs":[{},{},{},{}],"properties":{"order":108,"id":6,"name":"type-Array","prevSize":28,"code":59734},"setIdx":0,"setId":1,"iconIdx":33},{"icon":{"paths":["M292.571 713.143v128c0 20-16.571 36.571-36.571 36.571h-146.286c-20 0-36.571-16.571-36.571-36.571v-128c0-20 16.571-36.571 36.571-36.571h146.286c20 0 36.571 16.571 36.571 36.571zM309.714 109.714l-16 438.857c-0.571 20-17.714 36.571-37.714 36.571h-146.286c-20 0-37.143-16.571-37.714-36.571l-16-438.857c-0.571-20 15.429-36.571 35.429-36.571h182.857c20 0 36 16.571 35.429 36.571z"],"width":366,"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["exclamation"],"grid":14},"attrs":[{}],"properties":{"order":1,"id":7,"prevSize":28,"code":59733,"name":"exclamation"},"setIdx":0,"setId":1,"iconIdx":34},{"icon":{"paths":["M512 26.38l-424.96 242.8v485.64l424.96 242.8 424.96-242.8v-485.64l-424.96-242.8zM512 235.52l245.76 138.24v276.48l-245.76 138.24-245.76-138.24v-276.48l245.76-138.24z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["orleans"],"grid":14},"attrs":[{}],"properties":{"order":99,"id":8,"name":"orleans","prevSize":28,"code":59723},"setIdx":0,"setId":1,"iconIdx":35},{"icon":{"paths":["M358.4 102.4c-28.314 0-51.2 22.886-51.2 51.2v204.8h51.2v-204.8h307.2v153.6c0 28.314 22.886 51.2 51.2 51.2h153.6v512h-307.2v51.2h307.2c28.314 0 51.2-22.886 51.2-51.2v-548.2l-219.8-219.8h-292.2zM716.8 189.8l117.4 117.4h-117.4z","M153.6 640v281.6h358.4v-281.6zM179.2 640v-76.8c0-84.48 69.12-153.6 153.6-153.6s153.6 69.12 153.6 153.6v76.8h-51.2v-76.8c0-56.32-46.080-102.4-102.4-102.4s-102.4 46.080-102.4 102.4v76.8z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["document-lock"],"grid":14},"attrs":[{},{}],"properties":{"order":97,"id":9,"name":"document-lock","prevSize":28,"code":59721},"setIdx":0,"setId":1,"iconIdx":36},{"icon":{"paths":["M358.4 102.4c-28.314 0-51.2 22.886-51.2 51.2v153.6h51.2v-153.6h307.2v153.6c0 28.314 22.886 51.2 51.2 51.2h153.6v512h-358.4v51.2h358.4c28.314 0 51.2-22.886 51.2-51.2v-548.2l-219.8-219.8h-292.2zM716.8 189.8l117.4 117.4h-117.4zM332.8 460.8l-230.4 256v51.2h102.4v153.6h256v-153.6h102.4v-51.2zM332.8 537.3l161.5 179.5h-84.7v153.6h-153.6v-153.6h-84.7z","M102.4 357.532h460.8v52.068h-460.8v-52.068z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["document-unpublish"],"grid":14},"attrs":[{},{}],"properties":{"order":96,"id":10,"name":"document-unpublish","prevSize":28,"code":59711},"setIdx":0,"setId":1,"iconIdx":37},{"icon":{"paths":["M614.286 420.571c0 4.571-2.286 9.714-5.714 13.143l-266.286 266.286c-3.429 3.429-8.571 5.714-13.143 5.714s-9.714-2.286-13.143-5.714l-266.286-266.286c-3.429-3.429-5.714-8.571-5.714-13.143s2.286-9.714 5.714-13.143l28.571-28.571c3.429-3.429 8-5.714 13.143-5.714 4.571 0 9.714 2.286 13.143 5.714l224.571 224.571 224.571-224.571c3.429-3.429 8.571-5.714 13.143-5.714s9.714 2.286 13.143 5.714l28.571 28.571c3.429 3.429 5.714 8.571 5.714 13.143z"],"width":658,"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["angle-down"],"grid":14},"attrs":[{}],"properties":{"order":1,"id":11,"prevSize":28,"code":59648,"name":"angle-down"},"setIdx":0,"setId":1,"iconIdx":38},{"icon":{"paths":["M358.286 310.857c0 4.571-2.286 9.714-5.714 13.143l-224.571 224.571 224.571 224.571c3.429 3.429 5.714 8.571 5.714 13.143s-2.286 9.714-5.714 13.143l-28.571 28.571c-3.429 3.429-8.571 5.714-13.143 5.714s-9.714-2.286-13.143-5.714l-266.286-266.286c-3.429-3.429-5.714-8.571-5.714-13.143s2.286-9.714 5.714-13.143l266.286-266.286c3.429-3.429 8.571-5.714 13.143-5.714s9.714 2.286 13.143 5.714l28.571 28.571c3.429 3.429 5.714 8 5.714 13.143z"],"width":384,"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["angle-left"],"grid":14},"attrs":[{}],"properties":{"order":2,"id":12,"prevSize":28,"code":59649,"name":"angle-left"},"setIdx":0,"setId":1,"iconIdx":39},{"icon":{"paths":["M340 548.571c0 4.571-2.286 9.714-5.714 13.143l-266.286 266.286c-3.429 3.429-8.571 5.714-13.143 5.714s-9.714-2.286-13.143-5.714l-28.571-28.571c-3.429-3.429-5.714-8-5.714-13.143 0-4.571 2.286-9.714 5.714-13.143l224.571-224.571-224.571-224.571c-3.429-3.429-5.714-8.571-5.714-13.143s2.286-9.714 5.714-13.143l28.571-28.571c3.429-3.429 8.571-5.714 13.143-5.714s9.714 2.286 13.143 5.714l266.286 266.286c3.429 3.429 5.714 8.571 5.714 13.143z"],"width":347,"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["angle-right"],"grid":14},"attrs":[{}],"properties":{"order":67,"id":13,"prevSize":28,"code":59697,"name":"angle-right"},"setIdx":0,"setId":1,"iconIdx":40},{"icon":{"paths":["M614.286 676.571c0 4.571-2.286 9.714-5.714 13.143l-28.571 28.571c-3.429 3.429-8 5.714-13.143 5.714-4.571 0-9.714-2.286-13.143-5.714l-224.571-224.571-224.571 224.571c-3.429 3.429-8.571 5.714-13.143 5.714s-9.714-2.286-13.143-5.714l-28.571-28.571c-3.429-3.429-5.714-8.571-5.714-13.143s2.286-9.714 5.714-13.143l266.286-266.286c3.429-3.429 8.571-5.714 13.143-5.714s9.714 2.286 13.143 5.714l266.286 266.286c3.429 3.429 5.714 8.571 5.714 13.143z"],"width":658,"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["angle-up"],"grid":14},"attrs":[{}],"properties":{"order":2,"id":14,"prevSize":28,"code":59651,"name":"angle-up"},"setIdx":0,"setId":1,"iconIdx":41},{"icon":{"paths":["M592 393.6h-156.8c-57.6 0-105.6-48-105.6-105.6v-182.4c0-57.6 48-105.6 105.6-105.6h156.8c57.6 0 105.6 48 105.6 105.6v182.4c-3.2 57.6-48 105.6-105.6 105.6zM432 64c-22.4 0-41.6 19.2-41.6 41.6v182.4c0 22.4 19.2 41.6 41.6 41.6h156.8c22.4 0 41.6-19.2 41.6-41.6v-182.4c0-22.4-19.2-41.6-41.6-41.6h-156.8z","M195.2 1024c-105.6 0-195.2-89.6-195.2-195.2 0-108.8 89.6-195.2 195.2-195.2s195.2 89.6 195.2 195.2c3.2 105.6-86.4 195.2-195.2 195.2zM195.2 694.4c-73.6 0-131.2 60.8-131.2 131.2 0 73.6 60.8 134.4 131.2 134.4 73.6 0 131.2-60.8 131.2-131.2 3.2-73.6-57.6-134.4-131.2-134.4z","M828.8 1024c-108.8 0-195.2-89.6-195.2-195.2 0-108.8 89.6-195.2 195.2-195.2s195.2 89.6 195.2 195.2c0 105.6-89.6 195.2-195.2 195.2zM828.8 694.4c-73.6 0-131.2 60.8-131.2 131.2 0 73.6 60.8 131.2 131.2 131.2 73.6 0 131.2-60.8 131.2-131.2s-60.8-131.2-131.2-131.2z","M332.8 640c-6.4 0-12.8 0-16-3.2-16-9.6-19.2-28.8-9.6-44.8l83.2-137.6c9.6-16 28.8-19.2 44.8-9.6s19.2 28.8 9.6 44.8l-83.2 137.6c-6.4 6.4-16 12.8-28.8 12.8z","M691.2 640c-9.6 0-22.4-6.4-28.8-16l-83.2-137.6c-9.6-16-3.2-35.2 9.6-44.8s35.2-3.2 44.8 9.6l83.2 137.6c9.6 16 3.2 35.2-9.6 44.8-6.4 6.4-12.8 6.4-16 6.4z"],"attrs":[{},{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["api"],"grid":14},"attrs":[{},{},{},{},{}],"properties":{"order":94,"id":15,"name":"api","prevSize":28,"code":59717},"setIdx":0,"setId":1,"iconIdx":42},{"icon":{"paths":["M800 1024h-576c-124.8 0-224-99.2-224-224v-576c0-124.8 99.2-224 224-224h576c124.8 0 224 99.2 224 224v576c0 124.8-99.2 224-224 224zM224 64c-89.6 0-160 70.4-160 160v576c0 89.6 70.4 160 160 160h576c89.6 0 160-70.4 160-160v-576c0-89.6-70.4-160-160-160h-576z","M771.2 860.8h-438.4c-12.8 0-22.4-6.4-28.8-19.2s-3.2-25.6 3.2-35.2l300.8-355.2c6.4-6.4 16-12.8 25.6-12.8s19.2 6.4 25.6 12.8l192 275.2c3.2 3.2 3.2 6.4 3.2 9.6 16 44.8 3.2 73.6-6.4 89.6-22.4 32-70.4 35.2-76.8 35.2zM403.2 796.8h371.2c6.4 0 22.4-3.2 25.6-9.6 3.2-3.2 3.2-12.8 0-25.6l-166.4-236.8-230.4 272z","M332.8 502.4c-76.8 0-140.8-64-140.8-140.8s64-140.8 140.8-140.8 140.8 64 140.8 140.8-60.8 140.8-140.8 140.8zM332.8 284.8c-41.6 0-76.8 32-76.8 76.8s35.2 76.8 76.8 76.8 76.8-35.2 76.8-76.8-32-76.8-76.8-76.8z"],"attrs":[{},{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["assets"],"grid":14},"attrs":[{},{},{}],"properties":{"order":95,"id":16,"name":"assets, search-Asset","prevSize":28,"code":59720},"setIdx":0,"setId":1,"iconIdx":43},{"icon":{"paths":["M932.571 548.571c0 20-16.571 36.571-36.571 36.571h-128c0 71.429-15.429 125.143-38.286 165.714l118.857 119.429c14.286 14.286 14.286 37.143 0 51.429-6.857 7.429-16.571 10.857-25.714 10.857s-18.857-3.429-25.714-10.857l-113.143-112.571s-74.857 68.571-172 68.571v-512h-73.143v512c-103.429 0-178.857-75.429-178.857-75.429l-104.571 118.286c-7.429 8-17.143 12-27.429 12-8.571 0-17.143-2.857-24.571-9.143-14.857-13.714-16-36.571-2.857-52l115.429-129.714c-20-39.429-33.143-90.286-33.143-156.571h-128c-20 0-36.571-16.571-36.571-36.571s16.571-36.571 36.571-36.571h128v-168l-98.857-98.857c-14.286-14.286-14.286-37.143 0-51.429s37.143-14.286 51.429 0l98.857 98.857h482.286l98.857-98.857c14.286-14.286 37.143-14.286 51.429 0s14.286 37.143 0 51.429l-98.857 98.857v168h128c20 0 36.571 16.571 36.571 36.571zM658.286 219.429h-365.714c0-101.143 81.714-182.857 182.857-182.857s182.857 81.714 182.857 182.857z"],"width":951,"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["bug"],"grid":14},"attrs":[{}],"properties":{"order":1,"id":17,"prevSize":28,"code":59709,"name":"bug"},"setIdx":0,"setId":1,"iconIdx":44},{"icon":{"paths":["M585.143 402.286c0 9.714-4 18.857-10.857 25.714l-256 256c-6.857 6.857-16 10.857-25.714 10.857s-18.857-4-25.714-10.857l-256-256c-6.857-6.857-10.857-16-10.857-25.714 0-20 16.571-36.571 36.571-36.571h512c20 0 36.571 16.571 36.571 36.571z"],"width":585,"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["caret-down"],"grid":14},"attrs":[{}],"properties":{"order":4,"id":18,"prevSize":28,"code":59692,"name":"caret-down"},"setIdx":0,"setId":1,"iconIdx":45},{"icon":{"paths":["M365.714 256v512c0 20-16.571 36.571-36.571 36.571-9.714 0-18.857-4-25.714-10.857l-256-256c-6.857-6.857-10.857-16-10.857-25.714s4-18.857 10.857-25.714l256-256c6.857-6.857 16-10.857 25.714-10.857 20 0 36.571 16.571 36.571 36.571z"],"width":402,"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["caret-left"],"grid":14},"attrs":[{}],"properties":{"order":2,"id":19,"prevSize":28,"code":59690,"name":"caret-left"},"setIdx":0,"setId":1,"iconIdx":46},{"icon":{"paths":["M329.143 512c0 9.714-4 18.857-10.857 25.714l-256 256c-6.857 6.857-16 10.857-25.714 10.857-20 0-36.571-16.571-36.571-36.571v-512c0-20 16.571-36.571 36.571-36.571 9.714 0 18.857 4 25.714 10.857l256 256c6.857 6.857 10.857 16 10.857 25.714z"],"width":329,"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["caret-right"],"grid":14},"attrs":[{}],"properties":{"order":1,"id":20,"prevSize":28,"code":59689,"name":"caret-right"},"setIdx":0,"setId":1,"iconIdx":47},{"icon":{"paths":["M585.143 694.857c0 20-16.571 36.571-36.571 36.571h-512c-20 0-36.571-16.571-36.571-36.571 0-9.714 4-18.857 10.857-25.714l256-256c6.857-6.857 16-10.857 25.714-10.857s18.857 4 25.714 10.857l256 256c6.857 6.857 10.857 16 10.857 25.714z"],"width":585,"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["caret-up"],"grid":14},"attrs":[{}],"properties":{"order":3,"id":21,"prevSize":28,"code":59691,"name":"caret-up"},"setIdx":0,"setId":1,"iconIdx":48},{"icon":{"paths":["M800 1024h-576c-124.8 0-224-99.2-224-224v-576c0-124.8 99.2-224 224-224h576c124.8 0 224 99.2 224 224v576c0 124.8-99.2 224-224 224zM224 64c-89.6 0-160 70.4-160 160v576c0 89.6 70.4 160 160 160h576c89.6 0 160-70.4 160-160v-576c0-89.6-70.4-160-160-160h-576z","M480 448h-211.2c-57.6 0-105.6-48-105.6-105.6v-73.6c0-57.6 48-105.6 105.6-105.6h211.2c57.6 0 105.6 48 105.6 105.6v73.6c0 57.6-48 105.6-105.6 105.6zM268.8 227.2c-22.4 0-41.6 19.2-41.6 41.6v73.6c0 22.4 19.2 41.6 41.6 41.6h211.2c22.4 0 41.6-19.2 41.6-41.6v-73.6c0-22.4-19.2-41.6-41.6-41.6h-211.2z","M828.8 611.2h-633.6c-19.2 0-32-12.8-32-32s12.8-32 32-32h630.4c19.2 0 32 12.8 32 32s-12.8 32-28.8 32z","M553.6 777.6h-358.4c-19.2 0-32-12.8-32-32s12.8-32 32-32h355.2c19.2 0 32 12.8 32 32s-12.8 32-28.8 32z"],"attrs":[{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["content"],"grid":14},"attrs":[{},{},{},{}],"properties":{"order":93,"id":22,"name":"contents, trigger-ContentChanged","prevSize":28,"code":59718},"setIdx":0,"setId":1,"iconIdx":49},{"icon":{"paths":["M947.2 102.4h-128v-25.6c0-14.131-11.469-25.6-25.6-25.6s-25.6 11.469-25.6 25.6v25.6h-512v-25.6c0-14.131-11.52-25.6-25.6-25.6s-25.6 11.469-25.6 25.6v25.6h-128c-42.342 0-76.8 34.458-76.8 76.8v716.8c0 42.342 34.458 76.8 76.8 76.8h870.4c42.342 0 76.8-34.458 76.8-76.8v-716.8c0-42.342-34.458-76.8-76.8-76.8zM972.8 896c0 14.131-11.469 25.6-25.6 25.6h-870.4c-14.080 0-25.6-11.469-25.6-25.6v-537.6h921.6v537.6zM972.8 307.2h-921.6v-128c0-14.080 11.52-25.6 25.6-25.6h128v76.8c0 14.080 11.52 25.6 25.6 25.6s25.6-11.52 25.6-25.6v-76.8h512v76.8c0 14.080 11.469 25.6 25.6 25.6s25.6-11.52 25.6-25.6v-76.8h128c14.131 0 25.6 11.52 25.6 25.6v128zM332.8 512h51.2c14.080 0 25.6-11.52 25.6-25.6s-11.52-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.52-25.6 25.6s11.52 25.6 25.6 25.6zM486.4 512h51.2c14.131 0 25.6-11.52 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.52-25.6 25.6s11.52 25.6 25.6 25.6zM640 512h51.2c14.131 0 25.6-11.52 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.131 0-25.6 11.52-25.6 25.6s11.469 25.6 25.6 25.6zM793.6 512h51.2c14.131 0 25.6-11.52 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.131 0-25.6 11.52-25.6 25.6s11.469 25.6 25.6 25.6zM179.2 614.4h51.2c14.080 0 25.6-11.469 25.6-25.6s-11.52-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6zM332.8 614.4h51.2c14.080 0 25.6-11.469 25.6-25.6s-11.52-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6zM486.4 614.4h51.2c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6zM640 614.4h51.2c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.131 0-25.6 11.469-25.6 25.6s11.469 25.6 25.6 25.6zM793.6 614.4h51.2c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.131 0-25.6 11.469-25.6 25.6s11.469 25.6 25.6 25.6zM179.2 716.8h51.2c14.080 0 25.6-11.469 25.6-25.6s-11.52-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6zM332.8 716.8h51.2c14.080 0 25.6-11.469 25.6-25.6s-11.52-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6zM486.4 716.8h51.2c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6zM640 716.8h51.2c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.131 0-25.6 11.469-25.6 25.6s11.469 25.6 25.6 25.6zM793.6 716.8h51.2c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.131 0-25.6 11.469-25.6 25.6s11.469 25.6 25.6 25.6zM179.2 819.2h51.2c14.080 0 25.6-11.469 25.6-25.6s-11.52-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6zM332.8 819.2h51.2c14.080 0 25.6-11.469 25.6-25.6s-11.52-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6zM486.4 819.2h51.2c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6zM640 819.2h51.2c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.131 0-25.6 11.469-25.6 25.6s11.469 25.6 25.6 25.6zM793.6 819.2h51.2c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.131 0-25.6 11.469-25.6 25.6s11.469 25.6 25.6 25.6z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["control-date"],"grid":14},"attrs":[{}],"properties":{"order":71,"id":23,"name":"control-Date","prevSize":28,"code":59702},"setIdx":0,"setId":1,"iconIdx":50},{"icon":{"paths":["M486.4 409.6h51.2c14.080 0 25.6 11.52 25.6 25.6s-11.52 25.6-25.6 25.6h-51.2c-14.080 0-25.6-11.52-25.6-25.6s11.52-25.6 25.6-25.6zM230.4 614.4c14.080 0 25.6 11.469 25.6 25.6s-11.52 25.6-25.6 25.6h-51.2c-14.080 0-25.6-11.469-25.6-25.6s11.52-25.6 25.6-25.6h51.2zM230.4 512c14.080 0 25.6 11.469 25.6 25.6s-11.52 25.6-25.6 25.6h-51.2c-14.080 0-25.6-11.469-25.6-25.6s11.52-25.6 25.6-25.6h51.2zM51.2 742.4v-435.2h665.6v102.4h51.2v-281.6c0-42.342-34.458-76.8-76.8-76.8h-128v-25.6c0-14.131-11.469-25.6-25.6-25.6s-25.6 11.469-25.6 25.6v25.6h-256v-25.6c0-14.131-11.52-25.6-25.6-25.6s-25.6 11.469-25.6 25.6v25.6h-128c-42.342 0-76.8 34.458-76.8 76.8v614.4c0 42.342 34.458 76.8 76.8 76.8h332.8v-51.2h-332.8c-14.080 0-25.6-11.469-25.6-25.6zM51.2 128c0-14.080 11.52-25.6 25.6-25.6h128v76.8c0 14.080 11.52 25.6 25.6 25.6s25.6-11.52 25.6-25.6v-76.8h256v76.8c0 14.080 11.469 25.6 25.6 25.6s25.6-11.52 25.6-25.6v-76.8h128c14.131 0 25.6 11.52 25.6 25.6v128h-665.6v-128zM384 409.6c14.080 0 25.6 11.52 25.6 25.6s-11.52 25.6-25.6 25.6h-51.2c-14.080 0-25.6-11.52-25.6-25.6s11.52-25.6 25.6-25.6h51.2zM742.4 460.8c-155.546 0-281.6 126.054-281.6 281.6s126.054 281.6 281.6 281.6 281.6-126.054 281.6-281.6-126.054-281.6-281.6-281.6zM742.4 972.8c-127.232 0-230.4-103.168-230.4-230.4s103.168-230.4 230.4-230.4 230.4 103.168 230.4 230.4-103.168 230.4-230.4 230.4zM384 512c14.080 0 25.6 11.469 25.6 25.6s-11.52 25.6-25.6 25.6h-51.2c-14.080 0-25.6-11.469-25.6-25.6s11.52-25.6 25.6-25.6h51.2zM384 614.4c14.080 0 25.6 11.469 25.6 25.6s-11.52 25.6-25.6 25.6h-51.2c-14.080 0-25.6-11.469-25.6-25.6s11.52-25.6 25.6-25.6h51.2zM844.8 716.8c14.131 0 25.6 11.469 25.6 25.6s-11.469 25.6-25.6 25.6h-102.4c-14.131 0-25.6-11.469-25.6-25.6v-102.4c0-14.131 11.469-25.6 25.6-25.6s25.6 11.469 25.6 25.6v76.8h76.8z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["control-date-time"],"grid":14},"attrs":[{}],"properties":{"order":70,"id":24,"name":"control-DateTime","prevSize":28,"code":59703},"setIdx":0,"setId":1,"iconIdx":51},{"icon":{"paths":["M793.6 609.416h-61.838v-28.108h-0.783q-21.135 33.092-62.034 33.092-37.573 0-60.469-26.912-22.896-27.112-22.896-75.554 0-50.635 25.244-81.136t66.144-30.501q38.747 0 54.011 28.308h0.783v-121.405h61.838v302.216zM732.936 510.139v-15.35q0-19.935-11.35-33.092t-29.549-13.157q-20.548 0-32.093 16.546-11.546 16.347-11.546 45.053 0 26.912 11.154 41.465t30.919 14.553q18.786 0 30.528-15.35 11.937-15.35 11.937-40.668zM548.594 609.416h-61.643v-116.421q0-44.455-32.093-44.455-15.264 0-24.853 13.357t-9.589 33.292v114.228h-61.839v-117.617q0-43.259-31.506-43.259-15.851 0-25.44 12.758-9.393 12.758-9.393 34.687v113.431h-61.838v-204.135h61.838v31.896h0.783q9.589-16.347 26.81-26.514 17.417-10.366 37.964-10.366 42.465 0 58.12 38.076 22.896-38.076 67.318-38.076 65.361 0 65.361 82.133v126.987zM0 0v204.8h76.8v76.8h51.2v-76.8h76.8v-204.8zM819.2 0v204.8h204.8v-204.8zM51.2 51.2h102.4v102.4h-102.4zM870.4 51.2h102.4v102.4h-102.4zM281.6 76.8v51.2h102.4v-51.2zM486.4 76.8v51.2h102.4v-51.2zM691.2 76.8v51.2h102.4v-51.2zM896 281.6v102.4h51.2v-102.4zM76.8 384v102.4h51.2v-102.4zM896 486.4v102.4h51.2v-102.4zM76.8 588.8v102.4h51.2v-102.4zM896 691.2v102.4h51.2v-102.4zM76.8 793.6v25.6h-76.8v204.8h204.8v-76.8h76.8v-51.2h-76.8v-76.8h-76.8v-25.6zM819.2 819.2v76.8h-25.6v51.2h25.6v76.8h204.8v-204.8zM51.2 870.4h102.4v102.4h-102.4zM870.4 870.4h102.4v102.4h-102.4zM384 896v51.2h102.4v-51.2zM588.8 896v51.2h102.4v-51.2z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["control-Markdown"],"grid":14},"attrs":[{}],"properties":{"order":72,"id":25,"name":"control-Markdown","prevSize":28,"code":59704},"setIdx":0,"setId":1,"iconIdx":52},{"icon":{"paths":["M292.571 713.143v109.714c0 30.286-24.571 54.857-54.857 54.857h-182.857c-30.286 0-54.857-24.571-54.857-54.857v-109.714c0-30.286 24.571-54.857 54.857-54.857h182.857c30.286 0 54.857 24.571 54.857 54.857zM292.571 420.571v109.714c0 30.286-24.571 54.857-54.857 54.857h-182.857c-30.286 0-54.857-24.571-54.857-54.857v-109.714c0-30.286 24.571-54.857 54.857-54.857h182.857c30.286 0 54.857 24.571 54.857 54.857zM658.286 713.143v109.714c0 30.286-24.571 54.857-54.857 54.857h-182.857c-30.286 0-54.857-24.571-54.857-54.857v-109.714c0-30.286 24.571-54.857 54.857-54.857h182.857c30.286 0 54.857 24.571 54.857 54.857zM292.571 128v109.714c0 30.286-24.571 54.857-54.857 54.857h-182.857c-30.286 0-54.857-24.571-54.857-54.857v-109.714c0-30.286 24.571-54.857 54.857-54.857h182.857c30.286 0 54.857 24.571 54.857 54.857zM658.286 420.571v109.714c0 30.286-24.571 54.857-54.857 54.857h-182.857c-30.286 0-54.857-24.571-54.857-54.857v-109.714c0-30.286 24.571-54.857 54.857-54.857h182.857c30.286 0 54.857 24.571 54.857 54.857zM1024 713.143v109.714c0 30.286-24.571 54.857-54.857 54.857h-182.857c-30.286 0-54.857-24.571-54.857-54.857v-109.714c0-30.286 24.571-54.857 54.857-54.857h182.857c30.286 0 54.857 24.571 54.857 54.857zM658.286 128v109.714c0 30.286-24.571 54.857-54.857 54.857h-182.857c-30.286 0-54.857-24.571-54.857-54.857v-109.714c0-30.286 24.571-54.857 54.857-54.857h182.857c30.286 0 54.857 24.571 54.857 54.857zM1024 420.571v109.714c0 30.286-24.571 54.857-54.857 54.857h-182.857c-30.286 0-54.857-24.571-54.857-54.857v-109.714c0-30.286 24.571-54.857 54.857-54.857h182.857c30.286 0 54.857 24.571 54.857 54.857zM1024 128v109.714c0 30.286-24.571 54.857-54.857 54.857h-182.857c-30.286 0-54.857-24.571-54.857-54.857v-109.714c0-30.286 24.571-54.857 54.857-54.857h182.857c30.286 0 54.857 24.571 54.857 54.857z"],"width":1024,"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["th"],"defaultCode":61450,"grid":14},"attrs":[],"properties":{"name":"grid","id":26,"order":83,"prevSize":28,"code":61450},"setIdx":0,"setId":1,"iconIdx":53},{"icon":{"paths":["M877.714 768v73.143c0 20-16.571 36.571-36.571 36.571h-804.571c-20 0-36.571-16.571-36.571-36.571v-73.143c0-20 16.571-36.571 36.571-36.571h804.571c20 0 36.571 16.571 36.571 36.571zM877.714 475.429v73.143c0 20-16.571 36.571-36.571 36.571h-804.571c-20 0-36.571-16.571-36.571-36.571v-73.143c0-20 16.571-36.571 36.571-36.571h804.571c20 0 36.571 16.571 36.571 36.571zM877.714 182.857v73.143c0 20-16.571 36.571-36.571 36.571h-804.571c-20 0-36.571-16.571-36.571-36.571v-73.143c0-20 16.571-36.571 36.571-36.571h804.571c20 0 36.571 16.571 36.571 36.571z"],"width":877.7142857142857,"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["bars","navicon","reorder"],"defaultCode":61641,"grid":14},"attrs":[],"properties":{"name":"list1","id":27,"order":89,"prevSize":28,"code":61641},"setIdx":0,"setId":1,"iconIdx":54},{"icon":{"paths":["M512 64c-131.696 0-239.125 107.4-239.125 239 0 65.8 24.831 146.717 65.375 215.25 19.653 33.221 43.902 63.853 71.75 87.125-59.423 7.524-122.009 9.415-172.125 32-79.809 35.967-144.343 94.74-172.375 178.625-1.5 9.499 0 0-1.5 9v0.499c0 73.995 60.563 134.501 134.375 134.501h627.125c73.888 0 134.5-60.506 134.5-134.5l-1.5-9.375c-27.845-84.263-92.273-143.119-172.125-179-50.17-22.544-112.844-24.421-172.375-31.875 27.792-23.26 52.002-53.831 71.625-87 40.544-68.533 65.375-149.45 65.375-215.25 0-131.6-107.304-239-239-239zM512 124c99.241 0 179 79.875 179 179 0 49.562-21.877 125.381-57 184.75s-81.435 98.75-122 98.75c-40.565 0-86.877-39.381-122-98.75s-57.125-135.188-57.125-184.75c0-99.125 79.884-179 179.125-179zM512 646.5c92.551 0 180.829 14.406 249.75 45.375 66.784 30.009 113.649 74.724 136.5 137.75-2.447 39.259-32.9 70.375-72.75 70.375h-627.125c-39.678 0-70.116-31.051-72.625-70.25 22.978-62.705 69.953-107.523 136.75-137.625 68.937-31.067 157.205-45.625 249.5-45.625z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["user-o"],"grid":14},"attrs":[{}],"properties":{"order":64,"id":28,"name":"user-o","prevSize":28,"code":59698},"setIdx":0,"setId":1,"iconIdx":55},{"icon":{"paths":["M217.6 992c-3.2 0-3.2 0-6.4 0h-3.2c-144-25.6-208-144-208-249.6 0-99.2 57.6-208 185.6-240v-147.2c0-19.2 12.8-32 32-32s32 12.8 32 32v172.8c0 16-12.8 28.8-25.6 32-108.8 16-160 102.4-160 182.4s48 166.4 153.6 185.6h6.4c16 3.2 28.8 19.2 25.6 38.4-3.2 16-16 25.6-32 25.6z","M774.4 1001.6c0 0 0 0 0 0-102.4 0-211.2-60.8-243.2-185.6h-176c-19.2 0-32-12.8-32-32s12.8-32 32-32h201.6c16 0 28.8 12.8 32 25.6 16 108.8 102.4 156.8 182.4 160 80 0 166.4-48 185.6-153.6v-3.2c3.2-16 19.2-28.8 38.4-25.6 16 3.2 28.8 19.2 25.6 38.4v3.2c-22.4 140.8-140.8 204.8-246.4 204.8z","M787.2 678.4c-19.2 0-32-12.8-32-32v-176c0-16 12.8-28.8 25.6-32 108.8-16 156.8-102.4 160-182.4 0-80-48-166.4-153.6-185.6h-3.2c-19.2-6.4-32-22.4-28.8-38.4s19.2-28.8 38.4-25.6h3.2c144 25.6 208 144 208 249.6 0 99.2-60.8 208-185.6 240v150.4c0 16-16 32-32 32z","M41.6 246.4c-3.2 0-3.2 0-6.4 0-16-3.2-28.8-19.2-25.6-35.2v-3.2c25.6-144 140.8-208 246.4-208 0 0 3.2 0 3.2 0 99.2 0 208 60.8 240 185.6h147.2c19.2 0 32 12.8 32 32s-12.8 32-32 32h-172.8c-16 0-28.8-12.8-32-25.6-16-108.8-102.4-156.8-182.4-160-80 0-166.4 48-185.6 153.6v3.2c-3.2 16-16 25.6-32 25.6z","M256 387.2c-32 0-67.2-12.8-92.8-38.4-51.2-51.2-51.2-134.4 0-185.6 25.6-22.4 57.6-35.2 92.8-35.2s67.2 12.8 92.8 38.4c25.6 25.6 38.4 57.6 38.4 92.8s-12.8 67.2-38.4 92.8c-25.6 22.4-57.6 35.2-92.8 35.2zM256 192c-16 0-32 6.4-44.8 19.2-25.6 25.6-25.6 67.2 0 92.8s67.2 25.6 92.8 0c12.8-12.8 19.2-28.8 19.2-48s-6.4-32-19.2-44.8-28.8-19.2-48-19.2z","M771.2 873.6c-32 0-67.2-12.8-92.8-38.4-51.2-51.2-51.2-134.4 0-185.6 25.6-25.6 57.6-38.4 92.8-38.4s67.2 12.8 92.8 38.4c25.6 25.6 38.4 57.6 38.4 92.8s-12.8 67.2-38.4 92.8c-28.8 25.6-60.8 38.4-92.8 38.4zM771.2 678.4c-19.2 0-35.2 6.4-48 19.2-25.6 25.6-25.6 67.2 0 92.8s67.2 25.6 92.8 0c12.8-12.8 19.2-28.8 19.2-48s-6.4-35.2-19.2-48-28.8-16-44.8-16z","M745.6 387.2c-32 0-67.2-12.8-92.8-38.4s-38.4-57.6-38.4-92.8 12.8-67.2 38.4-92.8c25.6-22.4 60.8-35.2 92.8-35.2s67.2 12.8 92.8 38.4c51.2 51.2 51.2 134.4 0 185.6v0c-25.6 22.4-57.6 35.2-92.8 35.2zM745.6 192c-19.2 0-35.2 6.4-48 19.2s-19.2 28.8-19.2 48 6.4 35.2 19.2 48c25.6 25.6 67.2 25.6 92.8 0s25.6-67.2 0-92.8c-9.6-16-25.6-22.4-44.8-22.4z","M259.2 873.6c-32 0-67.2-12.8-92.8-38.4s-38.4-57.6-38.4-92.8 12.8-67.2 38.4-92.8c25.6-22.4 57.6-35.2 92.8-35.2s67.2 12.8 92.8 38.4c51.2 51.2 51.2 134.4 0 185.6v0c-25.6 22.4-57.6 35.2-92.8 35.2zM259.2 678.4c-19.2 0-35.2 6.4-48 19.2s-19.2 28.8-19.2 48 6.4 35.2 19.2 48c25.6 25.6 67.2 25.6 92.8 0s25.6-67.2 0-92.8c-9.6-16-25.6-22.4-44.8-22.4z"],"attrs":[{},{},{},{},{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["webhooks"],"grid":14},"attrs":[{},{},{},{},{},{},{},{}],"properties":{"order":92,"id":29,"name":"rules, search-Rule","prevSize":28,"code":59719},"setIdx":0,"setId":1,"iconIdx":56},{"icon":{"paths":["M512 682.667h-341.333c-5.845 0-11.349-1.152-16.299-3.2-5.205-2.133-9.899-5.333-13.867-9.301s-7.125-8.661-9.301-13.867c-2.048-4.949-3.2-10.453-3.2-16.299v-426.667c0-5.845 1.152-11.349 3.2-16.299 2.133-5.205 5.333-9.899 9.301-13.867s8.661-7.125 13.867-9.301c4.949-2.048 10.453-3.2 16.299-3.2h682.667c5.845 0 11.349 1.152 16.299 3.2 5.205 2.133 9.899 5.333 13.867 9.301s7.125 8.661 9.301 13.867c2.048 4.949 3.2 10.453 3.2 16.299v426.667c0 5.845-1.152 11.349-3.2 16.299-2.133 5.205-5.333 9.899-9.301 13.867s-8.661 7.125-13.867 9.301c-4.949 2.048-10.453 3.2-16.299 3.2zM469.333 768v85.333h-128c-23.552 0-42.667 19.115-42.667 42.667s19.115 42.667 42.667 42.667h341.333c23.552 0 42.667-19.115 42.667-42.667s-19.115-42.667-42.667-42.667h-128v-85.333h298.667c17.28 0 33.835-3.456 48.981-9.728 15.701-6.485 29.781-16 41.557-27.776s21.291-25.856 27.776-41.557c6.229-15.104 9.685-31.659 9.685-48.939v-426.667c0-17.28-3.456-33.835-9.728-48.981-6.485-15.701-16-29.781-27.776-41.557s-25.856-21.291-41.557-27.776c-15.104-6.229-31.659-9.685-48.939-9.685h-682.667c-17.28 0-33.835 3.456-48.981 9.728-15.659 6.485-29.739 16-41.515 27.776s-21.291 25.856-27.776 41.515c-6.272 15.147-9.728 31.701-9.728 48.981v426.667c0 17.28 3.456 33.835 9.728 48.981 6.485 15.701 16 29.781 27.776 41.557s25.856 21.291 41.557 27.776c15.104 6.229 31.659 9.685 48.939 9.685z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["monitor"],"grid":0},"attrs":[{}],"properties":{"order":132,"id":0,"prevSize":24,"code":59765,"name":"type-UI"},"setIdx":0,"setId":1,"iconIdx":57},{"icon":{"paths":["M66.337 575.491l276.668-171.531v-57.177l-331.627 207.614v42.189l331.627 207.614-0-57.177z","M957.663 575.49l-276.668-171.531v-57.177l331.627 207.614v42.189l-331.627 207.614 0-57.177z","M583.295 214.183l-200.825 621.623 53.007 17.527 200.837-621.623z"],"attrs":[{},{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["prerender"],"grid":0},"attrs":[{},{},{}],"properties":{"order":114,"id":0,"name":"prerender","prevSize":24,"code":59724},"setIdx":0,"setId":1,"iconIdx":58},{"icon":{"paths":["M1024 512c0 282.77-229.23 512-512 512s-512-229.23-512-512c0-282.77 229.23-512 512-512s512 229.23 512 512z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["circle"],"grid":0},"attrs":[{}],"properties":{"order":106,"id":1,"name":"circle","prevSize":24,"code":59729},"setIdx":0,"setId":1,"iconIdx":59},{"icon":{"paths":["M512 0c-15.36 0-25.6 10.24-25.6 25.6s10.24 25.6 25.6 25.6h128v870.4h-128c-15.36 0-25.6 10.24-25.6 25.6s10.24 25.6 25.6 25.6h307.2c15.36 0 25.6-10.24 25.6-25.6s-10.24-25.6-25.6-25.6h-128v-870.4h128c15.36 0 25.6-10.24 25.6-25.6s-10.24-25.6-25.6-25.6h-307.2zM51.2 204.8c-28.16 0-51.2 23.040-51.2 51.2v460.8c0 28.16 23.040 51.2 51.2 51.2h537.6v-51.2h-512c-15.36 0-25.6-10.24-25.6-25.6v-409.6c0-15.36 10.24-25.6 25.6-25.6h512v-51.2h-537.6zM742.4 204.8v51.2h204.8c15.36 0 25.6 10.24 25.6 25.6v409.6c0 15.36-10.24 25.6-25.6 25.6h-204.8v51.2h230.4c28.16 0 51.2-23.040 51.2-51.2v-460.8c0-28.16-23.040-51.2-51.2-51.2h-230.4z","M386.56 606.72c0 12.8-7.68 23.040-20.48 25.6-28.16 10.24-58.88 15.36-92.16 15.36-35.84 0-66.56-10.24-84.48-25.6s-25.6-38.4-25.6-66.56 10.24-51.2 25.6-66.56c17.92-17.92 46.080-23.040 84.48-23.040h69.12v-38.4c0-35.84-25.6-53.76-64-53.76-23.040 0-46.080 7.68-69.12 20.48-2.56 2.56-5.12 2.56-10.24 2.56-10.24 0-20.48-7.68-20.48-20.48 0-7.68 2.56-12.8 10.24-17.92 30.72-20.48 61.44-25.6 92.16-25.6 56.32 0 104.96 30.72 104.96 92.16v181.76zM345.6 501.76h-69.12c-61.44 0-69.12 28.16-69.12 53.76s7.68 56.32 69.12 56.32c23.040 0 46.080-2.56 69.12-10.24v-99.84z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["control-Slug"],"grid":0},"attrs":[{},{}],"properties":{"order":103,"id":2,"name":"control-Slug","prevSize":24,"code":59727},"setIdx":0,"setId":1,"iconIdx":60},{"icon":{"paths":["M295.954 822.751h-94.705c-47.353 0-88.786-41.434-88.786-88.786v-491.283c0-47.353 41.434-88.786 88.786-88.786h94.705v-59.191h-94.705c-82.867 0-147.977 65.11-147.977 147.977v491.283c0 82.867 65.11 147.977 147.977 147.977h94.705v-59.191z","M970.728 473.526c-82.867-171.653-201.249-378.821-272.277-378.821h-112.462v59.191h112.462c35.514 11.838 136.139 177.572 213.087 337.387-76.948 153.896-177.572 325.549-213.087 337.387h-112.462v59.191h112.462c71.029 0 183.491-207.168 272.277-384.74l5.919-11.838-5.919-17.757z","M266.358 337.341v260.462h59.191v-260.462z","M479.422 337.341v260.462h59.191v-260.462z"],"attrs":[{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["Tags"],"grid":0},"attrs":[{},{},{},{}],"properties":{"order":98,"id":3,"name":"type-Tags","prevSize":24,"code":59722},"setIdx":0,"setId":1,"iconIdx":61},{"icon":{"paths":["M512 102.4c-200.4 0-366.954 144.072-402.4 334.2-0.031 0.165-0.069 0.335-0.1 0.5-2.974 16.061-4.76 32.441-5.8 49.1-0.017 0.271-0.084 0.529-0.1 0.8 0.019 0.004 0.080-0.004 0.1 0-0.503 8.31-1.3 16.564-1.3 25 0 226.202 183.398 409.6 409.6 409.6 208.165 0 379.707-155.44 405.8-356.5 0.004-0.033-0.004-0.067 0-0.1 1.94-14.978 3.124-30.16 3.4-45.6 0.044-2.487 0.4-4.903 0.4-7.4 0-226.202-183.398-409.6-409.6-409.6zM512 153.6c185.461 0 337.902 140.924 356.4 321.5-35.181-21.812-84.232-39.9-151.6-39.9-85.35 0-140.891 41.606-194.6 81.9-49.152 36.864-95.55 71.7-163.8 71.7-86.067 0-135.862-54.67-175.9-98.6-9.001-9.901-17.11-17.483-25.4-25.3 23.131-175.603 172.981-311.3 354.9-311.3zM716.8 486.4c77.828 0 125.173 28.221 152.2 52.8-13.96 185.173-168.254 331.2-357 331.2-190.097 0-345.175-148.14-357.2-335.2 41.826 45.372 102.577 104.8 203.6 104.8 85.35 0 140.891-41.606 194.6-81.9 49.152-36.915 95.55-71.7 163.8-71.7z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["activity"],"grid":0},"attrs":[{}],"properties":{"order":12,"id":4,"name":"activity, history, time","prevSize":24,"code":59652},"setIdx":0,"setId":1,"iconIdx":62},{"icon":{"paths":["M512 0c-35.392 0-64 28.608-64 64v384h-384c-35.392 0-64 28.608-64 64s28.608 64 64 64h384v384c0 35.392 28.608 64 64 64s64-28.608 64-64v-384h384c35.392 0 64-28.608 64-64s-28.608-64-64-64h-384v-384c0-35.392-28.608-64-64-64z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["add"],"grid":0},"attrs":[{}],"properties":{"order":13,"id":5,"name":"add, plus","prevSize":24,"code":59653},"setIdx":0,"setId":1,"iconIdx":63},{"icon":{"paths":["M512 102.4c-226.202 0-409.6 183.398-409.6 409.6s183.398 409.6 409.6 409.6c226.202 0 409.6-183.398 409.6-409.6s-183.398-409.6-409.6-409.6zM512 153.6c197.632 0 358.4 160.819 358.4 358.4s-160.768 358.4-358.4 358.4c-197.632 0-358.4-160.819-358.4-358.4s160.768-358.4 358.4-358.4zM691.9 333c-12.893 0.002-25.782 4.882-35.5 14.6l-222.2 221.9-67.7-67.5c-19.19-19.294-51.085-19.215-70.3 0-19.15 19.15-19.15 51.050 0 70.2 0.198 0.2 26.198 26.681 52 53 12.95 13.209 25.761 26.372 35.2 36 4.719 4.814 8.607 8.755 11.2 11.4 1.296 1.322 2.293 2.281 2.9 2.9 0.279 0.282 0.488 0.486 0.6 0.6 0.001 0.001 7.591-7.429 14.6-14.3l-14.5 14.4 0.2 0.2v0.1c19.43 19.327 51.57 19.327 71 0v-0.1l258.1-257.6c19.546-19.447 19.521-51.885-0.1-71.3-9.731-9.679-22.607-14.502-35.5-14.5z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["check-circle"],"grid":0},"attrs":[{}],"properties":{"order":14,"id":6,"name":"check-circle","prevSize":24,"code":59654},"setIdx":0,"setId":1,"iconIdx":64},{"icon":{"paths":["M512 1024c-282.778 0-512-229.222-512-512s229.222-512 512-512 512 229.222 512 512-229.222 512-512 512zM855.808 270.592c-19.2-19.2-50.278-19.2-69.478 0l-376.73 376.73-171.878-171.93c-19.2-19.2-50.278-19.2-69.478 0s-19.2 50.278 0 69.478c0 0 201.523 205.261 204.8 208.486 9.984 10.138 23.347 14.643 36.557 14.080 13.21 0.563 26.573-3.942 36.608-14.029 3.277-3.226 409.6-413.286 409.6-413.286 19.2-19.2 19.2-50.33 0-69.53z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["check-circle-filled"],"grid":0},"attrs":[{}],"properties":{"order":27,"id":7,"name":"check-circle-filled","prevSize":24,"code":59655},"setIdx":0,"setId":1,"iconIdx":65},{"icon":{"paths":["M601.024 512l276.736 276.736c24.512 24.576 24.512 64.384 0 89.024-24.64 24.576-64.384 24.576-89.024 0l-276.736-276.736-276.736 276.736c-24.512 24.576-64.384 24.576-89.024 0-24.512-24.64-24.512-64.448 0-89.024l276.736-276.736-276.736-276.736c-24.512-24.576-24.512-64.384 0-89.024 24.64-24.576 64.512-24.576 89.024 0l276.736 276.736 276.736-276.736c24.64-24.576 64.384-24.576 89.024 0 24.512 24.64 24.512 64.448 0 89.024l-276.736 276.736z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["close"],"grid":0},"attrs":[{}],"properties":{"order":28,"id":8,"name":"close","prevSize":24,"code":59656},"setIdx":0,"setId":1,"iconIdx":66},{"icon":{"paths":["M409.6 435.2h-153.6v51.2h153.6v-51.2zM409.6 332.8h-153.6v51.2h153.6v-51.2zM256 691.2h409.6v-51.2h-409.6v51.2zM409.6 230.4h-153.6v51.2h153.6v-51.2zM870.4 179.2h-51.2v-51.2c0-28.262-22.938-51.2-51.2-51.2h-614.4c-28.262 0-51.2 22.938-51.2 51.2v665.6c0 28.262 22.938 51.2 51.2 51.2h51.2v51.2c0 28.262 22.938 51.2 51.2 51.2h614.4c28.262 0 51.2-22.938 51.2-51.2v-665.6c0-28.262-22.938-51.2-51.2-51.2zM179.2 793.6c-14.157 0-25.6-11.443-25.6-25.6v-614.4c0-14.131 11.443-25.6 25.6-25.6h563.2c14.157 0 25.6 11.469 25.6 25.6v614.4c0 14.157-11.443 25.6-25.6 25.6h-563.2zM870.4 870.4c0 14.157-11.443 25.6-25.6 25.6h-563.2c-14.157 0-25.6-11.443-25.6-25.6v-25.6h512c28.262 0 51.2-22.938 51.2-51.2v-563.2h25.6c14.157 0 25.6 11.469 25.6 25.6v614.4zM614.4 230.4h-102.4c-28.262 0-51.2 22.938-51.2 51.2v153.6c0 28.262 22.938 51.2 51.2 51.2h102.4c28.262 0 51.2-22.938 51.2-51.2v-153.6c0-28.262-22.938-51.2-51.2-51.2zM614.4 435.2h-102.4v-153.6h102.4v153.6zM256 588.8h409.6v-51.2h-409.6v51.2z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["content"],"grid":0},"attrs":[{}],"properties":{"order":37,"id":9,"name":"type-References","prevSize":24,"code":59657},"setIdx":0,"setId":1,"iconIdx":67},{"icon":{"paths":["M793.6 844.8c0 14.157-11.443 25.6-25.6 25.6h-665.6c-14.131 0-25.6-11.443-25.6-25.6v-665.6c0-14.157 11.469-25.6 25.6-25.6h665.6c14.157 0 25.6 11.443 25.6 25.6v102.4h51.2v-128c0-28.262-22.938-51.2-51.2-51.2h-716.8c-28.262 0-51.2 22.938-51.2 51.2v716.8c0 28.262 22.938 51.2 51.2 51.2h716.8c28.262 0 51.2-22.938 51.2-51.2v-281.6h-51.2v256zM991.078 237.747c-9.958-9.958-26.035-9.958-35.968 0l-391.91 391.91-238.31-238.31c-9.958-9.958-26.061-9.958-35.942 0-9.958 9.907-9.958 26.010 0 35.942l254.874 254.874c0.461 0.538 0.614 1.203 1.126 1.69 5.043 5.018 11.674 7.475 18.278 7.373 6.605 0.102 13.235-2.355 18.278-7.373 0.512-0.512 0.666-1.178 1.126-1.69l408.448-408.474c9.933-9.933 9.933-26.035 0-35.942z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["control-checkbox"],"grid":0},"attrs":[{}],"properties":{"order":38,"id":10,"name":"control-Checkbox","prevSize":24,"code":59658},"setIdx":0,"setId":1,"iconIdx":68},{"icon":{"paths":["M51.2 0c-28.262 0-51.2 22.938-51.2 51.2v281.6c0 28.262 22.938 51.2 51.2 51.2h921.6c28.262 0 51.2-22.938 51.2-51.2v-281.6c0-28.262-22.938-51.2-51.2-51.2h-921.6zM76.8 51.2h512v281.6h-512c-14.157 0-25.6-11.443-25.6-25.6v-230.4c0-14.157 11.443-25.6 25.6-25.6zM640 51.2h307.2c14.157 0 25.6 11.443 25.6 25.6v230.4c0 14.157-11.443 25.6-25.6 25.6h-307.2v-281.6zM716.8 153.6c-0.41 0.358 89.139 102.938 89.6 102.4 0.512 0 89.6-95.36 89.6-102.4 0 0.384-172.16 0-179.2 0zM128 435.2c-42.394 0-76.8 34.406-76.8 76.8s34.406 76.8 76.8 76.8c42.394 0 76.8-34.406 76.8-76.8s-34.406-76.8-76.8-76.8zM128 486.4c14.157 0 25.6 11.443 25.6 25.6s-11.443 25.6-25.6 25.6c-14.157 0-25.6-11.443-25.6-25.6s11.443-25.6 25.6-25.6zM307.2 486.4c-14.157 0-25.6 11.443-25.6 25.6s11.443 25.6 25.6 25.6h640c14.157 0 25.6-11.443 25.6-25.6s-11.443-25.6-25.6-25.6h-640zM128 640c-42.394 0-76.8 34.381-76.8 76.8s34.406 76.8 76.8 76.8c42.394 0 76.8-34.381 76.8-76.8s-34.406-76.8-76.8-76.8zM128 691.2c14.157 0 25.6 11.443 25.6 25.6s-11.443 25.6-25.6 25.6c-14.157 0-25.6-11.443-25.6-25.6s11.443-25.6 25.6-25.6zM307.2 691.2c-14.157 0-25.6 11.443-25.6 25.6s11.443 25.6 25.6 25.6h640c14.157 0 25.6-11.443 25.6-25.6s-11.443-25.6-25.6-25.6h-640zM128 844.8c-42.394 0-76.8 34.381-76.8 76.8s34.406 76.8 76.8 76.8c42.394 0 76.8-34.381 76.8-76.8s-34.406-76.8-76.8-76.8zM128 896c14.157 0 25.6 11.443 25.6 25.6s-11.443 25.6-25.6 25.6c-14.157 0-25.6-11.443-25.6-25.6s11.443-25.6 25.6-25.6zM307.2 896c-14.157 0-25.6 11.443-25.6 25.6s11.443 25.6 25.6 25.6h640c14.157 0 25.6-11.443 25.6-25.6s-11.443-25.6-25.6-25.6h-640z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["control-dropdown"],"grid":0},"attrs":[{}],"properties":{"order":39,"id":11,"name":"control-Dropdown","prevSize":24,"code":59659},"setIdx":0,"setId":1,"iconIdx":69},{"icon":{"paths":["M512 0c-14.157 0-25.6 11.443-25.6 25.6s11.443 25.6 25.6 25.6h128v870.4h-128c-14.157 0-25.6 11.443-25.6 25.6s11.443 25.6 25.6 25.6h307.2c14.157 0 25.6-11.443 25.6-25.6s-11.443-25.6-25.6-25.6h-128v-870.4h128c14.157 0 25.6-11.443 25.6-25.6s-11.443-25.6-25.6-25.6h-307.2zM51.2 204.8c-28.262 0-51.2 22.938-51.2 51.2v460.8c0 28.262 22.938 51.2 51.2 51.2h537.6v-51.2h-512c-14.131 0-25.6-11.443-25.6-25.6v-409.6c0-14.157 11.469-25.6 25.6-25.6h512v-51.2h-537.6zM742.4 204.8v51.2h204.8c14.157 0 25.6 11.443 25.6 25.6v409.6c0 14.157-11.443 25.6-25.6 25.6h-204.8v51.2h230.4c28.262 0 51.2-22.938 51.2-51.2v-460.8c0-28.262-22.938-51.2-51.2-51.2h-230.4zM285.9 307c-0.589 0.051-1.161 0.048-1.75 0.15-8.243 0.051-16.396 4.474-20.85 13.050l-132.55 306.25c-6.656 12.749-2.866 28.981 8.5 36.2 11.341 7.219 25.97 2.749 32.6-10l27.65-63.85h170.5c0.512 0 0.914-0.224 1.4-0.25l27.45 64.050c6.63 12.749 21.136 17.269 32.4 10.050s15.005-23.451 8.4-36.2l-131.3-306.25c-4.454-8.576-12.432-12.973-20.65-13.050-0.614-0.102-1.211-0.099-1.8-0.15zM285.9 389.15l63.65 148.45h-127.9l64.25-148.45z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["control-input"],"grid":0},"attrs":[{}],"properties":{"order":41,"id":12,"name":"control-Input","prevSize":24,"code":59660},"setIdx":0,"setId":1,"iconIdx":70},{"icon":{"paths":["M153.6 716.8c-84.787 0-153.6 68.813-153.6 153.6s68.813 153.6 153.6 153.6c84.787 0 153.6-68.813 153.6-153.6s-68.813-153.6-153.6-153.6zM153.6 972.8c-56.55 0-102.4-45.85-102.4-102.4s45.85-102.4 102.4-102.4c56.55 0 102.4 45.85 102.4 102.4s-45.85 102.4-102.4 102.4zM384 179.2h614.4c14.157 0 25.6-11.443 25.6-25.6s-11.443-25.6-25.6-25.6h-614.4c-14.131 0-25.6 11.443-25.6 25.6s11.469 25.6 25.6 25.6zM998.4 486.4h-614.4c-14.131 0-25.6 11.443-25.6 25.6s11.469 25.6 25.6 25.6h614.4c14.157 0 25.6-11.443 25.6-25.6s-11.443-25.6-25.6-25.6zM153.6 0c-84.787 0-153.6 68.787-153.6 153.6s68.813 153.6 153.6 153.6c84.787 0 153.6-68.787 153.6-153.6s-68.813-153.6-153.6-153.6zM153.6 256c-56.55 0-102.4-45.85-102.4-102.4s45.85-102.4 102.4-102.4c56.55 0 102.4 45.85 102.4 102.4s-45.85 102.4-102.4 102.4zM153.6 358.4c-84.787 0-153.6 68.787-153.6 153.6 0 84.787 68.813 153.6 153.6 153.6s153.6-68.813 153.6-153.6c0-84.813-68.813-153.6-153.6-153.6zM153.6 614.4c-56.55 0-102.4-45.85-102.4-102.4s45.85-102.4 102.4-102.4c56.55 0 102.4 45.85 102.4 102.4s-45.85 102.4-102.4 102.4zM153.6 102.4c-28.262 0-51.2 22.938-51.2 51.2s22.938 51.2 51.2 51.2c28.262 0 51.2-22.938 51.2-51.2s-22.938-51.2-51.2-51.2zM998.4 844.8h-614.4c-14.131 0-25.6 11.443-25.6 25.6s11.469 25.6 25.6 25.6h614.4c14.157 0 25.6-11.443 25.6-25.6s-11.443-25.6-25.6-25.6z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["control-radio"],"grid":0},"attrs":[{}],"properties":{"order":42,"id":13,"name":"control-Radio","prevSize":24,"code":59661},"setIdx":0,"setId":1,"iconIdx":71},{"icon":{"paths":["M0 0v204.8h76.8v76.8h51.2v-76.8h76.8v-204.8h-204.8zM819.2 0v204.8h204.8v-204.8h-204.8zM51.2 51.2h102.4v102.4h-102.4v-102.4zM870.4 51.2h102.4v102.4h-102.4v-102.4zM281.6 76.8v51.2h102.4v-51.2h-102.4zM486.4 76.8v51.2h102.4v-51.2h-102.4zM691.2 76.8v51.2h102.4v-51.2h-102.4zM333.25 204.8c-7.091-0.307-14.348 2.097-19.75 7.55l-74.75 74.75c-10.317 10.291-10.317 27.083 0 37.4s27.059 10.317 37.35 0l68.45-68.5h141.85v486.4h-50.7c-7.117-0.307-14.348 2.097-19.75 7.55l-23.6 23.55c-10.317 10.317-10.317 27.083 0 37.4 10.291 10.317 27.109 10.317 37.4 0l17.25-17.3h129.75l18.050 18c10.394 10.368 27.181 10.368 37.6 0 10.368-10.394 10.368-27.181 0-37.6l-24-24c-5.478-5.478-12.682-7.907-19.85-7.6h-50.95v-486.4h141.55l69.25 69.2c10.394 10.368 27.155 10.368 37.6 0 10.368-10.368 10.368-27.181 0-37.6l-75.2-75.2c-5.478-5.478-12.706-7.907-19.9-7.6h-357.65zM896 281.6v102.4h51.2v-102.4h-51.2zM76.8 384v102.4h51.2v-102.4h-51.2zM896 486.4v102.4h51.2v-102.4h-51.2zM76.8 588.8v102.4h51.2v-102.4h-51.2zM896 691.2v102.4h51.2v-102.4h-51.2zM76.8 793.6v25.6h-76.8v204.8h204.8v-76.8h76.8v-51.2h-76.8v-76.8h-76.8v-25.6h-51.2zM819.2 819.2v76.8h-25.6v51.2h25.6v76.8h204.8v-204.8h-204.8zM51.2 870.4h102.4v102.4h-102.4v-102.4zM870.4 870.4h102.4v102.4h-102.4v-102.4zM384 896v51.2h102.4v-51.2h-102.4zM588.8 896v51.2h102.4v-51.2h-102.4z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["control-textarea"],"grid":0},"attrs":[{}],"properties":{"order":17,"id":14,"name":"control-TextArea","prevSize":24,"code":59662},"setIdx":0,"setId":1,"iconIdx":72},{"icon":{"paths":["M332.8 25.6c-127.258 0-230.4 103.142-230.4 230.4s103.142 230.4 230.4 230.4h358.4c127.258 0 230.4-103.142 230.4-230.4s-103.142-230.4-230.4-230.4h-358.4zM332.8 76.8h358.4c98.97 0 179.2 80.23 179.2 179.2s-80.23 179.2-179.2 179.2h-358.4c-98.97 0-179.2-80.23-179.2-179.2s80.23-179.2 179.2-179.2zM332.8 128c-70.707 0-128 57.293-128 128s57.293 128 128 128c70.707 0 128-57.293 128-128s-57.293-128-128-128zM332.8 179.2c42.419 0 76.8 34.381 76.8 76.8s-34.381 76.8-76.8 76.8c-42.419 0-76.8-34.381-76.8-76.8s34.381-76.8 76.8-76.8zM332.8 537.6c-127.258 0-230.4 103.142-230.4 230.4s103.142 230.4 230.4 230.4h358.4c127.258 0 230.4-103.142 230.4-230.4s-103.142-230.4-230.4-230.4h-358.4zM332.8 588.8h358.4c98.97 0 179.2 80.23 179.2 179.2s-80.23 179.2-179.2 179.2h-358.4c-98.97 0-179.2-80.23-179.2-179.2s80.23-179.2 179.2-179.2zM691.2 640c-70.707 0-128 57.293-128 128s57.293 128 128 128c70.707 0 128-57.293 128-128s-57.293-128-128-128zM691.2 691.2c42.419 0 76.8 34.381 76.8 76.8s-34.381 76.8-76.8 76.8c-42.419 0-76.8-34.381-76.8-76.8s34.381-76.8 76.8-76.8z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["control-toggle"],"grid":0},"attrs":[{}],"properties":{"order":16,"id":15,"name":"control-Toggle","prevSize":24,"code":59663},"setIdx":0,"setId":1,"iconIdx":73},{"icon":{"paths":["M204.8 51.2c-56.525 0-102.4 45.875-102.4 102.4v512c0 56.525 45.875 102.4 102.4 102.4h409.6c56.525 0 102.4-45.875 102.4-102.4v-512c0-56.525-45.875-102.4-102.4-102.4h-409.6zM204.8 102.4h409.6c28.262 0 51.2 22.886 51.2 51.2v512c0 28.314-22.938 51.2-51.2 51.2h-409.6c-28.262 0-51.2-22.886-51.2-51.2v-512c0-28.314 22.938-51.2 51.2-51.2zM768 204.8v51.2c28.262 0 51.2 22.886 51.2 51.2v512c0 28.314-22.938 51.2-51.2 51.2h-409.6c-28.262 0-51.2-22.886-51.2-51.2h-51.2c0 56.525 45.875 102.4 102.4 102.4h409.6c56.525 0 102.4-45.875 102.4-102.4v-512c0-56.525-45.875-102.4-102.4-102.4z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["copy"],"grid":0},"attrs":[{}],"properties":{"order":90,"id":16,"name":"copy","prevSize":24,"code":59664},"setIdx":0,"setId":1,"iconIdx":74},{"icon":{"paths":["M828.8 1024h-633.6c-105.6 0-195.2-89.6-195.2-195.2v-320c0-281.6 227.2-508.8 505.6-508.8 288 0 518.4 230.4 518.4 518.4v310.4c0 105.6-89.6 195.2-195.2 195.2zM505.6 64c-243.2 0-441.6 198.4-441.6 441.6v320c0 73.6 60.8 134.4 131.2 134.4h630.4c73.6 0 131.2-60.8 131.2-131.2v-310.4c3.2-249.6-201.6-454.4-451.2-454.4z","M512 668.8c-3.2 0-6.4 0-6.4 0-32-3.2-64-19.2-80-48l-192-278.4c-9.6-9.6-9.6-25.6-0-38.4 9.6-9.6 25.6-12.8 38.4-6.4l294.4 172.8c28.8 16 48 44.8 51.2 76.8s-6.4 64-28.8 89.6c-19.2 22.4-48 32-76.8 32zM364.8 428.8l108.8 160c6.4 9.6 19.2 19.2 32 19.2s25.6-3.2 35.2-12.8c9.6-9.6 12.8-22.4 9.6-35.2s-9.6-22.4-19.2-32l-166.4-99.2z","M678.4 364.8c-6.4 0-12.8-3.2-19.2-6.4-16-9.6-19.2-28.8-9.6-44.8l54.4-83.2c9.6-16 28.8-19.2 44.8-9.6 19.2 12.8 22.4 35.2 12.8 48l-54.4 83.2c-6.4 9.6-16 12.8-28.8 12.8z"],"attrs":[{},{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["dashboard"],"grid":0},"attrs":[{},{},{}],"properties":{"order":26,"id":17,"name":"dashboard, search-Dashboard","prevSize":24,"code":59665},"setIdx":0,"setId":1,"iconIdx":75},{"icon":{"paths":["M597.35 819.2c14.131 0 25.6-11.469 25.6-25.6v-307.2c0-14.080-11.469-25.6-25.6-25.6s-25.6 11.52-25.6 25.6v307.2c0 14.131 11.418 25.6 25.6 25.6zM776.55 204.8h-153.6v-51.2c0-28.314-22.886-51.2-51.2-51.2h-102.4c-28.262 0-51.2 22.886-51.2 51.2v51.2h-153.6c-28.262 0-51.2 22.886-51.2 51.2v102.4c0 28.314 22.938 51.2 51.2 51.2v460.8c0 28.314 22.938 51.2 51.2 51.2h409.6c28.314 0 51.2-22.886 51.2-51.2v-460.8c28.314 0 51.2-22.886 51.2-51.2v-102.4c0-28.314-22.938-51.2-51.2-51.2zM469.35 153.6h102.4v51.2h-102.4v-51.2zM725.35 870.4h-409.6v-460.8h409.6v460.8zM776.55 358.4h-512v-102.4h512v102.4zM443.75 819.2c14.131 0 25.6-11.469 25.6-25.6v-307.2c0-14.080-11.469-25.6-25.6-25.6s-25.6 11.52-25.6 25.6v307.2c0 14.131 11.469 25.6 25.6 25.6z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["delete"],"grid":0},"attrs":[{}],"properties":{"order":29,"id":18,"name":"delete, bin","prevSize":24,"code":59666},"setIdx":0,"setId":1,"iconIdx":76},{"icon":{"paths":["M832 128h-192v-64c0-35.392-28.608-64-64-64h-128c-35.328 0-64 28.608-64 64v64h-192c-35.328 0-64 28.608-64 64v128c0 35.392 28.672 64 64 64v512c0 35.392 28.672 64 64 64h512c35.392 0 64-28.608 64-64v-512c35.392 0 64-28.608 64-64v-128c0-35.392-28.608-64-64-64zM448 64h128v64h-128v-64zM448 800c0 17.664-14.336 32-32 32s-32-14.336-32-32v-320c0-17.6 14.336-32 32-32s32 14.4 32 32v320zM640 800c0 17.664-14.336 32-32 32s-32-14.336-32-32v-320c0-17.6 14.336-32 32-32s32 14.4 32 32v320zM832 320h-640v-128h640v128z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["delete-filled"],"grid":0},"attrs":[{}],"properties":{"order":36,"id":19,"name":"delete-filled","prevSize":24,"code":59667},"setIdx":0,"setId":1,"iconIdx":77},{"icon":{"paths":["M358.4 102.4c-28.314 0-51.2 22.886-51.2 51.2v256h51.2v-256h307.2v153.6c0 28.314 22.886 51.2 51.2 51.2h153.6v512h-358.4v51.2h358.4c28.314 0 51.2-22.886 51.2-51.2v-548.2l-219.8-219.8h-343.4zM716.8 189.8l117.4 117.4h-117.4v-117.4zM332.8 460.8c-127.232 0-230.4 103.168-230.4 230.4s103.168 230.4 230.4 230.4c127.232 0 230.4-103.168 230.4-230.4s-103.168-230.4-230.4-230.4zM332.8 512c98.816 0 179.2 80.384 179.2 179.2s-80.384 179.2-179.2 179.2c-98.816 0-179.2-80.384-179.2-179.2s80.384-179.2 179.2-179.2zM227.2 665.6c-12.39 0-22.4 10.061-22.4 22.4v6.4c0 12.39 10.010 22.4 22.4 22.4h211.2c12.39 0 22.4-10.010 22.4-22.4v-6.4c0-12.39-10.061-22.4-22.4-22.4h-211.2z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["document-delete"],"grid":0},"attrs":[{}],"properties":{"order":35,"id":20,"name":"document-delete","prevSize":24,"code":59668},"setIdx":0,"setId":1,"iconIdx":78},{"icon":{"paths":["M358.4 102.4c-28.314 0-51.2 22.886-51.2 51.2v256h51.2v-256h307.2v153.6c0 28.314 22.886 51.2 51.2 51.2h153.6v512h-358.4v51.2h358.4c28.314 0 51.2-22.886 51.2-51.2v-548.2l-219.8-219.8h-343.4zM716.8 189.8l117.4 117.4h-117.4v-117.4zM332.8 460.8c-127.232 0-230.4 103.168-230.4 230.4s103.168 230.4 230.4 230.4c127.232 0 230.4-103.168 230.4-230.4s-103.168-230.4-230.4-230.4zM332.8 512c39.934 0 76.475 13.533 106.3 35.7l-250.4 249c-21.807-29.683-35.1-65.924-35.1-105.5 0-98.816 80.384-179.2 179.2-179.2zM477 585.7c21.785 29.674 35 65.947 35 105.5 0 98.816-80.384 179.2-179.2 179.2-39.906 0-76.386-13.561-106.2-35.7l250.4-249z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["document-disable"],"grid":0},"attrs":[{}],"properties":{"order":40,"id":21,"name":"document-disable","prevSize":24,"code":59669},"setIdx":0,"setId":1,"iconIdx":79},{"icon":{"paths":["M358.4 102.4c-28.314 0-51.2 22.886-51.2 51.2v256h51.2v-256h307.2v153.6c0 28.314 22.886 51.2 51.2 51.2h153.6v512h-358.4v51.2h358.4c28.314 0 51.2-22.886 51.2-51.2v-548.2l-219.8-219.8h-343.4zM716.8 189.8l117.4 117.4h-117.4v-117.4zM332.8 460.8l-230.4 256v51.2h102.4v153.6h256v-153.6h102.4v-51.2l-230.4-256zM332.8 537.3l161.5 179.5h-84.7v153.6h-153.6v-153.6h-84.7l161.5-179.5z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["document-publish"],"grid":0},"attrs":[{}],"properties":{"order":44,"id":22,"name":"document-publish","prevSize":24,"code":59670},"setIdx":0,"setId":1,"iconIdx":80},{"icon":{"paths":["M665.6 51.2v102.4h102.4v-102.4h-102.4zM460.8 153.6h102.4v-102.4h-102.4v102.4zM460.8 358.4h102.4v-102.4h-102.4v102.4zM665.6 358.4h102.4v-102.4h-102.4v102.4zM665.6 563.2h102.4v-102.4h-102.4v102.4zM460.8 563.2h102.4v-102.4h-102.4v102.4zM460.8 768h102.4v-102.4h-102.4v102.4zM665.6 768h102.4v-102.4h-102.4v102.4zM665.6 972.8h102.4v-102.4h-102.4v102.4zM460.8 972.8h102.4v-102.4h-102.4v102.4zM256 153.6h102.4v-102.4h-102.4v102.4zM256 358.4h102.4v-102.4h-102.4v102.4zM256 563.2h102.4v-102.4h-102.4v102.4zM256 768h102.4v-102.4h-102.4v102.4zM256 972.8h102.4v-102.4h-102.4v102.4z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["drag"],"grid":0},"attrs":[{}],"properties":{"order":43,"id":23,"name":"drag","prevSize":24,"code":59671},"setIdx":0,"setId":1,"iconIdx":81},{"icon":{"paths":["M921.6 281.958c0-70.707-171.878-128.154-384-128.154s-384 57.19-384 127.898c0 10.035 3.789 19.712 10.342 29.030 0-0.051 296.858 406.067 296.858 406.067v256l153.6-51.2v-204.8c0 0 298.752-408.166 299.725-409.702 0 0 7.475-16.64 7.475-25.139zM537.6 204.8c206.899 0 318.208 53.248 332.083 76.8-13.875 23.552-125.184 76.8-332.083 76.8s-318.208-53.248-332.083-76.8c13.875-23.552 125.184-76.8 332.083-76.8zM869.376 345.856v0 0zM573.030 686.592c-6.4 8.755-9.83 19.354-9.83 30.208v167.885l-51.2 17.050v-184.934c0-10.854-3.43-21.453-9.83-30.208l-228.147-312.115c68.762 21.709 161.382 35.123 263.578 35.123 102.298 0 195.021-13.414 263.834-35.174-0.102 0.051-0.205 0.051-0.307 0.102l-228.096 312.064z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["filter"],"grid":0},"attrs":[{}],"properties":{"order":18,"id":24,"name":"filter","prevSize":24,"code":59672},"setIdx":0,"setId":1,"iconIdx":82},{"icon":{"paths":["M512 0c-282.88 0-512 229.248-512 512 0 226.24 146.688 418.112 350.080 485.76 25.6 4.8 35.008-11.008 35.008-24.64 0-12.16-0.448-44.352-0.64-87.040-142.464 30.912-172.48-68.672-172.48-68.672-23.296-59.136-56.96-74.88-56.96-74.88-46.4-31.744 3.584-31.104 3.584-31.104 51.392 3.584 78.4 52.736 78.4 52.736 45.696 78.272 119.872 55.68 149.12 42.56 4.608-33.088 17.792-55.68 32.448-68.48-113.728-12.8-233.216-56.832-233.216-252.992 0-55.872 19.84-101.568 52.672-137.408-5.76-12.928-23.040-64.96 4.48-135.488 0 0 42.88-13.76 140.8 52.48 40.96-11.392 84.48-17.024 128-17.28 43.52 0.256 87.040 5.888 128 17.28 97.28-66.24 140.16-52.48 140.16-52.48 27.52 70.528 10.24 122.56 5.12 135.488 32.64 35.84 52.48 81.536 52.48 137.408 0 196.672-119.68 240-233.6 252.608 17.92 15.36 34.56 46.72 34.56 94.72 0 68.48-0.64 123.52-0.64 140.16 0 13.44 8.96 29.44 35.2 24.32 204.864-67.136 351.424-259.136 351.424-485.056 0-282.752-229.248-512-512-512z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["brand","github"],"grid":0},"attrs":[{}],"properties":{"order":77,"id":25,"name":"github","prevSize":24,"code":59713},"setIdx":0,"setId":1,"iconIdx":83},{"icon":{"paths":["M512 512h-204.8v51.2h204.8v-51.2zM768 153.6h-51.2c0-28.314-22.886-51.2-51.2-51.2h-307.2c-28.314 0-51.2 22.886-51.2 51.2h-51.2c-28.314 0-51.2 22.886-51.2 51.2v665.6c0 28.314 22.886 51.2 51.2 51.2h512c28.314 0 51.2-22.886 51.2-51.2v-665.6c0-28.314-22.886-51.2-51.2-51.2zM358.4 153.6h307.2v51.2h-307.2v-51.2zM768 819.2c0 28.314-22.886 51.2-51.2 51.2h-409.6c-28.314 0-51.2-22.886-51.2-51.2v-563.2c0-28.314 22.886-51.2 51.2-51.2 0 28.314 22.886 51.2 51.2 51.2h307.2c28.314 0 51.2-22.886 51.2-51.2 28.314 0 51.2 22.886 51.2 51.2v563.2zM307.2 460.8h409.6v-51.2h-409.6v51.2zM307.2 665.6h409.6v-51.2h-409.6v51.2z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["help"],"grid":0},"attrs":[{}],"properties":{"order":19,"id":26,"name":"help","prevSize":24,"code":59673},"setIdx":0,"setId":1,"iconIdx":84},{"icon":{"paths":["M512 0c-169.421 0-307.2 137.779-307.2 307.2 0 78.643 15.258 164.915 45.261 256.41 23.859 72.55 56.986 148.582 98.56 226.099 70.707 131.635 140.339 220.774 143.309 224.512 4.813 6.195 12.288 9.779 20.070 9.779 7.834 0 15.258-3.584 20.122-9.779 2.97-3.686 72.602-92.826 143.309-224.512 41.574-77.517 74.701-153.549 98.56-226.099 29.952-91.494 45.21-177.766 45.21-256.41 0-169.421-137.83-307.2-307.2-307.2zM630.682 764.672c-46.234 86.374-92.979 154.982-118.682 190.822-25.6-35.635-72.038-103.885-118.221-189.952-62.874-117.146-137.779-291.738-137.779-458.342 0-141.158 114.842-256 256-256s256 114.842 256 256c0 166.298-74.65 340.582-137.318 457.472zM512 153.6c-84.685 0-153.6 68.915-153.6 153.6s68.915 153.6 153.6 153.6 153.6-68.915 153.6-153.6-68.915-153.6-153.6-153.6zM512 409.6c-56.525 0-102.4-45.875-102.4-102.4 0-56.474 45.875-102.4 102.4-102.4 56.474 0 102.4 45.926 102.4 102.4 0 56.525-45.926 102.4-102.4 102.4z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["location"],"grid":0},"attrs":[{}],"properties":{"order":25,"id":27,"name":"location, control-Map, type-Geolocation","prevSize":24,"code":59675},"setIdx":0,"setId":1,"iconIdx":85},{"icon":{"paths":["M512.273 83.782c-0.141 0.056-182.959 84.073-229.418 256.782-4.481 16.584 32.696 9.296 31.036 27.527-2.034 22.136-44.668 31.201-39.109 94.764 5.659 64.734 60.321 130.141 68.527 169.673v27.655c-0.497 8.54-4.566 31.715-18.018 43.036-7.378 6.19-17.322 8.421-30.436 6.782-18.205-2.275-25.449-14.468-28.345-24.309-4.753-16.218-0.322-35.123 10.345-44 10.724-8.924 12.17-24.842 3.236-35.564-8.934-10.712-24.858-12.161-35.582-3.218-25.995 21.64-36.887 61.52-26.491 97 9.815 33.392 36.197 55.884 70.6 60.182 4.903 0.609 9.566 0.909 14 0.909 26.623 0 44.661-10.175 55.582-19.455 32.866-27.97 35.449-74.593 35.636-79.818 0.009-0.309 0.018-0.618 0.018-0.927v-21.218h0.109v-1.418c0-12.351 10.008-22.364 22.382-22.364 11.944 0 21.609 9.346 22.273 21.109v202.491c-0.206 2.912-2.536 29.892-17.891 42.945-7.368 6.274-17.384 8.53-30.545 6.873-18.214-2.275-25.476-14.468-28.364-24.291-4.762-16.228-0.322-35.151 10.345-44.018 10.724-8.933 12.188-24.833 3.255-35.564-8.924-10.694-24.876-12.161-35.6-3.218-26.013 21.631-36.887 61.52-26.491 97 9.796 33.392 36.197 55.893 70.6 60.2 4.903 0.609 9.566 0.891 14 0.891 26.623 0 44.671-10.156 55.564-19.436 32.875-27.97 35.458-74.611 35.636-79.836 0.019-0.328 0.018-0.609 0.018-0.909v-225.636l0.127-0.055v-1c0-12.595 10.219-22.8 22.836-22.8 12.349 0 22.333 9.824 22.727 22.073v227.418c0 0.309-0 0.591 0.018 0.909 0.187 5.216 2.779 51.866 35.655 79.836 10.912 9.28 28.959 19.436 55.582 19.436 4.443 0 9.088-0.282 13.982-0.891 34.394-4.307 60.804-26.818 70.6-60.2 10.405-35.48-0.487-75.36-26.491-97-10.743-8.943-26.676-7.466-35.6 3.218-8.934 10.74-7.488 26.63 3.236 35.564 10.668 8.868 15.135 27.79 10.364 44.018-2.878 9.823-10.159 22.015-28.364 24.291-13.105 1.648-23.050-0.592-30.418-6.782-13.508-11.358-17.558-34.657-18.036-43v-201.818c0.297-12.093 10.14-21.818 22.327-21.818 12.374 0 22.4 10.003 22.4 22.364v1.418h0.073v21.218c0 0.318-0 0.628 0.018 0.927 0.178 5.216 2.779 51.848 35.655 79.818 10.912 9.28 28.941 19.455 55.564 19.455 4.434 0 9.107-0.292 14-0.891 34.394-4.298 60.786-26.818 70.582-60.2 10.405-35.48-0.487-75.351-26.491-97-10.743-8.933-26.667-7.476-35.582 3.236-8.943 10.722-7.488 26.622 3.236 35.545 10.668 8.877 15.117 27.8 10.345 44.018-2.878 9.842-10.159 22.025-28.364 24.291-13.086 1.648-23.050-0.583-30.418-6.764-13.508-11.368-17.549-34.675-18.018-43v-21.018c5.305-54.103 63.095-107.777 69.091-176.364 5.531-63.563-37.121-72.627-39.145-94.764-1.669-18.232 35.498-10.944 31.036-27.527-46.468-172.709-229.269-256.726-229.4-256.782z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["logo"],"grid":0},"attrs":[{}],"properties":{"order":31,"id":28,"name":"logo","prevSize":24,"code":59676},"setIdx":0,"setId":1,"iconIdx":86},{"icon":{"paths":["M947.2 0h-870.4c-42.342 0-76.8 34.458-76.8 76.8v870.4c0 42.342 34.458 76.8 76.8 76.8h870.4c42.342 0 76.8-34.458 76.8-76.8v-870.4c0-42.342-34.458-76.8-76.8-76.8zM972.8 947.2c0 14.157-11.443 25.6-25.6 25.6h-870.4c-14.131 0-25.6-11.443-25.6-25.6v-870.4c0-14.131 11.469-25.6 25.6-25.6h870.4c14.157 0 25.6 11.469 25.6 25.6v870.4zM665.6 460.8c56.448 0 102.4-45.926 102.4-102.4s-45.952-102.4-102.4-102.4c-56.448 0-102.4 45.926-102.4 102.4s45.952 102.4 102.4 102.4zM665.6 307.2c28.211 0 51.2 22.989 51.2 51.2s-22.989 51.2-51.2 51.2c-28.211 0-51.2-22.989-51.2-51.2s22.989-51.2 51.2-51.2zM896 102.4h-768c-14.131 0-25.6 11.469-25.6 25.6v614.4c0 14.157 11.469 25.6 25.6 25.6h768c14.157 0 25.6-11.443 25.6-25.6v-614.4c0-14.131-11.443-25.6-25.6-25.6zM153.6 716.8v-118.246l164.301-184.858c4.198-4.787 9.728-7.373 15.462-7.475 5.734-0.051 11.29 2.458 15.642 7.040l283.238 303.539h-478.643zM870.4 716.8h-168.090l-315.853-338.432c-14.285-15.334-33.331-23.603-53.709-23.347-20.326 0.256-39.219 9.011-53.094 24.627l-126.054 141.798v-367.846h716.8v563.2z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["media"],"grid":0},"attrs":[{}],"properties":{"order":30,"id":29,"name":"media, type-Assets, trigger-AssetChanged","prevSize":24,"code":59677},"setIdx":0,"setId":1,"iconIdx":87},{"icon":{"paths":["M128 384c-70.656 0-128 57.344-128 128s57.344 128 128 128c70.656 0 128-57.344 128-128s-57.344-128-128-128zM512 384c-70.656 0-128 57.344-128 128s57.344 128 128 128c70.656 0 128-57.344 128-128s-57.344-128-128-128zM896 384c-70.656 0-128 57.344-128 128s57.344 128 128 128c70.656 0 128-57.344 128-128s-57.344-128-128-128z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["more"],"grid":0},"attrs":[{}],"properties":{"order":34,"id":30,"name":"more, dots","prevSize":24,"code":59678},"setIdx":0,"setId":1,"iconIdx":88},{"icon":{"paths":["M877.12 311.104l-66.304 66.368-228.224-228.224 66.368-66.368c25.216-25.152 66.048-25.152 91.264 0l136.896 137.024c25.216 25.216 25.216 65.984 0 91.2zM760.896 427.392l-386.176 386.112c-25.216 25.28-66.048 25.28-91.264 0l-136.96-136.896c-25.216-25.28-25.216-66.112 0-91.264l386.24-386.24 228.16 228.288zM64 896v-191.872l191.936 191.872h-191.936z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["pencil"],"grid":0},"attrs":[{}],"properties":{"order":47,"id":31,"name":"pencil","prevSize":24,"code":59679},"setIdx":0,"setId":1,"iconIdx":89},{"icon":{"paths":["M892.083 131.917c-73.523-73.498-193.152-73.498-266.65 0l-157.184 157.107c-9.958 10.035-9.958 26.214 0 36.275 10.061 9.984 26.24 9.984 36.25 0l157.133-157.107c53.504-53.555 140.672-53.555 194.176 0 53.581 53.504 53.581 140.672 0 194.176l-186.138 186.163c-53.53 53.581-140.672 53.581-194.176 0-10.086-10.010-26.24-10.010-36.275 0-10.035 10.086-10.035 26.189 0 36.25 36.787 36.736 84.992 55.117 133.325 55.117s96.589-18.432 133.376-55.117l186.163-186.214c73.498-73.472 73.498-193.152 0-266.65zM519.45 698.726l-157.082 157.082c-53.504 53.555-140.672 53.555-194.176 0-53.581-53.504-53.581-140.672 0-194.176l186.138-186.163c53.53-53.581 140.672-53.581 194.176 0 10.086 9.984 26.189 9.984 36.275 0 10.035-10.086 10.035-26.214 0-36.25-73.549-73.498-193.203-73.498-266.701 0l-186.163 186.163c-73.498 73.574-73.498 193.203 0 266.701 36.787 36.71 85.043 55.117 133.325 55.117 48.333 0 96.538-18.406 133.325-55.117l157.133-157.133c10.010-10.010 10.010-26.189 0-36.224-10.010-9.984-26.189-9.984-36.25 0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["reference"],"grid":0},"attrs":[{}],"properties":{"order":45,"id":32,"name":"reference","prevSize":24,"code":59680},"setIdx":0,"setId":1,"iconIdx":90},{"icon":{"paths":["M800 1024h-576c-124.8 0-224-99.2-224-224v-300.8c0-124.8 99.2-224 224-224h576c124.8 0 224 99.2 224 224v300.8c0 124.8-99.2 224-224 224zM224 339.2c-89.6 0-160 70.4-160 160v300.8c0 89.6 70.4 160 160 160h576c89.6 0 160-70.4 160-160v-300.8c0-89.6-70.4-160-160-160h-576z","M828.8 201.6h-633.6c-19.2 0-32-12.8-32-32s12.8-32 32-32h630.4c19.2 0 32 12.8 32 32s-12.8 32-28.8 32z","M716.8 64h-409.6c-19.2 0-32-12.8-32-32s12.8-32 32-32h412.8c19.2 0 32 12.8 32 32s-16 32-35.2 32z","M800 416v64c0 48-38.4 83.2-83.2 83.2h-409.6c-44.8 3.2-83.2-35.2-83.2-83.2v-64h-54.4v64c0 76.8 64 140.8 140.8 140.8h406.4c76.8 0 140.8-64 140.8-140.8v-64h-57.6z"],"attrs":[{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["schemas"],"grid":0},"attrs":[{},{},{},{}],"properties":{"order":46,"id":33,"name":"schemas, search-Schema","prevSize":24,"code":59681},"setIdx":0,"setId":1,"iconIdx":91},{"icon":{"paths":["M939.776 1003.776c-27.2 27.008-71.232 27.008-98.368 0l-168.96-168.96c-66.176 38.464-142.016 62.080-224 62.080-247.744 0-448.448-200.832-448.448-448.448 0-247.744 200.704-448.448 448.448-448.448 247.68 0 448.512 200.704 448.512 448.448 0 115.136-44.672 218.944-115.904 298.304l158.656 158.656c27.008 27.136 27.008 71.168 0.064 98.368zM448.448 128.128c-176.896 0-320.32 143.36-320.32 320.32s143.424 320.32 320.32 320.32c176.96 0 320.384-143.36 320.384-320.32s-143.488-320.32-320.384-320.32z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["search"],"grid":0},"attrs":[{}],"properties":{"order":23,"id":34,"name":"search","prevSize":24,"code":59682},"setIdx":0,"setId":1,"iconIdx":92},{"icon":{"paths":["M1019.11 440.755c-1.946-13.747-14.438-23.398-28.16-21.888-16.947 1.843-34.253-0.589-50.048-7.091-52.25-21.504-77.261-81.459-55.757-133.709 6.605-15.846 16.947-29.85 30.208-40.602 10.803-8.653 12.698-24.294 4.352-35.354-28.902-37.99-62.797-71.706-100.838-100.045-10.701-8.090-25.805-6.451-34.662 3.661-28.8 33.254-75.546 44.262-116.198 27.546-40.704-16.742-66.099-57.498-63.206-101.453 0.845-13.338-8.755-25.19-21.99-27.008-47.002-6.605-94.797-6.605-142.054 0.077-13.722 1.946-23.398 14.387-21.862 28.211 1.843 16.896-0.614 34.202-7.168 49.997-21.504 52.25-81.408 77.21-133.632 55.706-15.821-6.502-29.85-16.947-40.602-30.157-8.653-10.752-24.32-12.698-35.379-4.301-37.99 28.851-71.68 62.694-100.045 100.762-8.090 10.701-6.451 25.83 3.635 34.637 33.28 28.902 44.288 75.597 27.546 116.301-16.742 40.653-57.498 66.048-101.427 63.155-13.363-0.845-25.19 8.755-26.982 21.99-6.63 47.002-6.63 94.822 0.102 142.080 1.946 13.696 14.387 23.322 28.16 21.811 16.896-1.818 34.202 0.691 50.022 7.168 52.224 21.53 77.21 81.459 55.706 133.734-6.502 15.795-16.947 29.773-30.157 40.525-10.803 8.73-12.698 24.346-4.352 35.354 28.877 38.042 62.822 71.731 100.813 100.122 1.741 1.357 3.661 2.355 5.606 3.2 9.933 4.045 21.709 1.536 29.082-6.938 28.826-33.178 75.571-44.262 116.275-27.52 40.653 16.742 66.048 57.498 63.13 101.453-0.819 13.338 8.755 25.165 22.067 27.059 47.002 6.579 94.72 6.554 142.029-0.102 13.645-1.971 23.347-14.464 21.811-28.237-1.843-16.947 0.691-34.253 7.194-50.048 21.504-52.25 81.459-77.21 133.658-55.68 15.795 6.528 29.85 16.947 40.55 30.157 8.704 10.803 24.346 12.698 35.405 4.326 37.99-28.902 71.654-62.746 100.096-100.813 7.987-10.675 6.4-25.805-3.712-34.662-33.254-28.826-44.288-75.571-27.546-116.224 16.742-40.73 57.498-66.099 101.453-63.232 13.338 0.922 25.139-8.678 27.008-21.965 6.554-47.002 6.502-94.771-0.128-142.003zM971.059 554.010c-56.141 5.274-105.702 41.114-127.642 94.464s-12.058 113.613 24.090 156.902c-17.69 21.478-37.453 41.318-58.854 59.315-12.749-11.213-27.392-20.352-43.238-26.854-78.259-32.282-168.243 5.197-200.499 83.584-6.502 15.718-10.291 32.563-11.29 49.536-27.853 2.56-55.859 2.637-83.61 0.077-5.274-56.090-41.114-105.677-94.464-127.616-53.35-21.99-113.613-11.981-156.928 24.064-21.504-17.69-41.318-37.453-59.29-58.88 11.213-12.723 20.352-27.392 26.906-43.136 32.205-78.387-5.274-168.294-83.584-200.55-15.821-6.502-32.589-10.342-49.613-11.366-2.534-27.853-2.586-55.859 0-83.558 56.090-5.299 105.626-41.088 127.565-94.438 21.965-53.402 12.058-113.638-24.090-156.902 17.69-21.555 37.478-41.395 58.88-59.341 12.749 11.213 27.392 20.352 43.213 26.854 78.285 32.256 168.218-5.248 200.474-83.558 6.528-15.795 10.342-32.589 11.366-49.613 27.853-2.509 55.808-2.56 83.558 0 5.299 56.090 41.139 105.6 94.49 127.59 53.35 21.939 113.638 12.006 156.902-24.090 21.504 17.741 41.293 37.453 59.29 58.854-11.213 12.8-20.352 27.392-26.854 43.213-32.256 78.31 5.248 168.294 83.507 200.499 15.846 6.502 32.691 10.342 49.638 11.392 2.56 27.853 2.611 55.808 0.077 83.558zM512 307.2c-113.101 0-204.8 91.699-204.8 204.8 0 113.126 91.699 204.826 204.8 204.826s204.8-91.699 204.8-204.826c0-113.101-91.699-204.8-204.8-204.8zM512 665.626c-84.813 0-153.6-68.813-153.6-153.626 0-84.838 68.787-153.6 153.6-153.6 84.838 0 153.6 68.762 153.6 153.6 0 84.813-68.762 153.626-153.6 153.626z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["settings"],"grid":0},"attrs":[{}],"properties":{"order":22,"id":35,"name":"settings, search-Setting","prevSize":24,"code":59683},"setIdx":0,"setId":1,"iconIdx":93},{"icon":{"paths":["M77.005 102.605h128v332.8c0 14.131 11.418 25.6 25.6 25.6 14.106 0 25.6-11.469 25.6-25.6v-332.8h128c14.106 0 25.6-11.469 25.6-25.6 0-14.157-11.494-25.6-25.6-25.6h-307.2c-14.182 0-25.6 11.443-25.6 25.6 0 14.106 11.418 25.6 25.6 25.6zM947.405 716.979h-179.2v-102.4h179.2c14.157 0 25.6-11.443 25.6-25.6s-11.443-25.6-25.6-25.6h-204.8c-14.182 0-25.6 11.443-25.6 25.6v358.4c0 14.157 11.418 25.6 25.6 25.6 14.157 0 25.6-11.443 25.6-25.6v-179.2h179.2c14.157 0 25.6-11.443 25.6-25.6s-11.494-25.6-25.6-25.6zM965.094 58.47c-9.958-9.933-26.112-9.933-36.045 0l-870.605 870.579c-9.958 9.984-9.958 26.086 0 36.045 10.010 9.984 26.112 9.984 36.045 0l870.605-870.579c9.958-9.933 9.958-26.086 0-36.045z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["type-boolean"],"grid":0},"attrs":[{}],"properties":{"order":21,"id":36,"name":"type-Boolean","prevSize":24,"code":59684},"setIdx":0,"setId":1,"iconIdx":94},{"icon":{"paths":["M947.2 102.4h-128v-25.6c0-14.131-11.469-25.6-25.6-25.6s-25.6 11.469-25.6 25.6v25.6h-512v-25.6c0-14.131-11.52-25.6-25.6-25.6s-25.6 11.469-25.6 25.6v25.6h-128c-42.342 0-76.8 34.458-76.8 76.8v716.8c0 42.342 34.458 76.8 76.8 76.8h870.4c42.342 0 76.8-34.458 76.8-76.8v-716.8c0-42.342-34.458-76.8-76.8-76.8zM972.8 896c0 14.131-11.469 25.6-25.6 25.6h-870.4c-14.080 0-25.6-11.469-25.6-25.6v-537.6h921.6v537.6zM972.8 307.2h-921.6v-128c0-14.080 11.52-25.6 25.6-25.6h128v76.8c0 14.080 11.52 25.6 25.6 25.6s25.6-11.52 25.6-25.6v-76.8h512v76.8c0 14.080 11.469 25.6 25.6 25.6s25.6-11.52 25.6-25.6v-76.8h128c14.131 0 25.6 11.52 25.6 25.6v128zM332.8 512h51.2c14.080 0 25.6-11.52 25.6-25.6s-11.52-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.52-25.6 25.6s11.52 25.6 25.6 25.6zM486.4 512h51.2c14.131 0 25.6-11.52 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.52-25.6 25.6s11.52 25.6 25.6 25.6zM640 512h51.2c14.131 0 25.6-11.52 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.131 0-25.6 11.52-25.6 25.6s11.469 25.6 25.6 25.6zM793.6 512h51.2c14.131 0 25.6-11.52 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.131 0-25.6 11.52-25.6 25.6s11.469 25.6 25.6 25.6zM179.2 614.4h51.2c14.080 0 25.6-11.469 25.6-25.6s-11.52-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6zM332.8 614.4h51.2c14.080 0 25.6-11.469 25.6-25.6s-11.52-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6zM486.4 614.4h51.2c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6zM640 614.4h51.2c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.131 0-25.6 11.469-25.6 25.6s11.469 25.6 25.6 25.6zM793.6 614.4h51.2c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.131 0-25.6 11.469-25.6 25.6s11.469 25.6 25.6 25.6zM179.2 716.8h51.2c14.080 0 25.6-11.469 25.6-25.6s-11.52-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6zM332.8 716.8h51.2c14.080 0 25.6-11.469 25.6-25.6s-11.52-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6zM486.4 716.8h51.2c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6zM640 716.8h51.2c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.131 0-25.6 11.469-25.6 25.6s11.469 25.6 25.6 25.6zM793.6 716.8h51.2c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.131 0-25.6 11.469-25.6 25.6s11.469 25.6 25.6 25.6zM179.2 819.2h51.2c14.080 0 25.6-11.469 25.6-25.6s-11.52-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6zM332.8 819.2h51.2c14.080 0 25.6-11.469 25.6-25.6s-11.52-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6zM486.4 819.2h51.2c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6zM640 819.2h51.2c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.131 0-25.6 11.469-25.6 25.6s11.469 25.6 25.6 25.6zM793.6 819.2h51.2c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.131 0-25.6 11.469-25.6 25.6s11.469 25.6 25.6 25.6z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["type-datetime"],"grid":0},"attrs":[{}],"properties":{"order":24,"id":37,"name":"type-DateTime","prevSize":24,"code":59685},"setIdx":0,"setId":1,"iconIdx":95},{"icon":{"paths":["M179.2 256c0-28.262 22.938-51.2 51.2-51.2h25.6c14.157 0 25.6-11.443 25.6-25.6 0-14.131-11.443-25.6-25.6-25.6h-25.6c-56.55 0-102.4 45.85-102.4 102.4v179.2c0 28.262-22.938 51.2-51.2 51.2h-25.6c-14.157 0-25.6 11.469-25.6 25.6 0 14.157 11.443 25.6 25.6 25.6h25.6c28.262 0 51.2 22.938 51.2 51.2v179.2c0 56.55 45.85 102.4 102.4 102.4h25.6c14.157 0 25.6-11.443 25.6-25.6s-11.443-25.6-25.6-25.6h-25.6c-28.262 0-51.2-22.938-51.2-51.2v-179.2c0-30.746-13.85-58.061-35.328-76.8 21.478-18.765 35.328-46.029 35.328-76.8v-179.2zM972.8 486.4h-25.6c-28.262 0-51.2-22.938-51.2-51.2v-179.2c0-56.55-45.85-102.4-102.4-102.4h-25.6c-14.157 0-25.6 11.469-25.6 25.6 0 14.157 11.443 25.6 25.6 25.6h25.6c28.262 0 51.2 22.938 51.2 51.2v179.2c0 30.771 13.85 58.035 35.328 76.8-21.478 18.739-35.328 46.054-35.328 76.8v179.2c0 28.262-22.938 51.2-51.2 51.2h-25.6c-14.157 0-25.6 11.443-25.6 25.6s11.443 25.6 25.6 25.6h25.6c56.55 0 102.4-45.85 102.4-102.4v-179.2c0-28.262 22.938-51.2 51.2-51.2h25.6c14.157 0 25.6-11.443 25.6-25.6 0-14.131-11.443-25.6-25.6-25.6zM512 332.8c-14.157 0-25.6 11.469-25.6 25.6 0 14.157 11.443 25.6 25.6 25.6s25.6-11.443 25.6-25.6c0-14.131-11.443-25.6-25.6-25.6zM512 435.2c-14.157 0-25.6 11.469-25.6 25.6v204.8c0 14.157 11.443 25.6 25.6 25.6s25.6-11.443 25.6-25.6v-204.8c0-14.131-11.443-25.6-25.6-25.6z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["json"],"grid":0},"attrs":[{}],"properties":{"order":20,"id":38,"name":"type-Json, json","prevSize":24,"code":59674},"setIdx":0,"setId":1,"iconIdx":96},{"icon":{"paths":["M256 665.6h-76.8v-332.8c0-14.131-11.469-25.6-25.6-25.6h-76.8c-14.131 0-25.6 11.469-25.6 25.6s11.469 25.6 25.6 25.6h51.2v307.2h-76.8c-14.131 0-25.6 11.469-25.6 25.6s11.469 25.6 25.6 25.6h204.8c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6zM614.4 307.2h-204.8c-14.131 0-25.6 11.469-25.6 25.6s11.469 25.6 25.6 25.6h179.2v128h-179.2c-14.131 0-25.6 11.469-25.6 25.6v179.2c0 14.131 11.469 25.6 25.6 25.6h204.8c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-179.2v-128h179.2c14.131 0 25.6-11.469 25.6-25.6v-179.2c0-14.131-11.469-25.6-25.6-25.6zM972.8 307.2h-204.8c-14.131 0-25.6 11.469-25.6 25.6s11.469 25.6 25.6 25.6h179.2v128h-179.2c-14.131 0-25.6 11.469-25.6 25.6s11.469 25.6 25.6 25.6h179.2v128h-179.2c-14.131 0-25.6 11.469-25.6 25.6s11.469 25.6 25.6 25.6h204.8c14.131 0 25.6-11.469 25.6-25.6v-358.4c0-14.131-11.469-25.6-25.6-25.6z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["type-number"],"grid":0},"attrs":[{}],"properties":{"order":32,"id":39,"name":"type-Number","prevSize":24,"code":59686},"setIdx":0,"setId":1,"iconIdx":97},{"icon":{"paths":["M870.4 921.6h-716.8c-14.131 0-25.6 11.443-25.6 25.6s11.469 25.6 25.6 25.6h716.8c14.157 0 25.6-11.443 25.6-25.6s-11.443-25.6-25.6-25.6zM194.688 817.152c13.030 5.555 28.083-0.461 33.613-13.44l125.030-291.712h317.338l125.005 291.712c4.173 9.677 13.568 15.488 23.526 15.488 3.405 0 6.81-0.64 10.112-2.048 13.005-5.606 18.995-20.659 13.44-33.638l-131.61-306.944c-0.051-0.051-0.051-0.154-0.102-0.205l-175.488-409.6c-4.045-9.472-13.312-15.565-23.552-15.565s-19.507 6.093-23.552 15.514l-175.488 409.6c-0.051 0.051-0.051 0.154-0.102 0.205l-131.61 306.97c-5.53 13.005 0.461 28.058 13.44 33.664zM512 141.773l136.704 319.027h-273.408l136.704-319.027z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["type-string"],"grid":0},"attrs":[{}],"properties":{"order":48,"id":40,"name":"type-String","prevSize":24,"code":59687},"setIdx":0,"setId":1,"iconIdx":98},{"icon":{"paths":["M955.221 848c0-0.109 10.752 0 0 0-52.751-161.392-240.461-224-443.178-224-202.269 0-389.979 63.392-443.066 224-11.2-0.109 0-1.232 0 0 0 61.936 49.615 112 110.654 112h664.823c61.151 0 110.766-50.064 110.766-112zM290.399 288c0 123.648 99.231 336 221.645 336s221.645-212.352 221.645-336c0-123.648-99.231-224-221.645-224s-221.645 100.352-221.645 224z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["user"],"grid":0},"attrs":[{}],"properties":{"order":33,"id":41,"name":"user","prevSize":24,"code":59688},"setIdx":0,"setId":1,"iconIdx":99},{"icon":{"paths":["M469.333 614.997v281.003c0 23.552 19.115 42.667 42.667 42.667s42.667-19.115 42.667-42.667v-281.003l97.835 97.835c16.683 16.683 43.691 16.683 60.331 0s16.683-43.691 0-60.331l-170.667-170.667c-0.085-0.085-0.171-0.171-0.256-0.256-4.053-3.968-8.661-6.955-13.568-9.003-5.12-2.133-10.624-3.2-16.085-3.243-0.171 0-0.341 0-0.469 0-5.461 0.043-10.965 1.109-16.085 3.243-4.949 2.048-9.557 5.035-13.568 9.003-0.085 0.085-0.171 0.171-0.256 0.256l-170.667 170.667c-16.683 16.683-16.683 43.691 0 60.331s43.691 16.683 60.331 0zM890.411 822.101c30.379-16.555 56.149-38.443 76.672-63.915 21.333-26.411 36.949-56.619 46.379-88.576s12.629-65.835 9.003-99.584c-3.456-32.512-13.269-64.896-29.824-95.232-14.208-26.069-32.384-48.768-53.376-67.669-21.717-19.541-46.421-34.944-72.875-45.952-30.891-12.8-64.171-19.584-98.048-19.84h-22.528c-13.312-37.717-32.085-72.235-55.168-102.912-30.635-40.661-68.821-74.453-111.915-99.84s-91.179-42.411-141.568-49.536c-48.597-6.784-99.243-4.395-149.504 8.619s-95.744 35.413-134.912 64.939c-40.661 30.635-74.453 68.821-99.84 111.915s-42.411 91.179-49.493 141.568c-6.827 48.555-4.395 99.2 8.576 149.461 15.872 61.312 45.781 115.627 84.267 158.421 15.744 17.536 42.752 18.944 60.245 3.2s18.944-42.752 3.2-60.245c-29.355-32.64-52.693-74.667-65.109-122.752-10.155-39.253-11.989-78.592-6.699-116.224 5.504-39.125 18.773-76.501 38.571-110.123s46.080-63.317 77.653-87.083c30.379-22.869 65.664-40.32 104.917-50.475s78.592-11.989 116.224-6.699c39.125 5.504 76.544 18.731 110.123 38.528s63.317 46.080 87.083 77.653c22.869 30.379 40.32 65.664 50.475 104.917 4.907 18.56 21.547 32 41.301 32h53.461c22.869 0.171 45.269 4.736 65.92 13.312 17.707 7.339 34.133 17.621 48.512 30.592 13.909 12.501 25.984 27.605 35.541 45.099 11.093 20.352 17.579 41.899 19.883 63.488 2.389 22.443 0.256 45.013-6.016 66.432s-16.725 41.515-30.933 59.093c-13.611 16.896-30.763 31.445-51.115 42.581-20.693 11.264-28.331 37.205-17.024 57.899s37.205 28.331 57.899 17.024z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["upload-cloud"],"grid":0},"attrs":[{}],"properties":{"order":1,"id":2,"prevSize":24,"code":59763,"name":"upload-3"},"setIdx":0,"setId":1,"iconIdx":100},{"icon":{"paths":["M853.333 640v170.667c0 5.845-1.152 11.349-3.2 16.299-2.133 5.205-5.333 9.899-9.301 13.867s-8.661 7.125-13.867 9.301c-4.949 2.048-10.453 3.2-16.299 3.2h-597.333c-5.845 0-11.349-1.152-16.299-3.2-5.205-2.133-9.899-5.333-13.867-9.301s-7.125-8.661-9.301-13.867c-2.048-4.949-3.2-10.453-3.2-16.299v-170.667c0-23.552-19.115-42.667-42.667-42.667s-42.667 19.115-42.667 42.667v170.667c0 17.28 3.456 33.835 9.728 48.981 6.485 15.701 16 29.781 27.776 41.557s25.856 21.291 41.557 27.776c15.104 6.229 31.659 9.685 48.939 9.685h597.333c17.28 0 33.835-3.456 48.981-9.728 15.701-6.485 29.781-16 41.557-27.776s21.291-25.856 27.776-41.557c6.229-15.104 9.685-31.659 9.685-48.939v-170.667c0-23.552-19.115-42.667-42.667-42.667s-42.667 19.115-42.667 42.667zM469.333 230.997v409.003c0 23.552 19.115 42.667 42.667 42.667s42.667-19.115 42.667-42.667v-409.003l140.501 140.501c16.683 16.683 43.691 16.683 60.331 0s16.683-43.691 0-60.331l-213.333-213.333c-0.043-0.043-0.128-0.085-0.171-0.171-4.053-4.011-8.704-7.040-13.653-9.088-10.453-4.309-22.229-4.309-32.683 0-4.949 2.048-9.6 5.077-13.653 9.088-0.043 0.043-0.128 0.085-0.171 0.171l-213.333 213.333c-16.683 16.683-16.683 43.691 0 60.331s43.691 16.683 60.331 0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["upload"],"grid":0},"attrs":[{}],"properties":{"order":1,"id":1,"prevSize":24,"code":59761,"name":"upload-4"},"setIdx":0,"setId":1,"iconIdx":101},{"icon":{"paths":["M621.254 877.254l320-320c24.994-24.992 24.994-65.516 0-90.51l-320-320c-24.994-24.992-65.516-24.992-90.51 0-24.994 24.994-24.994 65.516 0 90.51l210.746 210.746h-613.49c-35.346 0-64 28.654-64 64s28.654 64 64 64h613.49l-210.746 210.746c-12.496 12.496-18.744 28.876-18.744 45.254s6.248 32.758 18.744 45.254c24.994 24.994 65.516 24.994 90.51 0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["arrow-right","right","next"],"grid":16},"attrs":[{}],"properties":{"order":1,"id":1,"prevSize":32,"code":59766,"name":"arrow-right"},"setIdx":0,"setId":1,"iconIdx":102},{"icon":{"paths":["M448 576h128v-256h192l-256-256-256 256h192zM640 432v98.712l293.066 109.288-421.066 157.018-421.066-157.018 293.066-109.288v-98.712l-384 144v256l512 192 512-192v-256z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["upload","load","arrow"],"grid":16},"attrs":[{}],"properties":{"order":1,"id":0,"prevSize":32,"code":59760,"name":"upload"},"setIdx":0,"setId":1,"iconIdx":103},{"icon":{"paths":["M585.143 548.557c0 9.728-3.986 18.871-10.862 25.71l-256 256c-6.839 6.839-16.018 10.862-25.71 10.862s-18.871-3.986-25.71-10.862l-256-256c-6.839-6.839-10.862-16.018-10.862-25.71 0-20.005 16.567-36.571 36.571-36.571h512c20.005 0 36.571 16.567 36.571 36.571z","M585.143 219.443c0 9.728-3.986 18.871-10.862 25.71l-256 256c-6.839 6.839-16.018 10.862-25.71 10.862s-18.871-3.986-25.71-10.862l-256-256c-6.839-6.839-10.862-16.018-10.862-25.71 0-20.005 16.567-36.571 36.571-36.571h512c20.005 0 36.571 16.567 36.571 36.571z"],"width":585,"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["caret-bottom"],"grid":16},"attrs":[{},{}],"properties":{"order":125,"id":0,"name":"caret-bottom","prevSize":32,"code":59755},"setIdx":0,"setId":1,"iconIdx":104},{"icon":{"paths":["M585.143 804.577c0 20.005-16.567 36.571-36.571 36.571h-512c-20.005 0-36.571-16.567-36.571-36.571 0-9.728 3.986-18.871 10.862-25.71l256-256c6.839-6.839 16.018-10.862 25.71-10.862s18.871 3.986 25.71 10.862l256 256c6.839 6.839 10.862 16.018 10.862 25.71z","M585.143 475.423c0 20.005-16.567 36.571-36.571 36.571h-512c-20.005 0-36.571-16.567-36.571-36.571 0-9.728 3.986-18.871 10.862-25.71l256-256c6.839-6.839 16.018-10.862 25.71-10.862s18.871 3.986 25.71 10.862l256 256c6.839 6.839 10.862 16.018 10.862 25.71z"],"width":585,"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["caret-top"],"grid":16},"attrs":[{},{}],"properties":{"order":124,"id":1,"name":"caret-top","prevSize":32,"code":59756},"setIdx":0,"setId":1,"iconIdx":105},{"icon":{"paths":["M256 102.4c-28.314 0-51.2 22.886-51.2 51.2v256h51.2v-256h307.2v153.6c0 28.314 22.886 51.2 51.2 51.2h153.6v512h-512v-460.8h-51.2v460.8c0 28.314 22.886 51.2 51.2 51.2h512c28.314 0 51.2-22.886 51.2-51.2v-548.2l-219.8-219.8h-292.2zM614.4 189.8l117.4 117.4h-117.4z","M408.906 587.72l-35.3-37 138.1-131.9 138 131.9-35.3 37-102.7-98.1z","M511.706 773.12l-138.1-131.9 35.3-37 102.8 98.1 102.7-98.1 35.3 37z"],"attrs":[{},{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["show"],"grid":16},"attrs":[{},{},{}],"properties":{"order":123,"id":2,"name":"show","prevSize":32,"code":59748},"setIdx":0,"setId":1,"iconIdx":106},{"icon":{"paths":["M256 102.4c-28.314 0-51.2 22.886-51.2 51.2v256h51.2v-256h307.2v153.6c0 28.314 22.886 51.2 51.2 51.2h153.6v512h-512v-460.8h-51.2v460.8c0 28.314 22.886 51.2 51.2 51.2h512c28.314 0 51.2-22.886 51.2-51.2v-548.2l-219.8-219.8h-292.2zM614.4 189.8l117.4 117.4h-117.4z","M348.394 15.988c-28.314 0-51.2 22.886-51.2 51.2v23.7h51.2v-23.7h307.2l204.8 204.8v512h-23.8v51.2h23.8c28.314 0 51.2-22.886 51.2-51.2v-548.2l-219.8-219.8h-292.2z","M408.906 587.72l-35.3-37 138.1-131.9 138 131.9-35.3 37-102.7-98.1z","M511.706 773.12l-138.1-131.9 35.3-37 102.8 98.1 102.7-98.1 35.3 37z"],"attrs":[{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["show-all"],"grid":16},"attrs":[{},{},{},{}],"properties":{"order":122,"id":3,"name":"show-all","prevSize":32,"code":59749},"setIdx":0,"setId":1,"iconIdx":107},{"icon":{"paths":["M256 102.4c-28.314 0-51.2 22.886-51.2 51.2v256h51.2v-256h307.2v153.6c0 28.314 22.886 51.2 51.2 51.2h153.6v512h-512v-460.8h-51.2v460.8c0 28.314 22.886 51.2 51.2 51.2h512c28.314 0 51.2-22.886 51.2-51.2v-548.2l-219.8-219.8h-292.2zM614.4 189.8l117.4 117.4h-117.4z","M408.9 418.8l-35.3 37 138 131.9 138.1-131.9-35.3-37-102.8 98.1z","M511.6 604.2l-138 131.9 35.3 37 102.7-98.1 102.8 98.1 35.3-37z"],"attrs":[{},{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["hide"],"grid":16},"attrs":[{},{},{}],"properties":{"order":121,"id":4,"name":"hide","prevSize":32,"code":59750},"setIdx":0,"setId":1,"iconIdx":108},{"icon":{"paths":["M408.9 418.8l-35.3 37 138.1 131.9 138-131.9-35.3-37-102.7 98.1z","M511.7 604.2l-138.1 131.9 35.3 37 102.8-98.1 102.7 98.1 35.3-37z","M256 102.4c-28.314 0-51.2 22.886-51.2 51.2v256h51.2v-256h307.2v153.6c0 28.314 22.886 51.2 51.2 51.2h153.6v512h-512v-460.8h-51.2v460.8c0 28.314 22.886 51.2 51.2 51.2h512c28.314 0 51.2-22.886 51.2-51.2v-548.2l-219.8-219.8h-292.2zM614.4 189.8l117.4 117.4h-117.4z","M348.394 15.988c-28.314 0-51.2 22.886-51.2 51.2v23.7h51.2v-23.7h307.2l204.8 204.8v512h-23.8v51.2h23.8c28.314 0 51.2-22.886 51.2-51.2v-548.2l-219.8-219.8h-292.2z"],"attrs":[{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["hide-all"],"grid":16},"attrs":[{},{},{},{}],"properties":{"order":120,"id":5,"name":"hide-all","prevSize":32,"code":59751},"setIdx":0,"setId":1,"iconIdx":109},{"icon":{"paths":["M512 1024c-136.76 0-265.334-53.258-362.040-149.96-96.702-96.706-149.96-225.28-149.96-362.040 0-96.838 27.182-191.134 78.606-272.692 50-79.296 120.664-143.372 204.356-185.3l43 85.832c-68.038 34.084-125.492 86.186-166.15 150.67-41.746 66.208-63.812 142.798-63.812 221.49 0 229.382 186.618 416 416 416s416-186.618 416-416c0-78.692-22.066-155.282-63.81-221.49-40.66-64.484-98.114-116.584-166.15-150.67l43-85.832c83.692 41.928 154.358 106.004 204.356 185.3 51.422 81.558 78.604 175.854 78.604 272.692 0 136.76-53.258 265.334-149.96 362.040-96.706 96.702-225.28 149.96-362.040 149.96z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["spinner","loading","loading-wheel","busy","wait"],"grid":16},"attrs":[{}],"properties":{"order":1,"id":6,"prevSize":32,"code":59737,"name":"spinner2"},"setIdx":0,"setId":1,"iconIdx":110},{"icon":{"paths":["M1024 397.050l-353.78-51.408-158.22-320.582-158.216 320.582-353.784 51.408 256 249.538-60.432 352.352 316.432-166.358 316.432 166.358-60.434-352.352 256.002-249.538z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["star-full","rate","star","favorite","bookmark"],"grid":16},"attrs":[{}],"properties":{"order":1,"id":7,"prevSize":32,"code":59741,"name":"star-full"},"setIdx":0,"setId":1,"iconIdx":111},{"icon":{"paths":["M1024 397.050l-353.78-51.408-158.22-320.582-158.216 320.582-353.784 51.408 256 249.538-60.432 352.352 316.432-166.358 316.432 166.358-60.434-352.352 256.002-249.538zM512 753.498l-223.462 117.48 42.676-248.83-180.786-176.222 249.84-36.304 111.732-226.396 111.736 226.396 249.836 36.304-180.788 176.222 42.678 248.83-223.462-117.48z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["star-empty","rate","star","favorite","bookmark"],"grid":16},"attrs":[{}],"properties":{"order":2,"id":8,"prevSize":32,"code":59742,"name":"star-empty"},"setIdx":0,"setId":1,"iconIdx":112},{"icon":{"paths":["M1024 226.4c-37.6 16.8-78.2 28-120.6 33 43.4-26 76.6-67.2 92.4-116.2-40.6 24-85.6 41.6-133.4 51-38.4-40.8-93-66.2-153.4-66.2-116 0-210 94-210 210 0 16.4 1.8 32.4 5.4 47.8-174.6-8.8-329.4-92.4-433-219.6-18 31-28.4 67.2-28.4 105.6 0 72.8 37 137.2 93.4 174.8-34.4-1-66.8-10.6-95.2-26.2 0 0.8 0 1.8 0 2.6 0 101.8 72.4 186.8 168.6 206-17.6 4.8-36.2 7.4-55.4 7.4-13.6 0-26.6-1.4-39.6-3.8 26.8 83.4 104.4 144.2 196.2 146-72 56.4-162.4 90-261 90-17 0-33.6-1-50.2-3 93.2 59.8 203.6 94.4 322.2 94.4 386.4 0 597.8-320.2 597.8-597.8 0-9.2-0.2-18.2-0.6-27.2 41-29.4 76.6-66.4 104.8-108.6z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["twitter","brand","tweet","social"],"grid":16},"attrs":[{}],"properties":{"order":1,"id":9,"prevSize":32,"code":59740,"name":"twitter"},"setIdx":0,"setId":1,"iconIdx":113},{"icon":{"paths":["M728.992 512c137.754-87.334 231.008-255.208 231.008-448 0-21.676-1.192-43.034-3.478-64h-889.042c-2.29 20.968-3.48 42.326-3.48 64 0 192.792 93.254 360.666 231.006 448-137.752 87.334-231.006 255.208-231.006 448 0 21.676 1.19 43.034 3.478 64h889.042c2.288-20.966 3.478-42.324 3.478-64 0.002-192.792-93.252-360.666-231.006-448zM160 960c0-186.912 80.162-345.414 224-397.708v-100.586c-143.838-52.29-224-210.792-224-397.706v0h704c0 186.914-80.162 345.416-224 397.706v100.586c143.838 52.294 224 210.796 224 397.708h-704zM619.626 669.594c-71.654-40.644-75.608-93.368-75.626-125.366v-64.228c0-31.994 3.804-84.914 75.744-125.664 38.504-22.364 71.808-56.348 97.048-98.336h-409.582c25.266 42.032 58.612 76.042 97.166 98.406 71.654 40.644 75.606 93.366 75.626 125.366v64.228c0 31.992-3.804 84.914-75.744 125.664-72.622 42.18-126.738 125.684-143.090 226.336h501.67c-16.364-100.708-70.53-184.248-143.212-226.406z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["hour-glass","loading","busy","wait"],"grid":16},"attrs":[{}],"properties":{"order":1,"id":10,"prevSize":32,"code":59732,"name":"hour-glass"},"setIdx":0,"setId":1,"iconIdx":114},{"icon":{"paths":["M192 512c0-12.18 0.704-24.196 2.030-36.022l-184.98-60.104c-5.916 31.14-9.050 63.264-9.050 96.126 0 147.23 62.166 279.922 161.654 373.324l114.284-157.296c-52.124-56.926-83.938-132.758-83.938-216.028zM832 512c0 83.268-31.812 159.102-83.938 216.028l114.284 157.296c99.488-93.402 161.654-226.094 161.654-373.324 0-32.862-3.132-64.986-9.048-96.126l-184.98 60.104c1.324 11.828 2.028 23.842 2.028 36.022zM576 198.408c91.934 18.662 169.544 76.742 214.45 155.826l184.978-60.102c-73.196-155.42-222.24-268.060-399.428-290.156v194.432zM233.55 354.232c44.906-79.084 122.516-137.164 214.45-155.826v-194.43c-177.188 22.096-326.23 134.736-399.426 290.154l184.976 60.102zM644.556 803.328c-40.39 18.408-85.272 28.672-132.556 28.672s-92.166-10.264-132.554-28.67l-114.292 157.31c73.206 40.366 157.336 63.36 246.846 63.36s173.64-22.994 246.848-63.36l-114.292-157.312z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["spinner","loading","loading-wheel","busy","wait"],"grid":16},"attrs":[{}],"properties":{"order":1,"id":11,"prevSize":32,"code":59731,"name":"spinner"},"setIdx":0,"setId":1,"iconIdx":115},{"icon":{"paths":["M658.744 749.256l-210.744-210.746v-282.51h128v229.49l173.256 173.254zM512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 896c-212.078 0-384-171.922-384-384s171.922-384 384-384c212.078 0 384 171.922 384 384s-171.922 384-384 384z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["clock","time","schedule"],"grid":16},"attrs":[{}],"properties":{"order":1,"id":12,"prevSize":32,"code":59728,"name":"clock"},"setIdx":0,"setId":1,"iconIdx":116},{"icon":{"paths":["M128 320v640c0 35.2 28.8 64 64 64h576c35.2 0 64-28.8 64-64v-640h-704zM320 896h-64v-448h64v448zM448 896h-64v-448h64v448zM576 896h-64v-448h64v448zM704 896h-64v-448h64v448z","M848 128h-208v-80c0-26.4-21.6-48-48-48h-224c-26.4 0-48 21.6-48 48v80h-208c-26.4 0-48 21.6-48 48v80h832v-80c0-26.4-21.6-48-48-48zM576 128h-192v-63.198h192v63.198z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["bin","trashcan","remove","delete","recycle","dispose"],"grid":16},"attrs":[{},{}],"properties":{"order":1,"id":13,"name":"bin2","prevSize":32,"code":59650},"setIdx":0,"setId":1,"iconIdx":117},{"icon":{"paths":["M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 960.002c-62.958 0-122.872-13.012-177.23-36.452l233.148-262.29c5.206-5.858 8.082-13.422 8.082-21.26v-96c0-17.674-14.326-32-32-32-112.99 0-232.204-117.462-233.374-118.626-6-6.002-14.14-9.374-22.626-9.374h-128c-17.672 0-32 14.328-32 32v192c0 12.122 6.848 23.202 17.69 28.622l110.31 55.156v187.886c-116.052-80.956-192-215.432-192-367.664 0-68.714 15.49-133.806 43.138-192h116.862c8.488 0 16.626-3.372 22.628-9.372l128-128c6-6.002 9.372-14.14 9.372-22.628v-77.412c40.562-12.074 83.518-18.588 128-18.588 70.406 0 137.004 16.26 196.282 45.2-4.144 3.502-8.176 7.164-12.046 11.036-36.266 36.264-56.236 84.478-56.236 135.764s19.97 99.5 56.236 135.764c36.434 36.432 85.218 56.264 135.634 56.26 3.166 0 6.342-0.080 9.518-0.236 13.814 51.802 38.752 186.656-8.404 372.334-0.444 1.744-0.696 3.488-0.842 5.224-81.324 83.080-194.7 134.656-320.142 134.656z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["earth","globe","language","web","internet","sphere","planet"],"defaultCode":59850,"grid":16},"attrs":[],"properties":{"ligatures":"earth, globe2","name":"earth","id":14,"order":91,"prevSize":32,"code":59850},"setIdx":0,"setId":1,"iconIdx":118},{"icon":{"paths":["M512.002 193.212v-65.212h128v-64c0-35.346-28.654-64-64.002-64h-191.998c-35.346 0-64 28.654-64 64v64h128v65.212c-214.798 16.338-384 195.802-384 414.788 0 229.75 186.25 416 416 416s416-186.25 416-416c0-218.984-169.202-398.448-384-414.788zM706.276 834.274c-60.442 60.44-140.798 93.726-226.274 93.726s-165.834-33.286-226.274-93.726c-60.44-60.44-93.726-140.8-93.726-226.274s33.286-165.834 93.726-226.274c58.040-58.038 134.448-91.018 216.114-93.548l-21.678 314.020c-1.86 26.29 12.464 37.802 31.836 37.802s33.698-11.512 31.836-37.802l-21.676-314.022c81.666 2.532 158.076 35.512 216.116 93.55 60.44 60.44 93.726 140.8 93.726 226.274s-33.286 165.834-93.726 226.274z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["stopwatch","time","speed","meter","chronometer"],"grid":16},"attrs":[{}],"properties":{"order":1,"id":15,"prevSize":32,"code":59715,"name":"elapsed"},"setIdx":0,"setId":1,"iconIdx":119},{"icon":{"paths":["M522.2 438.8v175.6h290.4c-11.8 75.4-87.8 220.8-290.4 220.8-174.8 0-317.4-144.8-317.4-323.2s142.6-323.2 317.4-323.2c99.4 0 166 42.4 204 79l139-133.8c-89.2-83.6-204.8-134-343-134-283 0-512 229-512 512s229 512 512 512c295.4 0 491.6-207.8 491.6-500.2 0-33.6-3.6-59.2-8-84.8l-483.6-0.2z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["google","brand"],"grid":16},"attrs":[{}],"properties":{"order":1,"id":16,"prevSize":32,"code":59707,"name":"google"},"setIdx":0,"setId":1,"iconIdx":120},{"icon":{"paths":["M592 448h-16v-192c0-105.87-86.13-192-192-192h-128c-105.87 0-192 86.13-192 192v192h-16c-26.4 0-48 21.6-48 48v480c0 26.4 21.6 48 48 48h544c26.4 0 48-21.6 48-48v-480c0-26.4-21.6-48-48-48zM192 256c0-35.29 28.71-64 64-64h128c35.29 0 64 28.71 64 64v192h-256v-192z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["lock","secure","private","encrypted"],"grid":16},"attrs":[{}],"properties":{"order":2,"id":17,"prevSize":32,"code":59700,"name":"lock"},"setIdx":0,"setId":1,"iconIdx":121},{"icon":{"paths":["M0.35 512l-0.35-312.074 384-52.144v364.218zM448 138.482l511.872-74.482v448h-511.872zM959.998 576l-0.126 448-511.872-72.016v-375.984zM384 943.836l-383.688-52.594-0.020-315.242h383.708z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["windows8","brand","os"],"grid":16},"attrs":[{}],"properties":{"order":1,"id":18,"prevSize":32,"code":59712,"name":"microsoft"},"setIdx":0,"setId":1,"iconIdx":122},{"icon":{"paths":["M128 128h320v768h-320zM576 128h320v768h-320z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["pause","player"],"grid":16},"attrs":[{}],"properties":{"order":2,"id":19,"prevSize":32,"code":59695,"name":"pause"},"setIdx":0,"setId":1,"iconIdx":123},{"icon":{"paths":["M192 128l640 384-640 384z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["play","player"],"grid":16},"attrs":[{}],"properties":{"order":3,"id":20,"prevSize":32,"code":59696,"name":"play"},"setIdx":0,"setId":1,"iconIdx":124},{"icon":{"paths":["M889.68 166.32c-93.608-102.216-228.154-166.32-377.68-166.32-282.77 0-512 229.23-512 512h96c0-229.75 186.25-416 416-416 123.020 0 233.542 53.418 309.696 138.306l-149.696 149.694h352v-352l-134.32 134.32z","M928 512c0 229.75-186.25 416-416 416-123.020 0-233.542-53.418-309.694-138.306l149.694-149.694h-352v352l134.32-134.32c93.608 102.216 228.154 166.32 377.68 166.32 282.77 0 512-229.23 512-512h-96z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["loop","repeat","player","reload","refresh","update","synchronize","arrows"],"grid":16},"attrs":[{},{}],"properties":{"order":49,"id":21,"prevSize":32,"code":59694,"name":"reset"},"setIdx":0,"setId":1,"iconIdx":125},{"icon":{"paths":["M933.79 610.25c-53.726-93.054-21.416-212.304 72.152-266.488l-100.626-174.292c-28.75 16.854-62.176 26.518-97.846 26.518-107.536 0-194.708-87.746-194.708-195.99h-201.258c0.266 33.41-8.074 67.282-25.958 98.252-53.724 93.056-173.156 124.702-266.862 70.758l-100.624 174.292c28.97 16.472 54.050 40.588 71.886 71.478 53.638 92.908 21.512 211.92-71.708 266.224l100.626 174.292c28.65-16.696 61.916-26.254 97.4-26.254 107.196 0 194.144 87.192 194.7 194.958h201.254c-0.086-33.074 8.272-66.57 25.966-97.218 53.636-92.906 172.776-124.594 266.414-71.012l100.626-174.29c-28.78-16.466-53.692-40.498-71.434-71.228zM512 719.332c-114.508 0-207.336-92.824-207.336-207.334 0-114.508 92.826-207.334 207.336-207.334 114.508 0 207.332 92.826 207.332 207.334-0.002 114.51-92.824 207.334-207.332 207.334z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["cog","gear","preferences","settings","generate","control","options"],"grid":16},"attrs":[{}],"properties":{"order":1,"id":22,"prevSize":32,"code":59693,"name":"settings2"},"setIdx":0,"setId":1,"iconIdx":126},{"icon":{"paths":["M512 128c-247.424 0-448 200.576-448 448s200.576 448 448 448 448-200.576 448-448-200.576-448-448-448zM512 936c-198.824 0-360-161.178-360-360 0-198.824 161.176-360 360-360 198.822 0 360 161.176 360 360 0 198.822-161.178 360-360 360zM934.784 287.174c16.042-28.052 25.216-60.542 25.216-95.174 0-106.040-85.96-192-192-192-61.818 0-116.802 29.222-151.92 74.596 131.884 27.236 245.206 105.198 318.704 212.578v0zM407.92 74.596c-35.116-45.374-90.102-74.596-151.92-74.596-106.040 0-192 85.96-192 192 0 34.632 9.174 67.122 25.216 95.174 73.5-107.38 186.822-185.342 318.704-212.578z","M512 576v-256h-64v320h256v-64z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["alarm","time","clock"],"grid":16},"attrs":[{},{}],"properties":{"order":2,"id":23,"prevSize":32,"code":59716,"name":"timeout"},"setIdx":0,"setId":1,"iconIdx":127},{"icon":{"paths":["M768 64c105.87 0 192 86.13 192 192v192h-128v-192c0-35.29-28.71-64-64-64h-128c-35.29 0-64 28.71-64 64v192h16c26.4 0 48 21.6 48 48v480c0 26.4-21.6 48-48 48h-544c-26.4 0-48-21.6-48-48v-480c0-26.4 21.6-48 48-48h400v-192c0-105.87 86.13-192 192-192h128z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["unlocked","lock-open"],"grid":16},"attrs":[{}],"properties":{"order":1,"id":24,"prevSize":32,"code":59699,"name":"unlocked"},"setIdx":0,"setId":1,"iconIdx":128},{"icon":{"paths":["M832 416h-320v64h-64v-96h384v-192h-32v96c0 17.664-14.336 32-32 32h-576c-17.696 0-32-14.336-32-32v-128c0-17.696 14.304-32 32-32h576c17.664 0 32 14.304 32 32h64v256h-32zM736 160h-512v32h512v-32zM544 832c0 35.328-28.672 64-64 64s-64-28.672-64-64v-320h128v320zM480 786.656c-17.696 0-32 14.336-32 32 0 17.696 14.304 32 32 32 17.664 0 32-14.304 32-32 0-17.664-14.336-32-32-32z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["paint","tool"],"grid":32},"attrs":[{}],"properties":{"order":1,"id":0,"prevSize":32,"code":59725,"name":"control-Color"},"setIdx":0,"setId":1,"iconIdx":129},{"icon":{"paths":["M1328 320c-8.832 0-16 7.168-16 16v640c0 8.832-7.168 16-16 16h-1248c-8.832 0-16-7.168-16-16v-640c0-8.832-7.168-16-16-16s-16 7.168-16 16v640c0 26.464 21.536 48 48 48h1248c26.464 0 48-21.536 48-48v-640c0-8.832-7.168-16-16-16zM1296 0h-1248c-26.464 0-48 21.536-48 48v192c0 8.832 7.168 16 16 16h1312c8.832 0 16-7.168 16-16v-192c0-26.464-21.536-48-48-48zM1312 224h-1280v-176c0-8.832 7.168-16 16-16h1248c8.832 0 16 7.168 16 16v176zM560 896c8.832 0 16-7.168 16-16v-512c0-8.832-7.168-16-16-16h-416c-8.832 0-16 7.168-16 16v512c0 8.832 7.168 16 16 16h416zM160 384h384v480h-384v-480zM720 480h480c8.832 0 16-7.168 16-16s-7.168-16-16-16h-480c-8.832 0-16 7.168-16 16s7.168 16 16 16zM720 640h480c8.832 0 16-7.168 16-16s-7.168-16-16-16h-480c-8.832 0-16 7.168-16 16s7.168 16 16 16zM720 800h480c8.832 0 16-7.168 16-16s-7.168-16-16-16h-480c-8.832 0-16 7.168-16 16s7.168 16 16 16zM96 128c0 17.673 14.327 32 32 32s32-14.327 32-32c0-17.673-14.327-32-32-32s-32 14.327-32 32zM224 128c0 17.673 14.327 32 32 32s32-14.327 32-32c0-17.673-14.327-32-32-32s-32 14.327-32 32zM352 128c0 17.673 14.327 32 32 32s32-14.327 32-32c0-17.673-14.327-32-32-32s-32 14.327-32 32z"],"width":1344,"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["browser","window","software","program"],"grid":32},"attrs":[{}],"properties":{"order":1,"id":1,"prevSize":32,"code":59701,"name":"browser"},"setIdx":0,"setId":1,"iconIdx":130},{"icon":{"paths":["M927.936 272.992l-68.288-68.288c-12.608-12.576-32.96-12.576-45.536 0l-409.44 409.44-194.752-196.16c-12.576-12.576-32.928-12.576-45.536 0l-68.288 68.288c-12.576 12.608-12.576 32.96 0 45.536l285.568 287.488c12.576 12.576 32.96 12.576 45.536 0l500.736-500.768c12.576-12.544 12.576-32.96 0-45.536z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["checkmark","tick","approve","submit"],"grid":32},"attrs":[{}],"properties":{"order":1,"id":2,"prevSize":32,"code":59714,"name":"checkmark"},"setIdx":0,"setId":1,"iconIdx":131},{"icon":{"paths":["M1020.192 401.824c-8.864-25.568-31.616-44.288-59.008-48.352l-266.432-39.616-115.808-240.448c-12.192-25.248-38.272-41.408-66.944-41.408s-54.752 16.16-66.944 41.408l-115.808 240.448-266.464 39.616c-27.36 4.064-50.112 22.784-58.944 48.352-8.8 25.632-2.144 53.856 17.184 73.12l195.264 194.944-45.28 270.432c-4.608 27.232 7.2 54.56 30.336 70.496 12.704 8.736 27.648 13.184 42.592 13.184 12.288 0 24.608-3.008 35.776-8.992l232.288-125.056 232.32 125.056c11.168 5.984 23.488 8.992 35.744 8.992 14.944 0 29.888-4.448 42.624-13.184 23.136-15.936 34.88-43.264 30.304-70.496l-45.312-270.432 195.328-194.944c19.296-19.296 25.92-47.52 17.184-73.12zM754.816 619.616c-16.384 16.32-23.808 39.328-20.064 61.888l45.312 270.432-232.32-124.992c-11.136-6.016-23.424-8.992-35.776-8.992-12.288 0-24.608 3.008-35.744 8.992l-232.32 124.992 45.312-270.432c3.776-22.56-3.648-45.568-20.032-61.888l-195.264-194.944 266.432-39.68c24.352-3.616 45.312-18.848 55.776-40.576l115.872-240.384 115.84 240.416c10.496 21.728 31.424 36.928 55.744 40.576l266.496 39.68-195.264 194.912z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["star","favorite"],"grid":32},"attrs":[{}],"properties":{"order":1,"id":3,"prevSize":32,"code":59706,"name":"control-Stars"},"setIdx":0,"setId":1,"iconIdx":132},{"icon":{"paths":["M409.6 204.8h-153.6c-28.314 0-51.2 22.886-51.2 51.2v153.6c0 28.262 22.886 51.2 51.2 51.2h153.6c28.314 0 51.2-22.938 51.2-51.2v-153.6c0-28.262-22.886-51.2-51.2-51.2zM768 204.8h-153.6c-28.314 0-51.2 22.886-51.2 51.2v153.6c0 28.262 22.886 51.2 51.2 51.2h153.6c28.314 0 51.2-22.938 51.2-51.2v-153.6c0-28.262-22.886-51.2-51.2-51.2zM409.6 563.2h-153.6c-28.314 0-51.2 22.886-51.2 51.2v153.6c0 28.262 22.886 51.2 51.2 51.2h153.6c28.314 0 51.2-22.938 51.2-51.2v-153.6c0-28.262-22.886-51.2-51.2-51.2zM768 563.2h-153.6c-28.314 0-51.2 22.886-51.2 51.2v153.6c0 28.262 22.886 51.2 51.2 51.2h153.6c28.314 0 51.2-22.938 51.2-51.2v-153.6c0-28.262-22.886-51.2-51.2-51.2z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["grid"],"grid":20},"attrs":[{}],"properties":{"order":1,"id":0,"prevSize":20,"code":59730,"name":"grid1"},"setIdx":0,"setId":1,"iconIdx":133},{"icon":{"paths":["M737.28 460.8h-296.96c-28.262 0-30.72 22.886-30.72 51.2s2.458 51.2 30.72 51.2h296.96c28.262 0 30.72-22.886 30.72-51.2s-2.458-51.2-30.72-51.2zM839.68 716.8h-399.36c-28.262 0-30.72 22.886-30.72 51.2s2.458 51.2 30.72 51.2h399.36c28.262 0 30.72-22.886 30.72-51.2s-2.458-51.2-30.72-51.2zM440.32 307.2h399.36c28.262 0 30.72-22.886 30.72-51.2s-2.458-51.2-30.72-51.2h-399.36c-28.262 0-30.72 22.886-30.72 51.2s2.458 51.2 30.72 51.2zM276.48 460.8h-92.16c-28.262 0-30.72 22.886-30.72 51.2s2.458 51.2 30.72 51.2h92.16c28.262 0 30.72-22.886 30.72-51.2s-2.458-51.2-30.72-51.2zM276.48 716.8h-92.16c-28.262 0-30.72 22.886-30.72 51.2s2.458 51.2 30.72 51.2h92.16c28.262 0 30.72-22.886 30.72-51.2s-2.458-51.2-30.72-51.2zM276.48 204.8h-92.16c-28.262 0-30.72 22.886-30.72 51.2s2.458 51.2 30.72 51.2h92.16c28.262 0 30.72-22.886 30.72-51.2s-2.458-51.2-30.72-51.2z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["list"],"grid":20},"attrs":[{}],"properties":{"order":1,"id":1,"name":"list","prevSize":20,"code":59726},"setIdx":0,"setId":1,"iconIdx":134},{"icon":{"paths":["M636.518 0c68.608 0 102.912 46.694 102.912 100.198 0 66.816-59.597 128.614-137.165 128.614-64.973 0-102.861-38.4-101.069-101.888 0-53.402 45.107-126.925 135.322-126.925zM425.421 1024c-54.17 0-93.85-33.382-55.962-180.429l62.157-260.71c10.803-41.677 12.595-58.419 0-58.419-16.23 0-86.477 28.774-128.102 57.19l-27.034-45.056c131.686-111.923 283.187-177.51 348.211-177.51 54.118 0 63.13 65.178 36.096 165.376l-71.219 274.022c-12.595 48.384-7.219 65.075 5.427 65.075 16.23 0 69.478-20.070 121.805-61.798l30.72 41.677c-128.102 130.406-268.032 180.582-322.099 180.582z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["info"],"grid":20},"attrs":[{}],"properties":{"order":1,"id":2,"prevSize":20,"code":59708,"name":"info"},"setIdx":0,"setId":1,"iconIdx":135}],"height":1024,"metadata":{"name":"icomoon"},"preferences":{"showGlyphs":true,"showCodes":true,"showQuickUse":true,"showQuickUse2":true,"showSVGs":true,"fontPref":{"prefix":"icon-","metadata":{"fontFamily":"icomoon"},"metrics":{"emSize":1024,"baseline":6.25,"whitespace":50},"embed":false},"imagePref":{"prefix":"icon-","png":true,"useClassSelector":true,"color":0,"bgColor":16777215,"name":"icomoon","classSelector":".icon"},"historySize":50,"gridSize":16}} \ No newline at end of file +{"IcoMoonType":"selection","icons":[{"icon":{"paths":["M456.158 36.282c-12.145-0.032-24.18 1.32-35.941 3.974-23.536 5.313-45.906 15.872-65.238 31.342-77.826 61.631-80.817 179.217-6.302 244.772 0.028 0.028 0.084 0.086 0.113 0.114 0.020 0.018 0.038 0.039 0.058 0.057 0.037 0.039 0.074 0.076 0.112 0.112l0.001 0.001c4.727 4.044 7.287 9.964 7.097 16.182-0.003 0.018 0.003 0.038 0 0.057-0.008 0.085-0.012 0.184-0.012 0.284s0.004 0.199 0.013 0.296l-0.001-0.013c0 10.503-8.234 18.737-18.737 18.737h-290.707c-5.436-0.020-10.354 4.898-10.334 10.334v192.479c0.079 40.118 25.509 70.246 57.289 81.875 31.779 11.628 70.726 5.088 96.694-25.494 48.914-57.384 140.83-35.582 158.809 37.644 6.312 27.401 0.010 56.217-17.261 78.411-35.813 45.415-103.666 46.801-141.265 2.839-0.153-0.167-0.32-0.317-0.501-0.448l-0.010-0.007c-0.073-0.080-0.147-0.154-0.224-0.224l-0.003-0.002c-25.873-30.135-64.41-36.684-96.012-25.21-31.887 11.577-57.465 41.733-57.517 81.988v191.003c-0.020 5.436 4.898 10.354 10.334 10.334h745.955c5.436 0.020 10.354-4.898 10.334-10.334l-0.852-616.898c0.020-5.436-4.898-10.354-10.334-10.334h-222.401c-10.503 0-18.737-8.234-18.737-18.737-0.019-5.72 2.466-11.020 6.87-14.592 0.080-0.073 0.154-0.147 0.224-0.224l0.002-0.003 0.227-0.227c97.336-84.032 59.622-244.251-65.125-275.83-0.169-0.034-0.365-0.054-0.566-0.057l-0.002-0c-0.018-0.004-0.038 0.004-0.058 0h-0.113c-11.884-2.753-23.91-4.17-35.884-4.202zM454.682 105.041c6.891 0.035 13.821 0.856 20.667 2.441 73.201 17.648 95.396 109.369 38.439 158.582-30.669 26.067-37.154 65.105-25.38 96.921 11.773 31.813 42.084 57.204 82.329 57.006h164.090v499.65h-629.673l-0.795-133.884c0.026-10.44 8.193-18.619 18.623-18.68 5.89 0.174 11.341 2.823 15.103 7.324 0.055 0.060 0.111 0.116 0.169 0.17l0.002 0.002c0.028 0.028 0.086 0.087 0.114 0.113 65.15 75.665 183.646 73.404 245.737-4.769l0.058-0.058c0.076-0.085 0.151-0.178 0.22-0.275l0.007-0.010c30.825-38.562 42.246-89.164 31.058-137.234-0.010-0.168-0.030-0.324-0.062-0.475l0.004 0.021c-30.581-126.005-192.369-164.654-276.681-66.145-0.019 0.019-0.037 0.038-0.055 0.057l-0.001 0.001c-0.175 0.215-0.297 0.397-0.454 0.624-5.948 8.251-13.969 9.414-21.519 6.699-7.485-2.692-12.925-8.644-12.378-18.623v-0.172c0.003-0.041-0.003-0.073 0-0.113 0.017-0.131 0.045-0.267 0.057-0.397 0.002-0.043 0.003-0.092 0.003-0.142s-0.001-0.1-0.003-0.149l0 0.007v-133.259h233.53c40.255-0.052 70.451-25.629 82.045-57.517 11.514-31.669 4.916-70.308-25.38-96.183 0-0.008 0-0.018 0-0.028s-0-0.020-0-0.030l0 0.002c-0.064-0.053-0.108-0.117-0.172-0.17-0.106-0.123-0.218-0.234-0.337-0.337l-0.004-0.003c-43.965-37.601-42.63-105.454 2.782-141.265 11.117-8.651 23.938-14.535 37.36-17.488 6.716-1.478 13.596-2.249 20.497-2.214z"],"attrs":[{}],"width":839,"isMulticolor":false,"isMulticolor2":false,"grid":14,"tags":["noun_extension_1559208"]},"attrs":[{}],"properties":{"order":138,"id":46,"name":"plugin","prevSize":24,"code":59781},"setIdx":0,"setId":1,"iconIdx":0},{"icon":{"paths":["M340 548.571c0 4.571-2.286 9.714-5.714 13.143l-266.286 266.286c-3.429 3.429-8.571 5.714-13.143 5.714s-9.714-2.286-13.143-5.714l-28.571-28.571c-3.429-3.429-5.714-8.571-5.714-13.143s2.286-9.714 5.714-13.143l224.571-224.571-224.571-224.571c-3.429-3.429-5.714-8.571-5.714-13.143s2.286-9.714 5.714-13.143l28.571-28.571c3.429-3.429 8.571-5.714 13.143-5.714s9.714 2.286 13.143 5.714l266.286 266.286c3.429 3.429 5.714 8.571 5.714 13.143zM559.429 548.571c0 4.571-2.286 9.714-5.714 13.143l-266.286 266.286c-3.429 3.429-8.571 5.714-13.143 5.714s-9.714-2.286-13.143-5.714l-28.571-28.571c-3.429-3.429-5.714-8.571-5.714-13.143s2.286-9.714 5.714-13.143l224.571-224.571-224.571-224.571c-3.429-3.429-5.714-8.571-5.714-13.143s2.286-9.714 5.714-13.143l28.571-28.571c3.429-3.429 8.571-5.714 13.143-5.714s9.714 2.286 13.143 5.714l266.286 266.286c3.429 3.429 5.714 8.571 5.714 13.143z"],"attrs":[{}],"width":567,"isMulticolor":false,"isMulticolor2":false,"tags":["angle-double-right"],"grid":14},"attrs":[{}],"properties":{"order":1,"id":1,"prevSize":24,"code":59773,"name":"angle-double-right"},"setIdx":0,"setId":1,"iconIdx":29},{"icon":{"paths":["M358.286 786.286c0 4.571-2.286 9.714-5.714 13.143l-28.571 28.571c-3.429 3.429-8.571 5.714-13.143 5.714s-9.714-2.286-13.143-5.714l-266.286-266.286c-3.429-3.429-5.714-8.571-5.714-13.143s2.286-9.714 5.714-13.143l266.286-266.286c3.429-3.429 8.571-5.714 13.143-5.714s9.714 2.286 13.143 5.714l28.571 28.571c3.429 3.429 5.714 8.571 5.714 13.143s-2.286 9.714-5.714 13.143l-224.571 224.571 224.571 224.571c3.429 3.429 5.714 8.571 5.714 13.143zM577.714 786.286c0 4.571-2.286 9.714-5.714 13.143l-28.571 28.571c-3.429 3.429-8.571 5.714-13.143 5.714s-9.714-2.286-13.143-5.714l-266.286-266.286c-3.429-3.429-5.714-8.571-5.714-13.143s2.286-9.714 5.714-13.143l266.286-266.286c3.429-3.429 8.571-5.714 13.143-5.714s9.714 2.286 13.143 5.714l28.571 28.571c3.429 3.429 5.714 8.571 5.714 13.143s-2.286 9.714-5.714 13.143l-224.571 224.571 224.571 224.571c3.429 3.429 5.714 8.571 5.714 13.143z"],"attrs":[{}],"width":603,"isMulticolor":false,"isMulticolor2":false,"tags":["angle-double-left"],"grid":14},"attrs":[{}],"properties":{"order":2,"id":0,"prevSize":24,"code":59774,"name":"angle-double-left"},"setIdx":0,"setId":1,"iconIdx":30},{"icon":{"paths":["M801.714 168.571c5.714 13.714 2.857 29.714-8 40l-281.714 281.714v424c0 14.857-9.143 28-22.286 33.714-4.571 1.714-9.714 2.857-14.286 2.857-9.714 0-18.857-3.429-25.714-10.857l-146.286-146.286c-6.857-6.857-10.857-16-10.857-25.714v-277.714l-281.714-281.714c-10.857-10.286-13.714-26.286-8-40 5.714-13.143 18.857-22.286 33.714-22.286h731.429c14.857 0 28 9.143 33.714 22.286z"],"attrs":[{}],"width":805,"isMulticolor":false,"isMulticolor2":false,"tags":["filter"],"grid":14},"attrs":[{}],"properties":{"order":1,"id":0,"prevSize":24,"code":59768,"name":"filter-filled"},"setIdx":0,"setId":1,"iconIdx":31},{"icon":{"paths":["M950.857 932.571v-621.714c0-9.714-8.571-18.286-18.286-18.286h-621.714c-9.714 0-18.286 8.571-18.286 18.286v621.714c0 9.714 8.571 18.286 18.286 18.286h621.714c9.714 0 18.286-8.571 18.286-18.286zM1024 310.857v621.714c0 50.286-41.143 91.429-91.429 91.429h-621.714c-50.286 0-91.429-41.143-91.429-91.429v-621.714c0-50.286 41.143-91.429 91.429-91.429h621.714c50.286 0 91.429 41.143 91.429 91.429zM804.571 91.429v91.429h-73.143v-91.429c0-9.714-8.571-18.286-18.286-18.286h-621.714c-9.714 0-18.286 8.571-18.286 18.286v621.714c0 9.714 8.571 18.286 18.286 18.286h91.429v73.143h-91.429c-50.286 0-91.429-41.143-91.429-91.429v-621.714c0-50.286 41.143-91.429 91.429-91.429h621.714c50.286 0 91.429 41.143 91.429 91.429z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["clone"],"grid":14},"attrs":[{}],"properties":{"order":1,"id":0,"prevSize":24,"code":59754,"name":"clone"},"setIdx":0,"setId":1,"iconIdx":32},{"icon":{"paths":["M498.787 330.323v-49.548h112.31v-66.065c0-49.548-39.639-89.187-89.187-89.187s-89.187 39.639-89.187 89.187v541.729l89.187 161.858 89.187-161.858v-426.116z","M360.052 716.8h-66.065c-59.458 0-105.703-46.245-105.703-105.703v-254.348c0-59.458 46.245-105.703 105.703-105.703h66.065v-42.942h-66.065c-82.581 0-148.645 66.065-148.645 148.645v254.348c0 82.581 66.065 148.645 148.645 148.645h66.065z","M852.232 260.955c-26.426-33.032-66.065-52.852-109.006-52.852h-59.458v42.942h39.639c42.942 0 82.581 19.819 109.006 52.852l145.342 181.677-142.039 178.374c-26.426 33.032-69.368 52.852-112.31 52.852h-36.335v42.942h56.155c42.942 0 85.884-19.819 112.31-52.852l178.374-221.316z"],"width":1140,"attrs":[{},{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["control-Tags"],"grid":14},"attrs":[{},{},{}],"properties":{"order":119,"id":1,"name":"control-Tags","prevSize":24,"code":59747},"setIdx":0,"setId":1,"iconIdx":33},{"icon":{"paths":["M384 179.2h614.4c14.157 0 25.6-11.443 25.6-25.6s-11.443-25.6-25.6-25.6h-614.4c-14.131 0-25.6 11.443-25.6 25.6s11.469 25.6 25.6 25.6zM998.4 486.4h-614.4c-14.131 0-25.6 11.443-25.6 25.6s11.469 25.6 25.6 25.6h614.4c14.157 0 25.6-11.443 25.6-25.6s-11.443-25.6-25.6-25.6zM998.4 844.8h-614.4c-38.406 15.539-22.811 37.543 0 51.2h614.4c14.157 0 25.6-11.443 25.6-25.6s-11.443-25.6-25.6-25.6z","M0 0v307.2h307.2v-307.2zM47.4 47.4h212.4v212.4h-212.4z","M0 716.8v307.2h307.2v-307.2zM47.4 764.2h212.4v212.4h-212.4z","M0 358.4v307.2h307.2v-307.2zM47.4 405.8h212.4v212.4h-212.4z","M89.6 89.6h128v128h-128v-128z"],"attrs":[{},{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["control-Checkboxes"],"grid":14},"attrs":[{},{},{},{},{}],"properties":{"order":118,"id":2,"name":"control-Checkboxes, control-List","prevSize":24,"code":59746},"setIdx":0,"setId":1,"iconIdx":34},{"icon":{"paths":["M159.073 665.6l-159.073-134.055 159.073-133.819 36.818 37.29-117.062 96.057 117.062 97.237z","M493.247 536.029q0 33.042-9.441 57.115-9.205 24.073-25.961 40.122-16.521 15.813-39.178 23.601-22.657 7.552-49.327 7.552-26.197 0-48.855-4.012-22.421-3.776-42.954-10.385v-323.338h57.587v78.356l-2.36 47.203q12.981-16.757 30.21-26.905 17.465-10.149 41.774-10.149 21.241 0 37.762 8.496t27.614 24.309q11.329 15.577 17.229 37.998 5.9 22.185 5.9 50.035zM432.828 538.389q0-19.825-2.832-33.75t-8.26-22.893q-5.192-8.969-12.981-12.981-7.552-4.248-17.465-4.248-14.633 0-28.086 11.801-13.217 11.801-28.086 32.098v104.79q6.844 2.596 16.757 4.248 10.149 1.652 20.533 1.652 13.689 0 24.781-5.664 11.329-5.664 19.117-16.049 8.024-10.385 12.273-25.253 4.248-15.105 4.248-33.75z","M700.682 513.608q0.472-13.453-1.416-22.893-1.652-9.441-5.664-15.577-3.776-6.136-9.441-8.968t-12.981-2.832q-12.745 0-26.433 10.621-13.453 10.385-29.738 34.458v151.756h-59.003v-239.789h52.159l2.124 34.93q5.9-9.205 13.217-16.521 7.552-7.316 16.521-12.509 9.205-5.428 20.297-8.26t24.309-2.832q18.173 0 32.098 6.372 14.161 6.136 23.601 18.409 9.677 12.273 14.161 30.918 4.72 18.409 4.012 42.718z","M864.927 397.725l159.073 133.819-159.073 134.055-36.582-37.29 116.826-96.293-116.826-97.001z"],"attrs":[{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["control-Html"],"grid":14},"attrs":[{},{},{},{}],"properties":{"order":116,"id":3,"name":"control-Html","prevSize":24,"code":59744},"setIdx":0,"setId":1,"iconIdx":35},{"icon":{"paths":["M251.429 100.58c-87.896 0-160 72.104-160 160v525.714c0 87.896 72.104 160 160 160h525.714c87.896 0 160-72.104 160-160v-525.714c0-87.896-72.104-160-160-160zM251.429 146.295h525.714c62.961 0 114.286 51.325 114.286 114.286v525.714c0 62.961-51.325 114.286-114.286 114.286h-525.714c-62.961 0-114.286-51.325-114.286-114.286v-525.714c0-62.961 51.325-114.286 114.286-114.286z","M251.429 306.295c-0.096-0.001-0.21-0.002-0.323-0.002-12.625 0-22.859 10.235-22.859 22.859s10.235 22.859 22.859 22.859c0.114 0 0.227-0.001 0.34-0.002l-0.017 0h525.714c0.096 0.001 0.21 0.002 0.323 0.002 12.625 0 22.859-10.235 22.859-22.859s-10.235-22.859-22.859-22.859c-0.114 0-0.227 0.001-0.34 0.002l0.017-0z","M251.429 443.438c-0.096-0.001-0.21-0.002-0.323-0.002-12.625 0-22.859 10.235-22.859 22.859s10.235 22.859 22.859 22.859c0.114 0 0.227-0.001 0.34-0.002l-0.017 0h297.143c0.096 0.001 0.21 0.002 0.323 0.002 12.625 0 22.859-10.235 22.859-22.859s-10.235-22.859-22.859-22.859c-0.114 0-0.227 0.001-0.34 0.002l0.017-0z","M251.429 580.58c-0.096-0.001-0.21-0.002-0.323-0.002-12.625 0-22.859 10.235-22.859 22.859s10.235 22.859 22.859 22.859c0.114 0 0.227-0.001 0.34-0.002l-0.017 0h297.143c0.096 0.001 0.21 0.002 0.323 0.002 12.625 0 22.859-10.235 22.859-22.859s-10.235-22.859-22.859-22.859c-0.114 0-0.227 0.001-0.34 0.002l0.017-0z"],"width":1029,"attrs":[{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["single-content"],"grid":14},"attrs":[{},{},{},{}],"properties":{"order":112,"id":4,"name":"single-content, search-Content","prevSize":24,"code":59736},"setIdx":0,"setId":1,"iconIdx":36},{"icon":{"paths":["M777.143 946.286h-525.714c-89.143 0-160-70.857-160-160v-297.143c0-89.143 70.857-160 160-160h525.714c89.143 0 160 70.857 160 160v297.143c0 89.143-70.857 160-160 160zM251.429 374.857c-64 0-114.286 50.286-114.286 114.286v297.143c0 64 50.286 114.286 114.286 114.286h525.714c64 0 114.286-50.286 114.286-114.286v-297.143c0-64-50.286-114.286-114.286-114.286h-525.714z","M731.429 580.571h-457.143c-13.714 0-22.857-9.143-22.857-22.857s9.143-22.857 22.857-22.857h457.143c13.714 0 22.857 9.143 22.857 22.857s-9.143 22.857-22.857 22.857z","M502.857 740.571h-228.571c-13.714 0-22.857-9.143-22.857-22.857s9.143-22.857 22.857-22.857h228.571c13.714 0 22.857 9.143 22.857 22.857s-9.143 22.857-22.857 22.857z","M777.143 260.571h-525.714c-13.714 0-22.857-9.143-22.857-22.857s9.143-22.857 22.857-22.857h525.714c13.714 0 22.857 9.143 22.857 22.857s-9.143 22.857-22.857 22.857z","M685.714 146.286h-342.857c-13.714 0-22.857-9.143-22.857-22.857s9.143-22.857 22.857-22.857h342.857c13.714 0 22.857 9.143 22.857 22.857s-9.143 22.857-22.857 22.857z"],"width":1029,"attrs":[{},{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["multiple-content"],"grid":14},"attrs":[{},{},{},{},{}],"properties":{"order":113,"id":5,"name":"multiple-content","prevSize":24,"code":59735},"setIdx":0,"setId":1,"iconIdx":37},{"icon":{"paths":["M832 268.8h-657.92c-15.36 0-25.6-10.24-25.6-25.6s10.24-25.6 25.6-25.6h657.92c15.36 0 25.6 10.24 25.6 25.6s-10.24 25.6-25.6 25.6z","M832 453.12h-409.6c-15.36 0-25.6-10.24-25.6-25.6s10.24-25.6 25.6-25.6h409.6c15.36 0 25.6 10.24 25.6 25.6s-10.24 25.6-25.6 25.6z","M832 642.56h-409.6c-15.36 0-25.6-10.24-25.6-25.6s10.24-25.6 25.6-25.6h409.6c15.36 0 25.6 10.24 25.6 25.6s-10.24 25.6-25.6 25.6z","M832 832h-409.6c-15.36 0-25.6-10.24-25.6-25.6s10.24-25.6 25.6-25.6h409.6c15.36 0 25.6 10.24 25.6 25.6s-10.24 25.6-25.6 25.6z"],"attrs":[{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["type-Array"],"grid":14},"attrs":[{},{},{},{}],"properties":{"order":108,"id":6,"name":"type-Array","prevSize":24,"code":59734},"setIdx":0,"setId":1,"iconIdx":38},{"icon":{"paths":["M292.571 713.143v128c0 20-16.571 36.571-36.571 36.571h-146.286c-20 0-36.571-16.571-36.571-36.571v-128c0-20 16.571-36.571 36.571-36.571h146.286c20 0 36.571 16.571 36.571 36.571zM309.714 109.714l-16 438.857c-0.571 20-17.714 36.571-37.714 36.571h-146.286c-20 0-37.143-16.571-37.714-36.571l-16-438.857c-0.571-20 15.429-36.571 35.429-36.571h182.857c20 0 36 16.571 35.429 36.571z"],"width":366,"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["exclamation"],"grid":14},"attrs":[{}],"properties":{"order":1,"id":7,"prevSize":24,"code":59733,"name":"exclamation"},"setIdx":0,"setId":1,"iconIdx":39},{"icon":{"paths":["M512 26.38l-424.96 242.8v485.64l424.96 242.8 424.96-242.8v-485.64l-424.96-242.8zM512 235.52l245.76 138.24v276.48l-245.76 138.24-245.76-138.24v-276.48l245.76-138.24z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["orleans"],"grid":14},"attrs":[{}],"properties":{"order":99,"id":8,"name":"orleans","prevSize":24,"code":59723},"setIdx":0,"setId":1,"iconIdx":40},{"icon":{"paths":["M358.4 102.4c-28.314 0-51.2 22.886-51.2 51.2v204.8h51.2v-204.8h307.2v153.6c0 28.314 22.886 51.2 51.2 51.2h153.6v512h-307.2v51.2h307.2c28.314 0 51.2-22.886 51.2-51.2v-548.2l-219.8-219.8h-292.2zM716.8 189.8l117.4 117.4h-117.4z","M153.6 640v281.6h358.4v-281.6zM179.2 640v-76.8c0-84.48 69.12-153.6 153.6-153.6s153.6 69.12 153.6 153.6v76.8h-51.2v-76.8c0-56.32-46.080-102.4-102.4-102.4s-102.4 46.080-102.4 102.4v76.8z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["document-lock"],"grid":14},"attrs":[{},{}],"properties":{"order":97,"id":9,"name":"document-lock","prevSize":24,"code":59721},"setIdx":0,"setId":1,"iconIdx":41},{"icon":{"paths":["M358.4 102.4c-28.314 0-51.2 22.886-51.2 51.2v153.6h51.2v-153.6h307.2v153.6c0 28.314 22.886 51.2 51.2 51.2h153.6v512h-358.4v51.2h358.4c28.314 0 51.2-22.886 51.2-51.2v-548.2l-219.8-219.8h-292.2zM716.8 189.8l117.4 117.4h-117.4zM332.8 460.8l-230.4 256v51.2h102.4v153.6h256v-153.6h102.4v-51.2zM332.8 537.3l161.5 179.5h-84.7v153.6h-153.6v-153.6h-84.7z","M102.4 357.532h460.8v52.068h-460.8v-52.068z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["document-unpublish"],"grid":14},"attrs":[{},{}],"properties":{"order":96,"id":10,"name":"document-unpublish","prevSize":24,"code":59711},"setIdx":0,"setId":1,"iconIdx":42},{"icon":{"paths":["M614.286 420.571c0 4.571-2.286 9.714-5.714 13.143l-266.286 266.286c-3.429 3.429-8.571 5.714-13.143 5.714s-9.714-2.286-13.143-5.714l-266.286-266.286c-3.429-3.429-5.714-8.571-5.714-13.143s2.286-9.714 5.714-13.143l28.571-28.571c3.429-3.429 8-5.714 13.143-5.714 4.571 0 9.714 2.286 13.143 5.714l224.571 224.571 224.571-224.571c3.429-3.429 8.571-5.714 13.143-5.714s9.714 2.286 13.143 5.714l28.571 28.571c3.429 3.429 5.714 8.571 5.714 13.143z"],"width":658,"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["angle-down"],"grid":14},"attrs":[{}],"properties":{"order":1,"id":11,"prevSize":24,"code":59648,"name":"angle-down"},"setIdx":0,"setId":1,"iconIdx":43},{"icon":{"paths":["M358.286 310.857c0 4.571-2.286 9.714-5.714 13.143l-224.571 224.571 224.571 224.571c3.429 3.429 5.714 8.571 5.714 13.143s-2.286 9.714-5.714 13.143l-28.571 28.571c-3.429 3.429-8.571 5.714-13.143 5.714s-9.714-2.286-13.143-5.714l-266.286-266.286c-3.429-3.429-5.714-8.571-5.714-13.143s2.286-9.714 5.714-13.143l266.286-266.286c3.429-3.429 8.571-5.714 13.143-5.714s9.714 2.286 13.143 5.714l28.571 28.571c3.429 3.429 5.714 8 5.714 13.143z"],"width":384,"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["angle-left"],"grid":14},"attrs":[{}],"properties":{"order":2,"id":12,"prevSize":24,"code":59649,"name":"angle-left"},"setIdx":0,"setId":1,"iconIdx":44},{"icon":{"paths":["M340 548.571c0 4.571-2.286 9.714-5.714 13.143l-266.286 266.286c-3.429 3.429-8.571 5.714-13.143 5.714s-9.714-2.286-13.143-5.714l-28.571-28.571c-3.429-3.429-5.714-8-5.714-13.143 0-4.571 2.286-9.714 5.714-13.143l224.571-224.571-224.571-224.571c-3.429-3.429-5.714-8.571-5.714-13.143s2.286-9.714 5.714-13.143l28.571-28.571c3.429-3.429 8.571-5.714 13.143-5.714s9.714 2.286 13.143 5.714l266.286 266.286c3.429 3.429 5.714 8.571 5.714 13.143z"],"width":347,"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["angle-right"],"grid":14},"attrs":[{}],"properties":{"order":67,"id":13,"prevSize":24,"code":59697,"name":"angle-right"},"setIdx":0,"setId":1,"iconIdx":45},{"icon":{"paths":["M614.286 676.571c0 4.571-2.286 9.714-5.714 13.143l-28.571 28.571c-3.429 3.429-8 5.714-13.143 5.714-4.571 0-9.714-2.286-13.143-5.714l-224.571-224.571-224.571 224.571c-3.429 3.429-8.571 5.714-13.143 5.714s-9.714-2.286-13.143-5.714l-28.571-28.571c-3.429-3.429-5.714-8.571-5.714-13.143s2.286-9.714 5.714-13.143l266.286-266.286c3.429-3.429 8.571-5.714 13.143-5.714s9.714 2.286 13.143 5.714l266.286 266.286c3.429 3.429 5.714 8.571 5.714 13.143z"],"width":658,"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["angle-up"],"grid":14},"attrs":[{}],"properties":{"order":2,"id":14,"prevSize":24,"code":59651,"name":"angle-up"},"setIdx":0,"setId":1,"iconIdx":46},{"icon":{"paths":["M592 393.6h-156.8c-57.6 0-105.6-48-105.6-105.6v-182.4c0-57.6 48-105.6 105.6-105.6h156.8c57.6 0 105.6 48 105.6 105.6v182.4c-3.2 57.6-48 105.6-105.6 105.6zM432 64c-22.4 0-41.6 19.2-41.6 41.6v182.4c0 22.4 19.2 41.6 41.6 41.6h156.8c22.4 0 41.6-19.2 41.6-41.6v-182.4c0-22.4-19.2-41.6-41.6-41.6h-156.8z","M195.2 1024c-105.6 0-195.2-89.6-195.2-195.2 0-108.8 89.6-195.2 195.2-195.2s195.2 89.6 195.2 195.2c3.2 105.6-86.4 195.2-195.2 195.2zM195.2 694.4c-73.6 0-131.2 60.8-131.2 131.2 0 73.6 60.8 134.4 131.2 134.4 73.6 0 131.2-60.8 131.2-131.2 3.2-73.6-57.6-134.4-131.2-134.4z","M828.8 1024c-108.8 0-195.2-89.6-195.2-195.2 0-108.8 89.6-195.2 195.2-195.2s195.2 89.6 195.2 195.2c0 105.6-89.6 195.2-195.2 195.2zM828.8 694.4c-73.6 0-131.2 60.8-131.2 131.2 0 73.6 60.8 131.2 131.2 131.2 73.6 0 131.2-60.8 131.2-131.2s-60.8-131.2-131.2-131.2z","M332.8 640c-6.4 0-12.8 0-16-3.2-16-9.6-19.2-28.8-9.6-44.8l83.2-137.6c9.6-16 28.8-19.2 44.8-9.6s19.2 28.8 9.6 44.8l-83.2 137.6c-6.4 6.4-16 12.8-28.8 12.8z","M691.2 640c-9.6 0-22.4-6.4-28.8-16l-83.2-137.6c-9.6-16-3.2-35.2 9.6-44.8s35.2-3.2 44.8 9.6l83.2 137.6c9.6 16 3.2 35.2-9.6 44.8-6.4 6.4-12.8 6.4-16 6.4z"],"attrs":[{},{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["api"],"grid":14},"attrs":[{},{},{},{},{}],"properties":{"order":94,"id":15,"name":"api","prevSize":24,"code":59717},"setIdx":0,"setId":1,"iconIdx":47},{"icon":{"paths":["M800 1024h-576c-124.8 0-224-99.2-224-224v-576c0-124.8 99.2-224 224-224h576c124.8 0 224 99.2 224 224v576c0 124.8-99.2 224-224 224zM224 64c-89.6 0-160 70.4-160 160v576c0 89.6 70.4 160 160 160h576c89.6 0 160-70.4 160-160v-576c0-89.6-70.4-160-160-160h-576z","M771.2 860.8h-438.4c-12.8 0-22.4-6.4-28.8-19.2s-3.2-25.6 3.2-35.2l300.8-355.2c6.4-6.4 16-12.8 25.6-12.8s19.2 6.4 25.6 12.8l192 275.2c3.2 3.2 3.2 6.4 3.2 9.6 16 44.8 3.2 73.6-6.4 89.6-22.4 32-70.4 35.2-76.8 35.2zM403.2 796.8h371.2c6.4 0 22.4-3.2 25.6-9.6 3.2-3.2 3.2-12.8 0-25.6l-166.4-236.8-230.4 272z","M332.8 502.4c-76.8 0-140.8-64-140.8-140.8s64-140.8 140.8-140.8 140.8 64 140.8 140.8-60.8 140.8-140.8 140.8zM332.8 284.8c-41.6 0-76.8 32-76.8 76.8s35.2 76.8 76.8 76.8 76.8-35.2 76.8-76.8-32-76.8-76.8-76.8z"],"attrs":[{},{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["assets"],"grid":14},"attrs":[{},{},{}],"properties":{"order":95,"id":16,"name":"assets, search-Asset","prevSize":24,"code":59720},"setIdx":0,"setId":1,"iconIdx":48},{"icon":{"paths":["M932.571 548.571c0 20-16.571 36.571-36.571 36.571h-128c0 71.429-15.429 125.143-38.286 165.714l118.857 119.429c14.286 14.286 14.286 37.143 0 51.429-6.857 7.429-16.571 10.857-25.714 10.857s-18.857-3.429-25.714-10.857l-113.143-112.571s-74.857 68.571-172 68.571v-512h-73.143v512c-103.429 0-178.857-75.429-178.857-75.429l-104.571 118.286c-7.429 8-17.143 12-27.429 12-8.571 0-17.143-2.857-24.571-9.143-14.857-13.714-16-36.571-2.857-52l115.429-129.714c-20-39.429-33.143-90.286-33.143-156.571h-128c-20 0-36.571-16.571-36.571-36.571s16.571-36.571 36.571-36.571h128v-168l-98.857-98.857c-14.286-14.286-14.286-37.143 0-51.429s37.143-14.286 51.429 0l98.857 98.857h482.286l98.857-98.857c14.286-14.286 37.143-14.286 51.429 0s14.286 37.143 0 51.429l-98.857 98.857v168h128c20 0 36.571 16.571 36.571 36.571zM658.286 219.429h-365.714c0-101.143 81.714-182.857 182.857-182.857s182.857 81.714 182.857 182.857z"],"width":951,"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["bug"],"grid":14},"attrs":[{}],"properties":{"order":1,"id":17,"prevSize":24,"code":59709,"name":"bug"},"setIdx":0,"setId":1,"iconIdx":49},{"icon":{"paths":["M585.143 402.286c0 9.714-4 18.857-10.857 25.714l-256 256c-6.857 6.857-16 10.857-25.714 10.857s-18.857-4-25.714-10.857l-256-256c-6.857-6.857-10.857-16-10.857-25.714 0-20 16.571-36.571 36.571-36.571h512c20 0 36.571 16.571 36.571 36.571z"],"width":585,"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["caret-down"],"grid":14},"attrs":[{}],"properties":{"order":4,"id":18,"prevSize":24,"code":59692,"name":"caret-down"},"setIdx":0,"setId":1,"iconIdx":50},{"icon":{"paths":["M365.714 256v512c0 20-16.571 36.571-36.571 36.571-9.714 0-18.857-4-25.714-10.857l-256-256c-6.857-6.857-10.857-16-10.857-25.714s4-18.857 10.857-25.714l256-256c6.857-6.857 16-10.857 25.714-10.857 20 0 36.571 16.571 36.571 36.571z"],"width":402,"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["caret-left"],"grid":14},"attrs":[{}],"properties":{"order":2,"id":19,"prevSize":24,"code":59690,"name":"caret-left"},"setIdx":0,"setId":1,"iconIdx":51},{"icon":{"paths":["M329.143 512c0 9.714-4 18.857-10.857 25.714l-256 256c-6.857 6.857-16 10.857-25.714 10.857-20 0-36.571-16.571-36.571-36.571v-512c0-20 16.571-36.571 36.571-36.571 9.714 0 18.857 4 25.714 10.857l256 256c6.857 6.857 10.857 16 10.857 25.714z"],"width":329,"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["caret-right"],"grid":14},"attrs":[{}],"properties":{"order":1,"id":20,"prevSize":24,"code":59689,"name":"caret-right"},"setIdx":0,"setId":1,"iconIdx":52},{"icon":{"paths":["M585.143 694.857c0 20-16.571 36.571-36.571 36.571h-512c-20 0-36.571-16.571-36.571-36.571 0-9.714 4-18.857 10.857-25.714l256-256c6.857-6.857 16-10.857 25.714-10.857s18.857 4 25.714 10.857l256 256c6.857 6.857 10.857 16 10.857 25.714z"],"width":585,"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["caret-up"],"grid":14},"attrs":[{}],"properties":{"order":3,"id":21,"prevSize":24,"code":59691,"name":"caret-up"},"setIdx":0,"setId":1,"iconIdx":53},{"icon":{"paths":["M800 1024h-576c-124.8 0-224-99.2-224-224v-576c0-124.8 99.2-224 224-224h576c124.8 0 224 99.2 224 224v576c0 124.8-99.2 224-224 224zM224 64c-89.6 0-160 70.4-160 160v576c0 89.6 70.4 160 160 160h576c89.6 0 160-70.4 160-160v-576c0-89.6-70.4-160-160-160h-576z","M480 448h-211.2c-57.6 0-105.6-48-105.6-105.6v-73.6c0-57.6 48-105.6 105.6-105.6h211.2c57.6 0 105.6 48 105.6 105.6v73.6c0 57.6-48 105.6-105.6 105.6zM268.8 227.2c-22.4 0-41.6 19.2-41.6 41.6v73.6c0 22.4 19.2 41.6 41.6 41.6h211.2c22.4 0 41.6-19.2 41.6-41.6v-73.6c0-22.4-19.2-41.6-41.6-41.6h-211.2z","M828.8 611.2h-633.6c-19.2 0-32-12.8-32-32s12.8-32 32-32h630.4c19.2 0 32 12.8 32 32s-12.8 32-28.8 32z","M553.6 777.6h-358.4c-19.2 0-32-12.8-32-32s12.8-32 32-32h355.2c19.2 0 32 12.8 32 32s-12.8 32-28.8 32z"],"attrs":[{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["content"],"grid":14},"attrs":[{},{},{},{}],"properties":{"order":93,"id":22,"name":"contents, trigger-ContentChanged","prevSize":24,"code":59718},"setIdx":0,"setId":1,"iconIdx":54},{"icon":{"paths":["M947.2 102.4h-128v-25.6c0-14.131-11.469-25.6-25.6-25.6s-25.6 11.469-25.6 25.6v25.6h-512v-25.6c0-14.131-11.52-25.6-25.6-25.6s-25.6 11.469-25.6 25.6v25.6h-128c-42.342 0-76.8 34.458-76.8 76.8v716.8c0 42.342 34.458 76.8 76.8 76.8h870.4c42.342 0 76.8-34.458 76.8-76.8v-716.8c0-42.342-34.458-76.8-76.8-76.8zM972.8 896c0 14.131-11.469 25.6-25.6 25.6h-870.4c-14.080 0-25.6-11.469-25.6-25.6v-537.6h921.6v537.6zM972.8 307.2h-921.6v-128c0-14.080 11.52-25.6 25.6-25.6h128v76.8c0 14.080 11.52 25.6 25.6 25.6s25.6-11.52 25.6-25.6v-76.8h512v76.8c0 14.080 11.469 25.6 25.6 25.6s25.6-11.52 25.6-25.6v-76.8h128c14.131 0 25.6 11.52 25.6 25.6v128zM332.8 512h51.2c14.080 0 25.6-11.52 25.6-25.6s-11.52-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.52-25.6 25.6s11.52 25.6 25.6 25.6zM486.4 512h51.2c14.131 0 25.6-11.52 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.52-25.6 25.6s11.52 25.6 25.6 25.6zM640 512h51.2c14.131 0 25.6-11.52 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.131 0-25.6 11.52-25.6 25.6s11.469 25.6 25.6 25.6zM793.6 512h51.2c14.131 0 25.6-11.52 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.131 0-25.6 11.52-25.6 25.6s11.469 25.6 25.6 25.6zM179.2 614.4h51.2c14.080 0 25.6-11.469 25.6-25.6s-11.52-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6zM332.8 614.4h51.2c14.080 0 25.6-11.469 25.6-25.6s-11.52-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6zM486.4 614.4h51.2c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6zM640 614.4h51.2c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.131 0-25.6 11.469-25.6 25.6s11.469 25.6 25.6 25.6zM793.6 614.4h51.2c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.131 0-25.6 11.469-25.6 25.6s11.469 25.6 25.6 25.6zM179.2 716.8h51.2c14.080 0 25.6-11.469 25.6-25.6s-11.52-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6zM332.8 716.8h51.2c14.080 0 25.6-11.469 25.6-25.6s-11.52-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6zM486.4 716.8h51.2c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6zM640 716.8h51.2c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.131 0-25.6 11.469-25.6 25.6s11.469 25.6 25.6 25.6zM793.6 716.8h51.2c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.131 0-25.6 11.469-25.6 25.6s11.469 25.6 25.6 25.6zM179.2 819.2h51.2c14.080 0 25.6-11.469 25.6-25.6s-11.52-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6zM332.8 819.2h51.2c14.080 0 25.6-11.469 25.6-25.6s-11.52-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6zM486.4 819.2h51.2c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6zM640 819.2h51.2c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.131 0-25.6 11.469-25.6 25.6s11.469 25.6 25.6 25.6zM793.6 819.2h51.2c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.131 0-25.6 11.469-25.6 25.6s11.469 25.6 25.6 25.6z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["control-date"],"grid":14},"attrs":[{}],"properties":{"order":71,"id":23,"name":"control-Date","prevSize":24,"code":59702},"setIdx":0,"setId":1,"iconIdx":55},{"icon":{"paths":["M486.4 409.6h51.2c14.080 0 25.6 11.52 25.6 25.6s-11.52 25.6-25.6 25.6h-51.2c-14.080 0-25.6-11.52-25.6-25.6s11.52-25.6 25.6-25.6zM230.4 614.4c14.080 0 25.6 11.469 25.6 25.6s-11.52 25.6-25.6 25.6h-51.2c-14.080 0-25.6-11.469-25.6-25.6s11.52-25.6 25.6-25.6h51.2zM230.4 512c14.080 0 25.6 11.469 25.6 25.6s-11.52 25.6-25.6 25.6h-51.2c-14.080 0-25.6-11.469-25.6-25.6s11.52-25.6 25.6-25.6h51.2zM51.2 742.4v-435.2h665.6v102.4h51.2v-281.6c0-42.342-34.458-76.8-76.8-76.8h-128v-25.6c0-14.131-11.469-25.6-25.6-25.6s-25.6 11.469-25.6 25.6v25.6h-256v-25.6c0-14.131-11.52-25.6-25.6-25.6s-25.6 11.469-25.6 25.6v25.6h-128c-42.342 0-76.8 34.458-76.8 76.8v614.4c0 42.342 34.458 76.8 76.8 76.8h332.8v-51.2h-332.8c-14.080 0-25.6-11.469-25.6-25.6zM51.2 128c0-14.080 11.52-25.6 25.6-25.6h128v76.8c0 14.080 11.52 25.6 25.6 25.6s25.6-11.52 25.6-25.6v-76.8h256v76.8c0 14.080 11.469 25.6 25.6 25.6s25.6-11.52 25.6-25.6v-76.8h128c14.131 0 25.6 11.52 25.6 25.6v128h-665.6v-128zM384 409.6c14.080 0 25.6 11.52 25.6 25.6s-11.52 25.6-25.6 25.6h-51.2c-14.080 0-25.6-11.52-25.6-25.6s11.52-25.6 25.6-25.6h51.2zM742.4 460.8c-155.546 0-281.6 126.054-281.6 281.6s126.054 281.6 281.6 281.6 281.6-126.054 281.6-281.6-126.054-281.6-281.6-281.6zM742.4 972.8c-127.232 0-230.4-103.168-230.4-230.4s103.168-230.4 230.4-230.4 230.4 103.168 230.4 230.4-103.168 230.4-230.4 230.4zM384 512c14.080 0 25.6 11.469 25.6 25.6s-11.52 25.6-25.6 25.6h-51.2c-14.080 0-25.6-11.469-25.6-25.6s11.52-25.6 25.6-25.6h51.2zM384 614.4c14.080 0 25.6 11.469 25.6 25.6s-11.52 25.6-25.6 25.6h-51.2c-14.080 0-25.6-11.469-25.6-25.6s11.52-25.6 25.6-25.6h51.2zM844.8 716.8c14.131 0 25.6 11.469 25.6 25.6s-11.469 25.6-25.6 25.6h-102.4c-14.131 0-25.6-11.469-25.6-25.6v-102.4c0-14.131 11.469-25.6 25.6-25.6s25.6 11.469 25.6 25.6v76.8h76.8z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["control-date-time"],"grid":14},"attrs":[{}],"properties":{"order":70,"id":24,"name":"control-DateTime","prevSize":24,"code":59703},"setIdx":0,"setId":1,"iconIdx":56},{"icon":{"paths":["M793.6 609.416h-61.838v-28.108h-0.783q-21.135 33.092-62.034 33.092-37.573 0-60.469-26.912-22.896-27.112-22.896-75.554 0-50.635 25.244-81.136t66.144-30.501q38.747 0 54.011 28.308h0.783v-121.405h61.838v302.216zM732.936 510.139v-15.35q0-19.935-11.35-33.092t-29.549-13.157q-20.548 0-32.093 16.546-11.546 16.347-11.546 45.053 0 26.912 11.154 41.465t30.919 14.553q18.786 0 30.528-15.35 11.937-15.35 11.937-40.668zM548.594 609.416h-61.643v-116.421q0-44.455-32.093-44.455-15.264 0-24.853 13.357t-9.589 33.292v114.228h-61.839v-117.617q0-43.259-31.506-43.259-15.851 0-25.44 12.758-9.393 12.758-9.393 34.687v113.431h-61.838v-204.135h61.838v31.896h0.783q9.589-16.347 26.81-26.514 17.417-10.366 37.964-10.366 42.465 0 58.12 38.076 22.896-38.076 67.318-38.076 65.361 0 65.361 82.133v126.987zM0 0v204.8h76.8v76.8h51.2v-76.8h76.8v-204.8zM819.2 0v204.8h204.8v-204.8zM51.2 51.2h102.4v102.4h-102.4zM870.4 51.2h102.4v102.4h-102.4zM281.6 76.8v51.2h102.4v-51.2zM486.4 76.8v51.2h102.4v-51.2zM691.2 76.8v51.2h102.4v-51.2zM896 281.6v102.4h51.2v-102.4zM76.8 384v102.4h51.2v-102.4zM896 486.4v102.4h51.2v-102.4zM76.8 588.8v102.4h51.2v-102.4zM896 691.2v102.4h51.2v-102.4zM76.8 793.6v25.6h-76.8v204.8h204.8v-76.8h76.8v-51.2h-76.8v-76.8h-76.8v-25.6zM819.2 819.2v76.8h-25.6v51.2h25.6v76.8h204.8v-204.8zM51.2 870.4h102.4v102.4h-102.4zM870.4 870.4h102.4v102.4h-102.4zM384 896v51.2h102.4v-51.2zM588.8 896v51.2h102.4v-51.2z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["control-Markdown"],"grid":14},"attrs":[{}],"properties":{"order":72,"id":25,"name":"control-Markdown","prevSize":24,"code":59704},"setIdx":0,"setId":1,"iconIdx":57},{"icon":{"paths":["M292.571 713.143v109.714c0 30.286-24.571 54.857-54.857 54.857h-182.857c-30.286 0-54.857-24.571-54.857-54.857v-109.714c0-30.286 24.571-54.857 54.857-54.857h182.857c30.286 0 54.857 24.571 54.857 54.857zM292.571 420.571v109.714c0 30.286-24.571 54.857-54.857 54.857h-182.857c-30.286 0-54.857-24.571-54.857-54.857v-109.714c0-30.286 24.571-54.857 54.857-54.857h182.857c30.286 0 54.857 24.571 54.857 54.857zM658.286 713.143v109.714c0 30.286-24.571 54.857-54.857 54.857h-182.857c-30.286 0-54.857-24.571-54.857-54.857v-109.714c0-30.286 24.571-54.857 54.857-54.857h182.857c30.286 0 54.857 24.571 54.857 54.857zM292.571 128v109.714c0 30.286-24.571 54.857-54.857 54.857h-182.857c-30.286 0-54.857-24.571-54.857-54.857v-109.714c0-30.286 24.571-54.857 54.857-54.857h182.857c30.286 0 54.857 24.571 54.857 54.857zM658.286 420.571v109.714c0 30.286-24.571 54.857-54.857 54.857h-182.857c-30.286 0-54.857-24.571-54.857-54.857v-109.714c0-30.286 24.571-54.857 54.857-54.857h182.857c30.286 0 54.857 24.571 54.857 54.857zM1024 713.143v109.714c0 30.286-24.571 54.857-54.857 54.857h-182.857c-30.286 0-54.857-24.571-54.857-54.857v-109.714c0-30.286 24.571-54.857 54.857-54.857h182.857c30.286 0 54.857 24.571 54.857 54.857zM658.286 128v109.714c0 30.286-24.571 54.857-54.857 54.857h-182.857c-30.286 0-54.857-24.571-54.857-54.857v-109.714c0-30.286 24.571-54.857 54.857-54.857h182.857c30.286 0 54.857 24.571 54.857 54.857zM1024 420.571v109.714c0 30.286-24.571 54.857-54.857 54.857h-182.857c-30.286 0-54.857-24.571-54.857-54.857v-109.714c0-30.286 24.571-54.857 54.857-54.857h182.857c30.286 0 54.857 24.571 54.857 54.857zM1024 128v109.714c0 30.286-24.571 54.857-54.857 54.857h-182.857c-30.286 0-54.857-24.571-54.857-54.857v-109.714c0-30.286 24.571-54.857 54.857-54.857h182.857c30.286 0 54.857 24.571 54.857 54.857z"],"width":1024,"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["th"],"defaultCode":61450,"grid":14},"attrs":[],"properties":{"name":"grid","id":26,"order":83,"prevSize":24,"code":61450},"setIdx":0,"setId":1,"iconIdx":58},{"icon":{"paths":["M877.714 768v73.143c0 20-16.571 36.571-36.571 36.571h-804.571c-20 0-36.571-16.571-36.571-36.571v-73.143c0-20 16.571-36.571 36.571-36.571h804.571c20 0 36.571 16.571 36.571 36.571zM877.714 475.429v73.143c0 20-16.571 36.571-36.571 36.571h-804.571c-20 0-36.571-16.571-36.571-36.571v-73.143c0-20 16.571-36.571 36.571-36.571h804.571c20 0 36.571 16.571 36.571 36.571zM877.714 182.857v73.143c0 20-16.571 36.571-36.571 36.571h-804.571c-20 0-36.571-16.571-36.571-36.571v-73.143c0-20 16.571-36.571 36.571-36.571h804.571c20 0 36.571 16.571 36.571 36.571z"],"width":877.7142857142857,"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["bars","navicon","reorder"],"defaultCode":61641,"grid":14},"attrs":[],"properties":{"name":"list1","id":27,"order":89,"prevSize":24,"code":61641},"setIdx":0,"setId":1,"iconIdx":59},{"icon":{"paths":["M512 64c-131.696 0-239.125 107.4-239.125 239 0 65.8 24.831 146.717 65.375 215.25 19.653 33.221 43.902 63.853 71.75 87.125-59.423 7.524-122.009 9.415-172.125 32-79.809 35.967-144.343 94.74-172.375 178.625-1.5 9.499 0 0-1.5 9v0.499c0 73.995 60.563 134.501 134.375 134.501h627.125c73.888 0 134.5-60.506 134.5-134.5l-1.5-9.375c-27.845-84.263-92.273-143.119-172.125-179-50.17-22.544-112.844-24.421-172.375-31.875 27.792-23.26 52.002-53.831 71.625-87 40.544-68.533 65.375-149.45 65.375-215.25 0-131.6-107.304-239-239-239zM512 124c99.241 0 179 79.875 179 179 0 49.562-21.877 125.381-57 184.75s-81.435 98.75-122 98.75c-40.565 0-86.877-39.381-122-98.75s-57.125-135.188-57.125-184.75c0-99.125 79.884-179 179.125-179zM512 646.5c92.551 0 180.829 14.406 249.75 45.375 66.784 30.009 113.649 74.724 136.5 137.75-2.447 39.259-32.9 70.375-72.75 70.375h-627.125c-39.678 0-70.116-31.051-72.625-70.25 22.978-62.705 69.953-107.523 136.75-137.625 68.937-31.067 157.205-45.625 249.5-45.625z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["user-o"],"grid":14},"attrs":[{}],"properties":{"order":64,"id":28,"name":"user-o","prevSize":24,"code":59698},"setIdx":0,"setId":1,"iconIdx":60},{"icon":{"paths":["M217.6 992c-3.2 0-3.2 0-6.4 0h-3.2c-144-25.6-208-144-208-249.6 0-99.2 57.6-208 185.6-240v-147.2c0-19.2 12.8-32 32-32s32 12.8 32 32v172.8c0 16-12.8 28.8-25.6 32-108.8 16-160 102.4-160 182.4s48 166.4 153.6 185.6h6.4c16 3.2 28.8 19.2 25.6 38.4-3.2 16-16 25.6-32 25.6z","M774.4 1001.6c0 0 0 0 0 0-102.4 0-211.2-60.8-243.2-185.6h-176c-19.2 0-32-12.8-32-32s12.8-32 32-32h201.6c16 0 28.8 12.8 32 25.6 16 108.8 102.4 156.8 182.4 160 80 0 166.4-48 185.6-153.6v-3.2c3.2-16 19.2-28.8 38.4-25.6 16 3.2 28.8 19.2 25.6 38.4v3.2c-22.4 140.8-140.8 204.8-246.4 204.8z","M787.2 678.4c-19.2 0-32-12.8-32-32v-176c0-16 12.8-28.8 25.6-32 108.8-16 156.8-102.4 160-182.4 0-80-48-166.4-153.6-185.6h-3.2c-19.2-6.4-32-22.4-28.8-38.4s19.2-28.8 38.4-25.6h3.2c144 25.6 208 144 208 249.6 0 99.2-60.8 208-185.6 240v150.4c0 16-16 32-32 32z","M41.6 246.4c-3.2 0-3.2 0-6.4 0-16-3.2-28.8-19.2-25.6-35.2v-3.2c25.6-144 140.8-208 246.4-208 0 0 3.2 0 3.2 0 99.2 0 208 60.8 240 185.6h147.2c19.2 0 32 12.8 32 32s-12.8 32-32 32h-172.8c-16 0-28.8-12.8-32-25.6-16-108.8-102.4-156.8-182.4-160-80 0-166.4 48-185.6 153.6v3.2c-3.2 16-16 25.6-32 25.6z","M256 387.2c-32 0-67.2-12.8-92.8-38.4-51.2-51.2-51.2-134.4 0-185.6 25.6-22.4 57.6-35.2 92.8-35.2s67.2 12.8 92.8 38.4c25.6 25.6 38.4 57.6 38.4 92.8s-12.8 67.2-38.4 92.8c-25.6 22.4-57.6 35.2-92.8 35.2zM256 192c-16 0-32 6.4-44.8 19.2-25.6 25.6-25.6 67.2 0 92.8s67.2 25.6 92.8 0c12.8-12.8 19.2-28.8 19.2-48s-6.4-32-19.2-44.8-28.8-19.2-48-19.2z","M771.2 873.6c-32 0-67.2-12.8-92.8-38.4-51.2-51.2-51.2-134.4 0-185.6 25.6-25.6 57.6-38.4 92.8-38.4s67.2 12.8 92.8 38.4c25.6 25.6 38.4 57.6 38.4 92.8s-12.8 67.2-38.4 92.8c-28.8 25.6-60.8 38.4-92.8 38.4zM771.2 678.4c-19.2 0-35.2 6.4-48 19.2-25.6 25.6-25.6 67.2 0 92.8s67.2 25.6 92.8 0c12.8-12.8 19.2-28.8 19.2-48s-6.4-35.2-19.2-48-28.8-16-44.8-16z","M745.6 387.2c-32 0-67.2-12.8-92.8-38.4s-38.4-57.6-38.4-92.8 12.8-67.2 38.4-92.8c25.6-22.4 60.8-35.2 92.8-35.2s67.2 12.8 92.8 38.4c51.2 51.2 51.2 134.4 0 185.6v0c-25.6 22.4-57.6 35.2-92.8 35.2zM745.6 192c-19.2 0-35.2 6.4-48 19.2s-19.2 28.8-19.2 48 6.4 35.2 19.2 48c25.6 25.6 67.2 25.6 92.8 0s25.6-67.2 0-92.8c-9.6-16-25.6-22.4-44.8-22.4z","M259.2 873.6c-32 0-67.2-12.8-92.8-38.4s-38.4-57.6-38.4-92.8 12.8-67.2 38.4-92.8c25.6-22.4 57.6-35.2 92.8-35.2s67.2 12.8 92.8 38.4c51.2 51.2 51.2 134.4 0 185.6v0c-25.6 22.4-57.6 35.2-92.8 35.2zM259.2 678.4c-19.2 0-35.2 6.4-48 19.2s-19.2 28.8-19.2 48 6.4 35.2 19.2 48c25.6 25.6 67.2 25.6 92.8 0s25.6-67.2 0-92.8c-9.6-16-25.6-22.4-44.8-22.4z"],"attrs":[{},{},{},{},{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["webhooks"],"grid":14},"attrs":[{},{},{},{},{},{},{},{}],"properties":{"order":92,"id":29,"name":"rules, search-Rule","prevSize":24,"code":59719},"setIdx":0,"setId":1,"iconIdx":61},{"icon":{"paths":["M470 384l60 60-154 154h392v-428h86v512h-478l154 154-60 60-256-256z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["subdirectory_arrow_left"],"grid":24},"attrs":[{}],"properties":{"order":1,"id":0,"prevSize":24,"code":59780,"name":"enter"},"setIdx":0,"setId":1,"iconIdx":5},{"icon":{"paths":["M298 384h214v42h-214v-42zM406 598q80 0 136-56t56-136-56-136-136-56-136 56-56 136 56 136 136 56zM662 598l212 212-64 64-212-212v-34l-12-12q-76 66-180 66-116 0-197-80t-81-196 81-197 197-81 196 81 80 197q0 42-20 95t-46 85l12 12h34z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["zoom_out"],"grid":24},"attrs":[{}],"properties":{"order":1,"id":4,"prevSize":24,"code":59778,"name":"zoom_out"},"setIdx":0,"setId":1,"iconIdx":6},{"icon":{"paths":["M512 426h-86v86h-42v-86h-86v-42h86v-86h42v86h86v42zM406 598q80 0 136-56t56-136-56-136-136-56-136 56-56 136 56 136 136 56zM662 598l212 212-64 64-212-212v-34l-12-12q-76 66-180 66-116 0-197-80t-81-196 81-197 197-81 196 81 80 197q0 42-20 95t-46 85l12 12h34z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["zoom_in"],"grid":24},"attrs":[{}],"properties":{"order":2,"id":3,"prevSize":24,"code":59779,"name":"zoom_in"},"setIdx":0,"setId":1,"iconIdx":7},{"icon":{"paths":["M810 896v-86h86q0 34-26 60t-60 26zM810 554v-84h86v84h-86zM640 214v-86h86v86h-86zM810 726v-86h86v86h-86zM470 982v-940h84v940h-84zM810 128q34 0 60 26t26 60h-86v-86zM128 214q0-34 26-60t60-26h170v86h-170v596h170v86h-170q-34 0-60-26t-26-60v-596zM810 384v-86h86v86h-86zM640 896v-86h86v86h-86z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["flip"],"grid":24},"attrs":[{}],"properties":{"order":1,"id":2,"name":"flip","prevSize":24,"code":59775},"setIdx":0,"setId":1,"iconIdx":8},{"icon":{"paths":["M720 660q34-46 44-106h86q-12 92-68 166zM554 764q60-10 106-44l62 62q-72 56-168 68v-86zM850 470h-86q-10-60-44-106l62-60q58 72 68 166zM664 236l-194 190v-166q-92 16-153 87t-61 165 61 165 153 87v86q-126-16-213-112t-87-226 87-226 213-112v-132z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["rotate_right"],"grid":24},"attrs":[{}],"properties":{"order":1,"id":1,"name":"rotate_right","prevSize":24,"code":59776},"setIdx":0,"setId":1,"iconIdx":9},{"icon":{"paths":["M554 174q126 16 213 112t87 226-87 226-213 112v-86q92-16 153-87t61-165-61-165-153-87v166l-194-190 194-194v132zM302 782l62-62q46 34 106 44v86q-96-12-168-68zM260 554q10 58 42 106l-60 60q-56-74-68-166h86zM304 364q-36 52-44 106h-86q12-90 70-166z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["rotate_left"],"grid":24},"attrs":[{}],"properties":{"order":2,"id":0,"name":"rotate_left","prevSize":24,"code":59777},"setIdx":0,"setId":1,"iconIdx":10},{"icon":{"paths":["M810 598v-86h-128v-128h-84v128h-128v86h128v128h84v-128h128zM854 256q36 0 60 25t24 61v426q0 36-24 61t-60 25h-684q-36 0-60-25t-24-61v-512q0-36 24-61t60-25h256l86 86h342z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["create_new_folder"],"grid":24},"attrs":[{}],"properties":{"order":1,"id":1,"prevSize":24,"code":59771,"name":"create_new_folder"},"setIdx":0,"setId":1,"iconIdx":11},{"icon":{"paths":["M426 170l86 86h342q34 0 59 26t25 60v426q0 34-25 60t-59 26h-684q-34 0-59-26t-25-60v-512q0-34 25-60t59-26h256z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["folder"],"grid":24},"attrs":[{}],"properties":{"order":2,"id":0,"prevSize":24,"code":59772,"name":"folder"},"setIdx":0,"setId":1,"iconIdx":12},{"icon":{"paths":["M512 256q70 0 120 50t50 120q0 54-64 111t-64 103h-84q0-46 20-79t44-48 44-37 20-50q0-34-26-59t-60-25-60 25-26 59h-84q0-70 50-120t120-50zM512 854q140 0 241-101t101-241-101-241-241-101-241 101-101 241 101 241 241 101zM512 86q176 0 301 125t125 301-125 301-301 125-301-125-125-301 125-301 301-125zM470 768v-86h84v86h-84z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["help_outline"],"grid":24},"attrs":[{}],"properties":{"order":1,"id":0,"prevSize":24,"code":59770,"name":"help2"},"setIdx":0,"setId":1,"iconIdx":13},{"icon":{"paths":["M236.416 92.117c-6.528-4.267-14.507-6.784-23.083-6.784-23.552 0-42.667 19.115-42.667 42.667v768c-0.043 7.765 2.133 15.872 6.784 23.083 12.757 19.84 39.125 25.557 58.965 12.8l597.333-384c4.864-3.072 9.344-7.424 12.8-12.8 12.757-19.84 6.997-46.208-12.8-58.965zM256 206.165l475.776 305.835-475.776 305.835z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["play"],"grid":24},"attrs":[{}],"properties":{"order":1,"id":0,"prevSize":24,"code":59769,"name":"trigger-Manual, play-line"},"setIdx":0,"setId":1,"iconIdx":14},{"icon":{"paths":["M128 170.667v298.667c0 58.88 23.936 112.299 62.464 150.869s91.989 62.464 150.869 62.464h409.003l-140.501 140.501c-16.683 16.683-16.683 43.691 0 60.331s43.691 16.683 60.331 0l213.333-213.333c3.925-3.925 7.083-8.619 9.259-13.824s3.243-10.795 3.243-16.341c0-10.923-4.181-21.845-12.501-30.165l-213.333-213.333c-16.683-16.683-43.691-16.683-60.331 0s-16.683 43.691 0 60.331l140.501 140.501h-409.003c-35.371 0-67.285-14.293-90.496-37.504s-37.504-55.125-37.504-90.496v-298.667c0-23.552-19.115-42.667-42.667-42.667s-42.667 19.115-42.667 42.667z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["corner-down-right"],"grid":24},"attrs":[{}],"properties":{"order":1,"id":0,"prevSize":24,"code":59767,"name":"corner-down-right"},"setIdx":0,"setId":1,"iconIdx":15},{"icon":{"paths":["M470 384v-86h84v86h-84zM512 854c188 0 342-154 342-342s-154-342-342-342-342 154-342 342 154 342 342 342zM512 86c236 0 426 190 426 426s-190 426-426 426-426-190-426-426 190-426 426-426zM470 726v-256h84v256h-84z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["info_outline"],"grid":24},"attrs":[{}],"properties":{"order":128,"id":0,"prevSize":24,"code":59764,"name":"info-outline"},"setIdx":0,"setId":1,"iconIdx":16},{"icon":{"paths":["M214 768h596v86h-596v-86zM384 682v-256h-170l298-298 298 298h-170v256h-256z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["file_upload"],"grid":24},"attrs":[{}],"properties":{"order":1,"id":0,"prevSize":24,"code":59762,"name":"upload-2"},"setIdx":0,"setId":1,"iconIdx":17},{"icon":{"paths":["M678 726h138l-70-186zM790 426l192 512h-86l-48-128h-202l-48 128h-86l192-512h86zM550 642l-34 88-132-132-214 212-60-60 218-214c-54-60-96-124-128-194h86c26 50 58 98 98 142 62-68 108-146 136-228h-478v-86h300v-84h84v84h300v86h-126c-32 100-84 196-158 278l-2 2z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["translate"],"grid":24},"attrs":[{}],"properties":{"order":1,"id":0,"prevSize":24,"code":59759,"name":"translate"},"setIdx":0,"setId":1,"iconIdx":18},{"icon":{"paths":["M854 470v84h-520l238 240-60 60-342-342 342-342 60 60-238 240h520z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["arrow_back"],"grid":24},"attrs":[{}],"properties":{"order":1,"id":1,"prevSize":24,"code":59758,"name":"arrow_back"},"setIdx":0,"setId":1,"iconIdx":19},{"icon":{"paths":["M768 512c-25.6 0-42.667 17.067-42.667 42.667v256c0 25.6-17.067 42.667-42.667 42.667h-469.333c-25.6 0-42.667-17.067-42.667-42.667v-469.333c0-25.6 17.067-42.667 42.667-42.667h256c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-256c-72.533 0-128 55.467-128 128v469.333c0 72.533 55.467 128 128 128h469.333c72.533 0 128-55.467 128-128v-256c0-25.6-17.067-42.667-42.667-42.667z","M934.4 110.933c-4.267-8.533-12.8-17.067-21.333-21.333-4.267-4.267-12.8-4.267-17.067-4.267h-256c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h153.6l-396.8 396.8c-17.067 17.067-17.067 42.667 0 59.733 8.533 8.533 17.067 12.8 29.867 12.8s21.333-4.267 29.867-12.8l396.8-396.8v153.6c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-256c0-4.267 0-12.8-4.267-17.067z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["external-link"],"grid":24},"attrs":[{},{}],"properties":{"order":1,"id":2,"prevSize":24,"code":59757,"name":"external-link"},"setIdx":0,"setId":1,"iconIdx":20},{"icon":{"paths":["M810.667 85.333h-597.333c-72.533 0-128 55.467-128 128v597.333c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-597.333c0-72.533-55.467-128-128-128zM853.333 810.667c0 25.6-17.067 42.667-42.667 42.667h-597.333c-25.6 0-42.667-17.067-42.667-42.667v-597.333c0-25.6 17.067-42.667 42.667-42.667h597.333c25.6 0 42.667 17.067 42.667 42.667v597.333z","M682.667 469.333h-341.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h341.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["minus-square"],"grid":24},"attrs":[{},{}],"properties":{"order":1,"id":3,"prevSize":24,"code":59753,"name":"minus-square"},"setIdx":0,"setId":1,"iconIdx":21},{"icon":{"paths":["M810.667 85.333h-597.333c-72.533 0-128 55.467-128 128v597.333c0 72.533 55.467 128 128 128h597.333c72.533 0 128-55.467 128-128v-597.333c0-72.533-55.467-128-128-128zM853.333 810.667c0 25.6-17.067 42.667-42.667 42.667h-597.333c-25.6 0-42.667-17.067-42.667-42.667v-597.333c0-25.6 17.067-42.667 42.667-42.667h597.333c25.6 0 42.667 17.067 42.667 42.667v597.333z","M682.667 469.333h-128v-128c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667v128h-128c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h128v128c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-128h128c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["plus-square"],"grid":24},"attrs":[{},{}],"properties":{"order":1,"id":4,"name":"plus-square","prevSize":24,"code":59752},"setIdx":0,"setId":1,"iconIdx":22},{"icon":{"paths":["M170 640v-86h684v86h-684zM854 384v86h-684v-86h684z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["drag_handle"],"grid":24},"attrs":[{}],"properties":{"order":1,"id":5,"prevSize":24,"code":59745,"name":"drag2"},"setIdx":0,"setId":1,"iconIdx":23},{"icon":{"paths":["M854 682v-512h-684v598l86-86h598zM854 86c46 0 84 38 84 84v512c0 46-38 86-84 86h-598l-170 170v-768c0-46 38-84 84-84h684z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["chat_bubble_outline"],"grid":24},"attrs":[{}],"properties":{"order":133,"id":6,"name":"comments","prevSize":24,"code":59743},"setIdx":0,"setId":1,"iconIdx":24},{"icon":{"paths":["M512 128c212 0 384 172 384 384s-172 384-384 384c-88 0-170-30-234-80l60-60c50 34 110 54 174 54 166 0 298-132 298-298s-132-298-298-298-298 132-298 298h128l-172 170-170-170h128c0-212 172-384 384-384zM598 512c0 46-40 86-86 86s-86-40-86-86 40-86 86-86 86 40 86 86z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["settings_backup_restore"],"grid":24},"attrs":[{}],"properties":{"order":1,"id":7,"prevSize":24,"code":59739,"name":"backup"},"setIdx":0,"setId":1,"iconIdx":25},{"icon":{"paths":["M726 512c0 24-20 42-44 42h-426l-170 172v-598c0-24 18-42 42-42h554c24 0 44 18 44 42v384zM896 256c24 0 42 18 42 42v640l-170-170h-470c-24 0-42-18-42-42v-86h554v-384h86z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["question_answer"],"grid":24},"attrs":[{}],"properties":{"order":1,"id":8,"prevSize":24,"code":59738,"name":"support"},"setIdx":0,"setId":1,"iconIdx":26},{"icon":{"paths":["M918 384v128h-128v298h-128v-298h-128v-128h384zM106 170h556v128h-214v512h-128v-512h-214v-128z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["text_fields"],"grid":24},"attrs":[{}],"properties":{"order":75,"id":9,"prevSize":24,"code":59705,"name":"control-RichText"},"setIdx":0,"setId":1,"iconIdx":27},{"icon":{"paths":["M640 85.333q78 0 149.167 30.5t122.5 81.833 81.833 122.5 30.5 149.167q0 85-35 160.667t-96.667 129.167-140 77.5l21-20.667q18-18.333 28-42.667 9.333-22.667 9.333-49.333 0-6.667-0.333-9.333 59.333-41.333 93.833-105.833t34.5-139.5q0-60.667-23.667-116t-63.667-95.333-95.333-63.667-116-23.667q-55.333 0-106.5 19.833t-90 53.833-65 81.333-33.833 101h-88.667q-70.667 0-120.667 50t-50 120.667q0 38.667 15.167 71.667t39.833 54.167 54.833 33 60.833 11.833h50q11.667 29.333 30 48l37.667 37.333h-117.667q-69.667 0-128.5-34.333t-93.167-93.167-34.333-128.5 34.333-128.5 93.167-93.167 128.5-34.333h22q26.333-74.333 79.333-132.167t126.833-90.833 155.833-33zM554.667 426.667q17.667 0 30.167 12.5t12.5 30.167v281l55-55.333q12.333-12.333 30.333-12.333 18.333 0 30.5 12.167t12.167 30.5q0 18-12.333 30.333l-128 128q-12.333 12.333-30.333 12.333t-30.333-12.333l-128-128q-12.333-13-12.333-30.333 0-17.667 12.5-30.167t30.167-12.5q18 0 30.333 12.333l55 55.333v-281q0-17.667 12.5-30.167t30.167-12.5z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["cloud-download"],"grid":24},"attrs":[{}],"properties":{"order":1,"id":10,"prevSize":24,"code":59710,"name":"download"},"setIdx":0,"setId":1,"iconIdx":28},{"icon":{"paths":["M512 682.667h-341.333c-5.845 0-11.349-1.152-16.299-3.2-5.205-2.133-9.899-5.333-13.867-9.301s-7.125-8.661-9.301-13.867c-2.048-4.949-3.2-10.453-3.2-16.299v-426.667c0-5.845 1.152-11.349 3.2-16.299 2.133-5.205 5.333-9.899 9.301-13.867s8.661-7.125 13.867-9.301c4.949-2.048 10.453-3.2 16.299-3.2h682.667c5.845 0 11.349 1.152 16.299 3.2 5.205 2.133 9.899 5.333 13.867 9.301s7.125 8.661 9.301 13.867c2.048 4.949 3.2 10.453 3.2 16.299v426.667c0 5.845-1.152 11.349-3.2 16.299-2.133 5.205-5.333 9.899-9.301 13.867s-8.661 7.125-13.867 9.301c-4.949 2.048-10.453 3.2-16.299 3.2zM469.333 768v85.333h-128c-23.552 0-42.667 19.115-42.667 42.667s19.115 42.667 42.667 42.667h341.333c23.552 0 42.667-19.115 42.667-42.667s-19.115-42.667-42.667-42.667h-128v-85.333h298.667c17.28 0 33.835-3.456 48.981-9.728 15.701-6.485 29.781-16 41.557-27.776s21.291-25.856 27.776-41.557c6.229-15.104 9.685-31.659 9.685-48.939v-426.667c0-17.28-3.456-33.835-9.728-48.981-6.485-15.701-16-29.781-27.776-41.557s-25.856-21.291-41.557-27.776c-15.104-6.229-31.659-9.685-48.939-9.685h-682.667c-17.28 0-33.835 3.456-48.981 9.728-15.659 6.485-29.739 16-41.515 27.776s-21.291 25.856-27.776 41.515c-6.272 15.147-9.728 31.701-9.728 48.981v426.667c0 17.28 3.456 33.835 9.728 48.981 6.485 15.701 16 29.781 27.776 41.557s25.856 21.291 41.557 27.776c15.104 6.229 31.659 9.685 48.939 9.685z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["monitor"],"grid":0},"attrs":[{}],"properties":{"order":132,"id":0,"prevSize":24,"code":59765,"name":"type-UI"},"setIdx":0,"setId":1,"iconIdx":62},{"icon":{"paths":["M66.337 575.491l276.668-171.531v-57.177l-331.627 207.614v42.189l331.627 207.614-0-57.177z","M957.663 575.49l-276.668-171.531v-57.177l331.627 207.614v42.189l-331.627 207.614 0-57.177z","M583.295 214.183l-200.825 621.623 53.007 17.527 200.837-621.623z"],"attrs":[{},{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["prerender"],"grid":0},"attrs":[{},{},{}],"properties":{"order":114,"id":0,"name":"prerender","prevSize":24,"code":59724},"setIdx":0,"setId":1,"iconIdx":63},{"icon":{"paths":["M1024 512c0 282.77-229.23 512-512 512s-512-229.23-512-512c0-282.77 229.23-512 512-512s512 229.23 512 512z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["circle"],"grid":0},"attrs":[{}],"properties":{"order":106,"id":1,"name":"circle","prevSize":24,"code":59729},"setIdx":0,"setId":1,"iconIdx":64},{"icon":{"paths":["M512 0c-15.36 0-25.6 10.24-25.6 25.6s10.24 25.6 25.6 25.6h128v870.4h-128c-15.36 0-25.6 10.24-25.6 25.6s10.24 25.6 25.6 25.6h307.2c15.36 0 25.6-10.24 25.6-25.6s-10.24-25.6-25.6-25.6h-128v-870.4h128c15.36 0 25.6-10.24 25.6-25.6s-10.24-25.6-25.6-25.6h-307.2zM51.2 204.8c-28.16 0-51.2 23.040-51.2 51.2v460.8c0 28.16 23.040 51.2 51.2 51.2h537.6v-51.2h-512c-15.36 0-25.6-10.24-25.6-25.6v-409.6c0-15.36 10.24-25.6 25.6-25.6h512v-51.2h-537.6zM742.4 204.8v51.2h204.8c15.36 0 25.6 10.24 25.6 25.6v409.6c0 15.36-10.24 25.6-25.6 25.6h-204.8v51.2h230.4c28.16 0 51.2-23.040 51.2-51.2v-460.8c0-28.16-23.040-51.2-51.2-51.2h-230.4z","M386.56 606.72c0 12.8-7.68 23.040-20.48 25.6-28.16 10.24-58.88 15.36-92.16 15.36-35.84 0-66.56-10.24-84.48-25.6s-25.6-38.4-25.6-66.56 10.24-51.2 25.6-66.56c17.92-17.92 46.080-23.040 84.48-23.040h69.12v-38.4c0-35.84-25.6-53.76-64-53.76-23.040 0-46.080 7.68-69.12 20.48-2.56 2.56-5.12 2.56-10.24 2.56-10.24 0-20.48-7.68-20.48-20.48 0-7.68 2.56-12.8 10.24-17.92 30.72-20.48 61.44-25.6 92.16-25.6 56.32 0 104.96 30.72 104.96 92.16v181.76zM345.6 501.76h-69.12c-61.44 0-69.12 28.16-69.12 53.76s7.68 56.32 69.12 56.32c23.040 0 46.080-2.56 69.12-10.24v-99.84z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["control-Slug"],"grid":0},"attrs":[{},{}],"properties":{"order":103,"id":2,"name":"control-Slug","prevSize":24,"code":59727},"setIdx":0,"setId":1,"iconIdx":65},{"icon":{"paths":["M295.954 822.751h-94.705c-47.353 0-88.786-41.434-88.786-88.786v-491.283c0-47.353 41.434-88.786 88.786-88.786h94.705v-59.191h-94.705c-82.867 0-147.977 65.11-147.977 147.977v491.283c0 82.867 65.11 147.977 147.977 147.977h94.705v-59.191z","M970.728 473.526c-82.867-171.653-201.249-378.821-272.277-378.821h-112.462v59.191h112.462c35.514 11.838 136.139 177.572 213.087 337.387-76.948 153.896-177.572 325.549-213.087 337.387h-112.462v59.191h112.462c71.029 0 183.491-207.168 272.277-384.74l5.919-11.838-5.919-17.757z","M266.358 337.341v260.462h59.191v-260.462z","M479.422 337.341v260.462h59.191v-260.462z"],"attrs":[{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["Tags"],"grid":0},"attrs":[{},{},{},{}],"properties":{"order":98,"id":3,"name":"type-Tags","prevSize":24,"code":59722},"setIdx":0,"setId":1,"iconIdx":66},{"icon":{"paths":["M512 102.4c-200.4 0-366.954 144.072-402.4 334.2-0.031 0.165-0.069 0.335-0.1 0.5-2.974 16.061-4.76 32.441-5.8 49.1-0.017 0.271-0.084 0.529-0.1 0.8 0.019 0.004 0.080-0.004 0.1 0-0.503 8.31-1.3 16.564-1.3 25 0 226.202 183.398 409.6 409.6 409.6 208.165 0 379.707-155.44 405.8-356.5 0.004-0.033-0.004-0.067 0-0.1 1.94-14.978 3.124-30.16 3.4-45.6 0.044-2.487 0.4-4.903 0.4-7.4 0-226.202-183.398-409.6-409.6-409.6zM512 153.6c185.461 0 337.902 140.924 356.4 321.5-35.181-21.812-84.232-39.9-151.6-39.9-85.35 0-140.891 41.606-194.6 81.9-49.152 36.864-95.55 71.7-163.8 71.7-86.067 0-135.862-54.67-175.9-98.6-9.001-9.901-17.11-17.483-25.4-25.3 23.131-175.603 172.981-311.3 354.9-311.3zM716.8 486.4c77.828 0 125.173 28.221 152.2 52.8-13.96 185.173-168.254 331.2-357 331.2-190.097 0-345.175-148.14-357.2-335.2 41.826 45.372 102.577 104.8 203.6 104.8 85.35 0 140.891-41.606 194.6-81.9 49.152-36.915 95.55-71.7 163.8-71.7z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["activity"],"grid":0},"attrs":[{}],"properties":{"order":12,"id":4,"name":"activity, history, time","prevSize":24,"code":59652},"setIdx":0,"setId":1,"iconIdx":67},{"icon":{"paths":["M512 0c-35.392 0-64 28.608-64 64v384h-384c-35.392 0-64 28.608-64 64s28.608 64 64 64h384v384c0 35.392 28.608 64 64 64s64-28.608 64-64v-384h384c35.392 0 64-28.608 64-64s-28.608-64-64-64h-384v-384c0-35.392-28.608-64-64-64z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["add"],"grid":0},"attrs":[{}],"properties":{"order":13,"id":5,"name":"add, plus","prevSize":24,"code":59653},"setIdx":0,"setId":1,"iconIdx":68},{"icon":{"paths":["M512 102.4c-226.202 0-409.6 183.398-409.6 409.6s183.398 409.6 409.6 409.6c226.202 0 409.6-183.398 409.6-409.6s-183.398-409.6-409.6-409.6zM512 153.6c197.632 0 358.4 160.819 358.4 358.4s-160.768 358.4-358.4 358.4c-197.632 0-358.4-160.819-358.4-358.4s160.768-358.4 358.4-358.4zM691.9 333c-12.893 0.002-25.782 4.882-35.5 14.6l-222.2 221.9-67.7-67.5c-19.19-19.294-51.085-19.215-70.3 0-19.15 19.15-19.15 51.050 0 70.2 0.198 0.2 26.198 26.681 52 53 12.95 13.209 25.761 26.372 35.2 36 4.719 4.814 8.607 8.755 11.2 11.4 1.296 1.322 2.293 2.281 2.9 2.9 0.279 0.282 0.488 0.486 0.6 0.6 0.001 0.001 7.591-7.429 14.6-14.3l-14.5 14.4 0.2 0.2v0.1c19.43 19.327 51.57 19.327 71 0v-0.1l258.1-257.6c19.546-19.447 19.521-51.885-0.1-71.3-9.731-9.679-22.607-14.502-35.5-14.5z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["check-circle"],"grid":0},"attrs":[{}],"properties":{"order":14,"id":6,"name":"check-circle","prevSize":24,"code":59654},"setIdx":0,"setId":1,"iconIdx":69},{"icon":{"paths":["M512 1024c-282.778 0-512-229.222-512-512s229.222-512 512-512 512 229.222 512 512-229.222 512-512 512zM855.808 270.592c-19.2-19.2-50.278-19.2-69.478 0l-376.73 376.73-171.878-171.93c-19.2-19.2-50.278-19.2-69.478 0s-19.2 50.278 0 69.478c0 0 201.523 205.261 204.8 208.486 9.984 10.138 23.347 14.643 36.557 14.080 13.21 0.563 26.573-3.942 36.608-14.029 3.277-3.226 409.6-413.286 409.6-413.286 19.2-19.2 19.2-50.33 0-69.53z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["check-circle-filled"],"grid":0},"attrs":[{}],"properties":{"order":27,"id":7,"name":"check-circle-filled","prevSize":24,"code":59655},"setIdx":0,"setId":1,"iconIdx":70},{"icon":{"paths":["M601.024 512l276.736 276.736c24.512 24.576 24.512 64.384 0 89.024-24.64 24.576-64.384 24.576-89.024 0l-276.736-276.736-276.736 276.736c-24.512 24.576-64.384 24.576-89.024 0-24.512-24.64-24.512-64.448 0-89.024l276.736-276.736-276.736-276.736c-24.512-24.576-24.512-64.384 0-89.024 24.64-24.576 64.512-24.576 89.024 0l276.736 276.736 276.736-276.736c24.64-24.576 64.384-24.576 89.024 0 24.512 24.64 24.512 64.448 0 89.024l-276.736 276.736z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["close"],"grid":0},"attrs":[{}],"properties":{"order":28,"id":8,"name":"close","prevSize":24,"code":59656},"setIdx":0,"setId":1,"iconIdx":71},{"icon":{"paths":["M409.6 435.2h-153.6v51.2h153.6v-51.2zM409.6 332.8h-153.6v51.2h153.6v-51.2zM256 691.2h409.6v-51.2h-409.6v51.2zM409.6 230.4h-153.6v51.2h153.6v-51.2zM870.4 179.2h-51.2v-51.2c0-28.262-22.938-51.2-51.2-51.2h-614.4c-28.262 0-51.2 22.938-51.2 51.2v665.6c0 28.262 22.938 51.2 51.2 51.2h51.2v51.2c0 28.262 22.938 51.2 51.2 51.2h614.4c28.262 0 51.2-22.938 51.2-51.2v-665.6c0-28.262-22.938-51.2-51.2-51.2zM179.2 793.6c-14.157 0-25.6-11.443-25.6-25.6v-614.4c0-14.131 11.443-25.6 25.6-25.6h563.2c14.157 0 25.6 11.469 25.6 25.6v614.4c0 14.157-11.443 25.6-25.6 25.6h-563.2zM870.4 870.4c0 14.157-11.443 25.6-25.6 25.6h-563.2c-14.157 0-25.6-11.443-25.6-25.6v-25.6h512c28.262 0 51.2-22.938 51.2-51.2v-563.2h25.6c14.157 0 25.6 11.469 25.6 25.6v614.4zM614.4 230.4h-102.4c-28.262 0-51.2 22.938-51.2 51.2v153.6c0 28.262 22.938 51.2 51.2 51.2h102.4c28.262 0 51.2-22.938 51.2-51.2v-153.6c0-28.262-22.938-51.2-51.2-51.2zM614.4 435.2h-102.4v-153.6h102.4v153.6zM256 588.8h409.6v-51.2h-409.6v51.2z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["content"],"grid":0},"attrs":[{}],"properties":{"order":37,"id":9,"name":"type-References","prevSize":24,"code":59657},"setIdx":0,"setId":1,"iconIdx":72},{"icon":{"paths":["M793.6 844.8c0 14.157-11.443 25.6-25.6 25.6h-665.6c-14.131 0-25.6-11.443-25.6-25.6v-665.6c0-14.157 11.469-25.6 25.6-25.6h665.6c14.157 0 25.6 11.443 25.6 25.6v102.4h51.2v-128c0-28.262-22.938-51.2-51.2-51.2h-716.8c-28.262 0-51.2 22.938-51.2 51.2v716.8c0 28.262 22.938 51.2 51.2 51.2h716.8c28.262 0 51.2-22.938 51.2-51.2v-281.6h-51.2v256zM991.078 237.747c-9.958-9.958-26.035-9.958-35.968 0l-391.91 391.91-238.31-238.31c-9.958-9.958-26.061-9.958-35.942 0-9.958 9.907-9.958 26.010 0 35.942l254.874 254.874c0.461 0.538 0.614 1.203 1.126 1.69 5.043 5.018 11.674 7.475 18.278 7.373 6.605 0.102 13.235-2.355 18.278-7.373 0.512-0.512 0.666-1.178 1.126-1.69l408.448-408.474c9.933-9.933 9.933-26.035 0-35.942z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["control-checkbox"],"grid":0},"attrs":[{}],"properties":{"order":38,"id":10,"name":"control-Checkbox","prevSize":24,"code":59658},"setIdx":0,"setId":1,"iconIdx":73},{"icon":{"paths":["M51.2 0c-28.262 0-51.2 22.938-51.2 51.2v281.6c0 28.262 22.938 51.2 51.2 51.2h921.6c28.262 0 51.2-22.938 51.2-51.2v-281.6c0-28.262-22.938-51.2-51.2-51.2h-921.6zM76.8 51.2h512v281.6h-512c-14.157 0-25.6-11.443-25.6-25.6v-230.4c0-14.157 11.443-25.6 25.6-25.6zM640 51.2h307.2c14.157 0 25.6 11.443 25.6 25.6v230.4c0 14.157-11.443 25.6-25.6 25.6h-307.2v-281.6zM716.8 153.6c-0.41 0.358 89.139 102.938 89.6 102.4 0.512 0 89.6-95.36 89.6-102.4 0 0.384-172.16 0-179.2 0zM128 435.2c-42.394 0-76.8 34.406-76.8 76.8s34.406 76.8 76.8 76.8c42.394 0 76.8-34.406 76.8-76.8s-34.406-76.8-76.8-76.8zM128 486.4c14.157 0 25.6 11.443 25.6 25.6s-11.443 25.6-25.6 25.6c-14.157 0-25.6-11.443-25.6-25.6s11.443-25.6 25.6-25.6zM307.2 486.4c-14.157 0-25.6 11.443-25.6 25.6s11.443 25.6 25.6 25.6h640c14.157 0 25.6-11.443 25.6-25.6s-11.443-25.6-25.6-25.6h-640zM128 640c-42.394 0-76.8 34.381-76.8 76.8s34.406 76.8 76.8 76.8c42.394 0 76.8-34.381 76.8-76.8s-34.406-76.8-76.8-76.8zM128 691.2c14.157 0 25.6 11.443 25.6 25.6s-11.443 25.6-25.6 25.6c-14.157 0-25.6-11.443-25.6-25.6s11.443-25.6 25.6-25.6zM307.2 691.2c-14.157 0-25.6 11.443-25.6 25.6s11.443 25.6 25.6 25.6h640c14.157 0 25.6-11.443 25.6-25.6s-11.443-25.6-25.6-25.6h-640zM128 844.8c-42.394 0-76.8 34.381-76.8 76.8s34.406 76.8 76.8 76.8c42.394 0 76.8-34.381 76.8-76.8s-34.406-76.8-76.8-76.8zM128 896c14.157 0 25.6 11.443 25.6 25.6s-11.443 25.6-25.6 25.6c-14.157 0-25.6-11.443-25.6-25.6s11.443-25.6 25.6-25.6zM307.2 896c-14.157 0-25.6 11.443-25.6 25.6s11.443 25.6 25.6 25.6h640c14.157 0 25.6-11.443 25.6-25.6s-11.443-25.6-25.6-25.6h-640z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["control-dropdown"],"grid":0},"attrs":[{}],"properties":{"order":39,"id":11,"name":"control-Dropdown","prevSize":24,"code":59659},"setIdx":0,"setId":1,"iconIdx":74},{"icon":{"paths":["M512 0c-14.157 0-25.6 11.443-25.6 25.6s11.443 25.6 25.6 25.6h128v870.4h-128c-14.157 0-25.6 11.443-25.6 25.6s11.443 25.6 25.6 25.6h307.2c14.157 0 25.6-11.443 25.6-25.6s-11.443-25.6-25.6-25.6h-128v-870.4h128c14.157 0 25.6-11.443 25.6-25.6s-11.443-25.6-25.6-25.6h-307.2zM51.2 204.8c-28.262 0-51.2 22.938-51.2 51.2v460.8c0 28.262 22.938 51.2 51.2 51.2h537.6v-51.2h-512c-14.131 0-25.6-11.443-25.6-25.6v-409.6c0-14.157 11.469-25.6 25.6-25.6h512v-51.2h-537.6zM742.4 204.8v51.2h204.8c14.157 0 25.6 11.443 25.6 25.6v409.6c0 14.157-11.443 25.6-25.6 25.6h-204.8v51.2h230.4c28.262 0 51.2-22.938 51.2-51.2v-460.8c0-28.262-22.938-51.2-51.2-51.2h-230.4zM285.9 307c-0.589 0.051-1.161 0.048-1.75 0.15-8.243 0.051-16.396 4.474-20.85 13.050l-132.55 306.25c-6.656 12.749-2.866 28.981 8.5 36.2 11.341 7.219 25.97 2.749 32.6-10l27.65-63.85h170.5c0.512 0 0.914-0.224 1.4-0.25l27.45 64.050c6.63 12.749 21.136 17.269 32.4 10.050s15.005-23.451 8.4-36.2l-131.3-306.25c-4.454-8.576-12.432-12.973-20.65-13.050-0.614-0.102-1.211-0.099-1.8-0.15zM285.9 389.15l63.65 148.45h-127.9l64.25-148.45z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["control-input"],"grid":0},"attrs":[{}],"properties":{"order":41,"id":12,"name":"control-Input","prevSize":24,"code":59660},"setIdx":0,"setId":1,"iconIdx":75},{"icon":{"paths":["M153.6 716.8c-84.787 0-153.6 68.813-153.6 153.6s68.813 153.6 153.6 153.6c84.787 0 153.6-68.813 153.6-153.6s-68.813-153.6-153.6-153.6zM153.6 972.8c-56.55 0-102.4-45.85-102.4-102.4s45.85-102.4 102.4-102.4c56.55 0 102.4 45.85 102.4 102.4s-45.85 102.4-102.4 102.4zM384 179.2h614.4c14.157 0 25.6-11.443 25.6-25.6s-11.443-25.6-25.6-25.6h-614.4c-14.131 0-25.6 11.443-25.6 25.6s11.469 25.6 25.6 25.6zM998.4 486.4h-614.4c-14.131 0-25.6 11.443-25.6 25.6s11.469 25.6 25.6 25.6h614.4c14.157 0 25.6-11.443 25.6-25.6s-11.443-25.6-25.6-25.6zM153.6 0c-84.787 0-153.6 68.787-153.6 153.6s68.813 153.6 153.6 153.6c84.787 0 153.6-68.787 153.6-153.6s-68.813-153.6-153.6-153.6zM153.6 256c-56.55 0-102.4-45.85-102.4-102.4s45.85-102.4 102.4-102.4c56.55 0 102.4 45.85 102.4 102.4s-45.85 102.4-102.4 102.4zM153.6 358.4c-84.787 0-153.6 68.787-153.6 153.6 0 84.787 68.813 153.6 153.6 153.6s153.6-68.813 153.6-153.6c0-84.813-68.813-153.6-153.6-153.6zM153.6 614.4c-56.55 0-102.4-45.85-102.4-102.4s45.85-102.4 102.4-102.4c56.55 0 102.4 45.85 102.4 102.4s-45.85 102.4-102.4 102.4zM153.6 102.4c-28.262 0-51.2 22.938-51.2 51.2s22.938 51.2 51.2 51.2c28.262 0 51.2-22.938 51.2-51.2s-22.938-51.2-51.2-51.2zM998.4 844.8h-614.4c-14.131 0-25.6 11.443-25.6 25.6s11.469 25.6 25.6 25.6h614.4c14.157 0 25.6-11.443 25.6-25.6s-11.443-25.6-25.6-25.6z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["control-radio"],"grid":0},"attrs":[{}],"properties":{"order":42,"id":13,"name":"control-Radio","prevSize":24,"code":59661},"setIdx":0,"setId":1,"iconIdx":76},{"icon":{"paths":["M0 0v204.8h76.8v76.8h51.2v-76.8h76.8v-204.8h-204.8zM819.2 0v204.8h204.8v-204.8h-204.8zM51.2 51.2h102.4v102.4h-102.4v-102.4zM870.4 51.2h102.4v102.4h-102.4v-102.4zM281.6 76.8v51.2h102.4v-51.2h-102.4zM486.4 76.8v51.2h102.4v-51.2h-102.4zM691.2 76.8v51.2h102.4v-51.2h-102.4zM333.25 204.8c-7.091-0.307-14.348 2.097-19.75 7.55l-74.75 74.75c-10.317 10.291-10.317 27.083 0 37.4s27.059 10.317 37.35 0l68.45-68.5h141.85v486.4h-50.7c-7.117-0.307-14.348 2.097-19.75 7.55l-23.6 23.55c-10.317 10.317-10.317 27.083 0 37.4 10.291 10.317 27.109 10.317 37.4 0l17.25-17.3h129.75l18.050 18c10.394 10.368 27.181 10.368 37.6 0 10.368-10.394 10.368-27.181 0-37.6l-24-24c-5.478-5.478-12.682-7.907-19.85-7.6h-50.95v-486.4h141.55l69.25 69.2c10.394 10.368 27.155 10.368 37.6 0 10.368-10.368 10.368-27.181 0-37.6l-75.2-75.2c-5.478-5.478-12.706-7.907-19.9-7.6h-357.65zM896 281.6v102.4h51.2v-102.4h-51.2zM76.8 384v102.4h51.2v-102.4h-51.2zM896 486.4v102.4h51.2v-102.4h-51.2zM76.8 588.8v102.4h51.2v-102.4h-51.2zM896 691.2v102.4h51.2v-102.4h-51.2zM76.8 793.6v25.6h-76.8v204.8h204.8v-76.8h76.8v-51.2h-76.8v-76.8h-76.8v-25.6h-51.2zM819.2 819.2v76.8h-25.6v51.2h25.6v76.8h204.8v-204.8h-204.8zM51.2 870.4h102.4v102.4h-102.4v-102.4zM870.4 870.4h102.4v102.4h-102.4v-102.4zM384 896v51.2h102.4v-51.2h-102.4zM588.8 896v51.2h102.4v-51.2h-102.4z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["control-textarea"],"grid":0},"attrs":[{}],"properties":{"order":17,"id":14,"name":"control-TextArea","prevSize":24,"code":59662},"setIdx":0,"setId":1,"iconIdx":77},{"icon":{"paths":["M332.8 25.6c-127.258 0-230.4 103.142-230.4 230.4s103.142 230.4 230.4 230.4h358.4c127.258 0 230.4-103.142 230.4-230.4s-103.142-230.4-230.4-230.4h-358.4zM332.8 76.8h358.4c98.97 0 179.2 80.23 179.2 179.2s-80.23 179.2-179.2 179.2h-358.4c-98.97 0-179.2-80.23-179.2-179.2s80.23-179.2 179.2-179.2zM332.8 128c-70.707 0-128 57.293-128 128s57.293 128 128 128c70.707 0 128-57.293 128-128s-57.293-128-128-128zM332.8 179.2c42.419 0 76.8 34.381 76.8 76.8s-34.381 76.8-76.8 76.8c-42.419 0-76.8-34.381-76.8-76.8s34.381-76.8 76.8-76.8zM332.8 537.6c-127.258 0-230.4 103.142-230.4 230.4s103.142 230.4 230.4 230.4h358.4c127.258 0 230.4-103.142 230.4-230.4s-103.142-230.4-230.4-230.4h-358.4zM332.8 588.8h358.4c98.97 0 179.2 80.23 179.2 179.2s-80.23 179.2-179.2 179.2h-358.4c-98.97 0-179.2-80.23-179.2-179.2s80.23-179.2 179.2-179.2zM691.2 640c-70.707 0-128 57.293-128 128s57.293 128 128 128c70.707 0 128-57.293 128-128s-57.293-128-128-128zM691.2 691.2c42.419 0 76.8 34.381 76.8 76.8s-34.381 76.8-76.8 76.8c-42.419 0-76.8-34.381-76.8-76.8s34.381-76.8 76.8-76.8z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["control-toggle"],"grid":0},"attrs":[{}],"properties":{"order":16,"id":15,"name":"control-Toggle","prevSize":24,"code":59663},"setIdx":0,"setId":1,"iconIdx":78},{"icon":{"paths":["M204.8 51.2c-56.525 0-102.4 45.875-102.4 102.4v512c0 56.525 45.875 102.4 102.4 102.4h409.6c56.525 0 102.4-45.875 102.4-102.4v-512c0-56.525-45.875-102.4-102.4-102.4h-409.6zM204.8 102.4h409.6c28.262 0 51.2 22.886 51.2 51.2v512c0 28.314-22.938 51.2-51.2 51.2h-409.6c-28.262 0-51.2-22.886-51.2-51.2v-512c0-28.314 22.938-51.2 51.2-51.2zM768 204.8v51.2c28.262 0 51.2 22.886 51.2 51.2v512c0 28.314-22.938 51.2-51.2 51.2h-409.6c-28.262 0-51.2-22.886-51.2-51.2h-51.2c0 56.525 45.875 102.4 102.4 102.4h409.6c56.525 0 102.4-45.875 102.4-102.4v-512c0-56.525-45.875-102.4-102.4-102.4z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["copy"],"grid":0},"attrs":[{}],"properties":{"order":90,"id":16,"name":"copy","prevSize":24,"code":59664},"setIdx":0,"setId":1,"iconIdx":79},{"icon":{"paths":["M828.8 1024h-633.6c-105.6 0-195.2-89.6-195.2-195.2v-320c0-281.6 227.2-508.8 505.6-508.8 288 0 518.4 230.4 518.4 518.4v310.4c0 105.6-89.6 195.2-195.2 195.2zM505.6 64c-243.2 0-441.6 198.4-441.6 441.6v320c0 73.6 60.8 134.4 131.2 134.4h630.4c73.6 0 131.2-60.8 131.2-131.2v-310.4c3.2-249.6-201.6-454.4-451.2-454.4z","M512 668.8c-3.2 0-6.4 0-6.4 0-32-3.2-64-19.2-80-48l-192-278.4c-9.6-9.6-9.6-25.6-0-38.4 9.6-9.6 25.6-12.8 38.4-6.4l294.4 172.8c28.8 16 48 44.8 51.2 76.8s-6.4 64-28.8 89.6c-19.2 22.4-48 32-76.8 32zM364.8 428.8l108.8 160c6.4 9.6 19.2 19.2 32 19.2s25.6-3.2 35.2-12.8c9.6-9.6 12.8-22.4 9.6-35.2s-9.6-22.4-19.2-32l-166.4-99.2z","M678.4 364.8c-6.4 0-12.8-3.2-19.2-6.4-16-9.6-19.2-28.8-9.6-44.8l54.4-83.2c9.6-16 28.8-19.2 44.8-9.6 19.2 12.8 22.4 35.2 12.8 48l-54.4 83.2c-6.4 9.6-16 12.8-28.8 12.8z"],"attrs":[{},{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["dashboard"],"grid":0},"attrs":[{},{},{}],"properties":{"order":26,"id":17,"name":"dashboard, search-Dashboard","prevSize":24,"code":59665},"setIdx":0,"setId":1,"iconIdx":80},{"icon":{"paths":["M597.35 819.2c14.131 0 25.6-11.469 25.6-25.6v-307.2c0-14.080-11.469-25.6-25.6-25.6s-25.6 11.52-25.6 25.6v307.2c0 14.131 11.418 25.6 25.6 25.6zM776.55 204.8h-153.6v-51.2c0-28.314-22.886-51.2-51.2-51.2h-102.4c-28.262 0-51.2 22.886-51.2 51.2v51.2h-153.6c-28.262 0-51.2 22.886-51.2 51.2v102.4c0 28.314 22.938 51.2 51.2 51.2v460.8c0 28.314 22.938 51.2 51.2 51.2h409.6c28.314 0 51.2-22.886 51.2-51.2v-460.8c28.314 0 51.2-22.886 51.2-51.2v-102.4c0-28.314-22.938-51.2-51.2-51.2zM469.35 153.6h102.4v51.2h-102.4v-51.2zM725.35 870.4h-409.6v-460.8h409.6v460.8zM776.55 358.4h-512v-102.4h512v102.4zM443.75 819.2c14.131 0 25.6-11.469 25.6-25.6v-307.2c0-14.080-11.469-25.6-25.6-25.6s-25.6 11.52-25.6 25.6v307.2c0 14.131 11.469 25.6 25.6 25.6z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["delete"],"grid":0},"attrs":[{}],"properties":{"order":29,"id":18,"name":"delete, bin","prevSize":24,"code":59666},"setIdx":0,"setId":1,"iconIdx":81},{"icon":{"paths":["M832 128h-192v-64c0-35.392-28.608-64-64-64h-128c-35.328 0-64 28.608-64 64v64h-192c-35.328 0-64 28.608-64 64v128c0 35.392 28.672 64 64 64v512c0 35.392 28.672 64 64 64h512c35.392 0 64-28.608 64-64v-512c35.392 0 64-28.608 64-64v-128c0-35.392-28.608-64-64-64zM448 64h128v64h-128v-64zM448 800c0 17.664-14.336 32-32 32s-32-14.336-32-32v-320c0-17.6 14.336-32 32-32s32 14.4 32 32v320zM640 800c0 17.664-14.336 32-32 32s-32-14.336-32-32v-320c0-17.6 14.336-32 32-32s32 14.4 32 32v320zM832 320h-640v-128h640v128z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["delete-filled"],"grid":0},"attrs":[{}],"properties":{"order":36,"id":19,"name":"delete-filled","prevSize":24,"code":59667},"setIdx":0,"setId":1,"iconIdx":82},{"icon":{"paths":["M358.4 102.4c-28.314 0-51.2 22.886-51.2 51.2v256h51.2v-256h307.2v153.6c0 28.314 22.886 51.2 51.2 51.2h153.6v512h-358.4v51.2h358.4c28.314 0 51.2-22.886 51.2-51.2v-548.2l-219.8-219.8h-343.4zM716.8 189.8l117.4 117.4h-117.4v-117.4zM332.8 460.8c-127.232 0-230.4 103.168-230.4 230.4s103.168 230.4 230.4 230.4c127.232 0 230.4-103.168 230.4-230.4s-103.168-230.4-230.4-230.4zM332.8 512c98.816 0 179.2 80.384 179.2 179.2s-80.384 179.2-179.2 179.2c-98.816 0-179.2-80.384-179.2-179.2s80.384-179.2 179.2-179.2zM227.2 665.6c-12.39 0-22.4 10.061-22.4 22.4v6.4c0 12.39 10.010 22.4 22.4 22.4h211.2c12.39 0 22.4-10.010 22.4-22.4v-6.4c0-12.39-10.061-22.4-22.4-22.4h-211.2z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["document-delete"],"grid":0},"attrs":[{}],"properties":{"order":35,"id":20,"name":"document-delete","prevSize":24,"code":59668},"setIdx":0,"setId":1,"iconIdx":83},{"icon":{"paths":["M358.4 102.4c-28.314 0-51.2 22.886-51.2 51.2v256h51.2v-256h307.2v153.6c0 28.314 22.886 51.2 51.2 51.2h153.6v512h-358.4v51.2h358.4c28.314 0 51.2-22.886 51.2-51.2v-548.2l-219.8-219.8h-343.4zM716.8 189.8l117.4 117.4h-117.4v-117.4zM332.8 460.8c-127.232 0-230.4 103.168-230.4 230.4s103.168 230.4 230.4 230.4c127.232 0 230.4-103.168 230.4-230.4s-103.168-230.4-230.4-230.4zM332.8 512c39.934 0 76.475 13.533 106.3 35.7l-250.4 249c-21.807-29.683-35.1-65.924-35.1-105.5 0-98.816 80.384-179.2 179.2-179.2zM477 585.7c21.785 29.674 35 65.947 35 105.5 0 98.816-80.384 179.2-179.2 179.2-39.906 0-76.386-13.561-106.2-35.7l250.4-249z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["document-disable"],"grid":0},"attrs":[{}],"properties":{"order":40,"id":21,"name":"document-disable","prevSize":24,"code":59669},"setIdx":0,"setId":1,"iconIdx":84},{"icon":{"paths":["M358.4 102.4c-28.314 0-51.2 22.886-51.2 51.2v256h51.2v-256h307.2v153.6c0 28.314 22.886 51.2 51.2 51.2h153.6v512h-358.4v51.2h358.4c28.314 0 51.2-22.886 51.2-51.2v-548.2l-219.8-219.8h-343.4zM716.8 189.8l117.4 117.4h-117.4v-117.4zM332.8 460.8l-230.4 256v51.2h102.4v153.6h256v-153.6h102.4v-51.2l-230.4-256zM332.8 537.3l161.5 179.5h-84.7v153.6h-153.6v-153.6h-84.7l161.5-179.5z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["document-publish"],"grid":0},"attrs":[{}],"properties":{"order":44,"id":22,"name":"document-publish","prevSize":24,"code":59670},"setIdx":0,"setId":1,"iconIdx":85},{"icon":{"paths":["M665.6 51.2v102.4h102.4v-102.4h-102.4zM460.8 153.6h102.4v-102.4h-102.4v102.4zM460.8 358.4h102.4v-102.4h-102.4v102.4zM665.6 358.4h102.4v-102.4h-102.4v102.4zM665.6 563.2h102.4v-102.4h-102.4v102.4zM460.8 563.2h102.4v-102.4h-102.4v102.4zM460.8 768h102.4v-102.4h-102.4v102.4zM665.6 768h102.4v-102.4h-102.4v102.4zM665.6 972.8h102.4v-102.4h-102.4v102.4zM460.8 972.8h102.4v-102.4h-102.4v102.4zM256 153.6h102.4v-102.4h-102.4v102.4zM256 358.4h102.4v-102.4h-102.4v102.4zM256 563.2h102.4v-102.4h-102.4v102.4zM256 768h102.4v-102.4h-102.4v102.4zM256 972.8h102.4v-102.4h-102.4v102.4z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["drag"],"grid":0},"attrs":[{}],"properties":{"order":43,"id":23,"name":"drag","prevSize":24,"code":59671},"setIdx":0,"setId":1,"iconIdx":86},{"icon":{"paths":["M921.6 281.958c0-70.707-171.878-128.154-384-128.154s-384 57.19-384 127.898c0 10.035 3.789 19.712 10.342 29.030 0-0.051 296.858 406.067 296.858 406.067v256l153.6-51.2v-204.8c0 0 298.752-408.166 299.725-409.702 0 0 7.475-16.64 7.475-25.139zM537.6 204.8c206.899 0 318.208 53.248 332.083 76.8-13.875 23.552-125.184 76.8-332.083 76.8s-318.208-53.248-332.083-76.8c13.875-23.552 125.184-76.8 332.083-76.8zM869.376 345.856v0 0zM573.030 686.592c-6.4 8.755-9.83 19.354-9.83 30.208v167.885l-51.2 17.050v-184.934c0-10.854-3.43-21.453-9.83-30.208l-228.147-312.115c68.762 21.709 161.382 35.123 263.578 35.123 102.298 0 195.021-13.414 263.834-35.174-0.102 0.051-0.205 0.051-0.307 0.102l-228.096 312.064z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["filter"],"grid":0},"attrs":[{}],"properties":{"order":18,"id":24,"name":"filter","prevSize":24,"code":59672},"setIdx":0,"setId":1,"iconIdx":87},{"icon":{"paths":["M512 0c-282.88 0-512 229.248-512 512 0 226.24 146.688 418.112 350.080 485.76 25.6 4.8 35.008-11.008 35.008-24.64 0-12.16-0.448-44.352-0.64-87.040-142.464 30.912-172.48-68.672-172.48-68.672-23.296-59.136-56.96-74.88-56.96-74.88-46.4-31.744 3.584-31.104 3.584-31.104 51.392 3.584 78.4 52.736 78.4 52.736 45.696 78.272 119.872 55.68 149.12 42.56 4.608-33.088 17.792-55.68 32.448-68.48-113.728-12.8-233.216-56.832-233.216-252.992 0-55.872 19.84-101.568 52.672-137.408-5.76-12.928-23.040-64.96 4.48-135.488 0 0 42.88-13.76 140.8 52.48 40.96-11.392 84.48-17.024 128-17.28 43.52 0.256 87.040 5.888 128 17.28 97.28-66.24 140.16-52.48 140.16-52.48 27.52 70.528 10.24 122.56 5.12 135.488 32.64 35.84 52.48 81.536 52.48 137.408 0 196.672-119.68 240-233.6 252.608 17.92 15.36 34.56 46.72 34.56 94.72 0 68.48-0.64 123.52-0.64 140.16 0 13.44 8.96 29.44 35.2 24.32 204.864-67.136 351.424-259.136 351.424-485.056 0-282.752-229.248-512-512-512z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["brand","github"],"grid":0},"attrs":[{}],"properties":{"order":77,"id":25,"name":"github","prevSize":24,"code":59713},"setIdx":0,"setId":1,"iconIdx":88},{"icon":{"paths":["M512 512h-204.8v51.2h204.8v-51.2zM768 153.6h-51.2c0-28.314-22.886-51.2-51.2-51.2h-307.2c-28.314 0-51.2 22.886-51.2 51.2h-51.2c-28.314 0-51.2 22.886-51.2 51.2v665.6c0 28.314 22.886 51.2 51.2 51.2h512c28.314 0 51.2-22.886 51.2-51.2v-665.6c0-28.314-22.886-51.2-51.2-51.2zM358.4 153.6h307.2v51.2h-307.2v-51.2zM768 819.2c0 28.314-22.886 51.2-51.2 51.2h-409.6c-28.314 0-51.2-22.886-51.2-51.2v-563.2c0-28.314 22.886-51.2 51.2-51.2 0 28.314 22.886 51.2 51.2 51.2h307.2c28.314 0 51.2-22.886 51.2-51.2 28.314 0 51.2 22.886 51.2 51.2v563.2zM307.2 460.8h409.6v-51.2h-409.6v51.2zM307.2 665.6h409.6v-51.2h-409.6v51.2z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["help"],"grid":0},"attrs":[{}],"properties":{"order":19,"id":26,"name":"help","prevSize":24,"code":59673},"setIdx":0,"setId":1,"iconIdx":89},{"icon":{"paths":["M512 0c-169.421 0-307.2 137.779-307.2 307.2 0 78.643 15.258 164.915 45.261 256.41 23.859 72.55 56.986 148.582 98.56 226.099 70.707 131.635 140.339 220.774 143.309 224.512 4.813 6.195 12.288 9.779 20.070 9.779 7.834 0 15.258-3.584 20.122-9.779 2.97-3.686 72.602-92.826 143.309-224.512 41.574-77.517 74.701-153.549 98.56-226.099 29.952-91.494 45.21-177.766 45.21-256.41 0-169.421-137.83-307.2-307.2-307.2zM630.682 764.672c-46.234 86.374-92.979 154.982-118.682 190.822-25.6-35.635-72.038-103.885-118.221-189.952-62.874-117.146-137.779-291.738-137.779-458.342 0-141.158 114.842-256 256-256s256 114.842 256 256c0 166.298-74.65 340.582-137.318 457.472zM512 153.6c-84.685 0-153.6 68.915-153.6 153.6s68.915 153.6 153.6 153.6 153.6-68.915 153.6-153.6-68.915-153.6-153.6-153.6zM512 409.6c-56.525 0-102.4-45.875-102.4-102.4 0-56.474 45.875-102.4 102.4-102.4 56.474 0 102.4 45.926 102.4 102.4 0 56.525-45.926 102.4-102.4 102.4z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["location"],"grid":0},"attrs":[{}],"properties":{"order":25,"id":27,"name":"location, control-Map, type-Geolocation","prevSize":24,"code":59675},"setIdx":0,"setId":1,"iconIdx":90},{"icon":{"paths":["M512.273 83.782c-0.141 0.056-182.959 84.073-229.418 256.782-4.481 16.584 32.696 9.296 31.036 27.527-2.034 22.136-44.668 31.201-39.109 94.764 5.659 64.734 60.321 130.141 68.527 169.673v27.655c-0.497 8.54-4.566 31.715-18.018 43.036-7.378 6.19-17.322 8.421-30.436 6.782-18.205-2.275-25.449-14.468-28.345-24.309-4.753-16.218-0.322-35.123 10.345-44 10.724-8.924 12.17-24.842 3.236-35.564-8.934-10.712-24.858-12.161-35.582-3.218-25.995 21.64-36.887 61.52-26.491 97 9.815 33.392 36.197 55.884 70.6 60.182 4.903 0.609 9.566 0.909 14 0.909 26.623 0 44.661-10.175 55.582-19.455 32.866-27.97 35.449-74.593 35.636-79.818 0.009-0.309 0.018-0.618 0.018-0.927v-21.218h0.109v-1.418c0-12.351 10.008-22.364 22.382-22.364 11.944 0 21.609 9.346 22.273 21.109v202.491c-0.206 2.912-2.536 29.892-17.891 42.945-7.368 6.274-17.384 8.53-30.545 6.873-18.214-2.275-25.476-14.468-28.364-24.291-4.762-16.228-0.322-35.151 10.345-44.018 10.724-8.933 12.188-24.833 3.255-35.564-8.924-10.694-24.876-12.161-35.6-3.218-26.013 21.631-36.887 61.52-26.491 97 9.796 33.392 36.197 55.893 70.6 60.2 4.903 0.609 9.566 0.891 14 0.891 26.623 0 44.671-10.156 55.564-19.436 32.875-27.97 35.458-74.611 35.636-79.836 0.019-0.328 0.018-0.609 0.018-0.909v-225.636l0.127-0.055v-1c0-12.595 10.219-22.8 22.836-22.8 12.349 0 22.333 9.824 22.727 22.073v227.418c0 0.309-0 0.591 0.018 0.909 0.187 5.216 2.779 51.866 35.655 79.836 10.912 9.28 28.959 19.436 55.582 19.436 4.443 0 9.088-0.282 13.982-0.891 34.394-4.307 60.804-26.818 70.6-60.2 10.405-35.48-0.487-75.36-26.491-97-10.743-8.943-26.676-7.466-35.6 3.218-8.934 10.74-7.488 26.63 3.236 35.564 10.668 8.868 15.135 27.79 10.364 44.018-2.878 9.823-10.159 22.015-28.364 24.291-13.105 1.648-23.050-0.592-30.418-6.782-13.508-11.358-17.558-34.657-18.036-43v-201.818c0.297-12.093 10.14-21.818 22.327-21.818 12.374 0 22.4 10.003 22.4 22.364v1.418h0.073v21.218c0 0.318-0 0.628 0.018 0.927 0.178 5.216 2.779 51.848 35.655 79.818 10.912 9.28 28.941 19.455 55.564 19.455 4.434 0 9.107-0.292 14-0.891 34.394-4.298 60.786-26.818 70.582-60.2 10.405-35.48-0.487-75.351-26.491-97-10.743-8.933-26.667-7.476-35.582 3.236-8.943 10.722-7.488 26.622 3.236 35.545 10.668 8.877 15.117 27.8 10.345 44.018-2.878 9.842-10.159 22.025-28.364 24.291-13.086 1.648-23.050-0.583-30.418-6.764-13.508-11.368-17.549-34.675-18.018-43v-21.018c5.305-54.103 63.095-107.777 69.091-176.364 5.531-63.563-37.121-72.627-39.145-94.764-1.669-18.232 35.498-10.944 31.036-27.527-46.468-172.709-229.269-256.726-229.4-256.782z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["logo"],"grid":0},"attrs":[{}],"properties":{"order":31,"id":28,"name":"logo","prevSize":24,"code":59676},"setIdx":0,"setId":1,"iconIdx":91},{"icon":{"paths":["M947.2 0h-870.4c-42.342 0-76.8 34.458-76.8 76.8v870.4c0 42.342 34.458 76.8 76.8 76.8h870.4c42.342 0 76.8-34.458 76.8-76.8v-870.4c0-42.342-34.458-76.8-76.8-76.8zM972.8 947.2c0 14.157-11.443 25.6-25.6 25.6h-870.4c-14.131 0-25.6-11.443-25.6-25.6v-870.4c0-14.131 11.469-25.6 25.6-25.6h870.4c14.157 0 25.6 11.469 25.6 25.6v870.4zM665.6 460.8c56.448 0 102.4-45.926 102.4-102.4s-45.952-102.4-102.4-102.4c-56.448 0-102.4 45.926-102.4 102.4s45.952 102.4 102.4 102.4zM665.6 307.2c28.211 0 51.2 22.989 51.2 51.2s-22.989 51.2-51.2 51.2c-28.211 0-51.2-22.989-51.2-51.2s22.989-51.2 51.2-51.2zM896 102.4h-768c-14.131 0-25.6 11.469-25.6 25.6v614.4c0 14.157 11.469 25.6 25.6 25.6h768c14.157 0 25.6-11.443 25.6-25.6v-614.4c0-14.131-11.443-25.6-25.6-25.6zM153.6 716.8v-118.246l164.301-184.858c4.198-4.787 9.728-7.373 15.462-7.475 5.734-0.051 11.29 2.458 15.642 7.040l283.238 303.539h-478.643zM870.4 716.8h-168.090l-315.853-338.432c-14.285-15.334-33.331-23.603-53.709-23.347-20.326 0.256-39.219 9.011-53.094 24.627l-126.054 141.798v-367.846h716.8v563.2z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["media"],"grid":0},"attrs":[{}],"properties":{"order":30,"id":29,"name":"media, type-Assets, trigger-AssetChanged","prevSize":24,"code":59677},"setIdx":0,"setId":1,"iconIdx":92},{"icon":{"paths":["M128 384c-70.656 0-128 57.344-128 128s57.344 128 128 128c70.656 0 128-57.344 128-128s-57.344-128-128-128zM512 384c-70.656 0-128 57.344-128 128s57.344 128 128 128c70.656 0 128-57.344 128-128s-57.344-128-128-128zM896 384c-70.656 0-128 57.344-128 128s57.344 128 128 128c70.656 0 128-57.344 128-128s-57.344-128-128-128z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["more"],"grid":0},"attrs":[{}],"properties":{"order":34,"id":30,"name":"more, dots","prevSize":24,"code":59678},"setIdx":0,"setId":1,"iconIdx":93},{"icon":{"paths":["M877.12 311.104l-66.304 66.368-228.224-228.224 66.368-66.368c25.216-25.152 66.048-25.152 91.264 0l136.896 137.024c25.216 25.216 25.216 65.984 0 91.2zM760.896 427.392l-386.176 386.112c-25.216 25.28-66.048 25.28-91.264 0l-136.96-136.896c-25.216-25.28-25.216-66.112 0-91.264l386.24-386.24 228.16 228.288zM64 896v-191.872l191.936 191.872h-191.936z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["pencil"],"grid":0},"attrs":[{}],"properties":{"order":47,"id":31,"name":"pencil","prevSize":24,"code":59679},"setIdx":0,"setId":1,"iconIdx":94},{"icon":{"paths":["M892.083 131.917c-73.523-73.498-193.152-73.498-266.65 0l-157.184 157.107c-9.958 10.035-9.958 26.214 0 36.275 10.061 9.984 26.24 9.984 36.25 0l157.133-157.107c53.504-53.555 140.672-53.555 194.176 0 53.581 53.504 53.581 140.672 0 194.176l-186.138 186.163c-53.53 53.581-140.672 53.581-194.176 0-10.086-10.010-26.24-10.010-36.275 0-10.035 10.086-10.035 26.189 0 36.25 36.787 36.736 84.992 55.117 133.325 55.117s96.589-18.432 133.376-55.117l186.163-186.214c73.498-73.472 73.498-193.152 0-266.65zM519.45 698.726l-157.082 157.082c-53.504 53.555-140.672 53.555-194.176 0-53.581-53.504-53.581-140.672 0-194.176l186.138-186.163c53.53-53.581 140.672-53.581 194.176 0 10.086 9.984 26.189 9.984 36.275 0 10.035-10.086 10.035-26.214 0-36.25-73.549-73.498-193.203-73.498-266.701 0l-186.163 186.163c-73.498 73.574-73.498 193.203 0 266.701 36.787 36.71 85.043 55.117 133.325 55.117 48.333 0 96.538-18.406 133.325-55.117l157.133-157.133c10.010-10.010 10.010-26.189 0-36.224-10.010-9.984-26.189-9.984-36.25 0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["reference"],"grid":0},"attrs":[{}],"properties":{"order":45,"id":32,"name":"reference","prevSize":24,"code":59680},"setIdx":0,"setId":1,"iconIdx":95},{"icon":{"paths":["M800 1024h-576c-124.8 0-224-99.2-224-224v-300.8c0-124.8 99.2-224 224-224h576c124.8 0 224 99.2 224 224v300.8c0 124.8-99.2 224-224 224zM224 339.2c-89.6 0-160 70.4-160 160v300.8c0 89.6 70.4 160 160 160h576c89.6 0 160-70.4 160-160v-300.8c0-89.6-70.4-160-160-160h-576z","M828.8 201.6h-633.6c-19.2 0-32-12.8-32-32s12.8-32 32-32h630.4c19.2 0 32 12.8 32 32s-12.8 32-28.8 32z","M716.8 64h-409.6c-19.2 0-32-12.8-32-32s12.8-32 32-32h412.8c19.2 0 32 12.8 32 32s-16 32-35.2 32z","M800 416v64c0 48-38.4 83.2-83.2 83.2h-409.6c-44.8 3.2-83.2-35.2-83.2-83.2v-64h-54.4v64c0 76.8 64 140.8 140.8 140.8h406.4c76.8 0 140.8-64 140.8-140.8v-64h-57.6z"],"attrs":[{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["schemas"],"grid":0},"attrs":[{},{},{},{}],"properties":{"order":46,"id":33,"name":"schemas, search-Schema","prevSize":24,"code":59681},"setIdx":0,"setId":1,"iconIdx":96},{"icon":{"paths":["M939.776 1003.776c-27.2 27.008-71.232 27.008-98.368 0l-168.96-168.96c-66.176 38.464-142.016 62.080-224 62.080-247.744 0-448.448-200.832-448.448-448.448 0-247.744 200.704-448.448 448.448-448.448 247.68 0 448.512 200.704 448.512 448.448 0 115.136-44.672 218.944-115.904 298.304l158.656 158.656c27.008 27.136 27.008 71.168 0.064 98.368zM448.448 128.128c-176.896 0-320.32 143.36-320.32 320.32s143.424 320.32 320.32 320.32c176.96 0 320.384-143.36 320.384-320.32s-143.488-320.32-320.384-320.32z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["search"],"grid":0},"attrs":[{}],"properties":{"order":23,"id":34,"name":"search","prevSize":24,"code":59682},"setIdx":0,"setId":1,"iconIdx":97},{"icon":{"paths":["M1019.11 440.755c-1.946-13.747-14.438-23.398-28.16-21.888-16.947 1.843-34.253-0.589-50.048-7.091-52.25-21.504-77.261-81.459-55.757-133.709 6.605-15.846 16.947-29.85 30.208-40.602 10.803-8.653 12.698-24.294 4.352-35.354-28.902-37.99-62.797-71.706-100.838-100.045-10.701-8.090-25.805-6.451-34.662 3.661-28.8 33.254-75.546 44.262-116.198 27.546-40.704-16.742-66.099-57.498-63.206-101.453 0.845-13.338-8.755-25.19-21.99-27.008-47.002-6.605-94.797-6.605-142.054 0.077-13.722 1.946-23.398 14.387-21.862 28.211 1.843 16.896-0.614 34.202-7.168 49.997-21.504 52.25-81.408 77.21-133.632 55.706-15.821-6.502-29.85-16.947-40.602-30.157-8.653-10.752-24.32-12.698-35.379-4.301-37.99 28.851-71.68 62.694-100.045 100.762-8.090 10.701-6.451 25.83 3.635 34.637 33.28 28.902 44.288 75.597 27.546 116.301-16.742 40.653-57.498 66.048-101.427 63.155-13.363-0.845-25.19 8.755-26.982 21.99-6.63 47.002-6.63 94.822 0.102 142.080 1.946 13.696 14.387 23.322 28.16 21.811 16.896-1.818 34.202 0.691 50.022 7.168 52.224 21.53 77.21 81.459 55.706 133.734-6.502 15.795-16.947 29.773-30.157 40.525-10.803 8.73-12.698 24.346-4.352 35.354 28.877 38.042 62.822 71.731 100.813 100.122 1.741 1.357 3.661 2.355 5.606 3.2 9.933 4.045 21.709 1.536 29.082-6.938 28.826-33.178 75.571-44.262 116.275-27.52 40.653 16.742 66.048 57.498 63.13 101.453-0.819 13.338 8.755 25.165 22.067 27.059 47.002 6.579 94.72 6.554 142.029-0.102 13.645-1.971 23.347-14.464 21.811-28.237-1.843-16.947 0.691-34.253 7.194-50.048 21.504-52.25 81.459-77.21 133.658-55.68 15.795 6.528 29.85 16.947 40.55 30.157 8.704 10.803 24.346 12.698 35.405 4.326 37.99-28.902 71.654-62.746 100.096-100.813 7.987-10.675 6.4-25.805-3.712-34.662-33.254-28.826-44.288-75.571-27.546-116.224 16.742-40.73 57.498-66.099 101.453-63.232 13.338 0.922 25.139-8.678 27.008-21.965 6.554-47.002 6.502-94.771-0.128-142.003zM971.059 554.010c-56.141 5.274-105.702 41.114-127.642 94.464s-12.058 113.613 24.090 156.902c-17.69 21.478-37.453 41.318-58.854 59.315-12.749-11.213-27.392-20.352-43.238-26.854-78.259-32.282-168.243 5.197-200.499 83.584-6.502 15.718-10.291 32.563-11.29 49.536-27.853 2.56-55.859 2.637-83.61 0.077-5.274-56.090-41.114-105.677-94.464-127.616-53.35-21.99-113.613-11.981-156.928 24.064-21.504-17.69-41.318-37.453-59.29-58.88 11.213-12.723 20.352-27.392 26.906-43.136 32.205-78.387-5.274-168.294-83.584-200.55-15.821-6.502-32.589-10.342-49.613-11.366-2.534-27.853-2.586-55.859 0-83.558 56.090-5.299 105.626-41.088 127.565-94.438 21.965-53.402 12.058-113.638-24.090-156.902 17.69-21.555 37.478-41.395 58.88-59.341 12.749 11.213 27.392 20.352 43.213 26.854 78.285 32.256 168.218-5.248 200.474-83.558 6.528-15.795 10.342-32.589 11.366-49.613 27.853-2.509 55.808-2.56 83.558 0 5.299 56.090 41.139 105.6 94.49 127.59 53.35 21.939 113.638 12.006 156.902-24.090 21.504 17.741 41.293 37.453 59.29 58.854-11.213 12.8-20.352 27.392-26.854 43.213-32.256 78.31 5.248 168.294 83.507 200.499 15.846 6.502 32.691 10.342 49.638 11.392 2.56 27.853 2.611 55.808 0.077 83.558zM512 307.2c-113.101 0-204.8 91.699-204.8 204.8 0 113.126 91.699 204.826 204.8 204.826s204.8-91.699 204.8-204.826c0-113.101-91.699-204.8-204.8-204.8zM512 665.626c-84.813 0-153.6-68.813-153.6-153.626 0-84.838 68.787-153.6 153.6-153.6 84.838 0 153.6 68.762 153.6 153.6 0 84.813-68.762 153.626-153.6 153.626z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["settings"],"grid":0},"attrs":[{}],"properties":{"order":22,"id":35,"name":"settings, search-Setting","prevSize":24,"code":59683},"setIdx":0,"setId":1,"iconIdx":98},{"icon":{"paths":["M77.005 102.605h128v332.8c0 14.131 11.418 25.6 25.6 25.6 14.106 0 25.6-11.469 25.6-25.6v-332.8h128c14.106 0 25.6-11.469 25.6-25.6 0-14.157-11.494-25.6-25.6-25.6h-307.2c-14.182 0-25.6 11.443-25.6 25.6 0 14.106 11.418 25.6 25.6 25.6zM947.405 716.979h-179.2v-102.4h179.2c14.157 0 25.6-11.443 25.6-25.6s-11.443-25.6-25.6-25.6h-204.8c-14.182 0-25.6 11.443-25.6 25.6v358.4c0 14.157 11.418 25.6 25.6 25.6 14.157 0 25.6-11.443 25.6-25.6v-179.2h179.2c14.157 0 25.6-11.443 25.6-25.6s-11.494-25.6-25.6-25.6zM965.094 58.47c-9.958-9.933-26.112-9.933-36.045 0l-870.605 870.579c-9.958 9.984-9.958 26.086 0 36.045 10.010 9.984 26.112 9.984 36.045 0l870.605-870.579c9.958-9.933 9.958-26.086 0-36.045z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["type-boolean"],"grid":0},"attrs":[{}],"properties":{"order":21,"id":36,"name":"type-Boolean","prevSize":24,"code":59684},"setIdx":0,"setId":1,"iconIdx":99},{"icon":{"paths":["M947.2 102.4h-128v-25.6c0-14.131-11.469-25.6-25.6-25.6s-25.6 11.469-25.6 25.6v25.6h-512v-25.6c0-14.131-11.52-25.6-25.6-25.6s-25.6 11.469-25.6 25.6v25.6h-128c-42.342 0-76.8 34.458-76.8 76.8v716.8c0 42.342 34.458 76.8 76.8 76.8h870.4c42.342 0 76.8-34.458 76.8-76.8v-716.8c0-42.342-34.458-76.8-76.8-76.8zM972.8 896c0 14.131-11.469 25.6-25.6 25.6h-870.4c-14.080 0-25.6-11.469-25.6-25.6v-537.6h921.6v537.6zM972.8 307.2h-921.6v-128c0-14.080 11.52-25.6 25.6-25.6h128v76.8c0 14.080 11.52 25.6 25.6 25.6s25.6-11.52 25.6-25.6v-76.8h512v76.8c0 14.080 11.469 25.6 25.6 25.6s25.6-11.52 25.6-25.6v-76.8h128c14.131 0 25.6 11.52 25.6 25.6v128zM332.8 512h51.2c14.080 0 25.6-11.52 25.6-25.6s-11.52-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.52-25.6 25.6s11.52 25.6 25.6 25.6zM486.4 512h51.2c14.131 0 25.6-11.52 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.52-25.6 25.6s11.52 25.6 25.6 25.6zM640 512h51.2c14.131 0 25.6-11.52 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.131 0-25.6 11.52-25.6 25.6s11.469 25.6 25.6 25.6zM793.6 512h51.2c14.131 0 25.6-11.52 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.131 0-25.6 11.52-25.6 25.6s11.469 25.6 25.6 25.6zM179.2 614.4h51.2c14.080 0 25.6-11.469 25.6-25.6s-11.52-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6zM332.8 614.4h51.2c14.080 0 25.6-11.469 25.6-25.6s-11.52-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6zM486.4 614.4h51.2c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6zM640 614.4h51.2c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.131 0-25.6 11.469-25.6 25.6s11.469 25.6 25.6 25.6zM793.6 614.4h51.2c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.131 0-25.6 11.469-25.6 25.6s11.469 25.6 25.6 25.6zM179.2 716.8h51.2c14.080 0 25.6-11.469 25.6-25.6s-11.52-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6zM332.8 716.8h51.2c14.080 0 25.6-11.469 25.6-25.6s-11.52-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6zM486.4 716.8h51.2c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6zM640 716.8h51.2c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.131 0-25.6 11.469-25.6 25.6s11.469 25.6 25.6 25.6zM793.6 716.8h51.2c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.131 0-25.6 11.469-25.6 25.6s11.469 25.6 25.6 25.6zM179.2 819.2h51.2c14.080 0 25.6-11.469 25.6-25.6s-11.52-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6zM332.8 819.2h51.2c14.080 0 25.6-11.469 25.6-25.6s-11.52-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6zM486.4 819.2h51.2c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6zM640 819.2h51.2c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.131 0-25.6 11.469-25.6 25.6s11.469 25.6 25.6 25.6zM793.6 819.2h51.2c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-51.2c-14.131 0-25.6 11.469-25.6 25.6s11.469 25.6 25.6 25.6z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["type-datetime"],"grid":0},"attrs":[{}],"properties":{"order":24,"id":37,"name":"type-DateTime","prevSize":24,"code":59685},"setIdx":0,"setId":1,"iconIdx":100},{"icon":{"paths":["M179.2 256c0-28.262 22.938-51.2 51.2-51.2h25.6c14.157 0 25.6-11.443 25.6-25.6 0-14.131-11.443-25.6-25.6-25.6h-25.6c-56.55 0-102.4 45.85-102.4 102.4v179.2c0 28.262-22.938 51.2-51.2 51.2h-25.6c-14.157 0-25.6 11.469-25.6 25.6 0 14.157 11.443 25.6 25.6 25.6h25.6c28.262 0 51.2 22.938 51.2 51.2v179.2c0 56.55 45.85 102.4 102.4 102.4h25.6c14.157 0 25.6-11.443 25.6-25.6s-11.443-25.6-25.6-25.6h-25.6c-28.262 0-51.2-22.938-51.2-51.2v-179.2c0-30.746-13.85-58.061-35.328-76.8 21.478-18.765 35.328-46.029 35.328-76.8v-179.2zM972.8 486.4h-25.6c-28.262 0-51.2-22.938-51.2-51.2v-179.2c0-56.55-45.85-102.4-102.4-102.4h-25.6c-14.157 0-25.6 11.469-25.6 25.6 0 14.157 11.443 25.6 25.6 25.6h25.6c28.262 0 51.2 22.938 51.2 51.2v179.2c0 30.771 13.85 58.035 35.328 76.8-21.478 18.739-35.328 46.054-35.328 76.8v179.2c0 28.262-22.938 51.2-51.2 51.2h-25.6c-14.157 0-25.6 11.443-25.6 25.6s11.443 25.6 25.6 25.6h25.6c56.55 0 102.4-45.85 102.4-102.4v-179.2c0-28.262 22.938-51.2 51.2-51.2h25.6c14.157 0 25.6-11.443 25.6-25.6 0-14.131-11.443-25.6-25.6-25.6zM512 332.8c-14.157 0-25.6 11.469-25.6 25.6 0 14.157 11.443 25.6 25.6 25.6s25.6-11.443 25.6-25.6c0-14.131-11.443-25.6-25.6-25.6zM512 435.2c-14.157 0-25.6 11.469-25.6 25.6v204.8c0 14.157 11.443 25.6 25.6 25.6s25.6-11.443 25.6-25.6v-204.8c0-14.131-11.443-25.6-25.6-25.6z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["json"],"grid":0},"attrs":[{}],"properties":{"order":20,"id":38,"name":"type-Json, json","prevSize":24,"code":59674},"setIdx":0,"setId":1,"iconIdx":101},{"icon":{"paths":["M256 665.6h-76.8v-332.8c0-14.131-11.469-25.6-25.6-25.6h-76.8c-14.131 0-25.6 11.469-25.6 25.6s11.469 25.6 25.6 25.6h51.2v307.2h-76.8c-14.131 0-25.6 11.469-25.6 25.6s11.469 25.6 25.6 25.6h204.8c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6zM614.4 307.2h-204.8c-14.131 0-25.6 11.469-25.6 25.6s11.469 25.6 25.6 25.6h179.2v128h-179.2c-14.131 0-25.6 11.469-25.6 25.6v179.2c0 14.131 11.469 25.6 25.6 25.6h204.8c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-179.2v-128h179.2c14.131 0 25.6-11.469 25.6-25.6v-179.2c0-14.131-11.469-25.6-25.6-25.6zM972.8 307.2h-204.8c-14.131 0-25.6 11.469-25.6 25.6s11.469 25.6 25.6 25.6h179.2v128h-179.2c-14.131 0-25.6 11.469-25.6 25.6s11.469 25.6 25.6 25.6h179.2v128h-179.2c-14.131 0-25.6 11.469-25.6 25.6s11.469 25.6 25.6 25.6h204.8c14.131 0 25.6-11.469 25.6-25.6v-358.4c0-14.131-11.469-25.6-25.6-25.6z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["type-number"],"grid":0},"attrs":[{}],"properties":{"order":32,"id":39,"name":"type-Number","prevSize":24,"code":59686},"setIdx":0,"setId":1,"iconIdx":102},{"icon":{"paths":["M870.4 921.6h-716.8c-14.131 0-25.6 11.443-25.6 25.6s11.469 25.6 25.6 25.6h716.8c14.157 0 25.6-11.443 25.6-25.6s-11.443-25.6-25.6-25.6zM194.688 817.152c13.030 5.555 28.083-0.461 33.613-13.44l125.030-291.712h317.338l125.005 291.712c4.173 9.677 13.568 15.488 23.526 15.488 3.405 0 6.81-0.64 10.112-2.048 13.005-5.606 18.995-20.659 13.44-33.638l-131.61-306.944c-0.051-0.051-0.051-0.154-0.102-0.205l-175.488-409.6c-4.045-9.472-13.312-15.565-23.552-15.565s-19.507 6.093-23.552 15.514l-175.488 409.6c-0.051 0.051-0.051 0.154-0.102 0.205l-131.61 306.97c-5.53 13.005 0.461 28.058 13.44 33.664zM512 141.773l136.704 319.027h-273.408l136.704-319.027z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["type-string"],"grid":0},"attrs":[{}],"properties":{"order":48,"id":40,"name":"type-String","prevSize":24,"code":59687},"setIdx":0,"setId":1,"iconIdx":103},{"icon":{"paths":["M955.221 848c0-0.109 10.752 0 0 0-52.751-161.392-240.461-224-443.178-224-202.269 0-389.979 63.392-443.066 224-11.2-0.109 0-1.232 0 0 0 61.936 49.615 112 110.654 112h664.823c61.151 0 110.766-50.064 110.766-112zM290.399 288c0 123.648 99.231 336 221.645 336s221.645-212.352 221.645-336c0-123.648-99.231-224-221.645-224s-221.645 100.352-221.645 224z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["user"],"grid":0},"attrs":[{}],"properties":{"order":33,"id":41,"name":"user","prevSize":24,"code":59688},"setIdx":0,"setId":1,"iconIdx":104},{"icon":{"paths":["M469.333 614.997v281.003c0 23.552 19.115 42.667 42.667 42.667s42.667-19.115 42.667-42.667v-281.003l97.835 97.835c16.683 16.683 43.691 16.683 60.331 0s16.683-43.691 0-60.331l-170.667-170.667c-0.085-0.085-0.171-0.171-0.256-0.256-4.053-3.968-8.661-6.955-13.568-9.003-5.12-2.133-10.624-3.2-16.085-3.243-0.171 0-0.341 0-0.469 0-5.461 0.043-10.965 1.109-16.085 3.243-4.949 2.048-9.557 5.035-13.568 9.003-0.085 0.085-0.171 0.171-0.256 0.256l-170.667 170.667c-16.683 16.683-16.683 43.691 0 60.331s43.691 16.683 60.331 0zM890.411 822.101c30.379-16.555 56.149-38.443 76.672-63.915 21.333-26.411 36.949-56.619 46.379-88.576s12.629-65.835 9.003-99.584c-3.456-32.512-13.269-64.896-29.824-95.232-14.208-26.069-32.384-48.768-53.376-67.669-21.717-19.541-46.421-34.944-72.875-45.952-30.891-12.8-64.171-19.584-98.048-19.84h-22.528c-13.312-37.717-32.085-72.235-55.168-102.912-30.635-40.661-68.821-74.453-111.915-99.84s-91.179-42.411-141.568-49.536c-48.597-6.784-99.243-4.395-149.504 8.619s-95.744 35.413-134.912 64.939c-40.661 30.635-74.453 68.821-99.84 111.915s-42.411 91.179-49.493 141.568c-6.827 48.555-4.395 99.2 8.576 149.461 15.872 61.312 45.781 115.627 84.267 158.421 15.744 17.536 42.752 18.944 60.245 3.2s18.944-42.752 3.2-60.245c-29.355-32.64-52.693-74.667-65.109-122.752-10.155-39.253-11.989-78.592-6.699-116.224 5.504-39.125 18.773-76.501 38.571-110.123s46.080-63.317 77.653-87.083c30.379-22.869 65.664-40.32 104.917-50.475s78.592-11.989 116.224-6.699c39.125 5.504 76.544 18.731 110.123 38.528s63.317 46.080 87.083 77.653c22.869 30.379 40.32 65.664 50.475 104.917 4.907 18.56 21.547 32 41.301 32h53.461c22.869 0.171 45.269 4.736 65.92 13.312 17.707 7.339 34.133 17.621 48.512 30.592 13.909 12.501 25.984 27.605 35.541 45.099 11.093 20.352 17.579 41.899 19.883 63.488 2.389 22.443 0.256 45.013-6.016 66.432s-16.725 41.515-30.933 59.093c-13.611 16.896-30.763 31.445-51.115 42.581-20.693 11.264-28.331 37.205-17.024 57.899s37.205 28.331 57.899 17.024z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["upload-cloud"],"grid":0},"attrs":[{}],"properties":{"order":1,"id":2,"prevSize":24,"code":59763,"name":"upload-3"},"setIdx":0,"setId":1,"iconIdx":105},{"icon":{"paths":["M853.333 640v170.667c0 5.845-1.152 11.349-3.2 16.299-2.133 5.205-5.333 9.899-9.301 13.867s-8.661 7.125-13.867 9.301c-4.949 2.048-10.453 3.2-16.299 3.2h-597.333c-5.845 0-11.349-1.152-16.299-3.2-5.205-2.133-9.899-5.333-13.867-9.301s-7.125-8.661-9.301-13.867c-2.048-4.949-3.2-10.453-3.2-16.299v-170.667c0-23.552-19.115-42.667-42.667-42.667s-42.667 19.115-42.667 42.667v170.667c0 17.28 3.456 33.835 9.728 48.981 6.485 15.701 16 29.781 27.776 41.557s25.856 21.291 41.557 27.776c15.104 6.229 31.659 9.685 48.939 9.685h597.333c17.28 0 33.835-3.456 48.981-9.728 15.701-6.485 29.781-16 41.557-27.776s21.291-25.856 27.776-41.557c6.229-15.104 9.685-31.659 9.685-48.939v-170.667c0-23.552-19.115-42.667-42.667-42.667s-42.667 19.115-42.667 42.667zM469.333 230.997v409.003c0 23.552 19.115 42.667 42.667 42.667s42.667-19.115 42.667-42.667v-409.003l140.501 140.501c16.683 16.683 43.691 16.683 60.331 0s16.683-43.691 0-60.331l-213.333-213.333c-0.043-0.043-0.128-0.085-0.171-0.171-4.053-4.011-8.704-7.040-13.653-9.088-10.453-4.309-22.229-4.309-32.683 0-4.949 2.048-9.6 5.077-13.653 9.088-0.043 0.043-0.128 0.085-0.171 0.171l-213.333 213.333c-16.683 16.683-16.683 43.691 0 60.331s43.691 16.683 60.331 0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["upload"],"grid":0},"attrs":[{}],"properties":{"order":1,"id":1,"prevSize":24,"code":59761,"name":"upload-4"},"setIdx":0,"setId":1,"iconIdx":106},{"icon":{"paths":["M621.254 877.254l320-320c24.994-24.992 24.994-65.516 0-90.51l-320-320c-24.994-24.992-65.516-24.992-90.51 0-24.994 24.994-24.994 65.516 0 90.51l210.746 210.746h-613.49c-35.346 0-64 28.654-64 64s28.654 64 64 64h613.49l-210.746 210.746c-12.496 12.496-18.744 28.876-18.744 45.254s6.248 32.758 18.744 45.254c24.994 24.994 65.516 24.994 90.51 0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["arrow-right","right","next"],"grid":16},"attrs":[{}],"properties":{"order":1,"id":1,"prevSize":32,"code":59766,"name":"arrow-right"},"setIdx":0,"setId":1,"iconIdx":107},{"icon":{"paths":["M448 576h128v-256h192l-256-256-256 256h192zM640 432v98.712l293.066 109.288-421.066 157.018-421.066-157.018 293.066-109.288v-98.712l-384 144v256l512 192 512-192v-256z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["upload","load","arrow"],"grid":16},"attrs":[{}],"properties":{"order":1,"id":0,"prevSize":32,"code":59760,"name":"upload"},"setIdx":0,"setId":1,"iconIdx":108},{"icon":{"paths":["M585.143 548.557c0 9.728-3.986 18.871-10.862 25.71l-256 256c-6.839 6.839-16.018 10.862-25.71 10.862s-18.871-3.986-25.71-10.862l-256-256c-6.839-6.839-10.862-16.018-10.862-25.71 0-20.005 16.567-36.571 36.571-36.571h512c20.005 0 36.571 16.567 36.571 36.571z","M585.143 219.443c0 9.728-3.986 18.871-10.862 25.71l-256 256c-6.839 6.839-16.018 10.862-25.71 10.862s-18.871-3.986-25.71-10.862l-256-256c-6.839-6.839-10.862-16.018-10.862-25.71 0-20.005 16.567-36.571 36.571-36.571h512c20.005 0 36.571 16.567 36.571 36.571z"],"width":585,"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["caret-bottom"],"grid":16},"attrs":[{},{}],"properties":{"order":125,"id":0,"name":"caret-bottom","prevSize":32,"code":59755},"setIdx":0,"setId":1,"iconIdx":109},{"icon":{"paths":["M585.143 804.577c0 20.005-16.567 36.571-36.571 36.571h-512c-20.005 0-36.571-16.567-36.571-36.571 0-9.728 3.986-18.871 10.862-25.71l256-256c6.839-6.839 16.018-10.862 25.71-10.862s18.871 3.986 25.71 10.862l256 256c6.839 6.839 10.862 16.018 10.862 25.71z","M585.143 475.423c0 20.005-16.567 36.571-36.571 36.571h-512c-20.005 0-36.571-16.567-36.571-36.571 0-9.728 3.986-18.871 10.862-25.71l256-256c6.839-6.839 16.018-10.862 25.71-10.862s18.871 3.986 25.71 10.862l256 256c6.839 6.839 10.862 16.018 10.862 25.71z"],"width":585,"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["caret-top"],"grid":16},"attrs":[{},{}],"properties":{"order":124,"id":1,"name":"caret-top","prevSize":32,"code":59756},"setIdx":0,"setId":1,"iconIdx":110},{"icon":{"paths":["M256 102.4c-28.314 0-51.2 22.886-51.2 51.2v256h51.2v-256h307.2v153.6c0 28.314 22.886 51.2 51.2 51.2h153.6v512h-512v-460.8h-51.2v460.8c0 28.314 22.886 51.2 51.2 51.2h512c28.314 0 51.2-22.886 51.2-51.2v-548.2l-219.8-219.8h-292.2zM614.4 189.8l117.4 117.4h-117.4z","M408.906 587.72l-35.3-37 138.1-131.9 138 131.9-35.3 37-102.7-98.1z","M511.706 773.12l-138.1-131.9 35.3-37 102.8 98.1 102.7-98.1 35.3 37z"],"attrs":[{},{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["show"],"grid":16},"attrs":[{},{},{}],"properties":{"order":123,"id":2,"name":"show","prevSize":32,"code":59748},"setIdx":0,"setId":1,"iconIdx":111},{"icon":{"paths":["M256 102.4c-28.314 0-51.2 22.886-51.2 51.2v256h51.2v-256h307.2v153.6c0 28.314 22.886 51.2 51.2 51.2h153.6v512h-512v-460.8h-51.2v460.8c0 28.314 22.886 51.2 51.2 51.2h512c28.314 0 51.2-22.886 51.2-51.2v-548.2l-219.8-219.8h-292.2zM614.4 189.8l117.4 117.4h-117.4z","M348.394 15.988c-28.314 0-51.2 22.886-51.2 51.2v23.7h51.2v-23.7h307.2l204.8 204.8v512h-23.8v51.2h23.8c28.314 0 51.2-22.886 51.2-51.2v-548.2l-219.8-219.8h-292.2z","M408.906 587.72l-35.3-37 138.1-131.9 138 131.9-35.3 37-102.7-98.1z","M511.706 773.12l-138.1-131.9 35.3-37 102.8 98.1 102.7-98.1 35.3 37z"],"attrs":[{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["show-all"],"grid":16},"attrs":[{},{},{},{}],"properties":{"order":122,"id":3,"name":"show-all","prevSize":32,"code":59749},"setIdx":0,"setId":1,"iconIdx":112},{"icon":{"paths":["M256 102.4c-28.314 0-51.2 22.886-51.2 51.2v256h51.2v-256h307.2v153.6c0 28.314 22.886 51.2 51.2 51.2h153.6v512h-512v-460.8h-51.2v460.8c0 28.314 22.886 51.2 51.2 51.2h512c28.314 0 51.2-22.886 51.2-51.2v-548.2l-219.8-219.8h-292.2zM614.4 189.8l117.4 117.4h-117.4z","M408.9 418.8l-35.3 37 138 131.9 138.1-131.9-35.3-37-102.8 98.1z","M511.6 604.2l-138 131.9 35.3 37 102.7-98.1 102.8 98.1 35.3-37z"],"attrs":[{},{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["hide"],"grid":16},"attrs":[{},{},{}],"properties":{"order":121,"id":4,"name":"hide","prevSize":32,"code":59750},"setIdx":0,"setId":1,"iconIdx":113},{"icon":{"paths":["M408.9 418.8l-35.3 37 138.1 131.9 138-131.9-35.3-37-102.7 98.1z","M511.7 604.2l-138.1 131.9 35.3 37 102.8-98.1 102.7 98.1 35.3-37z","M256 102.4c-28.314 0-51.2 22.886-51.2 51.2v256h51.2v-256h307.2v153.6c0 28.314 22.886 51.2 51.2 51.2h153.6v512h-512v-460.8h-51.2v460.8c0 28.314 22.886 51.2 51.2 51.2h512c28.314 0 51.2-22.886 51.2-51.2v-548.2l-219.8-219.8h-292.2zM614.4 189.8l117.4 117.4h-117.4z","M348.394 15.988c-28.314 0-51.2 22.886-51.2 51.2v23.7h51.2v-23.7h307.2l204.8 204.8v512h-23.8v51.2h23.8c28.314 0 51.2-22.886 51.2-51.2v-548.2l-219.8-219.8h-292.2z"],"attrs":[{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["hide-all"],"grid":16},"attrs":[{},{},{},{}],"properties":{"order":120,"id":5,"name":"hide-all","prevSize":32,"code":59751},"setIdx":0,"setId":1,"iconIdx":114},{"icon":{"paths":["M512 1024c-136.76 0-265.334-53.258-362.040-149.96-96.702-96.706-149.96-225.28-149.96-362.040 0-96.838 27.182-191.134 78.606-272.692 50-79.296 120.664-143.372 204.356-185.3l43 85.832c-68.038 34.084-125.492 86.186-166.15 150.67-41.746 66.208-63.812 142.798-63.812 221.49 0 229.382 186.618 416 416 416s416-186.618 416-416c0-78.692-22.066-155.282-63.81-221.49-40.66-64.484-98.114-116.584-166.15-150.67l43-85.832c83.692 41.928 154.358 106.004 204.356 185.3 51.422 81.558 78.604 175.854 78.604 272.692 0 136.76-53.258 265.334-149.96 362.040-96.706 96.702-225.28 149.96-362.040 149.96z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["spinner","loading","loading-wheel","busy","wait"],"grid":16},"attrs":[{}],"properties":{"order":1,"id":6,"prevSize":32,"code":59737,"name":"spinner2"},"setIdx":0,"setId":1,"iconIdx":115},{"icon":{"paths":["M1024 397.050l-353.78-51.408-158.22-320.582-158.216 320.582-353.784 51.408 256 249.538-60.432 352.352 316.432-166.358 316.432 166.358-60.434-352.352 256.002-249.538z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["star-full","rate","star","favorite","bookmark"],"grid":16},"attrs":[{}],"properties":{"order":1,"id":7,"prevSize":32,"code":59741,"name":"star-full"},"setIdx":0,"setId":1,"iconIdx":116},{"icon":{"paths":["M1024 397.050l-353.78-51.408-158.22-320.582-158.216 320.582-353.784 51.408 256 249.538-60.432 352.352 316.432-166.358 316.432 166.358-60.434-352.352 256.002-249.538zM512 753.498l-223.462 117.48 42.676-248.83-180.786-176.222 249.84-36.304 111.732-226.396 111.736 226.396 249.836 36.304-180.788 176.222 42.678 248.83-223.462-117.48z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["star-empty","rate","star","favorite","bookmark"],"grid":16},"attrs":[{}],"properties":{"order":2,"id":8,"prevSize":32,"code":59742,"name":"star-empty"},"setIdx":0,"setId":1,"iconIdx":117},{"icon":{"paths":["M1024 226.4c-37.6 16.8-78.2 28-120.6 33 43.4-26 76.6-67.2 92.4-116.2-40.6 24-85.6 41.6-133.4 51-38.4-40.8-93-66.2-153.4-66.2-116 0-210 94-210 210 0 16.4 1.8 32.4 5.4 47.8-174.6-8.8-329.4-92.4-433-219.6-18 31-28.4 67.2-28.4 105.6 0 72.8 37 137.2 93.4 174.8-34.4-1-66.8-10.6-95.2-26.2 0 0.8 0 1.8 0 2.6 0 101.8 72.4 186.8 168.6 206-17.6 4.8-36.2 7.4-55.4 7.4-13.6 0-26.6-1.4-39.6-3.8 26.8 83.4 104.4 144.2 196.2 146-72 56.4-162.4 90-261 90-17 0-33.6-1-50.2-3 93.2 59.8 203.6 94.4 322.2 94.4 386.4 0 597.8-320.2 597.8-597.8 0-9.2-0.2-18.2-0.6-27.2 41-29.4 76.6-66.4 104.8-108.6z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["twitter","brand","tweet","social"],"grid":16},"attrs":[{}],"properties":{"order":1,"id":9,"prevSize":32,"code":59740,"name":"twitter"},"setIdx":0,"setId":1,"iconIdx":118},{"icon":{"paths":["M728.992 512c137.754-87.334 231.008-255.208 231.008-448 0-21.676-1.192-43.034-3.478-64h-889.042c-2.29 20.968-3.48 42.326-3.48 64 0 192.792 93.254 360.666 231.006 448-137.752 87.334-231.006 255.208-231.006 448 0 21.676 1.19 43.034 3.478 64h889.042c2.288-20.966 3.478-42.324 3.478-64 0.002-192.792-93.252-360.666-231.006-448zM160 960c0-186.912 80.162-345.414 224-397.708v-100.586c-143.838-52.29-224-210.792-224-397.706v0h704c0 186.914-80.162 345.416-224 397.706v100.586c143.838 52.294 224 210.796 224 397.708h-704zM619.626 669.594c-71.654-40.644-75.608-93.368-75.626-125.366v-64.228c0-31.994 3.804-84.914 75.744-125.664 38.504-22.364 71.808-56.348 97.048-98.336h-409.582c25.266 42.032 58.612 76.042 97.166 98.406 71.654 40.644 75.606 93.366 75.626 125.366v64.228c0 31.992-3.804 84.914-75.744 125.664-72.622 42.18-126.738 125.684-143.090 226.336h501.67c-16.364-100.708-70.53-184.248-143.212-226.406z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["hour-glass","loading","busy","wait"],"grid":16},"attrs":[{}],"properties":{"order":1,"id":10,"prevSize":32,"code":59732,"name":"hour-glass"},"setIdx":0,"setId":1,"iconIdx":119},{"icon":{"paths":["M192 512c0-12.18 0.704-24.196 2.030-36.022l-184.98-60.104c-5.916 31.14-9.050 63.264-9.050 96.126 0 147.23 62.166 279.922 161.654 373.324l114.284-157.296c-52.124-56.926-83.938-132.758-83.938-216.028zM832 512c0 83.268-31.812 159.102-83.938 216.028l114.284 157.296c99.488-93.402 161.654-226.094 161.654-373.324 0-32.862-3.132-64.986-9.048-96.126l-184.98 60.104c1.324 11.828 2.028 23.842 2.028 36.022zM576 198.408c91.934 18.662 169.544 76.742 214.45 155.826l184.978-60.102c-73.196-155.42-222.24-268.060-399.428-290.156v194.432zM233.55 354.232c44.906-79.084 122.516-137.164 214.45-155.826v-194.43c-177.188 22.096-326.23 134.736-399.426 290.154l184.976 60.102zM644.556 803.328c-40.39 18.408-85.272 28.672-132.556 28.672s-92.166-10.264-132.554-28.67l-114.292 157.31c73.206 40.366 157.336 63.36 246.846 63.36s173.64-22.994 246.848-63.36l-114.292-157.312z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["spinner","loading","loading-wheel","busy","wait"],"grid":16},"attrs":[{}],"properties":{"order":1,"id":11,"prevSize":32,"code":59731,"name":"spinner"},"setIdx":0,"setId":1,"iconIdx":120},{"icon":{"paths":["M658.744 749.256l-210.744-210.746v-282.51h128v229.49l173.256 173.254zM512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 896c-212.078 0-384-171.922-384-384s171.922-384 384-384c212.078 0 384 171.922 384 384s-171.922 384-384 384z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["clock","time","schedule"],"grid":16},"attrs":[{}],"properties":{"order":1,"id":12,"prevSize":32,"code":59728,"name":"clock"},"setIdx":0,"setId":1,"iconIdx":121},{"icon":{"paths":["M128 320v640c0 35.2 28.8 64 64 64h576c35.2 0 64-28.8 64-64v-640h-704zM320 896h-64v-448h64v448zM448 896h-64v-448h64v448zM576 896h-64v-448h64v448zM704 896h-64v-448h64v448z","M848 128h-208v-80c0-26.4-21.6-48-48-48h-224c-26.4 0-48 21.6-48 48v80h-208c-26.4 0-48 21.6-48 48v80h832v-80c0-26.4-21.6-48-48-48zM576 128h-192v-63.198h192v63.198z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["bin","trashcan","remove","delete","recycle","dispose"],"grid":16},"attrs":[{},{}],"properties":{"order":1,"id":13,"name":"bin2","prevSize":32,"code":59650},"setIdx":0,"setId":1,"iconIdx":122},{"icon":{"paths":["M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 960.002c-62.958 0-122.872-13.012-177.23-36.452l233.148-262.29c5.206-5.858 8.082-13.422 8.082-21.26v-96c0-17.674-14.326-32-32-32-112.99 0-232.204-117.462-233.374-118.626-6-6.002-14.14-9.374-22.626-9.374h-128c-17.672 0-32 14.328-32 32v192c0 12.122 6.848 23.202 17.69 28.622l110.31 55.156v187.886c-116.052-80.956-192-215.432-192-367.664 0-68.714 15.49-133.806 43.138-192h116.862c8.488 0 16.626-3.372 22.628-9.372l128-128c6-6.002 9.372-14.14 9.372-22.628v-77.412c40.562-12.074 83.518-18.588 128-18.588 70.406 0 137.004 16.26 196.282 45.2-4.144 3.502-8.176 7.164-12.046 11.036-36.266 36.264-56.236 84.478-56.236 135.764s19.97 99.5 56.236 135.764c36.434 36.432 85.218 56.264 135.634 56.26 3.166 0 6.342-0.080 9.518-0.236 13.814 51.802 38.752 186.656-8.404 372.334-0.444 1.744-0.696 3.488-0.842 5.224-81.324 83.080-194.7 134.656-320.142 134.656z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["earth","globe","language","web","internet","sphere","planet"],"defaultCode":59850,"grid":16},"attrs":[],"properties":{"ligatures":"earth, globe2","name":"earth","id":14,"order":91,"prevSize":32,"code":59850},"setIdx":0,"setId":1,"iconIdx":123},{"icon":{"paths":["M512.002 193.212v-65.212h128v-64c0-35.346-28.654-64-64.002-64h-191.998c-35.346 0-64 28.654-64 64v64h128v65.212c-214.798 16.338-384 195.802-384 414.788 0 229.75 186.25 416 416 416s416-186.25 416-416c0-218.984-169.202-398.448-384-414.788zM706.276 834.274c-60.442 60.44-140.798 93.726-226.274 93.726s-165.834-33.286-226.274-93.726c-60.44-60.44-93.726-140.8-93.726-226.274s33.286-165.834 93.726-226.274c58.040-58.038 134.448-91.018 216.114-93.548l-21.678 314.020c-1.86 26.29 12.464 37.802 31.836 37.802s33.698-11.512 31.836-37.802l-21.676-314.022c81.666 2.532 158.076 35.512 216.116 93.55 60.44 60.44 93.726 140.8 93.726 226.274s-33.286 165.834-93.726 226.274z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["stopwatch","time","speed","meter","chronometer"],"grid":16},"attrs":[{}],"properties":{"order":1,"id":15,"prevSize":32,"code":59715,"name":"elapsed"},"setIdx":0,"setId":1,"iconIdx":124},{"icon":{"paths":["M522.2 438.8v175.6h290.4c-11.8 75.4-87.8 220.8-290.4 220.8-174.8 0-317.4-144.8-317.4-323.2s142.6-323.2 317.4-323.2c99.4 0 166 42.4 204 79l139-133.8c-89.2-83.6-204.8-134-343-134-283 0-512 229-512 512s229 512 512 512c295.4 0 491.6-207.8 491.6-500.2 0-33.6-3.6-59.2-8-84.8l-483.6-0.2z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["google","brand"],"grid":16},"attrs":[{}],"properties":{"order":1,"id":16,"prevSize":32,"code":59707,"name":"google"},"setIdx":0,"setId":1,"iconIdx":125},{"icon":{"paths":["M592 448h-16v-192c0-105.87-86.13-192-192-192h-128c-105.87 0-192 86.13-192 192v192h-16c-26.4 0-48 21.6-48 48v480c0 26.4 21.6 48 48 48h544c26.4 0 48-21.6 48-48v-480c0-26.4-21.6-48-48-48zM192 256c0-35.29 28.71-64 64-64h128c35.29 0 64 28.71 64 64v192h-256v-192z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["lock","secure","private","encrypted"],"grid":16},"attrs":[{}],"properties":{"order":2,"id":17,"prevSize":32,"code":59700,"name":"lock"},"setIdx":0,"setId":1,"iconIdx":126},{"icon":{"paths":["M0.35 512l-0.35-312.074 384-52.144v364.218zM448 138.482l511.872-74.482v448h-511.872zM959.998 576l-0.126 448-511.872-72.016v-375.984zM384 943.836l-383.688-52.594-0.020-315.242h383.708z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["windows8","brand","os"],"grid":16},"attrs":[{}],"properties":{"order":1,"id":18,"prevSize":32,"code":59712,"name":"microsoft"},"setIdx":0,"setId":1,"iconIdx":127},{"icon":{"paths":["M128 128h320v768h-320zM576 128h320v768h-320z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["pause","player"],"grid":16},"attrs":[{}],"properties":{"order":2,"id":19,"prevSize":32,"code":59695,"name":"pause"},"setIdx":0,"setId":1,"iconIdx":128},{"icon":{"paths":["M192 128l640 384-640 384z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["play","player"],"grid":16},"attrs":[{}],"properties":{"order":3,"id":20,"prevSize":32,"code":59696,"name":"play"},"setIdx":0,"setId":1,"iconIdx":129},{"icon":{"paths":["M889.68 166.32c-93.608-102.216-228.154-166.32-377.68-166.32-282.77 0-512 229.23-512 512h96c0-229.75 186.25-416 416-416 123.020 0 233.542 53.418 309.696 138.306l-149.696 149.694h352v-352l-134.32 134.32z","M928 512c0 229.75-186.25 416-416 416-123.020 0-233.542-53.418-309.694-138.306l149.694-149.694h-352v352l134.32-134.32c93.608 102.216 228.154 166.32 377.68 166.32 282.77 0 512-229.23 512-512h-96z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["loop","repeat","player","reload","refresh","update","synchronize","arrows"],"grid":16},"attrs":[{},{}],"properties":{"order":49,"id":21,"prevSize":32,"code":59694,"name":"reset"},"setIdx":0,"setId":1,"iconIdx":130},{"icon":{"paths":["M933.79 610.25c-53.726-93.054-21.416-212.304 72.152-266.488l-100.626-174.292c-28.75 16.854-62.176 26.518-97.846 26.518-107.536 0-194.708-87.746-194.708-195.99h-201.258c0.266 33.41-8.074 67.282-25.958 98.252-53.724 93.056-173.156 124.702-266.862 70.758l-100.624 174.292c28.97 16.472 54.050 40.588 71.886 71.478 53.638 92.908 21.512 211.92-71.708 266.224l100.626 174.292c28.65-16.696 61.916-26.254 97.4-26.254 107.196 0 194.144 87.192 194.7 194.958h201.254c-0.086-33.074 8.272-66.57 25.966-97.218 53.636-92.906 172.776-124.594 266.414-71.012l100.626-174.29c-28.78-16.466-53.692-40.498-71.434-71.228zM512 719.332c-114.508 0-207.336-92.824-207.336-207.334 0-114.508 92.826-207.334 207.336-207.334 114.508 0 207.332 92.826 207.332 207.334-0.002 114.51-92.824 207.334-207.332 207.334z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["cog","gear","preferences","settings","generate","control","options"],"grid":16},"attrs":[{}],"properties":{"order":1,"id":22,"prevSize":32,"code":59693,"name":"settings2"},"setIdx":0,"setId":1,"iconIdx":131},{"icon":{"paths":["M512 128c-247.424 0-448 200.576-448 448s200.576 448 448 448 448-200.576 448-448-200.576-448-448-448zM512 936c-198.824 0-360-161.178-360-360 0-198.824 161.176-360 360-360 198.822 0 360 161.176 360 360 0 198.822-161.178 360-360 360zM934.784 287.174c16.042-28.052 25.216-60.542 25.216-95.174 0-106.040-85.96-192-192-192-61.818 0-116.802 29.222-151.92 74.596 131.884 27.236 245.206 105.198 318.704 212.578v0zM407.92 74.596c-35.116-45.374-90.102-74.596-151.92-74.596-106.040 0-192 85.96-192 192 0 34.632 9.174 67.122 25.216 95.174 73.5-107.38 186.822-185.342 318.704-212.578z","M512 576v-256h-64v320h256v-64z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"tags":["alarm","time","clock"],"grid":16},"attrs":[{},{}],"properties":{"order":2,"id":23,"prevSize":32,"code":59716,"name":"timeout"},"setIdx":0,"setId":1,"iconIdx":132},{"icon":{"paths":["M768 64c105.87 0 192 86.13 192 192v192h-128v-192c0-35.29-28.71-64-64-64h-128c-35.29 0-64 28.71-64 64v192h16c26.4 0 48 21.6 48 48v480c0 26.4-21.6 48-48 48h-544c-26.4 0-48-21.6-48-48v-480c0-26.4 21.6-48 48-48h400v-192c0-105.87 86.13-192 192-192h128z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["unlocked","lock-open"],"grid":16},"attrs":[{}],"properties":{"order":1,"id":24,"prevSize":32,"code":59699,"name":"unlocked"},"setIdx":0,"setId":1,"iconIdx":133},{"icon":{"paths":["M832 416h-320v64h-64v-96h384v-192h-32v96c0 17.664-14.336 32-32 32h-576c-17.696 0-32-14.336-32-32v-128c0-17.696 14.304-32 32-32h576c17.664 0 32 14.304 32 32h64v256h-32zM736 160h-512v32h512v-32zM544 832c0 35.328-28.672 64-64 64s-64-28.672-64-64v-320h128v320zM480 786.656c-17.696 0-32 14.336-32 32 0 17.696 14.304 32 32 32 17.664 0 32-14.304 32-32 0-17.664-14.336-32-32-32z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["paint","tool"],"grid":32},"attrs":[{}],"properties":{"order":1,"id":0,"prevSize":32,"code":59725,"name":"control-Color"},"setIdx":0,"setId":1,"iconIdx":134},{"icon":{"paths":["M1328 320c-8.832 0-16 7.168-16 16v640c0 8.832-7.168 16-16 16h-1248c-8.832 0-16-7.168-16-16v-640c0-8.832-7.168-16-16-16s-16 7.168-16 16v640c0 26.464 21.536 48 48 48h1248c26.464 0 48-21.536 48-48v-640c0-8.832-7.168-16-16-16zM1296 0h-1248c-26.464 0-48 21.536-48 48v192c0 8.832 7.168 16 16 16h1312c8.832 0 16-7.168 16-16v-192c0-26.464-21.536-48-48-48zM1312 224h-1280v-176c0-8.832 7.168-16 16-16h1248c8.832 0 16 7.168 16 16v176zM560 896c8.832 0 16-7.168 16-16v-512c0-8.832-7.168-16-16-16h-416c-8.832 0-16 7.168-16 16v512c0 8.832 7.168 16 16 16h416zM160 384h384v480h-384v-480zM720 480h480c8.832 0 16-7.168 16-16s-7.168-16-16-16h-480c-8.832 0-16 7.168-16 16s7.168 16 16 16zM720 640h480c8.832 0 16-7.168 16-16s-7.168-16-16-16h-480c-8.832 0-16 7.168-16 16s7.168 16 16 16zM720 800h480c8.832 0 16-7.168 16-16s-7.168-16-16-16h-480c-8.832 0-16 7.168-16 16s7.168 16 16 16zM96 128c0 17.673 14.327 32 32 32s32-14.327 32-32c0-17.673-14.327-32-32-32s-32 14.327-32 32zM224 128c0 17.673 14.327 32 32 32s32-14.327 32-32c0-17.673-14.327-32-32-32s-32 14.327-32 32zM352 128c0 17.673 14.327 32 32 32s32-14.327 32-32c0-17.673-14.327-32-32-32s-32 14.327-32 32z"],"width":1344,"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["browser","window","software","program"],"grid":32},"attrs":[{}],"properties":{"order":1,"id":1,"prevSize":32,"code":59701,"name":"browser"},"setIdx":0,"setId":1,"iconIdx":135},{"icon":{"paths":["M927.936 272.992l-68.288-68.288c-12.608-12.576-32.96-12.576-45.536 0l-409.44 409.44-194.752-196.16c-12.576-12.576-32.928-12.576-45.536 0l-68.288 68.288c-12.576 12.608-12.576 32.96 0 45.536l285.568 287.488c12.576 12.576 32.96 12.576 45.536 0l500.736-500.768c12.576-12.544 12.576-32.96 0-45.536z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["checkmark","tick","approve","submit"],"grid":32},"attrs":[{}],"properties":{"order":1,"id":2,"prevSize":32,"code":59714,"name":"checkmark"},"setIdx":0,"setId":1,"iconIdx":136},{"icon":{"paths":["M1020.192 401.824c-8.864-25.568-31.616-44.288-59.008-48.352l-266.432-39.616-115.808-240.448c-12.192-25.248-38.272-41.408-66.944-41.408s-54.752 16.16-66.944 41.408l-115.808 240.448-266.464 39.616c-27.36 4.064-50.112 22.784-58.944 48.352-8.8 25.632-2.144 53.856 17.184 73.12l195.264 194.944-45.28 270.432c-4.608 27.232 7.2 54.56 30.336 70.496 12.704 8.736 27.648 13.184 42.592 13.184 12.288 0 24.608-3.008 35.776-8.992l232.288-125.056 232.32 125.056c11.168 5.984 23.488 8.992 35.744 8.992 14.944 0 29.888-4.448 42.624-13.184 23.136-15.936 34.88-43.264 30.304-70.496l-45.312-270.432 195.328-194.944c19.296-19.296 25.92-47.52 17.184-73.12zM754.816 619.616c-16.384 16.32-23.808 39.328-20.064 61.888l45.312 270.432-232.32-124.992c-11.136-6.016-23.424-8.992-35.776-8.992-12.288 0-24.608 3.008-35.744 8.992l-232.32 124.992 45.312-270.432c3.776-22.56-3.648-45.568-20.032-61.888l-195.264-194.944 266.432-39.68c24.352-3.616 45.312-18.848 55.776-40.576l115.872-240.384 115.84 240.416c10.496 21.728 31.424 36.928 55.744 40.576l266.496 39.68-195.264 194.912z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["star","favorite"],"grid":32},"attrs":[{}],"properties":{"order":1,"id":3,"prevSize":32,"code":59706,"name":"control-Stars"},"setIdx":0,"setId":1,"iconIdx":137},{"icon":{"paths":["M409.6 204.8h-153.6c-28.314 0-51.2 22.886-51.2 51.2v153.6c0 28.262 22.886 51.2 51.2 51.2h153.6c28.314 0 51.2-22.938 51.2-51.2v-153.6c0-28.262-22.886-51.2-51.2-51.2zM768 204.8h-153.6c-28.314 0-51.2 22.886-51.2 51.2v153.6c0 28.262 22.886 51.2 51.2 51.2h153.6c28.314 0 51.2-22.938 51.2-51.2v-153.6c0-28.262-22.886-51.2-51.2-51.2zM409.6 563.2h-153.6c-28.314 0-51.2 22.886-51.2 51.2v153.6c0 28.262 22.886 51.2 51.2 51.2h153.6c28.314 0 51.2-22.938 51.2-51.2v-153.6c0-28.262-22.886-51.2-51.2-51.2zM768 563.2h-153.6c-28.314 0-51.2 22.886-51.2 51.2v153.6c0 28.262 22.886 51.2 51.2 51.2h153.6c28.314 0 51.2-22.938 51.2-51.2v-153.6c0-28.262-22.886-51.2-51.2-51.2z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["grid"],"grid":20},"attrs":[{}],"properties":{"order":1,"id":0,"prevSize":20,"code":59730,"name":"grid1"},"setIdx":0,"setId":1,"iconIdx":138},{"icon":{"paths":["M737.28 460.8h-296.96c-28.262 0-30.72 22.886-30.72 51.2s2.458 51.2 30.72 51.2h296.96c28.262 0 30.72-22.886 30.72-51.2s-2.458-51.2-30.72-51.2zM839.68 716.8h-399.36c-28.262 0-30.72 22.886-30.72 51.2s2.458 51.2 30.72 51.2h399.36c28.262 0 30.72-22.886 30.72-51.2s-2.458-51.2-30.72-51.2zM440.32 307.2h399.36c28.262 0 30.72-22.886 30.72-51.2s-2.458-51.2-30.72-51.2h-399.36c-28.262 0-30.72 22.886-30.72 51.2s2.458 51.2 30.72 51.2zM276.48 460.8h-92.16c-28.262 0-30.72 22.886-30.72 51.2s2.458 51.2 30.72 51.2h92.16c28.262 0 30.72-22.886 30.72-51.2s-2.458-51.2-30.72-51.2zM276.48 716.8h-92.16c-28.262 0-30.72 22.886-30.72 51.2s2.458 51.2 30.72 51.2h92.16c28.262 0 30.72-22.886 30.72-51.2s-2.458-51.2-30.72-51.2zM276.48 204.8h-92.16c-28.262 0-30.72 22.886-30.72 51.2s2.458 51.2 30.72 51.2h92.16c28.262 0 30.72-22.886 30.72-51.2s-2.458-51.2-30.72-51.2z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["list"],"grid":20},"attrs":[{}],"properties":{"order":1,"id":1,"name":"list","prevSize":20,"code":59726},"setIdx":0,"setId":1,"iconIdx":139},{"icon":{"paths":["M636.518 0c68.608 0 102.912 46.694 102.912 100.198 0 66.816-59.597 128.614-137.165 128.614-64.973 0-102.861-38.4-101.069-101.888 0-53.402 45.107-126.925 135.322-126.925zM425.421 1024c-54.17 0-93.85-33.382-55.962-180.429l62.157-260.71c10.803-41.677 12.595-58.419 0-58.419-16.23 0-86.477 28.774-128.102 57.19l-27.034-45.056c131.686-111.923 283.187-177.51 348.211-177.51 54.118 0 63.13 65.178 36.096 165.376l-71.219 274.022c-12.595 48.384-7.219 65.075 5.427 65.075 16.23 0 69.478-20.070 121.805-61.798l30.72 41.677c-128.102 130.406-268.032 180.582-322.099 180.582z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["info"],"grid":20},"attrs":[{}],"properties":{"order":1,"id":2,"prevSize":20,"code":59708,"name":"info"},"setIdx":0,"setId":1,"iconIdx":140}],"height":1024,"metadata":{"name":"icomoon"},"preferences":{"showGlyphs":true,"showCodes":true,"showQuickUse":true,"showQuickUse2":true,"showSVGs":true,"fontPref":{"prefix":"icon-","metadata":{"fontFamily":"icomoon"},"metrics":{"emSize":1024,"baseline":6.25,"whitespace":50},"embed":false},"imagePref":{"prefix":"icon-","png":true,"useClassSelector":true,"color":0,"bgColor":16777215,"name":"icomoon","classSelector":".icon"},"historySize":50,"gridSize":16}} \ No newline at end of file diff --git a/frontend/app/theme/icomoon/style.css b/frontend/app/theme/icomoon/style.css index 2c7e0e094..96e56acaa 100644 --- a/frontend/app/theme/icomoon/style.css +++ b/frontend/app/theme/icomoon/style.css @@ -1,10 +1,10 @@ @font-face { font-family: 'icomoon'; - src: url('fonts/icomoon.eot?epjxtr'); - src: url('fonts/icomoon.eot?epjxtr#iefix') format('embedded-opentype'), - url('fonts/icomoon.ttf?epjxtr') format('truetype'), - url('fonts/icomoon.woff?epjxtr') format('woff'), - url('fonts/icomoon.svg?epjxtr#icomoon') format('svg'); + src: url('fonts/icomoon.eot?osg65x'); + src: url('fonts/icomoon.eot?osg65x#iefix') format('embedded-opentype'), + url('fonts/icomoon.ttf?osg65x') format('truetype'), + url('fonts/icomoon.woff?osg65x') format('woff'), + url('fonts/icomoon.svg?osg65x#icomoon') format('svg'); font-weight: normal; font-style: normal; font-display: block; @@ -25,80 +25,8 @@ -moz-osx-font-smoothing: grayscale; } -.icon-enter:before { - content: "\e984"; -} -.icon-zoom_out:before { - content: "\e982"; -} -.icon-zoom_in:before { - content: "\e983"; -} -.icon-flip:before { - content: "\e97f"; -} -.icon-rotate_right:before { - content: "\e980"; -} -.icon-rotate_left:before { - content: "\e981"; -} -.icon-create_new_folder:before { - content: "\e97b"; -} -.icon-folder:before { - content: "\e97c"; -} -.icon-help2:before { - content: "\e97a"; -} -.icon-trigger-Manual:before { - content: "\e979"; -} -.icon-play-line:before { - content: "\e979"; -} -.icon-corner-down-right:before { - content: "\e977"; -} -.icon-info-outline:before { - content: "\e974"; -} -.icon-upload-2:before { - content: "\e972"; -} -.icon-translate:before { - content: "\e96f"; -} -.icon-arrow_back:before { - content: "\e96e"; -} -.icon-external-link:before { - content: "\e96d"; -} -.icon-minus-square:before { - content: "\e969"; -} -.icon-plus-square:before { - content: "\e968"; -} -.icon-drag2:before { - content: "\e961"; -} -.icon-comments:before { - content: "\e95f"; -} -.icon-backup:before { - content: "\e95b"; -} -.icon-support:before { - content: "\e95a"; -} -.icon-control-RichText:before { - content: "\e939"; -} -.icon-download:before { - content: "\e93e"; +.icon-plugin:before { + content: "\e985"; } .icon-angle-double-right:before { content: "\e97d"; @@ -214,6 +142,81 @@ .icon-search-Rule:before { content: "\e947"; } +.icon-enter:before { + content: "\e984"; +} +.icon-zoom_out:before { + content: "\e982"; +} +.icon-zoom_in:before { + content: "\e983"; +} +.icon-flip:before { + content: "\e97f"; +} +.icon-rotate_right:before { + content: "\e980"; +} +.icon-rotate_left:before { + content: "\e981"; +} +.icon-create_new_folder:before { + content: "\e97b"; +} +.icon-folder:before { + content: "\e97c"; +} +.icon-help2:before { + content: "\e97a"; +} +.icon-trigger-Manual:before { + content: "\e979"; +} +.icon-play-line:before { + content: "\e979"; +} +.icon-corner-down-right:before { + content: "\e977"; +} +.icon-info-outline:before { + content: "\e974"; +} +.icon-upload-2:before { + content: "\e972"; +} +.icon-translate:before { + content: "\e96f"; +} +.icon-arrow_back:before { + content: "\e96e"; +} +.icon-external-link:before { + content: "\e96d"; +} +.icon-minus-square:before { + content: "\e969"; +} +.icon-plus-square:before { + content: "\e968"; +} +.icon-drag2:before { + content: "\e961"; +} +.icon-comments:before { + content: "\e95f"; +} +.icon-backup:before { + content: "\e95b"; +} +.icon-support:before { + content: "\e95a"; +} +.icon-control-RichText:before { + content: "\e939"; +} +.icon-download:before { + content: "\e93e"; +} .icon-type-UI:before { content: "\e975"; }