diff --git a/.gitignore b/.gitignore index 0c359e1a4..47029d5e0 100644 --- a/.gitignore +++ b/.gitignore @@ -273,3 +273,4 @@ src/Mix.Cms.Web/wwwroot/css/app-vendor-scss.min.css src/Mix.Cms.Web/MixContent/mix-cms.db-wal src/Mix.Cms.Web/MixContent/mix-cms.db-shm +/src/Mix.Cms.Web/wwwroot/mix-content/exports diff --git a/src/Mix.Cms.Api.RestFul/Controllers/v1/Configurations/ApiConfigurationPortalController.cs b/src/Mix.Cms.Api.RestFul/Controllers/v1/Configurations/ApiConfigurationPortalController.cs index f6ce2fd9c..745e56926 100644 --- a/src/Mix.Cms.Api.RestFul/Controllers/v1/Configurations/ApiConfigurationPortalController.cs +++ b/src/Mix.Cms.Api.RestFul/Controllers/v1/Configurations/ApiConfigurationPortalController.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using Microsoft.AspNetCore.Mvc; +using Mix.Cms.Lib.Constants; using Mix.Cms.Lib.Controllers; using Mix.Cms.Lib.Enums; using Mix.Cms.Lib.Models.Cms; @@ -19,14 +20,14 @@ namespace Mix.Cms.Api.RestFul.Controllers.v1 public class ApiConfigurationPortalController : BaseAuthorizedRestApiController { - // GET: api/s + [HttpGet] public override async Task>> Get() { - bool isStatus = Enum.TryParse(Request.Query["status"], out MixContentStatus status); - bool isFromDate = DateTime.TryParse(Request.Query["fromDate"], out DateTime fromDate); - bool isToDate = DateTime.TryParse(Request.Query["toDate"], out DateTime toDate); - string keyword = Request.Query["keyword"]; + bool isStatus = Enum.TryParse(Request.Query[MixRequestQueryKeywords.Status], out MixContentStatus status); + bool isFromDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.FromDate], out DateTime fromDate); + bool isToDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.ToDate], out DateTime toDate); + string keyword = Request.Query[MixRequestQueryKeywords.Keyword]; string category = Request.Query["category"]; Expression> predicate = model => model.Specificulture == _lang diff --git a/src/Mix.Cms.Api.RestFul/Controllers/v1/Languages/ApiLanguageController.cs b/src/Mix.Cms.Api.RestFul/Controllers/v1/Languages/ApiLanguageController.cs index 74742f7ed..21320004b 100644 --- a/src/Mix.Cms.Api.RestFul/Controllers/v1/Languages/ApiLanguageController.cs +++ b/src/Mix.Cms.Api.RestFul/Controllers/v1/Languages/ApiLanguageController.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using Microsoft.AspNetCore.Mvc; +using Mix.Cms.Lib.Constants; using Mix.Cms.Lib.Controllers; using Mix.Cms.Lib.Enums; using Mix.Cms.Lib.Models.Cms; @@ -19,14 +20,14 @@ namespace Mix.Cms.Api.RestFul.Controllers.v1 public class ApiLanguageController : BaseAuthorizedRestApiController { - // GET: api/s + [HttpGet] public override async Task>> Get() { - bool isStatus = Enum.TryParse(Request.Query["status"], out MixContentStatus status); - bool isFromDate = DateTime.TryParse(Request.Query["fromDate"], out DateTime fromDate); - bool isToDate = DateTime.TryParse(Request.Query["toDate"], out DateTime toDate); - string keyword = Request.Query["keyword"]; + bool isStatus = Enum.TryParse(Request.Query[MixRequestQueryKeywords.Status], out MixContentStatus status); + bool isFromDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.FromDate], out DateTime fromDate); + bool isToDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.ToDate], out DateTime toDate); + string keyword = Request.Query[MixRequestQueryKeywords.Keyword]; Expression> predicate = model => model.Specificulture == _lang && (!isStatus || model.Status == status) diff --git a/src/Mix.Cms.Api.RestFul/Controllers/v1/AttributeSetFields/ApiAttributeSetFieldController.cs b/src/Mix.Cms.Api.RestFul/Controllers/v1/MixDatabaseColumns/ApiMixDatabaseColumnController.cs similarity index 58% rename from src/Mix.Cms.Api.RestFul/Controllers/v1/AttributeSetFields/ApiAttributeSetFieldController.cs rename to src/Mix.Cms.Api.RestFul/Controllers/v1/MixDatabaseColumns/ApiMixDatabaseColumnController.cs index ca7f6ba2e..40c457ad6 100644 --- a/src/Mix.Cms.Api.RestFul/Controllers/v1/AttributeSetFields/ApiAttributeSetFieldController.cs +++ b/src/Mix.Cms.Api.RestFul/Controllers/v1/MixDatabaseColumns/ApiMixDatabaseColumnController.cs @@ -3,10 +3,11 @@ // See the LICENSE file in the project root for more information. using Microsoft.AspNetCore.Mvc; +using Mix.Cms.Lib.Constants; using Mix.Cms.Lib.Controllers; using Mix.Cms.Lib.Enums; using Mix.Cms.Lib.Models.Cms; -using Mix.Cms.Lib.ViewModels.MixAttributeFields; +using Mix.Cms.Lib.ViewModels.MixDatabaseColumns; using Mix.Domain.Core.ViewModels; using System; using System.Linq.Expressions; @@ -15,24 +16,24 @@ namespace Mix.Cms.Api.RestFul.Controllers.v1 { [Produces("application/json")] - [Route("api/v1/rest/attribute-field/portal")] - public class ApiAttributeFieldController : - BaseAuthorizedRestApiController + [Route("api/v1/rest/mix-database-column/portal")] + public class ApiMixDatabaseColumnController : + BaseAuthorizedRestApiController { - // GET: api/v1/rest/en-us/attribute-field/client + // GET: api/v1/rest/en-us/mix-database-column/client [HttpGet] public override async Task>> Get() { - bool isStatus = Enum.TryParse(Request.Query["status"], out MixContentStatus status); - bool isFromDate = DateTime.TryParse(Request.Query["fromDate"], out DateTime fromDate); - bool isToDate = DateTime.TryParse(Request.Query["toDate"], out DateTime toDate); - string keyword = Request.Query["keyword"]; - Expression> predicate = model => + bool isStatus = Enum.TryParse(Request.Query[MixRequestQueryKeywords.Status], out MixContentStatus status); + bool isFromDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.FromDate], out DateTime fromDate); + bool isToDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.ToDate], out DateTime toDate); + string keyword = Request.Query[MixRequestQueryKeywords.Keyword]; + Expression> predicate = model => (!isStatus || model.Status == status) && (!isFromDate || model.CreatedDateTime >= fromDate) && (!isToDate || model.CreatedDateTime <= toDate) && (string.IsNullOrEmpty(keyword) - || model.AttributeSetName.Contains(keyword) + || model.MixDatabaseName.Contains(keyword) || model.Name.Contains(keyword) || model.DefaultValue.Contains(keyword) ); @@ -47,12 +48,12 @@ public override async Task>> Get() } } - // GET: api/v1/rest/en-us/attribute-field/client - [HttpGet("init/{attributeSet}")] - public async Task>> Init(string attributeSet) + // GET: api/v1/rest/en-us/mix-database-column/client + [HttpGet("init/{mixDatabase}")] + public async Task>> Init(string mixDatabase) { - int.TryParse(attributeSet, out int attributeSetId); - var getData = await UpdateViewModel.Repository.GetModelListByAsync(f => f.AttributeSetName == attributeSet || f.AttributeSetId == attributeSetId + int.TryParse(mixDatabase, out int mixDatabaseId); + var getData = await UpdateViewModel.Repository.GetModelListByAsync(f => f.MixDatabaseName == mixDatabase || f.MixDatabaseId == mixDatabaseId , _context, _transaction); if (getData.IsSucceed) diff --git a/src/Mix.Cms.Api.RestFul/Controllers/v1/RelatedAttributeData/ApiRelatedAttributeDataPortalController.cs b/src/Mix.Cms.Api.RestFul/Controllers/v1/MixDatabaseDataAssociations/ApiMixDatabaseDataAssociationPortalController.cs similarity index 66% rename from src/Mix.Cms.Api.RestFul/Controllers/v1/RelatedAttributeData/ApiRelatedAttributeDataPortalController.cs rename to src/Mix.Cms.Api.RestFul/Controllers/v1/MixDatabaseDataAssociations/ApiMixDatabaseDataAssociationPortalController.cs index 2ca25e751..81a7b0637 100644 --- a/src/Mix.Cms.Api.RestFul/Controllers/v1/RelatedAttributeData/ApiRelatedAttributeDataPortalController.cs +++ b/src/Mix.Cms.Api.RestFul/Controllers/v1/MixDatabaseDataAssociations/ApiMixDatabaseDataAssociationPortalController.cs @@ -6,7 +6,7 @@ using Mix.Cms.Lib.Controllers; using Mix.Cms.Lib.Enums; using Mix.Cms.Lib.Models.Cms; -using Mix.Cms.Lib.ViewModels.MixRelatedAttributeDatas; +using Mix.Cms.Lib.ViewModels.MixDatabaseDataAssociations; using Mix.Domain.Core.ViewModels; using System; using System.Linq.Expressions; @@ -15,27 +15,27 @@ namespace Mix.Cms.Api.RestFul.Controllers.v1 { [Produces("application/json")] - [Route("api/v1/rest/{culture}/related-attribute-data/portal")] - public class ApiRelatedAttributeDataPortalController : - BaseAuthorizedRestApiController + [Route("api/v1/rest/{culture}/mix-database-data-association/portal")] + public class ApiMixDatabaseDataAssociationPortalController : + BaseAuthorizedRestApiController { - // GET: api/v1/rest/{culture}/related-attribute-data + // GET: api/v1/rest/{culture}/mix-database-data-association [HttpGet] public override async Task>> Get() { bool isStatus = Enum.TryParse(Request.Query["status"], out MixContentStatus status); - bool isAttributeId = int.TryParse(Request.Query["attributeSetId"], out int attributeSetId); + bool isAttributeId = int.TryParse(Request.Query["mixDatabaseId"], out int mixDatabaseId); bool isFromDate = DateTime.TryParse(Request.Query["fromDate"], out DateTime fromDate); bool isToDate = DateTime.TryParse(Request.Query["toDate"], out DateTime toDate); bool isParentType = Enum.TryParse(Request.Query["parentType"], out MixDatabaseParentType parentType); string parentId = Request.Query["parentId"]; - string attributeSetName = Request.Query["attributeSetName"]; - Expression> predicate = model => + string mixDatabaseName = Request.Query["mixDatabaseName"]; + Expression> predicate = model => model.Specificulture == _lang && (!isStatus || model.Status == status) && (!isFromDate || model.CreatedDateTime >= fromDate) && (!isToDate || model.CreatedDateTime <= toDate) - && ((isAttributeId && model.AttributeSetId == attributeSetId) || model.AttributeSetName == attributeSetName) + && ((isAttributeId && model.MixDatabaseId == mixDatabaseId) || model.MixDatabaseName == mixDatabaseName) && (string.IsNullOrEmpty(parentId) || (model.ParentId == parentId && model.ParentType == parentType) ); @@ -55,8 +55,8 @@ public override async Task>> Get() //[Route("navigation/{name}")] //public async Task> GetNavigation(string name) //{ - // var navs = await Lib.ViewModels.MixAttributeSetDatas.Helper.FilterByKeywordAsync( - // _lang, MixConstants.AttributeSetName.NAVIGATION, "equal", "name", name); + // var navs = await Lib.ViewModels.MixDatabaseDatas.Helper.FilterByKeywordAsync( + // _lang, MixConstants.MixDatabaseName.NAVIGATION, "equal", "name", name); // return Ok(navs.Data.FirstOrDefault()?.Nav); //} } diff --git a/src/Mix.Cms.Api.RestFul/Controllers/v1/AttributeSetValues/ApiAttributeSetValueController.cs b/src/Mix.Cms.Api.RestFul/Controllers/v1/MixDatabaseDataValues/ApiMixDatabaseDataValueController.cs similarity index 68% rename from src/Mix.Cms.Api.RestFul/Controllers/v1/AttributeSetValues/ApiAttributeSetValueController.cs rename to src/Mix.Cms.Api.RestFul/Controllers/v1/MixDatabaseDataValues/ApiMixDatabaseDataValueController.cs index d0c39fde4..be7a68941 100644 --- a/src/Mix.Cms.Api.RestFul/Controllers/v1/AttributeSetValues/ApiAttributeSetValueController.cs +++ b/src/Mix.Cms.Api.RestFul/Controllers/v1/MixDatabaseDataValues/ApiMixDatabaseDataValueController.cs @@ -3,10 +3,11 @@ // See the LICENSE file in the project root for more information. using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; using Mix.Cms.Lib.Controllers; using Mix.Cms.Lib.Enums; using Mix.Cms.Lib.Models.Cms; -using Mix.Cms.Lib.ViewModels.MixAttributeSetValues; +using Mix.Cms.Lib.ViewModels.MixDatabaseDataValues; using Mix.Domain.Core.ViewModels; using System; using System.Linq.Expressions; @@ -15,11 +16,11 @@ namespace Mix.Cms.Api.RestFul.Controllers.v1 { [Produces("application/json")] - [Route("api/v1/rest/{culture}/attribute-set-value/portal")] - public class ApiAttributeSetValueController : - BaseAuthorizedApiController + [Route("api/v1/rest/{culture}/mix-database-data-value/portal")] + public class ApiMixDatabaseDataValueController : + BaseAuthorizedRestApiController { - // GET: api/v1/rest/en-us/attribute-field/client + // GET: api/v1/rest/en-us/mix-database-column/client [HttpGet] public override async Task>> Get() { @@ -27,15 +28,15 @@ public override async Task>> Get() bool isFromDate = DateTime.TryParse(Request.Query["fromDate"], out DateTime fromDate); bool isToDate = DateTime.TryParse(Request.Query["toDate"], out DateTime toDate); string keyword = Request.Query["keyword"]; - Expression> predicate = model => + Expression> predicate = model => (!isStatus || model.Status == status) && (!isFromDate || model.CreatedDateTime >= fromDate) && (!isToDate || model.CreatedDateTime <= toDate) && (string.IsNullOrEmpty(keyword) - || model.AttributeSetName.Contains(keyword) - || model.StringValue.Contains(keyword) + || model.MixDatabaseName.Contains(keyword) + || EF.Functions.Like(model.StringValue, $"%{keyword}%") ); - var getData = await base.GetListAsync(predicate); + var getData = await base.GetListAsync(predicate); if (getData.IsSucceed) { return Ok(getData.Data); diff --git a/src/Mix.Cms.Api.RestFul/Controllers/v1/AttributeSetDatas/ApiAttributeSetDataController.cs b/src/Mix.Cms.Api.RestFul/Controllers/v1/MixDatabaseDatas/ApiMixDatabaseDataController.cs similarity index 68% rename from src/Mix.Cms.Api.RestFul/Controllers/v1/AttributeSetDatas/ApiAttributeSetDataController.cs rename to src/Mix.Cms.Api.RestFul/Controllers/v1/MixDatabaseDatas/ApiMixDatabaseDataController.cs index 0f48283f3..332e73ced 100644 --- a/src/Mix.Cms.Api.RestFul/Controllers/v1/AttributeSetDatas/ApiAttributeSetDataController.cs +++ b/src/Mix.Cms.Api.RestFul/Controllers/v1/MixDatabaseDatas/ApiMixDatabaseDataController.cs @@ -8,18 +8,18 @@ using Mix.Cms.Lib.Enums; using Mix.Cms.Lib.Models.Cms; using Mix.Cms.Lib.Services; -using Mix.Cms.Lib.ViewModels.MixAttributeSetDatas; +using Mix.Cms.Lib.ViewModels.MixDatabaseDatas; using Mix.Domain.Core.ViewModels; using System.Threading.Tasks; namespace Mix.Cms.Api.RestFul.Controllers.v1 { [Produces("application/json")] - [Route("api/v1/rest/{culture}/attribute-set-data/client")] - public class ApiAttributeSetDataController : - BaseRestApiController + [Route("api/v1/rest/{culture}/mix-database-data/client")] + public class ApiMixDatabaseDataController : + BaseRestApiController { - // GET: api/v1/rest/{culture}/attribute-set-data/client/search + // GET: api/v1/rest/{culture}/mix-database-data/client/search [HttpGet] public override async Task>> Get() { @@ -34,18 +34,18 @@ public override async Task>> Get() } } - // GET: api/v1/rest/{culture}/attribute-set-data - [HttpGet("init/{attributeSetName}")] - public async Task> Init(string attributeSetName) + // GET: api/v1/rest/{culture}/mix-database-data + [HttpGet("init/{mixDatabaseName}")] + public async Task> Init(string mixDatabaseName) { - var getAttrSet = await Lib.ViewModels.MixAttributeSets.ReadViewModel.Repository.GetSingleModelAsync(m => m.Name == attributeSetName); + var getAttrSet = await Lib.ViewModels.MixDatabases.ReadViewModel.Repository.GetSingleModelAsync(m => m.Name == mixDatabaseName); if (getAttrSet.IsSucceed) { FormViewModel result = new FormViewModel() { Specificulture = _lang, - AttributeSetId = getAttrSet.Data.Id, - AttributeSetName = getAttrSet.Data.Name, + MixDatabaseId = getAttrSet.Data.Id, + MixDatabaseName = getAttrSet.Data.Name, Status = MixService.GetEnumConfig(MixAppSettingKeywords.DefaultContentStatus), }; result.ExpandView(); diff --git a/src/Mix.Cms.Api.RestFul/Controllers/v1/AttributeSetDatas/AttributeSetDataMvcController.cs b/src/Mix.Cms.Api.RestFul/Controllers/v1/MixDatabaseDatas/MixDatabaseDataMvcController.cs similarity index 73% rename from src/Mix.Cms.Api.RestFul/Controllers/v1/AttributeSetDatas/AttributeSetDataMvcController.cs rename to src/Mix.Cms.Api.RestFul/Controllers/v1/MixDatabaseDatas/MixDatabaseDataMvcController.cs index a4a31b13c..f9ff42ad0 100644 --- a/src/Mix.Cms.Api.RestFul/Controllers/v1/AttributeSetDatas/AttributeSetDataMvcController.cs +++ b/src/Mix.Cms.Api.RestFul/Controllers/v1/MixDatabaseDatas/MixDatabaseDataMvcController.cs @@ -5,17 +5,17 @@ using Microsoft.AspNetCore.Mvc; using Mix.Cms.Lib.Controllers; using Mix.Cms.Lib.Models.Cms; -using Mix.Cms.Lib.ViewModels.MixAttributeSetDatas; +using Mix.Cms.Lib.ViewModels.MixDatabaseDatas; using Mix.Domain.Core.ViewModels; using System.Threading.Tasks; namespace Mix.Cms.Api.RestFul.Controllers.v1 { - [Route("api/v1/rest/{culture}/attribute-set-data/mvc")] - public class AttributeSetDataMvcController : - BaseReadOnlyApiController + [Route("api/v1/rest/{culture}/mix-database-data/mvc")] + public class MixDatabaseDataMvcController : + BaseReadOnlyApiController { - // GET: api/v1/rest/{culture}/attribute-set-data + // GET: api/v1/rest/{culture}/mix-database-data [HttpGet] public override async Task>> Get() { diff --git a/src/Mix.Cms.Api.RestFul/Controllers/v1/AttributeSetDatas/AttributeSetDataPortalController.cs b/src/Mix.Cms.Api.RestFul/Controllers/v1/MixDatabaseDatas/MixDatabaseDataPortalController.cs similarity index 73% rename from src/Mix.Cms.Api.RestFul/Controllers/v1/AttributeSetDatas/AttributeSetDataPortalController.cs rename to src/Mix.Cms.Api.RestFul/Controllers/v1/MixDatabaseDatas/MixDatabaseDataPortalController.cs index dd00d7488..a59957964 100644 --- a/src/Mix.Cms.Api.RestFul/Controllers/v1/AttributeSetDatas/AttributeSetDataPortalController.cs +++ b/src/Mix.Cms.Api.RestFul/Controllers/v1/MixDatabaseDatas/MixDatabaseDataPortalController.cs @@ -9,7 +9,7 @@ using Mix.Cms.Lib.Controllers; using Mix.Cms.Lib.Enums; using Mix.Cms.Lib.Models.Cms; -using Mix.Cms.Lib.ViewModels.MixAttributeSetDatas; +using Mix.Cms.Lib.ViewModels.MixDatabaseDatas; using Mix.Domain.Core.ViewModels; using Newtonsoft.Json.Linq; using System; @@ -18,11 +18,11 @@ namespace Mix.Cms.Api.RestFul.Controllers.v1 { - [Route("api/v1/rest/{culture}/attribute-set-data/portal")] - public class AttributeSetDataPortalController : - BaseAuthorizedRestApiController + [Route("api/v1/rest/{culture}/mix-database-data/portal")] + public class MixDatabaseDataPortalController : + BaseAuthorizedRestApiController { - // GET: api/v1/rest/{culture}/attribute-set-data + // GET: api/v1/rest/{culture}/mix-database-data [HttpGet] public override async Task>> Get() { @@ -37,7 +37,7 @@ public override async Task>> Get() } } - // GET: api/v1/rest/{culture}/attribute-set-data/additional-data + // GET: api/v1/rest/{culture}/mix-database-data/additional-data [HttpGet("additional-data")] public async Task>> GetAdditionalData() { @@ -56,15 +56,15 @@ public async Task>> GetAdditio } else { - var getAttrSet = await Lib.ViewModels.MixAttributeSets.UpdateViewModel.Repository.GetSingleModelAsync( + var getAttrSet = await Lib.ViewModels.MixDatabases.UpdateViewModel.Repository.GetSingleModelAsync( m => m.Name == Request.Query["databaseName"].ToString()); if (getAttrSet.IsSucceed) { AdditionalViewModel result = new AdditionalViewModel() { Specificulture = _lang, - AttributeSetId = getAttrSet.Data.Id, - AttributeSetName = getAttrSet.Data.Name, + MixDatabaseId = getAttrSet.Data.Id, + MixDatabaseName = getAttrSet.Data.Name, Status = MixContentStatus.Published, Fields = getAttrSet.Data.Fields, ParentType = parentType @@ -111,19 +111,19 @@ public async Task SaveAdditionalData([FromBody] AdditionalViewMod } } - // GET: api/v1/rest/{culture}/attribute-set-data - [HttpGet("init/{attributeSet}")] - public async Task> Init(string attributeSet) + // GET: api/v1/rest/{culture}/mix-database-data + [HttpGet("init/{mixDatabase}")] + public async Task> Init(string mixDatabase) { - _ = int.TryParse(attributeSet, out int attributeSetId); - var getAttrSet = await Lib.ViewModels.MixAttributeSets.UpdateViewModel.Repository.GetSingleModelAsync(m => m.Name == attributeSet || m.Id == attributeSetId); + _ = int.TryParse(mixDatabase, out int mixDatabaseId); + var getAttrSet = await Lib.ViewModels.MixDatabases.UpdateViewModel.Repository.GetSingleModelAsync(m => m.Name == mixDatabase || m.Id == mixDatabaseId); if (getAttrSet.IsSucceed) { FormViewModel result = new FormViewModel() { Specificulture = _lang, - AttributeSetId = getAttrSet.Data.Id, - AttributeSetName = getAttrSet.Data.Name, + MixDatabaseId = getAttrSet.Data.Id, + MixDatabaseName = getAttrSet.Data.Name, Status = MixContentStatus.Published, Fields = getAttrSet.Data.Fields }; @@ -136,12 +136,12 @@ public async Task> Init(string attributeSet) } } - // GET api/attribute-set-data + // GET api/mix-database-data [HttpGet("export")] public async Task Export() { - string attributeSetName = Request.Query["attributeSetName"].ToString(); - string exportPath = $"content/exports/module/{attributeSetName}"; + string mixDatabaseName = Request.Query["mixDatabaseName"].ToString(); + string exportPath = $"content/exports/module/{mixDatabaseName}"; var getData = await Helper.FilterByKeywordAsync(Request, _lang); var jData = new List(); @@ -151,7 +151,7 @@ public async Task Export() { jData.Add(item.Obj); } - var result = Lib.ViewModels.MixAttributeSetDatas.Helper.ExportAttributeToExcel(jData, string.Empty, exportPath, $"{attributeSetName}", null); + var result = Lib.ViewModels.MixDatabaseDatas.Helper.ExportAttributeToExcel(jData, string.Empty, exportPath, $"{mixDatabaseName}", null); return Ok(result.Data); } else @@ -160,28 +160,28 @@ public async Task Export() } } - // POST api/attribute-set-data + // POST api/mix-database-data [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme, Roles = "SuperAdmin, Admin")] [HttpPost, HttpOptions] - [Route("import-data/{attributeSetName}")] - public async Task>> ImportData(string attributeSetName, [FromForm] IFormFile file) + [Route("import-data/{mixDatabaseName}")] + public async Task>> ImportData(string mixDatabaseName, [FromForm] IFormFile file) { - var getAttributeSet = await Lib.ViewModels.MixAttributeSets.ReadViewModel.Repository.GetSingleModelAsync( - m => m.Name == attributeSetName); - if (getAttributeSet.IsSucceed) + var getMixDatabase = await Lib.ViewModels.MixDatabases.ReadViewModel.Repository.GetSingleModelAsync( + m => m.Name == mixDatabaseName); + if (getMixDatabase.IsSucceed) { if (file != null) { - var result = await Helper.ImportData(_lang, getAttributeSet.Data, file); + var result = await Helper.ImportData(_lang, getMixDatabase.Data, file); return Ok(result); } } return new RepositoryResponse() { Status = 501 }; } - // DELETE: api/v1/rest/en-us/attribute-set/portal/5 + // DELETE: api/v1/rest/en-us/mix-database/portal/5 [HttpDelete("{id}")] - public override async Task> Delete(string id) + public override async Task> Delete(string id) { var result = await DeleteAsync(id, true); if (result.IsSucceed) diff --git a/src/Mix.Cms.Api.RestFul/Controllers/v1/AttributeSets/ApiAttributeSetController.cs b/src/Mix.Cms.Api.RestFul/Controllers/v1/MixDatabases/ApiMixDatabaseController.cs similarity index 60% rename from src/Mix.Cms.Api.RestFul/Controllers/v1/AttributeSets/ApiAttributeSetController.cs rename to src/Mix.Cms.Api.RestFul/Controllers/v1/MixDatabases/ApiMixDatabaseController.cs index 9d38f1997..463d9ded1 100644 --- a/src/Mix.Cms.Api.RestFul/Controllers/v1/AttributeSets/ApiAttributeSetController.cs +++ b/src/Mix.Cms.Api.RestFul/Controllers/v1/MixDatabases/ApiMixDatabaseController.cs @@ -3,10 +3,11 @@ // See the LICENSE file in the project root for more information. using Microsoft.AspNetCore.Mvc; +using Mix.Cms.Lib.Constants; using Mix.Cms.Lib.Controllers; using Mix.Cms.Lib.Enums; using Mix.Cms.Lib.Models.Cms; -using Mix.Cms.Lib.ViewModels.MixAttributeSets; +using Mix.Cms.Lib.ViewModels.MixDatabases; using Mix.Domain.Core.ViewModels; using System; using System.Linq.Expressions; @@ -15,19 +16,19 @@ namespace Mix.Cms.Api.RestFul.Controllers.v1 { [Produces("application/json")] - [Route("api/v1/rest/attribute-set/client")] - public class ApiAttributeSetController : - BaseAuthorizedRestApiController + [Route("api/v1/rest/mix-database/client")] + public class ApiMixDatabaseController : + BaseAuthorizedRestApiController { - // GET: api/v1/rest/en-us/attribute-set/client + // GET: api/v1/rest/en-us/mix-database/client [HttpGet] public override async Task>> Get() { - bool isStatus = Enum.TryParse(Request.Query["status"], out MixContentStatus status); - bool isFromDate = DateTime.TryParse(Request.Query["fromDate"], out DateTime fromDate); - bool isToDate = DateTime.TryParse(Request.Query["toDate"], out DateTime toDate); - string keyword = Request.Query["keyword"]; - Expression> predicate = model => + bool isStatus = Enum.TryParse(Request.Query[MixRequestQueryKeywords.Status], out MixContentStatus status); + bool isFromDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.FromDate], out DateTime fromDate); + bool isToDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.ToDate], out DateTime toDate); + string keyword = Request.Query[MixRequestQueryKeywords.Keyword]; + Expression> predicate = model => (!isStatus || model.Status == status) && (!isFromDate || model.CreatedDateTime >= fromDate) && (!isToDate || model.CreatedDateTime <= toDate) diff --git a/src/Mix.Cms.Api.RestFul/Controllers/v1/AttributeSets/ApiAttributeSetPortalController.cs b/src/Mix.Cms.Api.RestFul/Controllers/v1/MixDatabases/ApiMixDatabasePortalController.cs similarity index 82% rename from src/Mix.Cms.Api.RestFul/Controllers/v1/AttributeSets/ApiAttributeSetPortalController.cs rename to src/Mix.Cms.Api.RestFul/Controllers/v1/MixDatabases/ApiMixDatabasePortalController.cs index 35e5699c2..a2ed8625d 100644 --- a/src/Mix.Cms.Api.RestFul/Controllers/v1/AttributeSets/ApiAttributeSetPortalController.cs +++ b/src/Mix.Cms.Api.RestFul/Controllers/v1/MixDatabases/ApiMixDatabasePortalController.cs @@ -8,7 +8,7 @@ using Mix.Cms.Lib.Controllers; using Mix.Cms.Lib.Enums; using Mix.Cms.Lib.Models.Cms; -using Mix.Cms.Lib.ViewModels.MixAttributeSets; +using Mix.Cms.Lib.ViewModels.MixDatabases; using Mix.Domain.Core.ViewModels; using System; using System.Linq.Expressions; @@ -18,11 +18,11 @@ namespace Mix.Cms.Api.RestFul.Controllers.v1 { [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)] [Produces("application/json")] - [Route("api/v1/rest/attribute-set/portal")] - public class ApiAttributeSetPortalController : - BaseAuthorizedRestApiController + [Route("api/v1/rest/mix-database/portal")] + public class ApiMixDatabasePortalController : + BaseAuthorizedRestApiController { - // GET: api/v1/rest/en-us/attribute-set/portal + // GET: api/v1/rest/en-us/mix-database/portal [HttpGet] public override async Task>> Get() { @@ -31,7 +31,7 @@ public override async Task>> Get() bool isFromDate = DateTime.TryParse(Request.Query["fromDate"], out DateTime fromDate); bool isToDate = DateTime.TryParse(Request.Query["toDate"], out DateTime toDate); string keyword = Request.Query["keyword"]; - Expression> predicate = model => + Expression> predicate = model => (!isStatus || model.Status == status) && (!isType || model.Type == type) && (!isFromDate || model.CreatedDateTime >= fromDate) @@ -51,9 +51,9 @@ public override async Task>> Get() } } - // DELETE: api/v1/rest/en-us/attribute-set/portal/5 + // DELETE: api/v1/rest/en-us/mix-database/portal/5 [HttpDelete("{id}")] - public override async Task> Delete(string id) + public override async Task> Delete(string id) { var getData = await DeleteViewModel.Repository.GetSingleModelAsync(m => m.Id == int.Parse(id)); diff --git a/src/Mix.Cms.Api.RestFul/Controllers/v1/ModuleDatas/ApiModuleDataMvcController.cs b/src/Mix.Cms.Api.RestFul/Controllers/v1/ModuleDatas/ApiModuleDataMvcController.cs index 6a9f04d64..9dacf42eb 100644 --- a/src/Mix.Cms.Api.RestFul/Controllers/v1/ModuleDatas/ApiModuleDataMvcController.cs +++ b/src/Mix.Cms.Api.RestFul/Controllers/v1/ModuleDatas/ApiModuleDataMvcController.cs @@ -21,19 +21,18 @@ namespace Mix.Cms.Api.RestFul.Controllers.v1 [Produces("application/json")] [Route("api/v1/rest/{culture}/module-data/mvc")] public class ApiModuleDataMvcController : - BaseAuthorizedApiController + BaseRestApiController { - // GET: api/s [HttpGet] public override async Task>> Get() { bool isModuleId = int.TryParse(Request.Query["module_id"], out int moduleId); bool isPostId = int.TryParse(Request.Query["post_id"], out int postId); bool isPageId = int.TryParse(Request.Query[""], out int pageId); - bool isStatus = Enum.TryParse(Request.Query["status"], out MixContentStatus status); - bool isFromDate = DateTime.TryParse(Request.Query["fromDate"], out DateTime fromDate); - bool isToDate = DateTime.TryParse(Request.Query["toDate"], out DateTime toDate); - string keyword = Request.Query["keyword"]; + bool isStatus = Enum.TryParse(Request.Query[MixRequestQueryKeywords.Status], out MixContentStatus status); + bool isFromDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.FromDate], out DateTime fromDate); + bool isToDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.ToDate], out DateTime toDate); + string keyword = Request.Query[MixRequestQueryKeywords.Keyword]; Expression> predicate = model => model.Specificulture == _lang && (model.ModuleId == moduleId) @@ -45,7 +44,7 @@ public override async Task>> Get( && (string.IsNullOrEmpty(keyword) || (EF.Functions.Like(model.Value, $"%{keyword}%")) ); - var getData = await base.GetListAsync(predicate); + var getData = await base.GetListAsync(predicate); if (getData.IsSucceed) { return getData.Data; @@ -56,7 +55,6 @@ public override async Task>> Get( } } - // GET api/module-data/create/id [HttpGet, HttpOptions] [Route("init-form/{moduleId}")] public async Task> InitByIdAsync(int moduleId) @@ -81,7 +79,6 @@ public async Task> InitByIdAsync(int moduleId) } } - // GET api/module-data/create/id [HttpPost, HttpOptions] [Route("save/{moduleName}")] public async Task> SaveByName(string moduleName, [FromBody] JObject data) diff --git a/src/Mix.Cms.Api.RestFul/Controllers/v1/ModuleDatas/ApiModuleDataPortalController.cs b/src/Mix.Cms.Api.RestFul/Controllers/v1/ModuleDatas/ApiModuleDataPortalController.cs index b809765b2..a2118ed61 100644 --- a/src/Mix.Cms.Api.RestFul/Controllers/v1/ModuleDatas/ApiModuleDataPortalController.cs +++ b/src/Mix.Cms.Api.RestFul/Controllers/v1/ModuleDatas/ApiModuleDataPortalController.cs @@ -26,17 +26,17 @@ namespace Mix.Cms.Api.RestFul.Controllers.v1 public class ApiModuleDataDataController : BaseAuthorizedRestApiController { - // GET: api/s + [HttpGet] public override async Task>> Get() { bool isModuleId = int.TryParse(Request.Query["module_id"], out int moduleId); bool isPostId = int.TryParse(Request.Query["post_id"], out int postId); bool isPageId = int.TryParse(Request.Query[""], out int pageId); - bool isStatus = Enum.TryParse(Request.Query["status"], out MixContentStatus status); - bool isFromDate = DateTime.TryParse(Request.Query["fromDate"], out DateTime fromDate); - bool isToDate = DateTime.TryParse(Request.Query["toDate"], out DateTime toDate); - string keyword = Request.Query["keyword"]; + bool isStatus = Enum.TryParse(Request.Query[MixRequestQueryKeywords.Status], out MixContentStatus status); + bool isFromDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.FromDate], out DateTime fromDate); + bool isToDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.ToDate], out DateTime toDate); + string keyword = Request.Query[MixRequestQueryKeywords.Keyword]; Expression> predicate = model => model.Specificulture == _lang && (model.ModuleId == moduleId) @@ -65,10 +65,10 @@ public async Task> Export() bool isModuleId = int.TryParse(Request.Query["module_id"], out int moduleId); bool isPostId = int.TryParse(Request.Query["post_id"], out int postId); bool isPageId = int.TryParse(Request.Query[""], out int pageId); - bool isStatus = Enum.TryParse(Request.Query["status"], out MixContentStatus status); - bool isFromDate = DateTime.TryParse(Request.Query["fromDate"], out DateTime fromDate); - bool isToDate = DateTime.TryParse(Request.Query["toDate"], out DateTime toDate); - string keyword = Request.Query["keyword"]; + bool isStatus = Enum.TryParse(Request.Query[MixRequestQueryKeywords.Status], out MixContentStatus status); + bool isFromDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.FromDate], out DateTime fromDate); + bool isToDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.ToDate], out DateTime toDate); + string keyword = Request.Query[MixRequestQueryKeywords.Keyword]; Expression> predicate = model => model.Specificulture == _lang && (model.ModuleId == moduleId) diff --git a/src/Mix.Cms.Api.RestFul/Controllers/v1/ModulePosts/ApiModulePostMvcController.cs b/src/Mix.Cms.Api.RestFul/Controllers/v1/ModulePosts/ApiModulePostMvcController.cs index 33a5c026f..36a1f80f2 100644 --- a/src/Mix.Cms.Api.RestFul/Controllers/v1/ModulePosts/ApiModulePostMvcController.cs +++ b/src/Mix.Cms.Api.RestFul/Controllers/v1/ModulePosts/ApiModulePostMvcController.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using Microsoft.AspNetCore.Mvc; +using Mix.Cms.Lib.Constants; using Mix.Cms.Lib.Controllers; using Mix.Cms.Lib.Enums; using Mix.Cms.Lib.Models.Cms; @@ -17,18 +18,18 @@ namespace Mix.Cms.Api.RestFul.Controllers.v1 [Produces("application/json")] [Route("api/v1/rest/{culture}/module-post/mvc")] public class ApiModulePostMvcController : - BaseAuthorizedApiController + BaseRestApiController { - // GET: api/s + [HttpGet] public override async Task>> Get() { - bool isStatus = Enum.TryParse(Request.Query["status"], out MixContentStatus status); - bool isFromDate = DateTime.TryParse(Request.Query["fromDate"], out DateTime fromDate); - bool isToDate = DateTime.TryParse(Request.Query["toDate"], out DateTime toDate); + bool isStatus = Enum.TryParse(Request.Query[MixRequestQueryKeywords.Status], out MixContentStatus status); + bool isFromDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.FromDate], out DateTime fromDate); + bool isToDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.ToDate], out DateTime toDate); bool isModule = int.TryParse(Request.Query["page_id"], out int moduleId); bool isPost = int.TryParse(Request.Query["post_id"], out int postId); - string keyword = Request.Query["keyword"]; + string keyword = Request.Query[MixRequestQueryKeywords.Keyword]; Expression> predicate = model => model.Specificulture == _lang && (!isStatus || model.Status == status) @@ -39,7 +40,7 @@ public override async Task>> Get( && (string.IsNullOrWhiteSpace(keyword) || (model.Description.Contains(keyword) )); - var getData = await base.GetListAsync(predicate); + var getData = await base.GetListAsync(predicate); if (getData.IsSucceed) { return getData.Data; diff --git a/src/Mix.Cms.Api.RestFul/Controllers/v1/Modules/ApiModuleMvcController.cs b/src/Mix.Cms.Api.RestFul/Controllers/v1/Modules/ApiModuleMvcController.cs index f8134f482..2e0965ec0 100644 --- a/src/Mix.Cms.Api.RestFul/Controllers/v1/Modules/ApiModuleMvcController.cs +++ b/src/Mix.Cms.Api.RestFul/Controllers/v1/Modules/ApiModuleMvcController.cs @@ -4,6 +4,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; +using Mix.Cms.Lib.Constants; using Mix.Cms.Lib.Controllers; using Mix.Cms.Lib.Enums; using Mix.Cms.Lib.Models.Cms; @@ -18,16 +19,15 @@ namespace Mix.Cms.Api.RestFul.Controllers.v1 [Produces("application/json")] [Route("api/v1/rest/{culture}/module/mvc")] public class ApiModuleMvcController : - BaseAuthorizedApiController + BaseRestApiController { - // GET: api/s [HttpGet] - public override async Task>> Get() + public override async Task>> Get() { - bool isStatus = Enum.TryParse(Request.Query["status"], out MixContentStatus status); - bool isFromDate = DateTime.TryParse(Request.Query["fromDate"], out DateTime fromDate); - bool isToDate = DateTime.TryParse(Request.Query["toDate"], out DateTime toDate); - string keyword = Request.Query["keyword"]; + bool isStatus = Enum.TryParse(Request.Query[MixRequestQueryKeywords.Status], out MixContentStatus status); + bool isFromDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.FromDate], out DateTime fromDate); + bool isToDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.ToDate], out DateTime toDate); + string keyword = Request.Query[MixRequestQueryKeywords.Keyword]; Expression> predicate = model => model.Specificulture == _lang && (!isStatus || model.Status == status) @@ -38,7 +38,7 @@ public override async Task>> || (EF.Functions.Like(model.Description, $"%{keyword}%")) || (EF.Functions.Like(model.Name, $"%{keyword}%")) ); - var getData = await base.GetListAsync(predicate); + var getData = await base.GetListAsync(predicate); if (getData.IsSucceed) { return getData.Data; diff --git a/src/Mix.Cms.Api.RestFul/Controllers/v1/Modules/ApiModulePortalController.cs b/src/Mix.Cms.Api.RestFul/Controllers/v1/Modules/ApiModulePortalController.cs index 2c778a358..ce42af39a 100644 --- a/src/Mix.Cms.Api.RestFul/Controllers/v1/Modules/ApiModulePortalController.cs +++ b/src/Mix.Cms.Api.RestFul/Controllers/v1/Modules/ApiModulePortalController.cs @@ -4,6 +4,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; +using Mix.Cms.Lib.Constants; using Mix.Cms.Lib.Controllers; using Mix.Cms.Lib.Enums; using Mix.Cms.Lib.Models.Cms; @@ -20,14 +21,14 @@ namespace Mix.Cms.Api.RestFul.Controllers.v1 public class ApiModuleController : BaseAuthorizedRestApiController { - // GET: api/s + [HttpGet] public override async Task>> Get() { - bool isStatus = Enum.TryParse(Request.Query["status"], out MixContentStatus status); - bool isFromDate = DateTime.TryParse(Request.Query["fromDate"], out DateTime fromDate); - bool isToDate = DateTime.TryParse(Request.Query["toDate"], out DateTime toDate); - string keyword = Request.Query["keyword"]; + bool isStatus = Enum.TryParse(Request.Query[MixRequestQueryKeywords.Status], out MixContentStatus status); + bool isFromDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.FromDate], out DateTime fromDate); + bool isToDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.ToDate], out DateTime toDate); + string keyword = Request.Query[MixRequestQueryKeywords.Keyword]; Expression> predicate = model => model.Specificulture == _lang && (!isStatus || model.Status == status) diff --git a/src/Mix.Cms.Api.RestFul/Controllers/v1/PagePosts/ApiPagePostMvcController.cs b/src/Mix.Cms.Api.RestFul/Controllers/v1/PagePosts/ApiPagePostMvcController.cs index 9c5087124..8be7b1410 100644 --- a/src/Mix.Cms.Api.RestFul/Controllers/v1/PagePosts/ApiPagePostMvcController.cs +++ b/src/Mix.Cms.Api.RestFul/Controllers/v1/PagePosts/ApiPagePostMvcController.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using Microsoft.AspNetCore.Mvc; +using Mix.Cms.Lib.Constants; using Mix.Cms.Lib.Controllers; using Mix.Cms.Lib.Enums; using Mix.Cms.Lib.Models.Cms; @@ -17,18 +18,18 @@ namespace Mix.Cms.Api.RestFul.Controllers.v1 [Produces("application/json")] [Route("api/v1/rest/{culture}/page-post/mvc")] public class ApiPagePostMvcController : - BaseAuthorizedApiController + BaseRestApiController { - // GET: api/s + [HttpGet] public override async Task>> Get() { - bool isStatus = Enum.TryParse(Request.Query["status"], out MixContentStatus status); - bool isFromDate = DateTime.TryParse(Request.Query["fromDate"], out DateTime fromDate); - bool isToDate = DateTime.TryParse(Request.Query["toDate"], out DateTime toDate); + bool isStatus = Enum.TryParse(Request.Query[MixRequestQueryKeywords.Status], out MixContentStatus status); + bool isFromDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.FromDate], out DateTime fromDate); + bool isToDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.ToDate], out DateTime toDate); bool isPage = int.TryParse(Request.Query["page_id"], out int pageId); bool isPost = int.TryParse(Request.Query["post_id"], out int postId); - string keyword = Request.Query["keyword"]; + string keyword = Request.Query[MixRequestQueryKeywords.Keyword]; Expression> predicate = model => model.Specificulture == _lang && (!isStatus || model.Status == status) @@ -39,7 +40,7 @@ public override async Task>> Get( && (string.IsNullOrWhiteSpace(keyword) || (model.Description.Contains(keyword) )); - var getData = await base.GetListAsync(predicate); + var getData = await base.GetListAsync(predicate); if (getData.IsSucceed) { return getData.Data; diff --git a/src/Mix.Cms.Api.RestFul/Controllers/v1/Pages/ApiPagePortalController.cs b/src/Mix.Cms.Api.RestFul/Controllers/v1/Pages/ApiPagePortalController.cs index 51c3dbe9b..aa1f501fe 100644 --- a/src/Mix.Cms.Api.RestFul/Controllers/v1/Pages/ApiPagePortalController.cs +++ b/src/Mix.Cms.Api.RestFul/Controllers/v1/Pages/ApiPagePortalController.cs @@ -4,12 +4,14 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; +using Mix.Cms.Lib.Constants; using Mix.Cms.Lib.Controllers; using Mix.Cms.Lib.Enums; using Mix.Cms.Lib.Models.Cms; using Mix.Cms.Lib.ViewModels.MixPages; using Mix.Domain.Core.ViewModels; using System; +using System.Linq; using System.Linq.Expressions; using System.Threading.Tasks; @@ -20,16 +22,16 @@ namespace Mix.Cms.Api.RestFul.Controllers.v1 public class ApiPageController : BaseAuthorizedRestApiController { - // GET: api/s [HttpGet] public override async Task>> Get() { - bool isStatus = Enum.TryParse(Request.Query["status"], out MixContentStatus status); - bool isFromDate = DateTime.TryParse(Request.Query["fromDate"], out DateTime fromDate); - bool isToDate = DateTime.TryParse(Request.Query["toDate"], out DateTime toDate); - string keyword = Request.Query["keyword"]; + bool isStatus = Enum.TryParse(Request.Query[MixRequestQueryKeywords.Status], out MixContentStatus status); + bool isFromDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.FromDate], out DateTime fromDate); + bool isToDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.ToDate], out DateTime toDate); + string keyword = Request.Query[MixRequestQueryKeywords.Keyword]; Expression> predicate = model => model.Specificulture == _lang + && (User.IsInRole("SuperAdmin") || model.CreatedBy == User.Claims.FirstOrDefault(c => c.Type == "Username").Value) && (!isStatus || model.Status == status) && (!isFromDate || model.CreatedDateTime >= fromDate) && (!isToDate || model.CreatedDateTime <= toDate) @@ -48,5 +50,14 @@ public override async Task>> Get() return BadRequest(getData.Errors); } } + + [HttpPost] + public override Task> Create([FromBody] UpdateViewModel data) + { + // Handle your code here or do something before call the base Api. + return base.Create(data); + } + + } } \ No newline at end of file diff --git a/src/Mix.Cms.Api.RestFul/Controllers/v1/PortalPageNavigation/ApiPortalPageNavigationPortalController.cs b/src/Mix.Cms.Api.RestFul/Controllers/v1/PortalPageNavigation/ApiPortalPageNavigationPortalController.cs index 484f1a7d7..44122ee69 100644 --- a/src/Mix.Cms.Api.RestFul/Controllers/v1/PortalPageNavigation/ApiPortalPageNavigationPortalController.cs +++ b/src/Mix.Cms.Api.RestFul/Controllers/v1/PortalPageNavigation/ApiPortalPageNavigationPortalController.cs @@ -4,6 +4,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; +using Mix.Cms.Lib.Constants; using Mix.Cms.Lib.Controllers; using Mix.Cms.Lib.Enums; using Mix.Cms.Lib.Models.Cms; @@ -18,17 +19,17 @@ namespace Mix.Cms.Api.RestFul.Controllers.v1 [Produces("application/json")] [Route("api/v1/rest/portal-page-navigation")] public class ApiPortalPageNavigationPortalController : - BaseAuthorizedApiController + BaseAuthorizedRestApiController { - // GET: api/s + [HttpGet] public override async Task>> Get() { - bool isStatus = Enum.TryParse(Request.Query["status"], out MixContentStatus status); - bool isFromDate = DateTime.TryParse(Request.Query["fromDate"], out DateTime fromDate); - bool isToDate = DateTime.TryParse(Request.Query["toDate"], out DateTime toDate); - string keyword = Request.Query["keyword"]; - bool isParentId = int.TryParse(Request.Query["parentId"], out int parentId); + bool isStatus = Enum.TryParse(Request.Query[MixRequestQueryKeywords.Status], out MixContentStatus status); + bool isFromDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.FromDate], out DateTime fromDate); + bool isToDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.ToDate], out DateTime toDate); + string keyword = Request.Query[MixRequestQueryKeywords.Keyword]; + bool isParentId = int.TryParse(Request.Query[MixRequestQueryKeywords.ParentId], out int parentId); Expression> predicate = model => (!isStatus || model.Status == status) && (!isFromDate || model.CreatedDateTime >= fromDate) @@ -37,7 +38,7 @@ public override async Task>> Get() && (string.IsNullOrEmpty(keyword) || (EF.Functions.Like(model.Description, $"%{keyword}%")) ); - var getData = await base.GetListAsync(predicate); + var getData = await base.GetListAsync(predicate); if (getData.IsSucceed) { return getData.Data; diff --git a/src/Mix.Cms.Api.RestFul/Controllers/v1/PortalPages/ApiPortalPagePortalController.cs b/src/Mix.Cms.Api.RestFul/Controllers/v1/PortalPages/ApiPortalPagePortalController.cs index 2b262f3ba..1249b1764 100644 --- a/src/Mix.Cms.Api.RestFul/Controllers/v1/PortalPages/ApiPortalPagePortalController.cs +++ b/src/Mix.Cms.Api.RestFul/Controllers/v1/PortalPages/ApiPortalPagePortalController.cs @@ -4,6 +4,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; +using Mix.Cms.Lib.Constants; using Mix.Cms.Lib.Controllers; using Mix.Cms.Lib.Enums; using Mix.Cms.Lib.Models.Cms; @@ -20,16 +21,16 @@ namespace Mix.Cms.Api.RestFul.Controllers.v1 [Produces("application/json")] [Route("api/v1/rest/permission")] public class ApiPortalPageController : - BaseAuthorizedApiController + BaseAuthorizedRestApiController { - // GET: api/s + [HttpGet] public override async Task>> Get() { - bool isStatus = Enum.TryParse(Request.Query["status"], out MixContentStatus status); - bool isFromDate = DateTime.TryParse(Request.Query["fromDate"], out DateTime fromDate); - bool isToDate = DateTime.TryParse(Request.Query["toDate"], out DateTime toDate); - string keyword = Request.Query["keyword"]; + bool isStatus = Enum.TryParse(Request.Query[MixRequestQueryKeywords.Status], out MixContentStatus status); + bool isFromDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.FromDate], out DateTime fromDate); + bool isToDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.ToDate], out DateTime toDate); + string keyword = Request.Query[MixRequestQueryKeywords.Keyword]; var exceptIds = Request.Query["exceptIds"].ToString(); var lstExceptIds = !string.IsNullOrEmpty(exceptIds) ? exceptIds.Split(',').Select(m => int.Parse(m)).ToList() : new List(); @@ -46,7 +47,7 @@ public override async Task>> Get() || (EF.Functions.Like(model.TextDefault, $"%{keyword}%")) || (EF.Functions.Like(model.Url, $"%{keyword}%")) ); - var getData = await base.GetListAsync(predicate); + var getData = await base.GetListAsync(predicate); if (getData.IsSucceed) { return getData.Data; diff --git a/src/Mix.Cms.Api.RestFul/Controllers/v1/Posts/ApiPostMvcController.cs b/src/Mix.Cms.Api.RestFul/Controllers/v1/Posts/ApiPostMvcController.cs index 97110bbe0..7d105aada 100644 --- a/src/Mix.Cms.Api.RestFul/Controllers/v1/Posts/ApiPostMvcController.cs +++ b/src/Mix.Cms.Api.RestFul/Controllers/v1/Posts/ApiPostMvcController.cs @@ -4,6 +4,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; +using Mix.Cms.Lib.Constants; using Mix.Cms.Lib.Controllers; using Mix.Cms.Lib.Enums; using Mix.Cms.Lib.Models.Cms; @@ -21,15 +22,15 @@ namespace Mix.Cms.Api.RestFul.Controllers.v1 public class ApiPostMvcController : BaseReadOnlyApiController { - // GET: api/s + [HttpGet] public override async Task>> Get() { - bool isStatus = Enum.TryParse(Request.Query["status"], out MixContentStatus status); - bool isFromDate = DateTime.TryParse(Request.Query["fromDate"], out DateTime fromDate); - bool isToDate = DateTime.TryParse(Request.Query["toDate"], out DateTime toDate); + bool isStatus = Enum.TryParse(Request.Query[MixRequestQueryKeywords.Status], out MixContentStatus status); + bool isFromDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.FromDate], out DateTime fromDate); + bool isToDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.ToDate], out DateTime toDate); string type = Request.Query["type"]; - string keyword = Request.Query["keyword"]; + string keyword = Request.Query[MixRequestQueryKeywords.Keyword]; Expression> predicate = model => model.Specificulture == _lang && (!isStatus || model.Status == status) @@ -56,7 +57,7 @@ public override async Task>> Get( public async Task>> GetByAttribute() { var result = await Mix.Cms.Lib.ViewModels.MixPosts.Helper.GetModelistByMeta( - Request.Query["attributeSetName"], Request.Query["value"], _lang); + Request.Query[MixRequestQueryKeywords.DatabaseName], Request.Query["value"], _lang); if (result.IsSucceed) { return result.Data; diff --git a/src/Mix.Cms.Api.RestFul/Controllers/v1/Posts/ApiPostPortalController.cs b/src/Mix.Cms.Api.RestFul/Controllers/v1/Posts/ApiPostPortalController.cs index bbb9434f0..6e53519dc 100644 --- a/src/Mix.Cms.Api.RestFul/Controllers/v1/Posts/ApiPostPortalController.cs +++ b/src/Mix.Cms.Api.RestFul/Controllers/v1/Posts/ApiPostPortalController.cs @@ -20,17 +20,17 @@ namespace Mix.Cms.Api.RestFul.Controllers.v1 [Produces("application/json")] [Route("api/v1/rest/{culture}/post/portal")] public class ApiPostController : - BaseAuthorizedRestApiController + BaseAuthorizedRestApiController { - // GET: api/s + [HttpGet] - public override async Task>> Get() + public override async Task>> Get() { - bool isStatus = Enum.TryParse(Request.Query["status"], out MixContentStatus status); - bool isFromDate = DateTime.TryParse(Request.Query["fromDate"], out DateTime fromDate); - bool isToDate = DateTime.TryParse(Request.Query["toDate"], out DateTime toDate); + bool isStatus = Enum.TryParse(Request.Query[MixRequestQueryKeywords.Status], out MixContentStatus status); + bool isFromDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.FromDate], out DateTime fromDate); + bool isToDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.ToDate], out DateTime toDate); string type = Request.Query["type"]; - string keyword = Request.Query["keyword"]; + string keyword = Request.Query[MixRequestQueryKeywords.Keyword]; Expression> predicate = model => model.Specificulture == _lang && (!isStatus || model.Status == status) @@ -42,7 +42,7 @@ public override async Task>> || (EF.Functions.Like(model.Excerpt, $"%{keyword}%")) || (EF.Functions.Like(model.Content, $"%{keyword}%")) ); - var getData = await base.GetListAsync(predicate); + var getData = await base.GetListAsync(predicate); if (getData.IsSucceed) { return getData.Data; diff --git a/src/Mix.Cms.Api.RestFul/Controllers/v1/RelatedAttributeSet/ApiRelatedAttributeSetPortalController.cs b/src/Mix.Cms.Api.RestFul/Controllers/v1/RelatedAttributeSet/ApiRelatedAttributeSetPortalController.cs deleted file mode 100644 index 93616a709..000000000 --- a/src/Mix.Cms.Api.RestFul/Controllers/v1/RelatedAttributeSet/ApiRelatedAttributeSetPortalController.cs +++ /dev/null @@ -1,53 +0,0 @@ -// Licensed to the Mixcore Foundation under one or more agreements. -// The Mixcore Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using Microsoft.AspNetCore.Mvc; -using Mix.Cms.Lib.Controllers; -using Mix.Cms.Lib.Enums; -using Mix.Cms.Lib.Models.Cms; -using Mix.Cms.Lib.ViewModels.MixRelatedAttributeSets; -using Mix.Domain.Core.ViewModels; -using System; -using System.Linq.Expressions; -using System.Threading.Tasks; - -namespace Mix.Cms.Api.RestFul.Controllers.v1 -{ - [Produces("application/json")] - [Route("api/v1/rest/{culture}/related-attribute-set/portal")] - public class ApiRelatedAttributeSetPortalController : - BaseAuthorizedRestApiController - { - // GET: api/v1/rest/{culture}/related-attribute-set - [HttpGet] - public override async Task>> Get() - { - bool isStatus = Enum.TryParse(Request.Query["status"], out MixContentStatus status); - bool isFromDate = DateTime.TryParse(Request.Query["fromDate"], out DateTime fromDate); - bool isToDate = DateTime.TryParse(Request.Query["toDate"], out DateTime toDate); - string keyword = Request.Query["keyword"]; - string parentType = Request.Query["parentType"]; - string parentId = Request.Query["parentId"]; - Expression> predicate = model => - (!isStatus || model.Status == status) - && (!isFromDate || model.CreatedDateTime >= fromDate) - && (!isToDate || model.CreatedDateTime <= toDate) - && (string.IsNullOrEmpty(parentId) - || model.ParentId.Equals(parentId) - ) - && (string.IsNullOrEmpty(parentType) - || model.ParentType.Equals(parentType) - ); - var getData = await base.GetListAsync(predicate); - if (getData.IsSucceed) - { - return Ok(getData.Data); - } - else - { - return BadRequest(getData.Errors); - } - } - } -} \ No newline at end of file diff --git a/src/Mix.Cms.Api.RestFul/Controllers/v1/Templates/ApiTemplatesPortalController.cs b/src/Mix.Cms.Api.RestFul/Controllers/v1/Templates/ApiTemplatesPortalController.cs index c0879329d..2cca85d94 100644 --- a/src/Mix.Cms.Api.RestFul/Controllers/v1/Templates/ApiTemplatesPortalController.cs +++ b/src/Mix.Cms.Api.RestFul/Controllers/v1/Templates/ApiTemplatesPortalController.cs @@ -3,6 +3,8 @@ // See the LICENSE file in the project root for more information. using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; +using Mix.Cms.Lib.Constants; using Mix.Cms.Lib.Controllers; using Mix.Cms.Lib.Enums; using Mix.Cms.Lib.Models.Cms; @@ -19,14 +21,14 @@ namespace Mix.Cms.Api.RestFul.Controllers.v1 public class ApiTemplateController : BaseAuthorizedRestApiController { - // GET: api/s + [HttpGet] public override async Task>> Get() { - bool isStatus = Enum.TryParse(Request.Query["status"], out MixContentStatus status); - bool isFromDate = DateTime.TryParse(Request.Query["fromDate"], out DateTime fromDate); - bool isToDate = DateTime.TryParse(Request.Query["toDate"], out DateTime toDate); - string keyword = Request.Query["keyword"]; + bool isStatus = Enum.TryParse(Request.Query[MixRequestQueryKeywords.Status], out MixContentStatus status); + bool isFromDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.FromDate], out DateTime fromDate); + bool isToDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.ToDate], out DateTime toDate); + string keyword = Request.Query[MixRequestQueryKeywords.Keyword]; bool isTheme = int.TryParse(Request.Query["themeId"], out int themeId); string folderType = Request.Query["folderType"]; Expression> predicate = model => @@ -36,8 +38,8 @@ public override async Task>> Get() && (!isToDate || model.CreatedDateTime <= toDate) && (string.IsNullOrEmpty(folderType) || model.FolderType == folderType) && (string.IsNullOrEmpty(keyword) - || model.FileName.Contains(keyword) - || model.Content.Contains(keyword) + || EF.Functions.Like(model.FileName, $"%{keyword}%") + || EF.Functions.Like(model.Content, $"%{keyword}%") ); var getData = await base.GetListAsync(predicate); if (getData.IsSucceed) @@ -50,7 +52,7 @@ public override async Task>> Get() } } - // GET: api/s/5 + [HttpGet("copy/{id}")] public async Task> Copy(string id) { diff --git a/src/Mix.Cms.Api/Controllers/v1/ApiAccountController.cs b/src/Mix.Cms.Api/Controllers/v1/ApiAccountController.cs index 23937ca2a..23e59ab7e 100644 --- a/src/Mix.Cms.Api/Controllers/v1/ApiAccountController.cs +++ b/src/Mix.Cms.Api/Controllers/v1/ApiAccountController.cs @@ -8,6 +8,8 @@ using Mix.Cms.Lib; using Mix.Cms.Lib.Constants; using Mix.Cms.Lib.Enums; +using Mix.Cms.Lib.Helpers; +using Mix.Cms.Lib.Models.Account; using Mix.Cms.Lib.Models.Cms; using Mix.Cms.Lib.Services; using Mix.Cms.Lib.ViewModels.Account; @@ -364,24 +366,24 @@ public async Task> Save( [Route("list")] public async Task>> GetList(RequestPaging request) { - var isStatus = Enum.TryParse(request.Status, out MixUserStatus status); - Expression> predicate = model => - (!isStatus || model.Status == status) - && (string.IsNullOrWhiteSpace(request.Keyword) + Expression> predicate = model => + (string.IsNullOrWhiteSpace(request.Keyword) || ( - (EF.Functions.Like(model.Username, $"%{request.Keyword}%")) + (EF.Functions.Like(model.UserName, $"%{request.Keyword}%")) || (EF.Functions.Like(model.FirstName, $"%{request.Keyword}%")) || (EF.Functions.Like(model.LastName, $"%{request.Keyword}%")) ) ) && (!request.FromDate.HasValue - || (model.CreatedDateTime >= request.FromDate.Value.ToUniversalTime()) + || (model.JoinDate >= request.FromDate.Value.ToUniversalTime()) ) && (!request.ToDate.HasValue - || (model.CreatedDateTime <= request.ToDate.Value.ToUniversalTime()) + || (model.JoinDate <= request.ToDate.Value.ToUniversalTime()) ); - var data = await UserInfoViewModel.Repository.GetModelListByAsync(predicate, request.OrderBy, request.Direction, request.PageSize, request.PageIndex).ConfigureAwait(false); + var data = await UserInfoViewModel.Repository.GetModelListByAsync( + predicate, request.OrderBy, request.Direction, request.PageSize, request.PageIndex) + .ConfigureAwait(false); if (data.IsSucceed) { data.Data.Items.ForEach(a => diff --git a/src/Mix.Cms.Api/Controllers/v1/ApiInitCmsController.cs b/src/Mix.Cms.Api/Controllers/v1/ApiInitCmsController.cs index 304885ac8..aaddc38ef 100644 --- a/src/Mix.Cms.Api/Controllers/v1/ApiInitCmsController.cs +++ b/src/Mix.Cms.Api/Controllers/v1/ApiInitCmsController.cs @@ -189,7 +189,7 @@ public async Task> InitLanguages([FromBody] List> InitLanguages([FromBody] List [HttpPost, HttpOptions] [Route("init-cms/step-3")] - [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)] //[RequestFormSizeLimit(valueCountLimit: 214748364)] // 200Mb [DisableRequestSizeLimit] public async Task> Save([FromForm] string model, [FromForm] IFormFile assets, [FromForm] IFormFile theme) { - string user = User.Claims.FirstOrDefault(c => c.Type == "Username").Value; + string user = User.Claims.FirstOrDefault(c => c.Type == "Username")?.Value; return await Mix.Cms.Lib.ViewModels.MixThemes.Helper.InitTheme(model, user, _lang, assets, theme); } diff --git a/src/Mix.Cms.Api/Controllers/v1/ApiAttributeFieldController.cs b/src/Mix.Cms.Api/Controllers/v1/ApiMixDatabaseColumnController.cs similarity index 83% rename from src/Mix.Cms.Api/Controllers/v1/ApiAttributeFieldController.cs rename to src/Mix.Cms.Api/Controllers/v1/ApiMixDatabaseColumnController.cs index c15357a8d..0d38adf3b 100644 --- a/src/Mix.Cms.Api/Controllers/v1/ApiAttributeFieldController.cs +++ b/src/Mix.Cms.Api/Controllers/v1/ApiMixDatabaseColumnController.cs @@ -12,7 +12,7 @@ using Mix.Cms.Lib.Enums; using Mix.Cms.Lib.Models.Cms; using Mix.Cms.Lib.Services; -using Mix.Cms.Lib.ViewModels.MixAttributeFields; +using Mix.Cms.Lib.ViewModels.MixDatabaseColumns; using Mix.Domain.Core.ViewModels; using Newtonsoft.Json.Linq; using System; @@ -23,26 +23,26 @@ namespace Mix.Cms.Api.Controllers.v1 { [Produces("application/json")] - [Route("api/v1/{culture}/attribute-field")] - public class ApiAttributeFieldController : - BaseGenericApiController + [Route("api/v1/{culture}/mix-database-column")] + public class ApiMixDatabaseColumnController : + BaseGenericApiController { - public ApiAttributeFieldController(MixCmsContext context, IMemoryCache memoryCache, Microsoft.AspNetCore.SignalR.IHubContext hubContext) : base(context, memoryCache, hubContext) + public ApiMixDatabaseColumnController(MixCmsContext context, IMemoryCache memoryCache, Microsoft.AspNetCore.SignalR.IHubContext hubContext) : base(context, memoryCache, hubContext) { } #region Get - // GET api/attribute-field/id + // GET api/mix-database-column/id [HttpGet, HttpOptions] [Route("delete/{id}")] - public async Task> DeleteAsync(int id) + public async Task> DeleteAsync(int id) { return await base.DeleteAsync( model => model.Id == id, true); } - // GET api/attribute-fields/id + // GET api/mix-database-columns/id [HttpGet, HttpOptions] [Route("details/{id}/{viewType}")] [Route("details/{viewType}")] @@ -54,13 +54,13 @@ public async Task> Details(string viewType, int? id) case "portal": if (id.HasValue) { - Expression> predicate = model => model.Id == id; + Expression> predicate = model => model.Id == id; var portalResult = await base.GetSingleAsync($"{viewType}_{id}", predicate); return Ok(JObject.FromObject(portalResult)); } else { - var model = new MixAttributeField() + var model = new MixDatabaseColumn() { Status = MixService.GetEnumConfig(MixAppSettingKeywords.DefaultContentStatus) , @@ -73,13 +73,13 @@ public async Task> Details(string viewType, int? id) default: if (id.HasValue) { - Expression> predicate = model => model.Id == id; + Expression> predicate = model => model.Id == id; var result = await base.GetSingleAsync($"{viewType}_{id}", predicate); return Ok(JObject.FromObject(result)); } else { - var model = new MixAttributeField() + var model = new MixDatabaseColumn() { Status = MixService.GetEnumConfig(MixAppSettingKeywords.DefaultContentStatus) , @@ -99,14 +99,14 @@ public async Task> Details(string viewType, int? id) public async Task>> InitByName(int setId) { return await UpdateViewModel.Repository.GetModelListByAsync( - m => m.AttributeSetId == setId).ConfigureAwait(false); + m => m.MixDatabaseId == setId).ConfigureAwait(false); } #endregion Get #region Post - // POST api/attribute-field + // POST api/mix-database-column [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme, Roles = "SuperAdmin, Admin")] [HttpPost, HttpOptions] [RequestFormSizeLimit(valueCountLimit: 214748364)] // 200Mb @@ -127,14 +127,14 @@ public async Task> Save(UpdateViewModel data return new RepositoryResponse() { Status = 501 }; } - // GET api/attribute-field + // GET api/mix-database-column [HttpPost, HttpOptions] [Route("list")] public async Task> GetList( [FromBody] RequestPaging request) { ParseRequestPagingDate(request); - Expression> predicate = model => + Expression> predicate = model => (string.IsNullOrWhiteSpace(request.Keyword) || (EF.Functions.Like(model.Name, $"%{request.Keyword}%")) ); diff --git a/src/Mix.Cms.Api/Controllers/v1/ApiAttributeSetController.cs b/src/Mix.Cms.Api/Controllers/v1/ApiMixDatabaseController.cs similarity index 82% rename from src/Mix.Cms.Api/Controllers/v1/ApiAttributeSetController.cs rename to src/Mix.Cms.Api/Controllers/v1/ApiMixDatabaseController.cs index 873ca02c4..c530b86be 100644 --- a/src/Mix.Cms.Api/Controllers/v1/ApiAttributeSetController.cs +++ b/src/Mix.Cms.Api/Controllers/v1/ApiMixDatabaseController.cs @@ -11,7 +11,7 @@ using Mix.Cms.Lib.Enums; using Mix.Cms.Lib.Models.Cms; using Mix.Cms.Lib.Services; -using Mix.Cms.Lib.ViewModels.MixAttributeSets; +using Mix.Cms.Lib.ViewModels.MixDatabases; using Mix.Domain.Core.ViewModels; using Newtonsoft.Json.Linq; using System; @@ -21,26 +21,26 @@ namespace Mix.Cms.Api.Controllers.v1 { [Produces("application/json")] - [Route("api/v1/{culture}/attribute-set")] - public class ApiAttributeSetController : - BaseGenericApiController + [Route("api/v1/{culture}/mix-database")] + public class ApiMixDatabaseController : + BaseGenericApiController { - public ApiAttributeSetController(MixCmsContext context, IMemoryCache memoryCache, Microsoft.AspNetCore.SignalR.IHubContext hubContext) : base(context, memoryCache, hubContext) + public ApiMixDatabaseController(MixCmsContext context, IMemoryCache memoryCache, Microsoft.AspNetCore.SignalR.IHubContext hubContext) : base(context, memoryCache, hubContext) { } #region Get - // GET api/attribute-set/id + // GET api/mix-database/id [HttpGet, HttpOptions] [Route("delete/{id}")] - public async Task> DeleteAsync(int id) + public async Task> DeleteAsync(int id) { return await base.DeleteAsync( model => model.Id == id, true); } - // GET api/attribute-sets/id + // GET api/mix-databases/id [HttpGet, HttpOptions] [Route("details/{id}/{viewType}")] [Route("details/{name}/{viewType}")] @@ -53,13 +53,13 @@ public async Task> Details(string viewType, string name, i case "portal": if (id.HasValue || !string.IsNullOrEmpty(name)) { - Expression> predicate = model => (model.Id == id || model.Name == name); + Expression> predicate = model => (model.Id == id || model.Name == name); var portalResult = await base.GetSingleAsync($"{viewType}_{id}", predicate); return Ok(JObject.FromObject(portalResult)); } else { - var model = new MixAttributeSet() + var model = new MixDatabase() { Status = MixService.GetEnumConfig(MixAppSettingKeywords.DefaultContentStatus) , @@ -72,13 +72,13 @@ public async Task> Details(string viewType, string name, i default: if (id.HasValue || !string.IsNullOrEmpty(name)) { - Expression> predicate = model => model.Id == id || model.Name == name; + Expression> predicate = model => model.Id == id || model.Name == name; var result = await base.GetSingleAsync($"{viewType}_{id}", predicate); return Ok(JObject.FromObject(result)); } else { - var model = new MixAttributeSet() + var model = new MixDatabase() { Status = MixService.GetEnumConfig(MixAppSettingKeywords.DefaultContentStatus) , @@ -95,7 +95,7 @@ public async Task> Details(string viewType, string name, i #region Post - // POST api/attribute-set + // POST api/mix-database [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme, Roles = "SuperAdmin, Admin")] [HttpPost, HttpOptions] [Route("save")] @@ -115,14 +115,14 @@ public async Task> Save([FromBody] UpdateVie return new RepositoryResponse() { Status = 501 }; } - // GET api/attribute-set + // GET api/mix-database [HttpPost, HttpOptions] [Route("list")] public async Task> GetList( [FromBody] RequestPaging request) { ParseRequestPagingDate(request); - Expression> predicate = model => + Expression> predicate = model => (string.IsNullOrWhiteSpace(request.Keyword) || (EF.Functions.Like(model.Name, $"%{request.Keyword}%")) || (EF.Functions.Like(model.Title, $"%{request.Keyword}%")) diff --git a/src/Mix.Cms.Api/Controllers/v1/ApiAttributeDataController.cs b/src/Mix.Cms.Api/Controllers/v1/ApiMixDatabaseDataController.cs similarity index 91% rename from src/Mix.Cms.Api/Controllers/v1/ApiAttributeDataController.cs rename to src/Mix.Cms.Api/Controllers/v1/ApiMixDatabaseDataController.cs index eab83ab48..0c7fe1147 100644 --- a/src/Mix.Cms.Api/Controllers/v1/ApiAttributeDataController.cs +++ b/src/Mix.Cms.Api/Controllers/v1/ApiMixDatabaseDataController.cs @@ -11,11 +11,11 @@ namespace Mix.Cms.Api.Controllers.v1 { [Produces("application/json")] - [Route("api/v1/{culture}/attribute-data")] - public class ApiAttributeDataController : + [Route("api/v1/{culture}/mix-database-data")] + public class ApiMixDatabaseDataController : BaseApiController { - public ApiAttributeDataController(MixCmsContext context, IMemoryCache memoryCache, Microsoft.AspNetCore.SignalR.IHubContext hubContext) : base(context, memoryCache, hubContext) + public ApiMixDatabaseDataController(MixCmsContext context, IMemoryCache memoryCache, Microsoft.AspNetCore.SignalR.IHubContext hubContext) : base(context, memoryCache, hubContext) { } @@ -61,7 +61,7 @@ private async Task> GetPostDataAsync(int setId, string vie // var model = new MixPostAttributeData() // { // Status = MixService.GetConfig(MixAppSettingKeywords.DefaultContentStatus), - // AttributeSetId = setId, + // MixDatabaseId = setId, // Specificulture = _lang, // Priority = Lib.ViewModels.MixPostAttributeDatas.UpdateViewModel.Repository.Max(a => a.Priority).Data + 1 // }; diff --git a/src/Mix.Cms.Api/Controllers/v1/ApiModuleDataController.cs b/src/Mix.Cms.Api/Controllers/v1/ApiModuleDataController.cs index 93ad741dd..3d2d2b873 100644 --- a/src/Mix.Cms.Api/Controllers/v1/ApiModuleDataController.cs +++ b/src/Mix.Cms.Api/Controllers/v1/ApiModuleDataController.cs @@ -315,7 +315,7 @@ public async Task>> UpdateInfos([FromBody { if (models != null) { - await CacheService.RemoveCacheAsync(); + await MixCacheService.RemoveCacheAsync(); return await ReadViewModel.UpdateInfosAsync(models); } else diff --git a/src/Mix.Cms.Api/Controllers/v1/ApiPortalController.cs b/src/Mix.Cms.Api/Controllers/v1/ApiPortalController.cs index bef74299d..5ee1778fd 100644 --- a/src/Mix.Cms.Api/Controllers/v1/ApiPortalController.cs +++ b/src/Mix.Cms.Api/Controllers/v1/ApiPortalController.cs @@ -73,7 +73,7 @@ public RepositoryResponse Settings() Cultures = cultures, PageTypes = CommonHelper.ParseEnumToObject(typeof(MixPageType)), ModuleTypes = CommonHelper.ParseEnumToObject(typeof(MixModuleType)), - AttributeSetTypes = CommonHelper.ParseEnumToObject(typeof(MixDatabaseType)), + MixDatabaseTypes = CommonHelper.ParseEnumToObject(typeof(MixDatabaseType)), DataTypes = CommonHelper.ParseEnumToObject(typeof(MixDataType)), Statuses = CommonHelper.ParseEnumToObject(typeof(MixContentStatus)), LastUpdateConfiguration = MixService.GetConfig("LastUpdateConfiguration") @@ -171,7 +171,7 @@ public RepositoryResponse GetGlobalSettings() Cultures = cultures, PageTypes = CommonHelper.ParseEnumToObject(typeof(MixPageType)), ModuleTypes = CommonHelper.ParseEnumToObject(typeof(MixModuleType)), - AttributeSetTypes = CommonHelper.ParseEnumToObject(typeof(MixDatabaseType)), + MixDatabaseTypes = CommonHelper.ParseEnumToObject(typeof(MixDatabaseType)), DataTypes = CommonHelper.ParseEnumToObject(typeof(MixDataType)), Statuses = CommonHelper.ParseEnumToObject(typeof(MixContentStatus)), LastUpdateConfiguration = MixService.GetConfig("LastUpdateConfiguration") @@ -362,7 +362,7 @@ public RepositoryResponse SaveAppSettings([FromBody] JObject model) MixService.Reload(); if (!MixService.GetMixConfig("IsCache")) { - Services.CacheService.RemoveCacheAsync(); + Services.MixCacheService.RemoveCacheAsync(); } } MixService.SetConfig("LastUpdateConfiguration", DateTime.UtcNow); @@ -467,7 +467,7 @@ private RepositoryResponse GetAllSettings() Cultures = cultures, PageTypes = CommonHelper.ParseEnumToObject(typeof(MixPageType)), ModuleTypes = CommonHelper.ParseEnumToObject(typeof(MixModuleType)), - AttributeSetTypes = CommonHelper.ParseEnumToObject(typeof(MixDatabaseType)), + MixDatabaseTypes = CommonHelper.ParseEnumToObject(typeof(MixDatabaseType)), DataTypes = CommonHelper.ParseEnumToObject(typeof(MixDataType)), Statuses = CommonHelper.ParseEnumToObject(typeof(MixContentStatus)), LastUpdateConfiguration = MixService.GetConfig("LastUpdateConfiguration") diff --git a/src/Mix.Cms.Lib/Constants/MixAppSettingKeywords.cs b/src/Mix.Cms.Lib/Constants/MixAppSettingKeywords.cs index 064aa433e..4d98af52d 100644 --- a/src/Mix.Cms.Lib/Constants/MixAppSettingKeywords.cs +++ b/src/Mix.Cms.Lib/Constants/MixAppSettingKeywords.cs @@ -8,7 +8,6 @@ public class MixAppSettingKeywords public const string DefaultBlankTemplateFolder = "DefaultTemplateFolder"; public const string DefaultTemplateFolder = "DefaultTemplateFolder"; public const string Language = "Language"; - public const string DefaultStatus = "DefaultContentStatus"; public const string DefaultCulture = "DefaultCulture"; public const string IsMysql = "IsMysql"; public const string Domain = "Domain"; diff --git a/src/Mix.Cms.Lib/Constants/MixColumnName.cs b/src/Mix.Cms.Lib/Constants/MixColumnName.cs new file mode 100644 index 000000000..6372d4d63 --- /dev/null +++ b/src/Mix.Cms.Lib/Constants/MixColumnName.cs @@ -0,0 +1,9 @@ +namespace Mix.Cms.Lib.Constants +{ + public class MixColumnName + { + public const string Id = "Id"; + public const string Status = "Status"; + public const string Specificulture = "Specificulture"; + } +} \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Constants/MixConfigurations.cs b/src/Mix.Cms.Lib/Constants/MixConfigurations.cs index 7fec87f20..765365e69 100644 --- a/src/Mix.Cms.Lib/Constants/MixConfigurations.cs +++ b/src/Mix.Cms.Lib/Constants/MixConfigurations.cs @@ -9,6 +9,7 @@ public static class MixConfigurations public const string CONST_ACCOUNT_CONNECTION = "MixAccountConnection"; public const string CONST_SETTING_IS_MYSQL = "IsMysql"; public const string CONST_SETTING_DATABASE_PROVIDER = "DatabaseProvider"; + public const string CONST_MIXCORE_VERSION = "MixcoreVersion"; public const string CONST_SETTING_LANGUAGE = "Language"; public const string CONST_FILE_APPSETTING = "appsettings.json"; public const string CONST_DEFAULT_FILE_APPSETTING = "default.appsettings.json"; diff --git a/src/Mix.Cms.Lib/Constants/MixRequestQueryKeywords.cs b/src/Mix.Cms.Lib/Constants/MixRequestQueryKeywords.cs new file mode 100644 index 000000000..55b50fbda --- /dev/null +++ b/src/Mix.Cms.Lib/Constants/MixRequestQueryKeywords.cs @@ -0,0 +1,20 @@ +namespace Mix.Cms.Lib.Constants +{ + public class MixRequestQueryKeywords + { + public const string FromDate = "fromDate"; + public const string ToDate = "toData"; + public const string Page = "page"; + public const string PageIndex = "pageIndex"; + public const string PageSize = "pageSize"; + public const string Direction = "direction"; + public const string OrderBy = "orderBy"; + public const string Status = "status"; + public const string DatabaseId = "databaseId"; + public const string DatabaseName = "databaseName"; + public const string Specificulture = "specificulture"; + public const string Keyword = "keyword"; + public const string ParentType = "parentType"; + public const string ParentId = "parentId"; + } +} \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Controllers/BaseAuthorizedApiController.cs b/src/Mix.Cms.Lib/Controllers/BaseAuthorizedApiController.cs deleted file mode 100644 index 8ef420b71..000000000 --- a/src/Mix.Cms.Lib/Controllers/BaseAuthorizedApiController.cs +++ /dev/null @@ -1,511 +0,0 @@ -using Microsoft.AspNetCore.Authentication.JwtBearer; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.Filters; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Storage; -using Mix.Cms.Lib.Constants; -using Mix.Cms.Lib.Enums; -using Mix.Cms.Lib.Services; -using Mix.Common.Helper; -using Mix.Domain.Core.ViewModels; -using Mix.Domain.Data.Repository; -using Mix.Heart.Extensions; -using Mix.Heart.Helpers; -using Mix.Services; -using Newtonsoft.Json.Linq; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Linq.Expressions; -using System.Reflection; -using System.Threading.Tasks; - -namespace Mix.Cms.Lib.Controllers -{ - [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)] - [Produces("application/json")] - public class BaseAuthorizedApiController : Controller - where TDbContext : DbContext - where TModel : class - where TView : Mix.Domain.Data.ViewModels.ViewModelBase - where TRead : Mix.Domain.Data.ViewModels.ViewModelBase - { - protected static TDbContext _context; - protected static IDbContextTransaction _transaction; - protected string _lang; - protected bool _forbidden; - - /// - /// The domain - /// - protected string _domain; - - #region Routes - - [HttpGet] - public virtual async Task>> Get() - { - bool isFromDate = DateTime.TryParse(Request.Query["fromDate"], out DateTime fromDate); - bool isToDate = DateTime.TryParse(Request.Query["toDate"], out DateTime toDate); - int.TryParse(Request.Query["pageIndex"], out int pageIndex); - bool isDirection = Enum.TryParse(Request.Query["direction"], out Heart.Enums.MixHeartEnums.DisplayDirection direction); - bool isPageSize = int.TryParse(Request.Query["pageSize"], out int pageSize); - - RequestPaging request = new RequestPaging() - { - PageIndex = pageIndex, - PageSize = isPageSize ? pageSize : 100, - OrderBy = Request.Query["orderBy"].ToString().ToTitleCase(), - Direction = direction - }; - Expression> predicate = null; - RepositoryResponse> getData = null; - if (!string.IsNullOrEmpty(_lang)) - { - predicate = ReflectionHelper.GetExpression("Specificulture", _lang, Heart.Enums.MixHeartEnums.ExpressionMethod.Eq); - getData = await DefaultRepository.Instance.GetModelListByAsync( - predicate, - request.OrderBy, request.Direction, - request.PageSize, request.PageIndex, null, null) - .ConfigureAwait(false); - } - else - { - getData = await DefaultRepository.Instance.GetModelListAsync( - request.OrderBy, request.Direction, request.PageSize, request.PageIndex, null, null).ConfigureAwait(false); - } - - if (getData.IsSucceed) - { - return Ok(getData.Data); - } - else - { - return BadRequest(getData.Errors); - } - } - - // GET: api/v1/rest/{culture}/attribute-set-data/5 - [HttpGet("{id}")] - public async Task> Get(string id) - { - var getData = await GetSingleAsync(id); - if (getData.IsSucceed) - { - return getData.Data; - } - else - { - return NoContent(); - } - } - - // GET: api/v1/rest/{culture}/attribute-set-data/5 - [HttpGet("default")] - public virtual ActionResult Default() - { - using (TDbContext context = UnitOfWorkHelper.InitContext()) - { - var transaction = context.Database.BeginTransaction(); - TView data = ReflectionHelper.InitModel(); - ReflectionHelper.SetPropertyValue(data, new JProperty("Specificulture", _lang)); - ReflectionHelper.SetPropertyValue(data, new JProperty("Status", MixService.GetConfig("DefaultContentStatus"))); - data.ExpandView(context, transaction); - return Ok(data); - } - } - - [HttpGet("remove-cache/{id}")] - public virtual async Task ClearCacheAsync(string id) - { - string key = $"_{id}"; - key += !string.IsNullOrEmpty(_lang) ? $"_{_lang}" : string.Empty; - await MixService.RemoveCacheAsync(typeof(TModel), key); - return NoContent(); - } - - [HttpGet("remove-cache")] - public virtual async Task ClearCacheAsync() - { - await MixService.RemoveCacheAsync(typeof(TModel)); - return NoContent(); - } - - // POST: api/s - // To protect from overposting attacks, please enable the specific properties you want to bind to, for - // more details see https://aka.ms/RazorPagesCRUD. - [HttpPost] - public virtual async Task> Create([FromBody] TView data) - { - ReflectionHelper.SetPropertyValue(data, new JProperty("CreatedBy", User.Claims.FirstOrDefault( - c => c.Type == "Username")?.Value)); - ReflectionHelper.SetPropertyValue(data, new JProperty("Specificulture", _lang)); - ReflectionHelper.SetPropertyValue(data, new JProperty("Status", MixService.GetEnumConfig(MixAppSettingKeywords.DefaultContentStatus))); - var result = await SaveAsync(data, true); - if (result.IsSucceed) - { - return Ok(result.Data); - } - else - { - return BadRequest(result.Errors); - } - } - - // PUT: api/s/5 - // To protect from overposting attacks, please enable the specific properties you want to bind to, for - // more details see https://aka.ms/RazorPagesCRUD. - [HttpPut("{id}")] - public virtual async Task Update(string id, [FromBody] TView data) - { - if (data != null) - { - ReflectionHelper.SetPropertyValue(data, new JProperty("ModifiedBy", User.Claims.FirstOrDefault( - c => c.Type == "Username")?.Value)); - ReflectionHelper.SetPropertyValue(data, new JProperty("LastModified", DateTime.UtcNow)); - var currentId = ReflectionHelper.GetPropertyValue(data, "Id").ToString(); - if (id != currentId) - { - return BadRequest(); - } - var result = await SaveAsync(data, true); - if (result.IsSucceed) - { - return Ok(result.Data); - } - else - { - var current = await GetSingleAsync(currentId); - if (!current.IsSucceed) - { - return NotFound(); - } - else - { - return BadRequest(result.Errors); - } - } - } - else - { - return BadRequest(new NullReferenceException()); - } - } - - // PATCH: api/v1/rest/en-us/attribute-set/portal/5 - [HttpPatch("{id}")] - public virtual async Task Patch(string id, [FromBody] JObject fields) - { - var result = await GetSingleAsync(id); - if (result.IsSucceed) - { - ReflectionHelper.SetPropertyValue(result.Data, new JProperty("ModifiedBy", User.Claims.FirstOrDefault( - c => c.Type == "Username")?.Value)); - ReflectionHelper.SetPropertyValue(result.Data, new JProperty("LastModified", DateTime.UtcNow)); - var saveResult = await result.Data.UpdateFieldsAsync(fields); - if (saveResult.IsSucceed) - { - return NoContent(); - } - else - { - return BadRequest(saveResult.Errors); - } - } - else - { - return NotFound(); - } - } - - // DELETE: api/v1/rest/en-us/attribute-set/portal/5 - [HttpDelete("{id}")] - public virtual async Task> Delete(string id) - { - var result = await DeleteAsync(id, true); - if (result.IsSucceed) - { - return Ok(result.Data); - } - else - { - return BadRequest(result.Errors); - } - } - - #endregion Routes - - #region Overrides - - /// - /// Called before the action method is invoked. - /// - /// The action executing context. - public override void OnActionExecuting(ActionExecutingContext context) - { - GetLanguage(); - if (MixService.GetIpConfig("IsRetrictIp")) - { - var allowedIps = MixService.GetIpConfig("AllowedIps") ?? new JArray(); - var exceptIps = MixService.GetIpConfig("ExceptIps") ?? new JArray(); - string remoteIp = Request.HttpContext?.Connection?.RemoteIpAddress?.ToString(); - if ( - // allow localhost - //remoteIp != "::1" && - (!allowedIps.Any(t => t.Value() == "*") && !allowedIps.Contains(remoteIp)) || - (exceptIps.Any(t => t.Value() == remoteIp)) - ) - { - _forbidden = true; - } - } - base.OnActionExecuting(context); - } - - protected void GetLanguage() - { - _lang = RouteData?.Values["culture"] != null ? RouteData.Values["culture"].ToString() : string.Empty; - _domain = string.Format("{0}://{1}", Request.Scheme, Request.Host); - } - - #endregion Overrides - - #region Helpers - - protected async Task> GetSingleAsync(string id) - where T : Mix.Domain.Data.ViewModels.ViewModelBase - { - Expression> predicate = ReflectionHelper.GetExpression("Id", id, Heart.Enums.MixHeartEnums.ExpressionMethod.Eq); - if (!string.IsNullOrEmpty(_lang)) - { - var idPre = ReflectionHelper.GetExpression("Specificulture", _lang, Heart.Enums.MixHeartEnums.ExpressionMethod.Eq); - predicate = predicate.AndAlso(idPre); - } - - return await GetSingleAsync(predicate); - } - - protected async Task> GetSingleAsync(string id) - { - Expression> predicate = ReflectionHelper.GetExpression("Id", id, Heart.Enums.MixHeartEnums.ExpressionMethod.Eq); - if (!string.IsNullOrEmpty(_lang)) - { - var idPre = ReflectionHelper.GetExpression("Specificulture", _lang, Heart.Enums.MixHeartEnums.ExpressionMethod.Eq); - predicate = predicate.AndAlso(idPre); - } - - return await GetSingleAsync(predicate); - } - - protected async Task> GetSingleAsync(Expression> predicate = null) - { - RepositoryResponse data = null; - if (predicate != null) - { - data = await DefaultRepository.Instance.GetSingleModelAsync(predicate); - } - return data; - } - - protected async Task> GetSingleAsync(Expression> predicate = null) - where T : Mix.Domain.Data.ViewModels.ViewModelBase - { - RepositoryResponse data = null; - if (predicate != null) - { - data = await DefaultRepository.Instance.GetSingleModelAsync(predicate); - } - return data; - } - - protected async Task> DeleteAsync(string id, bool isDeleteRelated = false) - where T : Mix.Domain.Data.ViewModels.ViewModelBase - { - var data = await GetSingleAsync(id); - if (data.IsSucceed) - { - var result = await DeleteAsync(data.Data, isDeleteRelated); - - return result; - } - return new RepositoryResponse() { IsSucceed = false }; - } - - protected async Task> DeleteAsync(string id, bool isDeleteRelated = false) - { - var data = await GetSingleAsync(id); - if (data.IsSucceed) - { - var result = await DeleteAsync(data.Data, isDeleteRelated); - - return result; - } - return new RepositoryResponse() { IsSucceed = false }; - } - - protected async Task> DeleteAsync(TView data, bool isDeleteRelated = false) - { - if (data != null) - { - var result = await data.RemoveModelAsync(isDeleteRelated).ConfigureAwait(false); - - return result; - } - return new RepositoryResponse() { IsSucceed = false }; - } - - protected async Task> DeleteAsync(T data, bool isDeleteRelated = false) - where T : Mix.Domain.Data.ViewModels.ViewModelBase - { - if (data != null) - { - var result = await data.RemoveModelAsync(isDeleteRelated).ConfigureAwait(false); - - return result; - } - return new RepositoryResponse() { IsSucceed = false }; - } - - protected async Task>> DeleteListAsync(Expression> predicate, bool isRemoveRelatedModel = false) - { - var data = await DefaultRepository.Instance.RemoveListModelAsync(isRemoveRelatedModel, predicate); - - return data; - } - - protected async Task> ExportListAsync(Expression> predicate, string type) - { - var getData = await DefaultModelRepository.Instance.GetModelListByAsync(predicate, _context); - FileViewModel file = null; - if (getData.IsSucceed) - { - string exportPath = $"{MixFolders.ExportFolder}/Structures/{typeof(TModel).Name}"; - string filename = $"{type.ToString()}_{DateTime.UtcNow.ToString("ddMMyyyy")}"; - var objContent = new JObject( - new JProperty("type", type.ToString()), - new JProperty("data", JArray.FromObject(getData.Data)) - ); - file = new FileViewModel() - { - Filename = filename, - Extension = MixFileExtensions.Json, - FileFolder = exportPath, - Content = objContent.ToString() - }; - // Copy current templates file - MixFileRepository.Instance.SaveWebFile(file); - } - UnitOfWorkHelper.HandleTransaction(getData.IsSucceed, true, _transaction); - return new RepositoryResponse() - { - IsSucceed = true, - Data = file, - }; - } - - protected async Task>> GetListAsync(Expression> predicate = null) - { - bool isFromDate = DateTime.TryParse(Request.Query["fromDate"], out DateTime fromDate); - bool isToDate = DateTime.TryParse(Request.Query["toDate"], out DateTime toDate); - int.TryParse(Request.Query["pageIndex"], out int pageIndex); - bool isDirection = Enum.TryParse(Request.Query["direction"], out Heart.Enums.MixHeartEnums.DisplayDirection direction); - bool isPageSize = int.TryParse(Request.Query["pageSize"], out int pageSize); - - RequestPaging request = new RequestPaging() - { - PageIndex = pageIndex, - PageSize = isPageSize ? pageSize : 100, - OrderBy = Request.Query["orderBy"].ToString().ToTitleCase(), - Direction = direction - }; - - RepositoryResponse> data = null; - - if (data == null) - { - if (predicate != null) - { - data = await DefaultRepository.Instance.GetModelListByAsync( - predicate, request.OrderBy, request.Direction, request.PageSize, request.PageIndex, null, null); - } - else - { - data = await DefaultRepository.Instance.GetModelListAsync(request.OrderBy, request.Direction, request.PageSize, request.PageIndex, null, null).ConfigureAwait(false); - } - } - return data; - } - - protected async Task> SaveAsync(TView vm, bool isSaveSubModel) - { - if (vm != null) - { - var result = await vm.SaveModelAsync(isSaveSubModel).ConfigureAwait(false); - - return result; - } - return new RepositoryResponse(); - } - - protected async Task> SaveAsync(JObject obj, Expression> predicate) - { - if (obj != null) - { - List fields = new List(); - Type type = typeof(TModel); - foreach (var item in obj.Properties()) - { - var propName = System.Globalization.CultureInfo.InvariantCulture.TextInfo.ToTitleCase(item.Name); - PropertyInfo propertyInfo = type.GetProperty(propName); - if (propertyInfo != null) - { - object val = Convert.ChangeType(item.Value, propertyInfo.PropertyType); - var field = new EntityField() - { - PropertyName = propName, - PropertyValue = val - }; - fields.Add(field); - } - } - - var result = await DefaultRepository.Instance.UpdateFieldsAsync(predicate, fields); - - return result; - } - return new RepositoryResponse(); - } - - protected async Task>> SaveListAsync(List lstVm, bool isSaveSubModel) - { - var result = await DefaultRepository.Instance.SaveListModelAsync(lstVm, isSaveSubModel); - - return result; - } - - protected RepositoryResponse> SaveList(List lstVm, bool isSaveSubModel) - { - var result = new RepositoryResponse>() { IsSucceed = true }; - if (lstVm != null) - { - foreach (var vm in lstVm) - { - var tmp = vm.SaveModel(isSaveSubModel, - _context, _transaction); - result.IsSucceed = result.IsSucceed && tmp.IsSucceed; - if (!tmp.IsSucceed) - { - result.Exception = tmp.Exception; - result.Errors.AddRange(tmp.Errors); - } - } - return result; - } - - return result; - } - - #endregion Helpers - } -} \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Controllers/BaseAuthorizedRestApiController.cs b/src/Mix.Cms.Lib/Controllers/BaseAuthorizedRestApiController.cs index 32cf152cb..8fa9f29e1 100644 --- a/src/Mix.Cms.Lib/Controllers/BaseAuthorizedRestApiController.cs +++ b/src/Mix.Cms.Lib/Controllers/BaseAuthorizedRestApiController.cs @@ -11,6 +11,8 @@ using Mix.Common.Helper; using Mix.Domain.Core.ViewModels; using Mix.Domain.Data.Repository; +using Mix.Domain.Data.ViewModels; +using Mix.Heart.Enums; using Mix.Heart.Extensions; using Mix.Heart.Helpers; using Mix.Services; @@ -26,12 +28,12 @@ namespace Mix.Cms.Lib.Controllers { [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)] [Produces("application/json")] - public class BaseAuthorizedRestApiController : Controller + public class BaseAuthorizedRestApiController : Controller where TDbContext : DbContext where TModel : class - where TView : Mix.Domain.Data.ViewModels.ViewModelBase - where TRead : Mix.Domain.Data.ViewModels.ViewModelBase - where TDelete : Mix.Domain.Data.ViewModels.ViewModelBase + where TUpdate : ViewModelBase + where TRead : ViewModelBase + where TDelete : ViewModelBase { protected static TDbContext _context; protected static IDbContextTransaction _transaction; @@ -48,17 +50,17 @@ public class BaseAuthorizedRestApiController>> Get() { - bool isFromDate = DateTime.TryParse(Request.Query["fromDate"], out DateTime fromDate); - bool isToDate = DateTime.TryParse(Request.Query["toDate"], out DateTime toDate); - int.TryParse(Request.Query["pageIndex"], out int pageIndex); - bool isDirection = Enum.TryParse(Request.Query["direction"], out Heart.Enums.MixHeartEnums.DisplayDirection direction); - bool isPageSize = int.TryParse(Request.Query["pageSize"], out int pageSize); + bool isFromDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.FromDate], out DateTime fromDate); + bool isToDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.ToDate], out DateTime toDate); + int.TryParse(Request.Query[MixRequestQueryKeywords.PageIndex], out int pageIndex); + bool isDirection = Enum.TryParse(Request.Query[MixRequestQueryKeywords.Direction], out MixHeartEnums.DisplayDirection direction); + bool isPageSize = int.TryParse(Request.Query[MixRequestQueryKeywords.PageSize], out int pageSize); RequestPaging request = new RequestPaging() { PageIndex = pageIndex, PageSize = isPageSize ? pageSize : 100, - OrderBy = Request.Query["orderBy"].ToString().ToTitleCase(), + OrderBy = Request.Query[MixRequestQueryKeywords.OrderBy].ToString().ToTitleCase(), Direction = direction }; @@ -75,9 +77,8 @@ public virtual async Task>> Get() } } - // GET: api/v1/rest/{culture}/attribute-set-data/5 [HttpGet("{id}")] - public async Task> Get(string id) + public virtual async Task> Get(string id) { var getData = await GetSingleAsync(id); if (getData.IsSucceed) @@ -90,15 +91,14 @@ public async Task> Get(string id) } } - // GET: api/v1/rest/{culture}/attribute-set-data/5 [HttpGet("duplicate/{id}")] - public async Task> Duplicate(string id) + public virtual async Task> Duplicate(string id) { var getData = await GetSingleAsync(id); if (getData.IsSucceed) { var data = getData.Data; - var idProperty = ReflectionHelper.GetPropertyType(data.GetType(), "Id"); + var idProperty = ReflectionHelper.GetPropertyType(data.GetType(), MixColumnName.Id); switch (idProperty.Name.ToLower()) { case "int32": @@ -115,7 +115,7 @@ public async Task> Duplicate(string id) { string key = $"_{id}"; key += !string.IsNullOrEmpty(_lang) ? $"_{_lang}" : string.Empty; - await MixService.RemoveCacheAsync(typeof(TModel), key); + await MixCacheService.RemoveCacheAsync(typeof(TModel), key); return Ok(saveResult.Data); } else @@ -129,16 +129,15 @@ public async Task> Duplicate(string id) } } - // GET: api/v1/rest/{culture}/attribute-set-data/5 [HttpGet("default")] - public virtual ActionResult Default() + public virtual ActionResult Default() { using (TDbContext context = UnitOfWorkHelper.InitContext()) { var transaction = context.Database.BeginTransaction(); - TView data = ReflectionHelper.InitModel(); + TUpdate data = ReflectionHelper.InitModel(); ReflectionHelper.SetPropertyValue(data, new JProperty("Specificulture", _lang)); - ReflectionHelper.SetPropertyValue(data, new JProperty("Status", MixService.GetConfig("DefaultContentStatus"))); + ReflectionHelper.SetPropertyValue(data, new JProperty("Status", MixService.GetConfig(MixAppSettingKeywords.DefaultContentStatus))); data.ExpandView(context, transaction); return Ok(data); } @@ -149,22 +148,19 @@ public virtual async Task ClearCacheAsync(string id) { string key = $"_{id}"; key += !string.IsNullOrEmpty(_lang) ? $"_{_lang}" : string.Empty; - await MixService.RemoveCacheAsync(typeof(TModel), key); + await MixCacheService.RemoveCacheAsync(typeof(TModel), key); return NoContent(); } [HttpGet("remove-cache")] public virtual async Task ClearCacheAsync() { - await MixService.RemoveCacheAsync(typeof(TModel)); + await MixCacheService.RemoveCacheAsync(typeof(TModel)); return NoContent(); } - // POST: api/s - // To protect from overposting attacks, please enable the specific properties you want to bind to, for - // more details see https://aka.ms/RazorPagesCRUD. [HttpPost] - public virtual async Task> Create([FromBody] TView data) + public virtual async Task> Create([FromBody] TUpdate data) { ReflectionHelper.SetPropertyValue(data, new JProperty("CreatedBy", User.Claims.FirstOrDefault( c => c.Type == "Username")?.Value)); @@ -181,18 +177,15 @@ public virtual async Task> Create([FromBody] TView data) } } - // PUT: api/s/5 - // To protect from overposting attacks, please enable the specific properties you want to bind to, for - // more details see https://aka.ms/RazorPagesCRUD. [HttpPut("{id}")] - public virtual async Task Update(string id, [FromBody] TView data) + public virtual async Task Update(string id, [FromBody] TUpdate data) { if (data != null) { ReflectionHelper.SetPropertyValue(data, new JProperty("ModifiedBy", User.Claims.FirstOrDefault( c => c.Type == "Username")?.Value)); ReflectionHelper.SetPropertyValue(data, new JProperty("LastModified", DateTime.UtcNow)); - var currentId = ReflectionHelper.GetPropertyValue(data, "Id").ToString(); + var currentId = ReflectionHelper.GetPropertyValue(data, MixColumnName.Id).ToString(); if (id != currentId) { return BadRequest(); @@ -221,7 +214,6 @@ public virtual async Task Update(string id, [FromBody] TView data } } - // PATCH: api/v1/rest/en-us/attribute-set/portal/5 [HttpPatch("{id}")] public virtual async Task Patch(string id, [FromBody] JObject fields) { @@ -247,7 +239,6 @@ public virtual async Task Patch(string id, [FromBody] JObject fie } } - // DELETE: api/v1/rest/en-us/attribute-set/portal/5 [HttpDelete("{id}")] public virtual async Task> Delete(string id) { @@ -267,11 +258,10 @@ public virtual async Task> Delete(string id) public async Task> ListActionAsync([FromBody] ListAction data) { Expression> predicate = ReflectionHelper.GetExpression("Specificulture", _lang, Heart.Enums.MixHeartEnums.ExpressionMethod.Eq); - //ReflectionHelper.GetExpression("Id", id, Heart.Enums.MixHeartEnums.ExpressionMethod.Eq); Expression> idPre = null; foreach (var id in data.Data) { - var temp = ReflectionHelper.GetExpression("Id", id, Heart.Enums.MixHeartEnums.ExpressionMethod.Eq); + var temp = ReflectionHelper.GetExpression(MixColumnName.Id, id, Heart.Enums.MixHeartEnums.ExpressionMethod.Eq); idPre = idPre != null ? idPre.AndAlso(temp) @@ -289,7 +279,7 @@ public async Task> ListActionAsync([FromBody] ListAction>> PublishListAsync(Expression> predicate) + private async Task>> PublishListAsync(Expression> predicate) { - var data = await GetListAsync(predicate); + var data = await GetListAsync(predicate); foreach (var item in data.Data.Items) { ReflectionHelper.SetPropertyValue(item, new JProperty("Status", MixContentStatus.Published)); @@ -354,7 +344,7 @@ private async Task>> PublishListAsync(Expression< protected async Task> GetSingleAsync(string id) where T : Mix.Domain.Data.ViewModels.ViewModelBase { - Expression> predicate = ReflectionHelper.GetExpression("Id", id, Heart.Enums.MixHeartEnums.ExpressionMethod.Eq); + Expression> predicate = ReflectionHelper.GetExpression(MixColumnName.Id, id, Heart.Enums.MixHeartEnums.ExpressionMethod.Eq); if (!string.IsNullOrEmpty(_lang)) { var idPre = ReflectionHelper.GetExpression("Specificulture", _lang, Heart.Enums.MixHeartEnums.ExpressionMethod.Eq); @@ -364,9 +354,9 @@ protected async Task> GetSingleAsync(string id) return await GetSingleAsync(predicate); } - protected async Task> GetSingleAsync(string id) + protected async Task> GetSingleAsync(string id) { - Expression> predicate = ReflectionHelper.GetExpression("Id", id, Heart.Enums.MixHeartEnums.ExpressionMethod.Eq); + Expression> predicate = ReflectionHelper.GetExpression(MixColumnName.Id, id, Heart.Enums.MixHeartEnums.ExpressionMethod.Eq); if (!string.IsNullOrEmpty(_lang)) { var idPre = ReflectionHelper.GetExpression("Specificulture", _lang, Heart.Enums.MixHeartEnums.ExpressionMethod.Eq); @@ -376,12 +366,12 @@ protected async Task> GetSingleAsync(string id) return await GetSingleAsync(predicate); } - protected async Task> GetSingleAsync(Expression> predicate = null) + protected async Task> GetSingleAsync(Expression> predicate = null) { - RepositoryResponse data = null; + RepositoryResponse data = null; if (predicate != null) { - data = await DefaultRepository.Instance.GetSingleModelAsync(predicate); + data = await DefaultRepository.Instance.GetSingleModelAsync(predicate); } return data; } @@ -422,7 +412,7 @@ protected async Task> DeleteAsync(string id, bool isD return new RepositoryResponse() { IsSucceed = false }; } - protected async Task> DeleteAsync(TView data, bool isDeleteRelated = false) + protected async Task> DeleteAsync(TUpdate data, bool isDeleteRelated = false) { if (data != null) { @@ -465,7 +455,7 @@ protected async Task> ExportListAsync(Expressi jData.Add(JObject.FromObject(item)); } - var result = Lib.ViewModels.MixAttributeSetDatas.Helper.ExportAttributeToExcel( + var result = Lib.ViewModels.MixDatabaseDatas.Helper.ExportAttributeToExcel( jData, string.Empty, exportPath, $"{type}", null); return result; @@ -482,17 +472,17 @@ protected async Task> ExportListAsync(Expressi protected async Task>> GetListAsync(Expression> predicate = null) where T : Mix.Domain.Data.ViewModels.ViewModelBase { - bool isFromDate = DateTime.TryParse(Request.Query["fromDate"], out DateTime fromDate); - bool isToDate = DateTime.TryParse(Request.Query["toDate"], out DateTime toDate); - int.TryParse(Request.Query["pageIndex"], out int pageIndex); - bool isDirection = Enum.TryParse(Request.Query["direction"], out Heart.Enums.MixHeartEnums.DisplayDirection direction); - bool isPageSize = int.TryParse(Request.Query["pageSize"], out int pageSize); + bool isFromDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.FromDate], out DateTime fromDate); + bool isToDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.ToDate], out DateTime toDate); + int.TryParse(Request.Query[MixRequestQueryKeywords.PageIndex], out int pageIndex); + bool isDirection = Enum.TryParse(Request.Query[MixRequestQueryKeywords.Direction], out Heart.Enums.MixHeartEnums.DisplayDirection direction); + bool isPageSize = int.TryParse(Request.Query[MixRequestQueryKeywords.PageSize], out int pageSize); RequestPaging request = new RequestPaging() { PageIndex = pageIndex, PageSize = isPageSize ? pageSize : 100, - OrderBy = Request.Query["orderBy"].ToString().ToTitleCase(), + OrderBy = Request.Query[MixRequestQueryKeywords.OrderBy].ToString().ToTitleCase(), Direction = direction }; @@ -547,23 +537,23 @@ protected async Task> SavePropertiesAsync(JObject obj } } - var result = await DefaultRepository.Instance.UpdateFieldsAsync(predicate, fields); + var result = await DefaultRepository.Instance.UpdateFieldsAsync(predicate, fields); return result; } return new RepositoryResponse(); } - protected async Task>> SaveListAsync(List lstVm, bool isSaveSubModel) + protected async Task>> SaveListAsync(List lstVm, bool isSaveSubModel) { - var result = await DefaultRepository.Instance.SaveListModelAsync(lstVm, isSaveSubModel); + var result = await DefaultRepository.Instance.SaveListModelAsync(lstVm, isSaveSubModel); return result; } - protected RepositoryResponse> SaveList(List lstVm, bool isSaveSubModel) + protected RepositoryResponse> SaveList(List lstVm, bool isSaveSubModel) { - var result = new RepositoryResponse>() { IsSucceed = true }; + var result = new RepositoryResponse>() { IsSucceed = true }; if (lstVm != null) { foreach (var vm in lstVm) diff --git a/src/Mix.Cms.Lib/Controllers/BaseReadOnlyApiController.cs b/src/Mix.Cms.Lib/Controllers/BaseReadOnlyApiController.cs index 9ffaaa9e8..f0bd6a928 100644 --- a/src/Mix.Cms.Lib/Controllers/BaseReadOnlyApiController.cs +++ b/src/Mix.Cms.Lib/Controllers/BaseReadOnlyApiController.cs @@ -2,12 +2,14 @@ using Microsoft.AspNetCore.Mvc.Filters; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Storage; +using Mix.Cms.Lib.Constants; using Mix.Cms.Lib.Services; using Mix.Common.Helper; using Mix.Domain.Core.ViewModels; using Mix.Domain.Data.Repository; using Mix.Heart.Extensions; using Mix.Heart.Helpers; +using Mix.Services; using Newtonsoft.Json.Linq; using System; using System.Linq; @@ -37,24 +39,24 @@ public class BaseReadOnlyApiController : Controller [HttpGet] public virtual async Task>> Get() { - bool isFromDate = DateTime.TryParse(Request.Query["fromDate"], out DateTime fromDate); - bool isToDate = DateTime.TryParse(Request.Query["toDate"], out DateTime toDate); - int.TryParse(Request.Query["pageIndex"], out int pageIndex); - bool isDirection = Enum.TryParse(Request.Query["direction"], out Heart.Enums.MixHeartEnums.DisplayDirection direction); - bool isPageSize = int.TryParse(Request.Query["pageSize"], out int pageSize); + bool isFromDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.FromDate], out DateTime fromDate); + bool isToDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.ToDate], out DateTime toDate); + int.TryParse(Request.Query[MixRequestQueryKeywords.PageIndex], out int pageIndex); + bool isDirection = Enum.TryParse(Request.Query[MixRequestQueryKeywords.Direction], out Heart.Enums.MixHeartEnums.DisplayDirection direction); + bool isPageSize = int.TryParse(Request.Query[MixRequestQueryKeywords.PageSize], out int pageSize); RequestPaging request = new RequestPaging() { PageIndex = pageIndex, PageSize = isPageSize ? pageSize : 100, - OrderBy = Request.Query["orderBy"].ToString().ToTitleCase(), + OrderBy = Request.Query[MixRequestQueryKeywords.OrderBy].ToString().ToTitleCase(), Direction = direction }; Expression> predicate = null; RepositoryResponse> getData = null; if (!string.IsNullOrEmpty(_lang)) { - predicate = ReflectionHelper.GetExpression("Specificulture", _lang, Heart.Enums.MixHeartEnums.ExpressionMethod.Eq); + predicate = ReflectionHelper.GetExpression(MixColumnName.Specificulture, _lang, Heart.Enums.MixHeartEnums.ExpressionMethod.Eq); getData = await DefaultRepository.Instance.GetModelListByAsync( predicate, request.OrderBy, request.Direction, @@ -77,9 +79,8 @@ public virtual async Task>> Get() } } - // GET: api/v1/rest/{culture}/attribute-set-data/5 [HttpGet("{id}")] - public async Task> Get(string id) + public virtual async Task> Get(string id) { var getData = await GetSingleAsync(id); if (getData.IsSucceed) @@ -92,7 +93,6 @@ public async Task> Get(string id) } } - // GET: api/v1/rest/{culture}/attribute-set-data/5 [HttpGet("default")] public virtual ActionResult Default() { @@ -100,8 +100,8 @@ public virtual ActionResult Default() { var transaction = context.Database.BeginTransaction(); TView data = ReflectionHelper.InitModel(); - ReflectionHelper.SetPropertyValue(data, new JProperty("Specificulture", _lang)); - ReflectionHelper.SetPropertyValue(data, new JProperty("Status", MixService.GetConfig("DefaultContentStatus"))); + ReflectionHelper.SetPropertyValue(data, new JProperty(MixColumnName.Specificulture, _lang)); + ReflectionHelper.SetPropertyValue(data, new JProperty(MixColumnName.Status, MixService.GetConfig(MixAppSettingKeywords.DefaultContentStatus))); data.ExpandView(context, transaction); return Ok(data); } @@ -112,14 +112,14 @@ public virtual async Task ClearCacheAsync(string id) { string key = $"_{id}"; key += !string.IsNullOrEmpty(_lang) ? $"_{_lang}" : string.Empty; - await MixService.RemoveCacheAsync(typeof(TModel), key); + await MixCacheService.RemoveCacheAsync(typeof(TModel), key); return NoContent(); } [HttpGet("remove-cache")] public virtual async Task ClearCacheAsync() { - await MixService.RemoveCacheAsync(typeof(TModel)); + await MixCacheService.RemoveCacheAsync(typeof(TModel)); return NoContent(); } @@ -165,10 +165,10 @@ protected void GetLanguage() protected async Task> GetSingleAsync(string id) where T : Mix.Domain.Data.ViewModels.ViewModelBase { - Expression> predicate = ReflectionHelper.GetExpression("Id", id, Heart.Enums.MixHeartEnums.ExpressionMethod.Eq); + Expression> predicate = ReflectionHelper.GetExpression(MixColumnName.Id, id, Heart.Enums.MixHeartEnums.ExpressionMethod.Eq); if (!string.IsNullOrEmpty(_lang)) { - var idPre = ReflectionHelper.GetExpression("Specificulture", _lang, Heart.Enums.MixHeartEnums.ExpressionMethod.Eq); + var idPre = ReflectionHelper.GetExpression(MixColumnName.Specificulture, _lang, Heart.Enums.MixHeartEnums.ExpressionMethod.Eq); predicate = predicate.AndAlso(idPre); } @@ -177,10 +177,10 @@ protected async Task> GetSingleAsync(string id) protected async Task> GetSingleAsync(string id) { - Expression> predicate = ReflectionHelper.GetExpression("Id", id, Heart.Enums.MixHeartEnums.ExpressionMethod.Eq); + Expression> predicate = ReflectionHelper.GetExpression(MixColumnName.Id, id, Heart.Enums.MixHeartEnums.ExpressionMethod.Eq); if (!string.IsNullOrEmpty(_lang)) { - var idPre = ReflectionHelper.GetExpression("Specificulture", _lang, Heart.Enums.MixHeartEnums.ExpressionMethod.Eq); + var idPre = ReflectionHelper.GetExpression(MixColumnName.Specificulture, _lang, Heart.Enums.MixHeartEnums.ExpressionMethod.Eq); predicate = predicate.AndAlso(idPre); } @@ -210,17 +210,17 @@ protected async Task> GetSingleAsync(Expression>> GetListAsync(Expression> predicate = null) { - bool isFromDate = DateTime.TryParse(Request.Query["fromDate"], out DateTime fromDate); - bool isToDate = DateTime.TryParse(Request.Query["toDate"], out DateTime toDate); - int.TryParse(Request.Query["pageIndex"], out int pageIndex); - bool isDirection = Enum.TryParse(Request.Query["direction"], out Heart.Enums.MixHeartEnums.DisplayDirection direction); - bool isPageSize = int.TryParse(Request.Query["pageSize"], out int pageSize); + bool isFromDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.FromDate], out DateTime fromDate); + bool isToDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.ToDate], out DateTime toDate); + int.TryParse(Request.Query[MixRequestQueryKeywords.PageIndex], out int pageIndex); + bool isDirection = Enum.TryParse(Request.Query[MixRequestQueryKeywords.Direction], out Heart.Enums.MixHeartEnums.DisplayDirection direction); + bool isPageSize = int.TryParse(Request.Query[MixRequestQueryKeywords.PageSize], out int pageSize); RequestPaging request = new RequestPaging() { PageIndex = pageIndex, PageSize = isPageSize ? pageSize : 100, - OrderBy = Request.Query["orderBy"].ToString().ToTitleCase(), + OrderBy = Request.Query[MixRequestQueryKeywords.OrderBy].ToString().ToTitleCase(), Direction = direction }; diff --git a/src/Mix.Cms.Lib/Controllers/BaseRestApiController .cs b/src/Mix.Cms.Lib/Controllers/BaseRestApiController .cs index dfe740276..52b3e6310 100644 --- a/src/Mix.Cms.Lib/Controllers/BaseRestApiController .cs +++ b/src/Mix.Cms.Lib/Controllers/BaseRestApiController .cs @@ -9,6 +9,8 @@ using Mix.Common.Helper; using Mix.Domain.Core.ViewModels; using Mix.Domain.Data.Repository; +using Mix.Domain.Data.ViewModels; +using Mix.Heart.Enums; using Mix.Heart.Extensions; using Mix.Heart.Helpers; using Mix.Services; @@ -26,7 +28,7 @@ namespace Mix.Cms.Lib.Controllers public class BaseRestApiController : Controller where TDbContext : DbContext where TModel : class - where TView : Mix.Domain.Data.ViewModels.ViewModelBase + where TView : ViewModelBase { protected static TDbContext _context; protected static IDbContextTransaction _transaction; @@ -43,17 +45,17 @@ public class BaseRestApiController : Controller [HttpGet] public virtual async Task>> Get() { - bool isFromDate = DateTime.TryParse(Request.Query["fromDate"], out DateTime fromDate); - bool isToDate = DateTime.TryParse(Request.Query["toDate"], out DateTime toDate); - int.TryParse(Request.Query["pageIndex"], out int pageIndex); - bool isDirection = Enum.TryParse(Request.Query["direction"], out Heart.Enums.MixHeartEnums.DisplayDirection direction); - bool isPageSize = int.TryParse(Request.Query["pageSize"], out int pageSize); + bool isFromDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.FromDate], out DateTime fromDate); + bool isToDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.ToDate], out DateTime toDate); + int.TryParse(Request.Query[MixRequestQueryKeywords.PageIndex], out int pageIndex); + bool isDirection = Enum.TryParse(Request.Query[MixRequestQueryKeywords.Direction], out MixHeartEnums.DisplayDirection direction); + bool isPageSize = int.TryParse(Request.Query[MixRequestQueryKeywords.PageSize], out int pageSize); RequestPaging request = new RequestPaging() { PageIndex = pageIndex, PageSize = isPageSize ? pageSize : 100, - OrderBy = Request.Query["orderBy"].ToString().ToTitleCase(), + OrderBy = Request.Query[MixRequestQueryKeywords.OrderBy].ToString().ToTitleCase(), Direction = direction }; @@ -70,9 +72,8 @@ public virtual async Task>> Get() } } - // GET: api/v1/rest/{culture}/attribute-set-data/5 [HttpGet("{id}")] - public async Task> Get(string id) + public virtual async Task> Get(string id) { var getData = await GetSingleAsync(id); if (getData.IsSucceed) @@ -85,15 +86,14 @@ public async Task> Get(string id) } } - // GET: api/v1/rest/{culture}/attribute-set-data/5 [HttpGet("duplicate/{id}")] - public async Task> Duplicate(string id) + public virtual async Task> Duplicate(string id) { var getData = await GetSingleAsync(id); if (getData.IsSucceed) { var data = getData.Data; - var idProperty = ReflectionHelper.GetPropertyType(data.GetType(), "Id"); + var idProperty = ReflectionHelper.GetPropertyType(data.GetType(), MixColumnName.Id); switch (idProperty.Name.ToLower()) { case "int32": @@ -110,7 +110,7 @@ public async Task> Duplicate(string id) { string key = $"_{id}"; key += !string.IsNullOrEmpty(_lang) ? $"_{_lang}" : string.Empty; - await MixService.RemoveCacheAsync(typeof(TModel), key); + await MixCacheService.RemoveCacheAsync(typeof(TModel), key); return Ok(saveResult.Data); } else @@ -124,7 +124,6 @@ public async Task> Duplicate(string id) } } - // GET: api/v1/rest/{culture}/attribute-set-data/5 [HttpGet("default")] public virtual ActionResult Default() { @@ -132,8 +131,8 @@ public virtual ActionResult Default() { var transaction = context.Database.BeginTransaction(); TView data = ReflectionHelper.InitModel(); - ReflectionHelper.SetPropertyValue(data, new JProperty("Specificulture", _lang)); - ReflectionHelper.SetPropertyValue(data, new JProperty("Status", MixService.GetConfig("DefaultContentStatus"))); + ReflectionHelper.SetPropertyValue(data, new JProperty(MixColumnName.Specificulture, _lang)); + ReflectionHelper.SetPropertyValue(data, new JProperty(MixColumnName.Status, MixService.GetConfig(MixAppSettingKeywords.DefaultContentStatus))); data.ExpandView(context, transaction); return Ok(data); } @@ -144,27 +143,24 @@ public virtual async Task ClearCacheAsync(string id) { string key = $"_{id}"; key += !string.IsNullOrEmpty(_lang) ? $"_{_lang}" : string.Empty; - await MixService.RemoveCacheAsync(typeof(TModel), key); + await MixCacheService.RemoveCacheAsync(typeof(TModel), key); return NoContent(); } [HttpGet("remove-cache")] public virtual async Task ClearCacheAsync() { - await MixService.RemoveCacheAsync(typeof(TModel)); + await MixCacheService.RemoveCacheAsync(typeof(TModel)); return NoContent(); } - // POST: api/s - // To protect from overposting attacks, please enable the specific properties you want to bind to, for - // more details see https://aka.ms/RazorPagesCRUD. - [HttpPost] + [HttpPost] public virtual async Task> Create([FromBody] TView data) { ReflectionHelper.SetPropertyValue(data, new JProperty("CreatedBy", User.Claims.FirstOrDefault( c => c.Type == "Username")?.Value)); - ReflectionHelper.SetPropertyValue(data, new JProperty("Specificulture", _lang)); - ReflectionHelper.SetPropertyValue(data, new JProperty("Status", MixService.GetEnumConfig(MixAppSettingKeywords.DefaultContentStatus))); + ReflectionHelper.SetPropertyValue(data, new JProperty(MixColumnName.Specificulture, _lang)); + ReflectionHelper.SetPropertyValue(data, new JProperty(MixColumnName.Status, MixService.GetEnumConfig(MixAppSettingKeywords.DefaultContentStatus))); var result = await SaveAsync(data, true); if (result.IsSucceed) @@ -177,9 +173,6 @@ public virtual async Task> Create([FromBody] TView data) } } - // PUT: api/s/5 - // To protect from overposting attacks, please enable the specific properties you want to bind to, for - // more details see https://aka.ms/RazorPagesCRUD. [HttpPut("{id}")] public virtual async Task Update(string id, [FromBody] TView data) { @@ -188,7 +181,7 @@ public virtual async Task Update(string id, [FromBody] TView data ReflectionHelper.SetPropertyValue(data, new JProperty("ModifiedBy", User.Claims.FirstOrDefault( c => c.Type == "Username")?.Value)); ReflectionHelper.SetPropertyValue(data, new JProperty("LastModified", DateTime.UtcNow)); - var currentId = ReflectionHelper.GetPropertyValue(data, "Id").ToString(); + var currentId = ReflectionHelper.GetPropertyValue(data, MixColumnName.Id).ToString(); if (id != currentId) { return BadRequest(); @@ -217,7 +210,6 @@ public virtual async Task Update(string id, [FromBody] TView data } } - // PATCH: api/v1/rest/en-us/attribute-set/portal/5 [HttpPatch("{id}")] public virtual async Task Patch(string id, [FromBody] JObject fields) { @@ -243,7 +235,6 @@ public virtual async Task Patch(string id, [FromBody] JObject fie } } - // DELETE: api/v1/rest/en-us/attribute-set/portal/5 [HttpDelete("{id}")] public virtual async Task> Delete(string id) { @@ -262,12 +253,14 @@ public virtual async Task> Delete(string id) [Route("list-action")] public async Task> ListActionAsync([FromBody] ListAction data) { - Expression> predicate = ReflectionHelper.GetExpression("Specificulture", _lang, Heart.Enums.MixHeartEnums.ExpressionMethod.Eq); - //ReflectionHelper.GetExpression("Id", id, Heart.Enums.MixHeartEnums.ExpressionMethod.Eq); + Expression> predicate = ReflectionHelper.GetExpression( + MixColumnName.Specificulture, + _lang, + MixHeartEnums.ExpressionMethod.Eq); Expression> idPre = null; foreach (var id in data.Data) { - var temp = ReflectionHelper.GetExpression("Id", id, Heart.Enums.MixHeartEnums.ExpressionMethod.Eq); + var temp = ReflectionHelper.GetExpression(MixColumnName.Id, id, MixHeartEnums.ExpressionMethod.Eq); idPre = idPre != null ? idPre.AndAlso(temp) @@ -285,7 +278,7 @@ public async Task> ListActionAsync([FromBody] ListAction>> PublishListAsync(Expression< var data = await GetListAsync(predicate); foreach (var item in data.Data.Items) { - ReflectionHelper.SetPropertyValue(item, new JProperty("Status", MixContentStatus.Published)); + ReflectionHelper.SetPropertyValue(item, new JProperty(MixColumnName.Status, MixContentStatus.Published)); } return await SaveListAsync(data.Data.Items, false); } protected async Task> GetSingleAsync(string id) - where T : Mix.Domain.Data.ViewModels.ViewModelBase + where T : ViewModelBase { - Expression> predicate = ReflectionHelper.GetExpression("Id", id, Heart.Enums.MixHeartEnums.ExpressionMethod.Eq); + Expression> predicate = ReflectionHelper.GetExpression(MixColumnName.Id, id, MixHeartEnums.ExpressionMethod.Eq); if (!string.IsNullOrEmpty(_lang)) { - var idPre = ReflectionHelper.GetExpression("Specificulture", _lang, Heart.Enums.MixHeartEnums.ExpressionMethod.Eq); + var idPre = ReflectionHelper.GetExpression(MixColumnName.Specificulture, _lang, MixHeartEnums.ExpressionMethod.Eq); predicate = predicate.AndAlso(idPre); } @@ -362,10 +355,10 @@ protected async Task> GetSingleAsync(string id) protected async Task> GetSingleAsync(string id) { - Expression> predicate = ReflectionHelper.GetExpression("Id", id, Heart.Enums.MixHeartEnums.ExpressionMethod.Eq); + Expression> predicate = ReflectionHelper.GetExpression(MixColumnName.Id, id, MixHeartEnums.ExpressionMethod.Eq); if (!string.IsNullOrEmpty(_lang)) { - var idPre = ReflectionHelper.GetExpression("Specificulture", _lang, Heart.Enums.MixHeartEnums.ExpressionMethod.Eq); + var idPre = ReflectionHelper.GetExpression(MixColumnName.Specificulture, _lang, MixHeartEnums.ExpressionMethod.Eq); predicate = predicate.AndAlso(idPre); } @@ -383,7 +376,7 @@ protected async Task> GetSingleAsync(Expression> GetSingleAsync(Expression> predicate = null) - where T : Mix.Domain.Data.ViewModels.ViewModelBase + where T : ViewModelBase { RepositoryResponse data = null; if (predicate != null) @@ -394,7 +387,7 @@ protected async Task> GetSingleAsync(Expression> DeleteAsync(string id, bool isDeleteRelated = false) - where T : Mix.Domain.Data.ViewModels.ViewModelBase + where T : ViewModelBase { var data = await GetSingleAsync(id); if (data.IsSucceed) @@ -430,7 +423,7 @@ protected async Task> DeleteAsync(TView data, bool is } protected async Task> DeleteAsync(T data, bool isDeleteRelated = false) - where T : Mix.Domain.Data.ViewModels.ViewModelBase + where T : ViewModelBase { if (data != null) { @@ -461,7 +454,7 @@ protected async Task> ExportListAsync(Expressi jData.Add(JObject.FromObject(item)); } - var result = Lib.ViewModels.MixAttributeSetDatas.Helper.ExportAttributeToExcel( + var result = Lib.ViewModels.MixDatabaseDatas.Helper.ExportAttributeToExcel( jData, string.Empty, exportPath, $"{type}", null); return result; @@ -476,19 +469,19 @@ protected async Task> ExportListAsync(Expressi } protected async Task>> GetListAsync(Expression> predicate = null) - where T : Mix.Domain.Data.ViewModels.ViewModelBase + where T : ViewModelBase { - bool isFromDate = DateTime.TryParse(Request.Query["fromDate"], out DateTime fromDate); - bool isToDate = DateTime.TryParse(Request.Query["toDate"], out DateTime toDate); - int.TryParse(Request.Query["pageIndex"], out int pageIndex); - bool isDirection = Enum.TryParse(Request.Query["direction"], out Heart.Enums.MixHeartEnums.DisplayDirection direction); - bool isPageSize = int.TryParse(Request.Query["pageSize"], out int pageSize); + bool isFromDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.FromDate], out DateTime fromDate); + bool isToDate = DateTime.TryParse(Request.Query[MixRequestQueryKeywords.ToDate], out DateTime toDate); + int.TryParse(Request.Query[MixRequestQueryKeywords.PageIndex], out int pageIndex); + bool isDirection = Enum.TryParse(Request.Query[MixRequestQueryKeywords.Direction], out MixHeartEnums.DisplayDirection direction); + bool isPageSize = int.TryParse(Request.Query[MixRequestQueryKeywords.PageSize], out int pageSize); RequestPaging request = new RequestPaging() { PageIndex = pageIndex, PageSize = isPageSize ? pageSize : 100, - OrderBy = Request.Query["orderBy"].ToString().ToTitleCase(), + OrderBy = Request.Query[MixRequestQueryKeywords.OrderBy].ToString().ToTitleCase(), Direction = direction }; @@ -510,7 +503,7 @@ protected async Task>> GetListAsync(Exp } protected async Task> SaveAsync(T vm, bool isSaveSubModel) - where T : Mix.Domain.Data.ViewModels.ViewModelBase + where T : ViewModelBase { if (vm != null) { diff --git a/src/Mix.Cms.Lib/Enums/MixMenuItemType.cs b/src/Mix.Cms.Lib/Enums/MixMenuItemType.cs index 378854b3c..9a49fe3ac 100644 --- a/src/Mix.Cms.Lib/Enums/MixMenuItemType.cs +++ b/src/Mix.Cms.Lib/Enums/MixMenuItemType.cs @@ -5,6 +5,7 @@ public enum MixMenuItemType Page, Module, Post, - Database + Database, + Uri } } \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Enums/MixMvcViewMode.cs b/src/Mix.Cms.Lib/Enums/MixMvcViewMode.cs new file mode 100644 index 000000000..03438f2c2 --- /dev/null +++ b/src/Mix.Cms.Lib/Enums/MixMvcViewMode.cs @@ -0,0 +1,9 @@ +namespace Mix.Cms.Lib.Enums +{ + public enum MixMvcViewMode + { + Post, + Page, + Module + } +} \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Extensions/MixAttributeValueModelExtensions.cs b/src/Mix.Cms.Lib/Extensions/MixAttributeValueModelExtensions.cs index a072942f8..07b4bdddd 100644 --- a/src/Mix.Cms.Lib/Extensions/MixAttributeValueModelExtensions.cs +++ b/src/Mix.Cms.Lib/Extensions/MixAttributeValueModelExtensions.cs @@ -15,20 +15,17 @@ namespace Mix.Cms.Lib.Extensions { - public static class MixAttributeValueModelExtensions + public static class MixDatabaseDataValueModelExtensions { public static JProperty ToJProperty( - this MixAttributeSetValue item, + this MixDatabaseDataValue item, MixCmsContext _context, IDbContextTransaction _transaction) { - UnitOfWorkHelper.InitTransaction( - _context, _transaction, - out MixCmsContext context, out IDbContextTransaction transaction, out bool isRoot); switch (item.DataType) { case MixDataType.DateTime: - return new JProperty(item.AttributeFieldName, item.DateTimeValue); + return new JProperty(item.MixDatabaseColumnName, item.DateTimeValue); case MixDataType.Date: if (!item.DateTimeValue.HasValue) @@ -43,22 +40,22 @@ public static JProperty ToJProperty( item.DateTimeValue = date; } } - return (new JProperty(item.AttributeFieldName, item.DateTimeValue)); + return (new JProperty(item.MixDatabaseColumnName, item.DateTimeValue)); case MixDataType.Time: - return (new JProperty(item.AttributeFieldName, item.DateTimeValue)); + return (new JProperty(item.MixDatabaseColumnName, item.DateTimeValue)); case MixDataType.Double: - return (new JProperty(item.AttributeFieldName, item.DoubleValue ?? 0)); + return (new JProperty(item.MixDatabaseColumnName, item.DoubleValue ?? 0)); case MixDataType.Boolean: - return (new JProperty(item.AttributeFieldName, item.BooleanValue)); + return (new JProperty(item.MixDatabaseColumnName, item.BooleanValue)); case MixDataType.Integer: - return (new JProperty(item.AttributeFieldName, item.IntegerValue ?? 0)); + return (new JProperty(item.MixDatabaseColumnName, item.IntegerValue ?? 0)); case MixDataType.Reference: - return (new JProperty(item.AttributeFieldName, new JArray())); + return (new JProperty(item.MixDatabaseColumnName, new JArray())); case MixDataType.Upload: string domain = MixService.GetConfig(MixAppSettingKeywords.Domain); @@ -67,7 +64,7 @@ public static JProperty ToJProperty( ? $"{MixService.GetConfig(MixAppSettingKeywords.Domain)}{item.StringValue}" : item.StringValue : null; - return (new JProperty(item.AttributeFieldName, url)); + return (new JProperty(item.MixDatabaseColumnName, url)); case MixDataType.Custom: case MixDataType.Duration: @@ -86,16 +83,14 @@ public static JProperty ToJProperty( case MixDataType.VideoYoutube: case MixDataType.TuiEditor: default: - return (new JProperty(item.AttributeFieldName, item.StringValue)); - } - if (isRoot) - { - transaction.Dispose(); - context.Dispose(); + return (new JProperty(item.MixDatabaseColumnName, item.StringValue)); } } - public static void ToModelValue(this ViewModels.MixAttributeSetValues.UpdateViewModel item, JToken property) + public static void ToModelValue(this ViewModels.MixDatabaseDataValues.UpdateViewModel item, + JToken property, + MixCmsContext _context = null, + IDbContextTransaction _transaction = null) { if (property == null) { @@ -163,7 +158,7 @@ public static void ToModelValue(this ViewModels.MixAttributeSetValues.UpdateView FileFolder = "Attributes" } }; - var saveMedia = media.SaveModel(true); + var saveMedia = media.SaveModel(true, _context, _transaction); if (saveMedia.IsSucceed) { item.StringValue = saveMedia.Data.FullPath; @@ -199,14 +194,14 @@ public static void ToModelValue(this ViewModels.MixAttributeSetValues.UpdateView } public static void LoadAllReferenceData(this JObject obj - , string dataId, int attributeSetId, string culture + , string dataId, int mixDatabaseId, string culture , MixCmsContext _context = null, IDbContextTransaction _transaction = null) { UnitOfWorkHelper.InitTransaction( _context, _transaction, out MixCmsContext context, out IDbContextTransaction transaction, out bool isRoot); - var refFields = context.MixAttributeField.Where( - m => m.AttributeSetId == attributeSetId + var refFields = context.MixDatabaseColumn.Where( + m => m.MixDatabaseId == mixDatabaseId && m.DataType == MixDataType.Reference).ToList(); foreach (var item in refFields) @@ -235,12 +230,12 @@ private static JArray GetRelatedData(int referenceId, string dataId, string cult UnitOfWorkHelper.InitTransaction( _context, _transaction, out MixCmsContext context, out IDbContextTransaction transaction, out bool isRoot); - Expression> predicate = model => - (model.AttributeSetId == referenceId) + Expression> predicate = model => + (model.MixDatabaseId == referenceId) && (model.ParentId == dataId && model.ParentType == MixDatabaseParentType.Set) && model.Specificulture == culture ; - var getData = ViewModels.MixRelatedAttributeDatas.ReadMvcViewModel.Repository.GetModelListBy(predicate, context, transaction); + var getData = ViewModels.MixDatabaseDataAssociations.ReadMvcViewModel.Repository.GetModelListBy(predicate, context, transaction); JArray arr = new JArray(); foreach (var nav in getData.Data.OrderBy(v => v.Priority)) diff --git a/src/Mix.Cms.Lib/Helpers/MixAttributeSetValueHelper.cs b/src/Mix.Cms.Lib/Helpers/MixAttributeSetValueHelper.cs index ea87fadea..e03a85bf0 100644 --- a/src/Mix.Cms.Lib/Helpers/MixAttributeSetValueHelper.cs +++ b/src/Mix.Cms.Lib/Helpers/MixAttributeSetValueHelper.cs @@ -14,19 +14,19 @@ namespace Mix.Cms.Lib.Helpers { - internal class MixAttributeSetValueHelper + internal class MixDatabaseDataValueHelper { public static async Task>> FilterByOtherValueAsync( - string culture, string attributeSetName + string culture, string mixDatabaseName , string filterType, Dictionary queries , string responseName , MixCmsContext _context = null, IDbContextTransaction _transaction = null) - where TView : ViewModelBase + where TView : ViewModelBase { UnitOfWorkHelper.InitTransaction(_context, _transaction, out MixCmsContext context, out IDbContextTransaction transaction, out bool isRoot); try { - Expression> valPredicate = m => m.AttributeSetName == attributeSetName; + Expression> valPredicate = m => m.MixDatabaseName == mixDatabaseName; RepositoryResponse> result = new RepositoryResponse>() { IsSucceed = true, @@ -34,17 +34,17 @@ public static async Task>> FilterByOtherValueAsyn }; foreach (var fieldQuery in queries) { - Expression> pre = GetValueFilter(filterType, fieldQuery.Key, fieldQuery.Value); + Expression> pre = GetValueFilter(filterType, fieldQuery.Key, fieldQuery.Value); valPredicate = valPredicate.AndAlso(pre); } - var query = context.MixAttributeSetValue.Where(valPredicate).Select(m => m.DataId).Distinct(); + var query = context.MixDatabaseDataValue.Where(valPredicate).Select(m => m.DataId).Distinct(); var dataIds = query.ToList(); if (query != null) { - Expression> predicate = + Expression> predicate = m => dataIds.Any(id => m.DataId == id) && - m.AttributeFieldName == responseName; - result = await DefaultRepository.Instance.GetModelListByAsync( + m.MixDatabaseColumnName == responseName; + result = await DefaultRepository.Instance.GetModelListByAsync( predicate, context, transaction); } return result; @@ -63,16 +63,16 @@ public static async Task>> FilterByOtherValueAsyn } } - private static Expression> GetValueFilter(string filterType, string key, string value) + private static Expression> GetValueFilter(string filterType, string key, string value) { switch (filterType) { case "equal": - return m => m.AttributeFieldName == key + return m => m.MixDatabaseColumnName == key && (EF.Functions.Like(m.StringValue, $"{value}")); case "contain": - return m => m.AttributeFieldName == key && + return m => m.MixDatabaseColumnName == key && (EF.Functions.Like(m.StringValue, $"%{value}%")); } return null; diff --git a/src/Mix.Cms.Lib/MixCmsHelper.cs b/src/Mix.Cms.Lib/Helpers/MixCmsHelper.cs similarity index 88% rename from src/Mix.Cms.Lib/MixCmsHelper.cs rename to src/Mix.Cms.Lib/Helpers/MixCmsHelper.cs index cebb35520..435a16c51 100644 --- a/src/Mix.Cms.Lib/MixCmsHelper.cs +++ b/src/Mix.Cms.Lib/Helpers/MixCmsHelper.cs @@ -23,7 +23,7 @@ using System.Text.RegularExpressions; using System.Threading.Tasks; -namespace Mix.Cms.Lib +namespace Mix.Cms.Lib.Helpers { public class MixCmsHelper { @@ -228,8 +228,8 @@ public static ViewModels.MixPages.ReadMvcViewModel GetPage(int id, string cultur public static async System.Threading.Tasks.Task GetNavigation( string name, string culture, IUrlHelper Url) { - var navs = await ViewModels.MixAttributeSetDatas.Helper.FilterByKeywordAsync( - culture, MixConstants.AttributeSetName.NAVIGATION, "equal", "name", name); + var navs = await ViewModels.MixDatabaseDatas.Helper.FilterByKeywordAsync( + culture, MixConstants.MixDatabaseName.NAVIGATION, "equal", "name", name); var nav = navs.Data?.FirstOrDefault()?.Nav; string activePath = Url.ActionContext.HttpContext.Request.Path; @@ -281,8 +281,8 @@ public static async Task>> GetListPost } }; // Get Value Predicate By Type - Expression> valPredicate = m => m.AttributeSetName == MixConstants.AttributeSetName.ADDITIONAL_FIELD_POST - && m.AttributeFieldName == fieldName; + Expression> valPredicate = m => m.MixDatabaseName == MixConstants.MixDatabaseName.ADDITIONAL_FIELD_POST + && m.MixDatabaseColumnName == fieldName; var pre = GetValuePredicate(fieldValue.ToString(), filterType, dataType); if (pre != null) @@ -290,9 +290,9 @@ public static async Task>> GetListPost valPredicate = valPredicate.AndAlso(pre); } - var query = context.MixAttributeSetValue.Where(valPredicate).Select(m => m.DataId).Distinct(); + var query = context.MixDatabaseDataValue.Where(valPredicate).Select(m => m.DataId).Distinct(); var dataIds = query.ToList(); - var relatedQuery = context.MixRelatedAttributeData.Where( + var relatedQuery = context.MixDatabaseDataAssociation.Where( m => m.ParentType == MixDatabaseParentType.Post && m.Specificulture == culture && dataIds.Any(d => d == m.DataId)); var postIds = relatedQuery.Select(m => int.Parse(m.ParentId)).Distinct().AsEnumerable().ToList(); @@ -318,38 +318,38 @@ public static async Task>> GetListPost } } - private static Expression> GetValuePredicate(string fieldValue + private static Expression> GetValuePredicate(string fieldValue , MixCompareOperatorKind filterType, MixDataType dataType) { - Expression> valPredicate = null; + Expression> valPredicate = null; switch (dataType) { case MixDataType.Date: case MixDataType.Time: if (DateTime.TryParse(fieldValue, out DateTime dtValue)) { - valPredicate = FilterObjectSet("DateTimeValue", dtValue, filterType); + valPredicate = FilterObjectSet("DateTimeValue", dtValue, filterType); } break; case MixDataType.Double: if (double.TryParse(fieldValue, out double dbValue)) { - valPredicate = FilterObjectSet("DoubleValue", dbValue, filterType); + valPredicate = FilterObjectSet("DoubleValue", dbValue, filterType); } break; case MixDataType.Boolean: if (bool.TryParse(fieldValue, out bool boolValue)) { - valPredicate = FilterObjectSet("BooleanValue", boolValue, filterType); + valPredicate = FilterObjectSet("BooleanValue", boolValue, filterType); } break; case MixDataType.Integer: if (int.TryParse(fieldValue, out int intValue)) { - valPredicate = FilterObjectSet("IntegerValue", intValue, filterType); + valPredicate = FilterObjectSet("IntegerValue", intValue, filterType); } break; @@ -376,7 +376,7 @@ private static Expression> GetValuePredicate(st case MixDataType.TuiEditor: case MixDataType.QRCode: default: - valPredicate = FilterObjectSet("StringValue", fieldValue, filterType); + valPredicate = FilterObjectSet("StringValue", fieldValue, filterType); break; } @@ -451,23 +451,24 @@ public static Expression> FilterObjectSet(string p } public async static Task>> GetPostlistByMeta( - HttpContext context - , string culture, string type = MixConstants.AttributeSetName.SYSTEM_TAG + , string keyword = null + , string culture = null + , string type = MixConstants.MixDatabaseName.SYSTEM_TAG , string orderByPropertyName = "CreatedDateTime", Heart.Enums.MixHeartEnums.DisplayDirection direction = MixHeartEnums.DisplayDirection.Desc , MixCmsContext _context = null, IDbContextTransaction _transaction = null) where TView : ViewModelBase { int maxPageSize = MixService.GetConfig("MaxPageSize"); - string orderBy = MixService.GetConfig("OrderBy"); - int orderDirection = MixService.GetConfig("OrderDirection"); - int.TryParse(context.Request.Query["page"], out int page); - int.TryParse(context.Request.Query["pageSize"], out int pageSize); + culture ??= MixService.GetConfig(MixAppSettingKeywords.DefaultCulture); + keyword ??= context.Request.Query["keyword"]; + int.TryParse(context.Request.Query[MixRequestQueryKeywords.Page], out int page); + int.TryParse(context.Request.Query[MixRequestQueryKeywords.PageSize], out int pageSize); pageSize = (pageSize > 0 && pageSize < maxPageSize) ? pageSize : maxPageSize; page = (page > 0) ? page : 1; return await Mix.Cms.Lib.ViewModels.MixPosts.Helper.GetModelistByMeta( - type, context.Request.Query["keyword"], + type, keyword, culture, orderByPropertyName, direction, pageSize, page - 1, _context, _transaction); } @@ -490,15 +491,15 @@ public async static Task>> GetPostlist } public static async Task>> GetAttributeDataByParent( - string culture, string attributeSetName, + string culture, string mixDatabaseName, string parentId, MixDatabaseParentType parentType, string orderBy = "CreatedDateTime", Heart.Enums.MixHeartEnums.DisplayDirection direction = MixHeartEnums.DisplayDirection.Desc, int? pageSize = null, int? pageIndex = 0, MixCmsContext _context = null, IDbContextTransaction _transaction = null) - where TView : ViewModelBase + where TView : ViewModelBase { - return await ViewModels.MixAttributeSetDatas.Helper.GetAttributeDataByParent( - culture, attributeSetName, + return await ViewModels.MixDatabaseDatas.Helper.GetAttributeDataByParent( + culture, mixDatabaseName, parentId, parentType, orderBy, direction, pageSize, pageIndex, _context, _transaction); } @@ -512,8 +513,8 @@ HttpContext context , MixCmsContext _context = null, IDbContextTransaction _transaction = null ) { - int.TryParse(context.Request.Query["page"], out int page); - int.TryParse(context.Request.Query["pageSize"], out int pageSize); + int.TryParse(context.Request.Query[MixRequestQueryKeywords.Page], out int page); + int.TryParse(context.Request.Query[MixRequestQueryKeywords.PageSize], out int pageSize); page = (page > 0) ? page : 1; var result = await ViewModels.MixPosts.Helper.GetPostListByPageId( pageId, keyword, culture, @@ -522,16 +523,16 @@ HttpContext context return result; } - public static async Task>> GetAttributeDataListBySet( + public static async Task>> GetAttributeDataListBySet( HttpContext context - , string attributeSetName + , string mixDatabaseName , string culture = null , Heart.Enums.MixHeartEnums.DisplayDirection direction = MixHeartEnums.DisplayDirection.Desc , MixCmsContext _context = null, IDbContextTransaction _transaction = null ) { - var result = await ViewModels.MixAttributeSetDatas.Helper.FilterByKeywordAsync( - context.Request, culture, attributeSetName); + var result = await ViewModels.MixDatabaseDatas.Helper.FilterByKeywordAsync( + context.Request, culture, mixDatabaseName); return result; } } diff --git a/src/Mix.Cms.Lib/Helpers/QueryFilterHelper.cs b/src/Mix.Cms.Lib/Helpers/QueryFilterHelper.cs index 2e1d7fc3a..c7b2fc556 100644 --- a/src/Mix.Cms.Lib/Helpers/QueryFilterHelper.cs +++ b/src/Mix.Cms.Lib/Helpers/QueryFilterHelper.cs @@ -36,10 +36,10 @@ public void TestCreateModel() ); } - public static Expression> CreateExpression( + public static Expression> CreateExpression( JObject jsonQuery) { - Expression> root = null; + Expression> root = null; try { ExpressionModel expressionModel = jsonQuery.ToObject(); @@ -54,10 +54,10 @@ public static Expression> CreateExpression( return null; } - private static Expression> GetExpression( + private static Expression> GetExpression( ExpressionModel expressionModel) { - Expression> root = null; + Expression> root = null; try { expressionModel?.Functions?.ForEach(function => @@ -89,10 +89,10 @@ private static Expression> GetExpression( /// /// /// - private static Expression> CombineExpressionByType( + private static Expression> CombineExpressionByType( MixLogicalOperatorKind type, - Expression> expr1, - Expression> expr2) + Expression> expr1, + Expression> expr2) { return type switch { @@ -102,42 +102,42 @@ private static Expression> CombineExpressionByT }; } - private static Expression> GetFunction(FunctionModel functionModel) + private static Expression> GetFunction(FunctionModel functionModel) { return functionModel.Rule switch { - MixCompareOperatorKind.Equal => m => m.AttributeFieldName == functionModel.FieldName - && m.StringValue == functionModel.Value, + MixCompareOperatorKind.Equal => m => m.MixDatabaseColumnName == functionModel.FieldName + && EF.Functions.Like(m.StringValue, functionModel.Value), - MixCompareOperatorKind.NotEqual => m => m.AttributeFieldName == functionModel.FieldName - && m.StringValue != functionModel.Value, + MixCompareOperatorKind.NotEqual => m => m.MixDatabaseColumnName == functionModel.FieldName + && !EF.Functions.Like(m.StringValue, functionModel.Value), - MixCompareOperatorKind.Contain => m => m.AttributeFieldName == functionModel.FieldName + MixCompareOperatorKind.Contain => m => m.MixDatabaseColumnName == functionModel.FieldName && (EF.Functions.Like(m.StringValue, buildLikeString(functionModel.Value))), - MixCompareOperatorKind.NotContain => m => m.AttributeFieldName == functionModel.FieldName + MixCompareOperatorKind.NotContain => m => m.MixDatabaseColumnName == functionModel.FieldName && !(EF.Functions.Like(m.StringValue, buildLikeString(functionModel.Value))), - MixCompareOperatorKind.InRange => m => m.AttributeFieldName == functionModel.FieldName + MixCompareOperatorKind.InRange => m => m.MixDatabaseColumnName == functionModel.FieldName && (string.Compare(m.StringValue, functionModel.MinValue) > 0 && string.Compare(m.StringValue, functionModel.MaxValue) < 0), - MixCompareOperatorKind.NotInRange => m => m.AttributeFieldName == functionModel.FieldName + MixCompareOperatorKind.NotInRange => m => m.MixDatabaseColumnName == functionModel.FieldName && (string.Compare(m.StringValue, functionModel.MinValue) < 0 || string.Compare(m.StringValue, functionModel.MaxValue) > 0), - MixCompareOperatorKind.GreaterThanOrEqual => m => m.AttributeFieldName == functionModel.FieldName + MixCompareOperatorKind.GreaterThanOrEqual => m => m.MixDatabaseColumnName == functionModel.FieldName && (string.Compare(m.StringValue, functionModel.Value) > 0 || m.StringValue == functionModel.Value), - MixCompareOperatorKind.GreaterThan => m => m.AttributeFieldName == functionModel.FieldName + MixCompareOperatorKind.GreaterThan => m => m.MixDatabaseColumnName == functionModel.FieldName && string.Compare(m.StringValue, functionModel.Value) > 0, - MixCompareOperatorKind.LessThanOrEqual => m => m.AttributeFieldName == functionModel.FieldName + MixCompareOperatorKind.LessThanOrEqual => m => m.MixDatabaseColumnName == functionModel.FieldName && (string.Compare(m.StringValue, functionModel.Value) < 0 || m.StringValue == functionModel.Value), - MixCompareOperatorKind.LessThan => m => m.AttributeFieldName == functionModel.FieldName + MixCompareOperatorKind.LessThan => m => m.MixDatabaseColumnName == functionModel.FieldName && string.Compare(m.StringValue, functionModel.Value) < 0, _ => null, diff --git a/src/Mix.Cms.Lib/Interfaces/MvcViewModel.cs b/src/Mix.Cms.Lib/Interfaces/IMvcViewModel.cs similarity index 78% rename from src/Mix.Cms.Lib/Interfaces/MvcViewModel.cs rename to src/Mix.Cms.Lib/Interfaces/IMvcViewModel.cs index cb53dc3c9..e80ed388f 100644 --- a/src/Mix.Cms.Lib/Interfaces/MvcViewModel.cs +++ b/src/Mix.Cms.Lib/Interfaces/IMvcViewModel.cs @@ -1,14 +1,16 @@ namespace Mix.Cms.Lib.Interfaces { - public interface MvcViewModel + public interface IMvcViewModel { public int Id { get; set; } public string Layout { get; set; } + public string Title { get; set; } public string SeoTitle { get; set; } public string ThumbnailUrl { get; } public string SeoDescription { get; set; } public string TemplatePath { get; } public string DetailsUrl { get; } + public string BodyClass { get; } public ViewModels.MixTemplates.ReadListItemViewModel View { get; set; } } } \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Migrations/MsSqlMixCms/20210107122622_Init.Designer.cs b/src/Mix.Cms.Lib/Migrations/MsSqlMixCms/20210107122622_Init.Designer.cs index caa446937..ec54c599b 100644 --- a/src/Mix.Cms.Lib/Migrations/MsSqlMixCms/20210107122622_Init.Designer.cs +++ b/src/Mix.Cms.Lib/Migrations/MsSqlMixCms/20210107122622_Init.Designer.cs @@ -21,145 +21,110 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasAnnotation("Relational:MaxIdentifierLength", 128) .HasAnnotation("ProductVersion", "5.0.1"); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeField", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCache", b => { - b.Property("Id") - .HasColumnType("int"); - - b.Property("AttributeSetId") - .HasColumnType("int"); - - b.Property("AttributeSetName") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Configurations") - .HasColumnType("nvarchar(max)"); + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); b.Property("CreatedBy") - .HasMaxLength(50) - .IsUnicode(false) - .HasColumnType("varchar(50)"); - - b.Property("CreatedDateTime") - .HasColumnType("datetime"); - - b.Property("DataType") - .IsRequired() .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("DefaultValue") - .HasColumnType("ntext"); - - b.Property("IsEncrypt") - .HasColumnType("bit"); - - b.Property("IsMultiple") - .HasColumnType("bit"); - - b.Property("IsRequire") - .HasColumnType("bit"); - - b.Property("IsSelect") - .HasColumnType("bit"); + b.Property("CreatedDateTime") + .HasColumnType("datetime"); - b.Property("IsUnique") - .HasColumnType("bit"); + b.Property("ExpiredDateTime") + .HasColumnType("datetime"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("ModifiedBy") - .HasMaxLength(50) - .IsUnicode(false) - .HasColumnType("varchar(50)"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Options") - .HasColumnType("ntext"); + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Priority") .HasColumnType("int"); - b.Property("ReferenceId") - .HasColumnType("int"); - - b.Property("Regex") - .HasMaxLength(4000) - .HasColumnType("nvarchar(4000)"); - b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Title") - .HasColumnType("nvarchar(max)"); + b.Property("Value") + .IsRequired() + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); b.HasKey("Id"); - b.ToTable("mix_attribute_field"); + b.HasIndex("ExpiredDateTime") + .HasDatabaseName("Index_ExpiresAtTime"); + + b.ToTable("mix_cache"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeSet", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCmsUser", b => { - b.Property("Id") - .HasColumnType("int"); - - b.Property("CreatedBy") + b.Property("Id") .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("CreatedDateTime") - .HasColumnType("datetime"); - - b.Property("Description") - .HasColumnType("varchar(250)") + b.Property("Address") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("EdmAutoSend") - .HasColumnType("bit"); - - b.Property("EdmFrom") - .HasColumnType("varchar(250)") + b.Property("Avatar") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("EdmSubject") - .HasColumnType("varchar(250)") + b.Property("CreatedBy") + .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("EdmTemplate") - .HasColumnType("varchar(250)") + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Email") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("FormTemplate") - .HasColumnType("varchar(250)") + b.Property("FirstName") + .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("LastModified") .HasColumnType("datetime"); + b.Property("LastName") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("MiddleName") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("ModifiedBy") .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Name") - .IsRequired() - .HasColumnType("varchar(250)") + b.Property("PhoneNumber") + .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -172,40 +137,28 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Title") - .IsRequired() - .HasColumnType("varchar(250)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Type") - .IsRequired() - .HasColumnType("varchar(50)") + b.Property("Username") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.HasKey("Id"); - b.ToTable("mix_attribute_set"); + b.ToTable("mix_cms_user"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeSetData", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixConfiguration", b => { - b.Property("Id") - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Id") + .HasColumnType("int"); b.Property("Specificulture") .HasColumnType("varchar(10)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("AttributeSetId") - .HasColumnType("int"); - - b.Property("AttributeSetName") - .HasColumnType("varchar(250)") + b.Property("Category") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -217,6 +170,23 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("CreatedDateTime") .HasColumnType("datetime"); + b.Property("DataType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Description") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Keyword") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("LastModified") .HasColumnType("datetime"); @@ -234,21 +204,28 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Value") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + b.HasKey("Id", "Specificulture") - .HasName("PK_mix_attribute_set_data"); + .HasName("PK_mix_configuration"); - b.HasIndex("AttributeSetId"); + b.HasIndex("Specificulture"); - b.ToTable("mix_attribute_set_data"); + b.ToTable("mix_configuration"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeSetReference", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCulture", b => { b.Property("Id") .HasColumnType("int"); - b.Property("AttributeSetId") - .HasColumnType("int"); + b.Property("Alias") + .HasColumnType("varchar(150)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") @@ -259,32 +236,43 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasColumnType("datetime"); b.Property("Description") - .HasColumnType("varchar(450)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Image") - .HasColumnType("varchar(450)") + b.Property("FullName") + .HasColumnType("nvarchar(150)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Icon") + .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("LastModified") .HasColumnType("datetime"); - b.Property("ModifiedBy") + b.Property("Lcid") .HasColumnType("varchar(50)") + .HasColumnName("LCID") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("ParentId") - .HasColumnType("int"); - - b.Property("ParentType") - .HasColumnType("int"); + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Priority") .HasColumnType("int"); + b.Property("Specificulture") + .IsRequired() + .HasColumnType("varchar(10)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") @@ -293,35 +281,18 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.HasKey("Id"); - b.HasIndex("AttributeSetId"); + b.HasIndex("Specificulture") + .IsUnique() + .HasDatabaseName("IX_Mix_Culture"); - b.ToTable("mix_attribute_set_reference"); + b.ToTable("mix_culture"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeSetValue", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabase", b => { - b.Property("Id") - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("AttributeFieldId") + b.Property("Id") .HasColumnType("int"); - b.Property("AttributeFieldName") - .IsRequired() - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("AttributeSetName") - .HasColumnType("varchar(250)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("BooleanValue") - .HasColumnType("bit"); - b.Property("CreatedBy") .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") @@ -330,39 +301,33 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("CreatedDateTime") .HasColumnType("datetime"); - b.Property("DataId") - .IsRequired() - .HasColumnType("varchar(50)") + b.Property("Description") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("DataType") - .IsRequired() - .HasColumnType("varchar(50)") + b.Property("EdmAutoSend") + .HasColumnType("bit"); + + b.Property("EdmFrom") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("DateTimeValue") - .HasColumnType("datetime"); - - b.Property("DoubleValue") - .HasColumnType("float"); - - b.Property("EncryptKey") - .HasColumnType("varchar(50)") + b.Property("EdmSubject") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("EncryptType") - .HasColumnType("int"); - - b.Property("EncryptValue") - .HasColumnType("text") + b.Property("EdmTemplate") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("IntegerValue") - .HasColumnType("int"); + b.Property("FormTemplate") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); b.Property("LastModified") .HasColumnType("datetime"); @@ -372,101 +337,134 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Priority") .HasColumnType("int"); - b.Property("Regex") - .HasColumnType("varchar(250)") + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Specificulture") + b.Property("Title") .IsRequired() - .HasColumnType("varchar(10)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Status") + b.Property("Type") .IsRequired() .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("StringValue") - .HasColumnType("text") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - b.HasKey("Id"); - b.HasIndex("DataId"); - - b.ToTable("mix_attribute_set_value"); + b.ToTable("mix_database"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCache", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseColumn", b => { - b.Property("Id") - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Id") + .HasColumnType("int"); + + b.Property("Configurations") + .HasColumnType("nvarchar(max)"); b.Property("CreatedBy") + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("varchar(50)"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("DataType") + .IsRequired() .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("CreatedDateTime") - .HasColumnType("datetime"); + b.Property("DefaultValue") + .HasColumnType("ntext"); - b.Property("ExpiredDateTime") - .HasColumnType("datetime"); + b.Property("IsEncrypt") + .HasColumnType("bit"); + + b.Property("IsMultiple") + .HasColumnType("bit"); + + b.Property("IsRequire") + .HasColumnType("bit"); + + b.Property("IsSelect") + .HasColumnType("bit"); + + b.Property("IsUnique") + .HasColumnType("bit"); b.Property("LastModified") .HasColumnType("datetime"); + b.Property("MixDatabaseId") + .HasColumnType("int"); + + b.Property("MixDatabaseName") + .HasMaxLength(250) + .HasColumnType("nvarchar(250)"); + b.Property("ModifiedBy") - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("varchar(50)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("nvarchar(250)"); + + b.Property("Options") + .HasColumnType("ntext"); b.Property("Priority") .HasColumnType("int"); + b.Property("ReferenceId") + .HasColumnType("int"); + + b.Property("Regex") + .HasMaxLength(4000) + .HasColumnType("nvarchar(4000)"); + b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Value") - .IsRequired() - .HasColumnType("text") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Title") + .HasColumnType("nvarchar(max)"); b.HasKey("Id"); - b.HasIndex("ExpiredDateTime") - .HasDatabaseName("Index_ExpiresAtTime"); - - b.ToTable("mix_cache"); + b.ToTable("mix_database_column"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCmsUser", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseData", b => { b.Property("Id") .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Address") - .HasColumnType("varchar(250)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Avatar") - .HasColumnType("varchar(250)") + b.Property("Specificulture") + .HasColumnType("varchar(10)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -478,26 +476,14 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("CreatedDateTime") .HasColumnType("datetime"); - b.Property("Email") - .HasColumnType("varchar(250)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("FirstName") - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("LastModified") .HasColumnType("datetime"); - b.Property("LastName") - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("MixDatabaseId") + .HasColumnType("int"); - b.Property("MiddleName") - .HasColumnType("varchar(50)") + b.Property("MixDatabaseName") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -506,11 +492,6 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("PhoneNumber") - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Priority") .HasColumnType("int"); @@ -520,31 +501,24 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Username") - .HasColumnType("varchar(250)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_database_data"); - b.HasKey("Id"); + b.HasIndex("MixDatabaseId"); - b.ToTable("mix_cms_user"); + b.ToTable("mix_database_data"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixConfiguration", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseDataAssociation", b => { - b.Property("Id") - .HasColumnType("int"); + b.Property("Id") + .HasColumnType("nvarchar(450)"); b.Property("Specificulture") .HasColumnType("varchar(10)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Category") - .HasColumnType("varchar(250)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("CreatedBy") .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") @@ -553,27 +527,41 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("CreatedDateTime") .HasColumnType("datetime"); - b.Property("DataType") + b.Property("DataId") .IsRequired() .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Description") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(400)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Keyword") - .IsRequired() + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("MixDatabaseId") + .HasColumnType("int"); + + b.Property("MixDatabaseName") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModifiedBy") .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("LastModified") - .HasColumnType("datetime"); + b.Property("ParentId") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("ModifiedBy") + b.Property("ParentType") + .IsRequired() .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -587,29 +575,27 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Value") - .HasColumnType("text") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - b.HasKey("Id", "Specificulture") - .HasName("PK_mix_configuration"); - - b.HasIndex("Specificulture"); + .HasName("PK_mix_database_data_association"); - b.ToTable("mix_configuration"); + b.ToTable("mix_database_data_association"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCulture", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseDataValue", b => { - b.Property("Id") - .HasColumnType("int"); + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Alias") - .HasColumnType("varchar(150)") + b.Property("Specificulture") + .HasColumnType("varchar(10)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("BooleanValue") + .HasColumnType("bit"); + b.Property("CreatedBy") .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") @@ -618,27 +604,54 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("CreatedDateTime") .HasColumnType("datetime"); - b.Property("Description") - .HasColumnType("varchar(250)") + b.Property("DataId") + .IsRequired() + .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("FullName") - .HasColumnType("varchar(150)") + b.Property("DataType") + .IsRequired() + .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Icon") + b.Property("DateTimeValue") + .HasColumnType("datetime"); + + b.Property("DoubleValue") + .HasColumnType("float"); + + b.Property("EncryptKey") .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("EncryptType") + .HasColumnType("int"); + + b.Property("EncryptValue") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("IntegerValue") + .HasColumnType("int"); + b.Property("LastModified") .HasColumnType("datetime"); - b.Property("Lcid") + b.Property("MixDatabaseColumnId") + .HasColumnType("int"); + + b.Property("MixDatabaseColumnName") + .IsRequired() .HasColumnType("varchar(50)") - .HasColumnName("LCID") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("MixDatabaseName") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -650,9 +663,8 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("Priority") .HasColumnType("int"); - b.Property("Specificulture") - .IsRequired() - .HasColumnType("varchar(10)") + b.Property("Regex") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -662,13 +674,17 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.HasKey("Id"); + b.Property("StringValue") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); - b.HasIndex("Specificulture") - .IsUnique() - .HasDatabaseName("IX_Mix_Culture"); + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_database_data_value"); - b.ToTable("mix_culture"); + b.HasIndex("DataId"); + + b.ToTable("mix_database_data_value"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixFile", b => @@ -692,13 +708,13 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("FileFolder") .IsRequired() - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("FileName") .IsRequired() - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -727,7 +743,7 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("StringContent") .IsRequired() - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -736,7 +752,7 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("ThemeName") .IsRequired() - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -758,7 +774,7 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Category") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -777,12 +793,12 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasAnnotation("MySql:CharSet", "utf8"); b.Property("DefaultValue") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Description") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -810,7 +826,7 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Value") - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -841,7 +857,7 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasColumnType("datetime"); b.Property("Description") - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -853,18 +869,18 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("FileFolder") .IsRequired() - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("FileName") .IsRequired() - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("FileProperties") - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -889,7 +905,7 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasColumnType("int"); b.Property("Source") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -900,17 +916,17 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Tags") - .HasColumnType("varchar(400)") + .HasColumnType("nvarchar(400)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("TargetUrl") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Title") - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -939,27 +955,27 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasColumnType("datetime"); b.Property("Description") - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("EdmTemplate") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Fields") - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("FormTemplate") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Image") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -993,17 +1009,17 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Template") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Thumbnail") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Title") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1040,7 +1056,7 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("Fields") .IsRequired() - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1071,7 +1087,7 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Value") - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1108,12 +1124,12 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasColumnType("datetime"); b.Property("Description") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Image") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1161,7 +1177,7 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Content") - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1174,17 +1190,17 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasColumnType("datetime"); b.Property("CssClass") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Excerpt") - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("ExtraFields") - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1194,7 +1210,7 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Image") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1224,12 +1240,12 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasColumnType("int"); b.Property("SeoDescription") - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("SeoKeywords") - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1239,12 +1255,12 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasAnnotation("MySql:CharSet", "utf8"); b.Property("SeoTitle") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("StaticUrl") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1255,21 +1271,22 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Tags") - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Template") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Title") - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Type") + .IsRequired() .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1304,12 +1321,12 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasColumnType("datetime"); b.Property("Description") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Image") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1368,12 +1385,12 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasColumnType("datetime"); b.Property("Description") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Image") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1424,7 +1441,7 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasColumnType("datetime"); b.Property("Description") - .HasColumnType("varchar(450)") + .HasColumnType("nvarchar(400)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1454,17 +1471,17 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasAnnotation("MySql:CharSet", "utf8"); b.Property("TextDefault") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("TextKeyword") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Url") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1487,12 +1504,12 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasColumnType("datetime"); b.Property("Description") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Image") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1530,242 +1547,53 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPageRole", b => - { - b.Property("RoleId") - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("PageId") - .HasColumnType("int"); - - b.Property("CreatedBy") - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("CreatedDateTime") - .HasColumnType("datetime"); - - b.Property("LastModified") - .HasColumnType("datetime"); - - b.Property("ModifiedBy") - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Priority") - .HasColumnType("int"); - - b.Property("Status") - .IsRequired() - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.HasKey("RoleId", "PageId") - .HasName("PK_mix_portal_page_role"); - - b.HasIndex("PageId"); - - b.ToTable("mix_portal_page_role"); - }); - - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPost", b => - { - b.Property("Id") - .HasColumnType("int"); - - b.Property("Specificulture") - .HasColumnType("varchar(10)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Content") - .HasColumnType("text") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("CreatedBy") - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("CreatedDateTime") - .HasColumnType("datetime"); - - b.Property("Excerpt") - .HasColumnType("text") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("ExtraFields") - .HasColumnType("text") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("ExtraProperties") - .HasColumnType("text") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Icon") - .HasColumnType("text") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Image") - .HasColumnType("varchar(250)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("LastModified") - .HasColumnType("datetime"); - - b.Property("ModifiedBy") - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Priority") - .HasColumnType("int"); - - b.Property("PublishedDateTime") - .HasColumnType("datetime"); - - b.Property("SeoDescription") - .HasColumnType("text") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("SeoKeywords") - .HasColumnType("text") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("SeoName") - .HasColumnType("varchar(500)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("SeoTitle") - .HasColumnType("text") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Source") - .HasColumnType("varchar(250)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Status") - .IsRequired() - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Tags") - .HasColumnType("text") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Template") - .HasColumnType("varchar(250)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Thumbnail") - .HasColumnType("varchar(250)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Title") - .HasColumnType("text") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Type") - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Views") - .HasColumnType("int"); - - b.HasKey("Id", "Specificulture") - .HasName("PK_mix_post"); - - b.HasIndex("Specificulture"); - - b.ToTable("mix_post"); - }); - - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostMedia", b => { b.Property("Id") - .HasColumnType("int"); - - b.Property("Specificulture") - .HasColumnType("varchar(10)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); + .ValueGeneratedOnAdd() + .HasColumnType("int") + .UseIdentityColumn(); b.Property("CreatedBy") - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("varchar(50)"); b.Property("CreatedDateTime") .HasColumnType("datetime"); - b.Property("Description") - .HasColumnType("varchar(250)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Image") - .HasColumnType("varchar(250)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("LastModified") - .HasColumnType("datetime"); - - b.Property("MediaId") - .HasColumnType("int"); + .HasColumnType("datetime"); b.Property("ModifiedBy") - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Position") - .HasColumnType("int"); + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("varchar(50)"); - b.Property("PostId") + b.Property("PageId") .HasColumnType("int"); b.Property("Priority") .HasColumnType("int"); + b.Property("RoleId") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + b.Property("Status") .IsRequired() - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.HasKey("Id", "Specificulture") - .HasName("PK_mix_post_media"); + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("varchar(50)"); - b.HasIndex("MediaId", "Specificulture"); + b.HasKey("Id") + .HasName("PK_mix_portal_page_role"); - b.HasIndex("PostId", "Specificulture"); + b.HasIndex("PageId"); - b.ToTable("mix_post_media"); + b.ToTable("mix_portal_page_role"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostModule", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPost", b => { b.Property("Id") .HasColumnType("int"); @@ -1775,6 +1603,11 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Content") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("CreatedBy") .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") @@ -1783,13 +1616,28 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("CreatedDateTime") .HasColumnType("datetime"); - b.Property("Description") - .HasColumnType("varchar(250)") + b.Property("Excerpt") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ExtraFields") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ExtraProperties") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Icon") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Image") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1801,109 +1649,80 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("ModuleId") - .HasColumnType("int"); - - b.Property("Position") - .HasColumnType("int"); - - b.Property("PostId") - .HasColumnType("int"); - b.Property("Priority") .HasColumnType("int"); - b.Property("Status") - .IsRequired() - .HasColumnType("varchar(50)") + b.Property("PublishedDateTime") + .HasColumnType("datetime"); + + b.Property("SeoDescription") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.HasKey("Id", "Specificulture") - .HasName("PK_mix_post_module"); - - b.HasIndex("ModuleId", "Specificulture"); - - b.HasIndex("PostId", "Specificulture"); - - b.ToTable("mix_post_module"); - }); - - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixRelatedAttributeData", b => - { - b.Property("Id") - .HasColumnType("varchar(50)") + b.Property("SeoKeywords") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Specificulture") - .HasColumnType("varchar(10)") + b.Property("SeoName") + .HasColumnType("varchar(500)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("AttributeSetId") - .HasColumnType("int"); - - b.Property("AttributeSetName") - .HasColumnType("varchar(250)") + b.Property("SeoTitle") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("CreatedBy") - .HasColumnType("varchar(50)") + b.Property("Source") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("CreatedDateTime") - .HasColumnType("datetime"); - - b.Property("DataId") + b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Description") - .HasColumnType("varchar(450)") + b.Property("Tags") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("LastModified") - .HasColumnType("datetime"); - - b.Property("ModifiedBy") - .HasColumnType("varchar(50)") + b.Property("Template") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("ParentId") - .IsRequired() - .HasColumnType("varchar(50)") + b.Property("Thumbnail") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("ParentType") - .IsRequired() - .HasColumnType("varchar(50)") + b.Property("Title") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Priority") - .HasColumnType("int"); - - b.Property("Status") - .IsRequired() + b.Property("Type") .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Views") + .HasColumnType("int"); + b.HasKey("Id", "Specificulture") - .HasName("PK_mix_related_attribute_data"); + .HasName("PK_mix_post"); + + b.HasIndex("Specificulture"); - b.ToTable("mix_related_attribute_data"); + b.ToTable("mix_post"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixRelatedAttributeSet", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostAssociation", b => { b.Property("Id") .HasColumnType("int"); @@ -1913,9 +1732,6 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("AttributeSetId") - .HasColumnType("int"); - b.Property("CreatedBy") .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") @@ -1925,15 +1741,15 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasColumnType("datetime"); b.Property("Description") - .HasColumnType("varchar(450)") + .HasColumnType("nvarchar(400)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("IdNavigationId") + b.Property("DestinationId") .HasColumnType("int"); b.Property("Image") - .HasColumnType("varchar(450)") + .HasColumnType("nvarchar(400)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1945,16 +1761,10 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("ParentId") + b.Property("Priority") .HasColumnType("int"); - b.Property("ParentType") - .IsRequired() - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Priority") + b.Property("SourceId") .HasColumnType("int"); b.Property("Status") @@ -1964,14 +1774,16 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasAnnotation("MySql:CharSet", "utf8"); b.HasKey("Id", "Specificulture") - .HasName("PK_mix_related_attribute_set"); + .HasName("PK_mix_post_association"); + + b.HasIndex("DestinationId", "Specificulture"); - b.HasIndex("IdNavigationId"); + b.HasIndex("SourceId", "Specificulture"); - b.ToTable("mix_related_attribute_set"); + b.ToTable("mix_post_association"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixRelatedData", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostMedia", b => { b.Property("Id") .HasColumnType("int"); @@ -1981,14 +1793,6 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("AttributeSetId") - .HasColumnType("int"); - - b.Property("AttributeSetName") - .HasColumnType("varchar(250)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("CreatedBy") .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") @@ -1997,36 +1801,32 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("CreatedDateTime") .HasColumnType("datetime"); - b.Property("DataId") - .IsRequired() - .HasColumnType("varchar(50)") + b.Property("Description") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Description") - .HasColumnType("varchar(450)") + b.Property("Image") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("LastModified") .HasColumnType("datetime"); + b.Property("MediaId") + .HasColumnType("int"); + b.Property("ModifiedBy") .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("ParentId") - .IsRequired() - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Position") + .HasColumnType("int"); - b.Property("ParentType") - .IsRequired() - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("PostId") + .HasColumnType("int"); b.Property("Priority") .HasColumnType("int"); @@ -2037,16 +1837,17 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Type") - .HasColumnType("int"); - b.HasKey("Id", "Specificulture") - .HasName("PK_mix_related_data"); + .HasName("PK_mix_post_media"); + + b.HasIndex("MediaId", "Specificulture"); + + b.HasIndex("PostId", "Specificulture"); - b.ToTable("mix_related_data"); + b.ToTable("mix_post_media"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixRelatedPost", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostModule", b => { b.Property("Id") .HasColumnType("int"); @@ -2065,15 +1866,12 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasColumnType("datetime"); b.Property("Description") - .HasColumnType("varchar(450)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("DestinationId") - .HasColumnType("int"); - b.Property("Image") - .HasColumnType("varchar(450)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -2085,10 +1883,16 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Priority") + b.Property("ModuleId") .HasColumnType("int"); - b.Property("SourceId") + b.Property("Position") + .HasColumnType("int"); + + b.Property("PostId") + .HasColumnType("int"); + + b.Property("Priority") .HasColumnType("int"); b.Property("Status") @@ -2098,13 +1902,13 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasAnnotation("MySql:CharSet", "utf8"); b.HasKey("Id", "Specificulture") - .HasName("PK_mix_related_post"); + .HasName("PK_mix_post_module"); - b.HasIndex("DestinationId", "Specificulture"); + b.HasIndex("ModuleId", "Specificulture"); - b.HasIndex("SourceId", "Specificulture"); + b.HasIndex("PostId", "Specificulture"); - b.ToTable("mix_related_post"); + b.ToTable("mix_post_module"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTemplate", b => @@ -2114,7 +1918,7 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("Content") .IsRequired() - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -2134,13 +1938,13 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("FileFolder") .IsRequired() - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("FileName") .IsRequired() - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -2154,7 +1958,7 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasColumnType("datetime"); b.Property("MobileContent") - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -2167,12 +1971,12 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasColumnType("int"); b.Property("Scripts") - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("SpaContent") - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -2183,7 +1987,7 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Styles") - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -2192,7 +1996,7 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("ThemeName") .IsRequired() - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -2218,7 +2022,7 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasColumnType("datetime"); b.Property("Image") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -2232,12 +2036,12 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("Name") .IsRequired() - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("PreviewUrl") - .HasColumnType("varchar(450)") + .HasColumnType("nvarchar(400)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -2251,12 +2055,12 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Thumbnail") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Title") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -2321,28 +2125,6 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.ToTable("mix_url_alias"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeSetData", b => - { - b.HasOne("Mix.Cms.Lib.Models.Cms.MixAttributeSet", "AttributeSet") - .WithMany() - .HasForeignKey("AttributeSetId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("AttributeSet"); - }); - - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeSetReference", b => - { - b.HasOne("Mix.Cms.Lib.Models.Cms.MixAttributeSet", "AttributeSet") - .WithMany() - .HasForeignKey("AttributeSetId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("AttributeSet"); - }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixConfiguration", b => { b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") @@ -2356,6 +2138,17 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Navigation("SpecificultureNavigation"); }); + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseData", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixDatabase", "MixDatabase") + .WithMany() + .HasForeignKey("MixDatabaseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("MixDatabase"); + }); + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixFile", b => { b.HasOne("Mix.Cms.Lib.Models.Cms.MixTheme", "Theme") @@ -2531,6 +2324,25 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Navigation("SpecificultureNavigation"); }); + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostAssociation", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixRelatedPostMixPost") + .HasForeignKey("DestinationId", "Specificulture") + .HasConstraintName("FK_mix_post_association_mix_post1") + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "S") + .WithMany("MixRelatedPostS") + .HasForeignKey("SourceId", "Specificulture") + .HasConstraintName("FK_mix_post_association_mix_post") + .IsRequired(); + + b.Navigation("MixPost"); + + b.Navigation("S"); + }); + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostMedia", b => { b.HasOne("Mix.Cms.Lib.Models.Cms.MixMedia", "MixMedia") @@ -2570,34 +2382,6 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Navigation("MixPost"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixRelatedAttributeSet", b => - { - b.HasOne("Mix.Cms.Lib.Models.Cms.MixAttributeSet", "IdNavigation") - .WithMany() - .HasForeignKey("IdNavigationId"); - - b.Navigation("IdNavigation"); - }); - - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixRelatedPost", b => - { - b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") - .WithMany("MixRelatedPostMixPost") - .HasForeignKey("DestinationId", "Specificulture") - .HasConstraintName("FK_mix_related_post_mix_post1") - .IsRequired(); - - b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "S") - .WithMany("MixRelatedPostS") - .HasForeignKey("SourceId", "Specificulture") - .HasConstraintName("FK_mix_related_post_mix_post") - .IsRequired(); - - b.Navigation("MixPost"); - - b.Navigation("S"); - }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTemplate", b => { b.HasOne("Mix.Cms.Lib.Models.Cms.MixTheme", "Theme") diff --git a/src/Mix.Cms.Lib/Migrations/MsSqlMixCms/20210107122622_Init.cs b/src/Mix.Cms.Lib/Migrations/MsSqlMixCms/20210107122622_Init.cs index 8076642dc..25a1fc32a 100644 --- a/src/Mix.Cms.Lib/Migrations/MsSqlMixCms/20210107122622_Init.cs +++ b/src/Mix.Cms.Lib/Migrations/MsSqlMixCms/20210107122622_Init.cs @@ -1,5 +1,7 @@ -using Microsoft.EntityFrameworkCore.Migrations; -using System; +using System; +using Microsoft.EntityFrameworkCore.Migrations; +using Mix.Cms.Lib.Constants; +using Mix.Cms.Lib.Services; namespace Mix.Cms.Lib.Migrations { @@ -7,102 +9,14 @@ public partial class Init : Migration { protected override void Up(MigrationBuilder migrationBuilder) { - migrationBuilder.CreateTable( - name: "mix_attribute_field", - columns: table => new - { - Id = table.Column(type: "int", nullable: false), - AttributeSetId = table.Column(type: "int", nullable: false), - AttributeSetName = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: true), - Configurations = table.Column(type: "nvarchar(max)", nullable: true), - Regex = table.Column(type: "nvarchar(4000)", maxLength: 4000, nullable: true), - Title = table.Column(type: "nvarchar(max)", nullable: true), - DataType = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), - DefaultValue = table.Column(type: "ntext", nullable: true), - Name = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false), - Options = table.Column(type: "ntext", nullable: true), - IsRequire = table.Column(type: "bit", nullable: false), - IsEncrypt = table.Column(type: "bit", nullable: false), - IsMultiple = table.Column(type: "bit", nullable: false), - IsSelect = table.Column(type: "bit", nullable: false), - IsUnique = table.Column(type: "bit", nullable: false), - ReferenceId = table.Column(type: "int", nullable: true), - ModifiedBy = table.Column(type: "varchar(50)", unicode: false, maxLength: 50, nullable: true), - CreatedBy = table.Column(type: "varchar(50)", unicode: false, maxLength: 50, nullable: true), - LastModified = table.Column(type: "datetime", nullable: true), - CreatedDateTime = table.Column(type: "datetime", nullable: false), - Priority = table.Column(type: "int", nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS") - }, - constraints: table => - { - table.PrimaryKey("PK_mix_attribute_field", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "mix_attribute_set", - columns: table => new - { - Id = table.Column(type: "int", nullable: false), - Type = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), - Title = table.Column(type: "varchar(250)", nullable: false, collation: "Vietnamese_CI_AS"), - Name = table.Column(type: "varchar(250)", nullable: false, collation: "Vietnamese_CI_AS"), - Description = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - FormTemplate = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - EdmTemplate = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - EdmSubject = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - EdmFrom = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - EdmAutoSend = table.Column(type: "bit", nullable: true), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), - LastModified = table.Column(type: "datetime", nullable: true), - CreatedDateTime = table.Column(type: "datetime", nullable: false), - Priority = table.Column(type: "int", nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS") - }, - constraints: table => - { - table.PrimaryKey("PK_mix_attribute_set", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "mix_attribute_set_value", - columns: table => new - { - Id = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), - Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "Vietnamese_CI_AS"), - AttributeFieldId = table.Column(type: "int", nullable: false), - AttributeFieldName = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), - AttributeSetName = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - Regex = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - DataType = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), - BooleanValue = table.Column(type: "bit", nullable: true), - DataId = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), - DateTimeValue = table.Column(type: "datetime", nullable: true), - DoubleValue = table.Column(type: "float", nullable: true), - IntegerValue = table.Column(type: "int", nullable: true), - StringValue = table.Column(type: "text", nullable: true, collation: "Vietnamese_CI_AS"), - EncryptValue = table.Column(type: "text", nullable: true, collation: "Vietnamese_CI_AS"), - EncryptKey = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), - EncryptType = table.Column(type: "int", nullable: false), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), - LastModified = table.Column(type: "datetime", nullable: true), - CreatedDateTime = table.Column(type: "datetime", nullable: false), - Priority = table.Column(type: "int", nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS") - }, - constraints: table => - { - table.PrimaryKey("PK_mix_attribute_set_value", x => new { x.Id, x.Specificulture }); - }); - + MixService.SetConfig(MixConfigurations.CONST_MIXCORE_VERSION, "1.0.1"); + MixService.SaveSettings(); migrationBuilder.CreateTable( name: "mix_cache", columns: table => new { Id = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), - Value = table.Column(type: "text", nullable: false, collation: "Vietnamese_CI_AS"), + Value = table.Column(type: "ntext", nullable: false, collation: "Vietnamese_CI_AS"), ExpiredDateTime = table.Column(type: "datetime", nullable: true), ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), @@ -121,14 +35,14 @@ protected override void Up(MigrationBuilder migrationBuilder) columns: table => new { Id = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), - Address = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - Avatar = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Address = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Avatar = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), FirstName = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), LastName = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), MiddleName = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), PhoneNumber = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), - Username = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - Email = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Username = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Email = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), LastModified = table.Column(type: "datetime", nullable: true), @@ -147,8 +61,8 @@ protected override void Up(MigrationBuilder migrationBuilder) { Id = table.Column(type: "int", nullable: false), Alias = table.Column(type: "varchar(150)", nullable: true, collation: "Vietnamese_CI_AS"), - Description = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - FullName = table.Column(type: "varchar(150)", nullable: true, collation: "Vietnamese_CI_AS"), + Description = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + FullName = table.Column(type: "nvarchar(150)", nullable: true, collation: "Vietnamese_CI_AS"), Icon = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), LCID = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "Vietnamese_CI_AS"), @@ -166,69 +80,75 @@ protected override void Up(MigrationBuilder migrationBuilder) }); migrationBuilder.CreateTable( - name: "mix_media", + name: "mix_database", columns: table => new { Id = table.Column(type: "int", nullable: false), - Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "Vietnamese_CI_AS"), - Description = table.Column(type: "text", nullable: true, collation: "Vietnamese_CI_AS"), - Extension = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), - FileFolder = table.Column(type: "varchar(250)", nullable: false, collation: "Vietnamese_CI_AS"), - FileName = table.Column(type: "varchar(250)", nullable: false, collation: "Vietnamese_CI_AS"), - FileProperties = table.Column(type: "text", nullable: true, collation: "Vietnamese_CI_AS"), - FileSize = table.Column(type: "bigint", nullable: false), - FileType = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), - Title = table.Column(type: "text", nullable: true, collation: "Vietnamese_CI_AS"), - Tags = table.Column(type: "varchar(400)", nullable: true, collation: "Vietnamese_CI_AS"), - Source = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - TargetUrl = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), - CreatedDateTime = table.Column(type: "datetime", nullable: false), + Type = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), + Title = table.Column(type: "nvarchar(250)", nullable: false, collation: "Vietnamese_CI_AS"), + Name = table.Column(type: "nvarchar(250)", nullable: false, collation: "Vietnamese_CI_AS"), + Description = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + FormTemplate = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + EdmTemplate = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + EdmSubject = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + EdmFrom = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + EdmAutoSend = table.Column(type: "bit", nullable: true), ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), LastModified = table.Column(type: "datetime", nullable: true), + CreatedDateTime = table.Column(type: "datetime", nullable: false), Priority = table.Column(type: "int", nullable: false), Status = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS") }, constraints: table => { - table.PrimaryKey("PK_mix_media", x => new { x.Id, x.Specificulture }); + table.PrimaryKey("PK_mix_database", x => x.Id); }); migrationBuilder.CreateTable( - name: "mix_portal_page", + name: "mix_database_column", columns: table => new { Id = table.Column(type: "int", nullable: false), - Icon = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), - TextKeyword = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - Url = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - Description = table.Column(type: "varchar(450)", nullable: true, collation: "Vietnamese_CI_AS"), - TextDefault = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - Level = table.Column(type: "int", nullable: false), - CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), - CreatedDateTime = table.Column(type: "datetime", nullable: false), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), + MixDatabaseId = table.Column(type: "int", nullable: false), + MixDatabaseName = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: true), + Configurations = table.Column(type: "nvarchar(max)", nullable: true), + Regex = table.Column(type: "nvarchar(4000)", maxLength: 4000, nullable: true), + Title = table.Column(type: "nvarchar(max)", nullable: true), + DataType = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), + DefaultValue = table.Column(type: "ntext", nullable: true), + Name = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false), + Options = table.Column(type: "ntext", nullable: true), + IsRequire = table.Column(type: "bit", nullable: false), + IsEncrypt = table.Column(type: "bit", nullable: false), + IsMultiple = table.Column(type: "bit", nullable: false), + IsSelect = table.Column(type: "bit", nullable: false), + IsUnique = table.Column(type: "bit", nullable: false), + ReferenceId = table.Column(type: "int", nullable: true), + ModifiedBy = table.Column(type: "varchar(50)", unicode: false, maxLength: 50, nullable: true), + CreatedBy = table.Column(type: "varchar(50)", unicode: false, maxLength: 50, nullable: true), LastModified = table.Column(type: "datetime", nullable: true), + CreatedDateTime = table.Column(type: "datetime", nullable: false), Priority = table.Column(type: "int", nullable: false), Status = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS") }, constraints: table => { - table.PrimaryKey("PK_mix_portal_page", x => x.Id); + table.PrimaryKey("PK_mix_database_column", x => x.Id); }); migrationBuilder.CreateTable( - name: "mix_related_attribute_data", + name: "mix_database_data_association", columns: table => new { - Id = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), + Id = table.Column(type: "nvarchar(450)", nullable: false), Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "Vietnamese_CI_AS"), DataId = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), ParentId = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), ParentType = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), - AttributeSetId = table.Column(type: "int", nullable: false), - AttributeSetName = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - Description = table.Column(type: "varchar(450)", nullable: true, collation: "Vietnamese_CI_AS"), + MixDatabaseId = table.Column(type: "int", nullable: false), + MixDatabaseName = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Description = table.Column(type: "nvarchar(400)", nullable: true, collation: "Vietnamese_CI_AS"), CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), CreatedDateTime = table.Column(type: "datetime", nullable: false), ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), @@ -238,44 +158,58 @@ protected override void Up(MigrationBuilder migrationBuilder) }, constraints: table => { - table.PrimaryKey("PK_mix_related_attribute_data", x => new { x.Id, x.Specificulture }); + table.PrimaryKey("PK_mix_database_data_association", x => new { x.Id, x.Specificulture }); }); migrationBuilder.CreateTable( - name: "mix_related_data", + name: "mix_database_data_value", columns: table => new { - Id = table.Column(type: "int", nullable: false), + Id = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "Vietnamese_CI_AS"), + MixDatabaseColumnId = table.Column(type: "int", nullable: false), + MixDatabaseColumnName = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), + MixDatabaseName = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Regex = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + DataType = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), + BooleanValue = table.Column(type: "bit", nullable: true), DataId = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), - Type = table.Column(type: "int", nullable: false), - ParentId = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), - ParentType = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), - AttributeSetId = table.Column(type: "int", nullable: false), - AttributeSetName = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - Description = table.Column(type: "varchar(450)", nullable: true, collation: "Vietnamese_CI_AS"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), - CreatedDateTime = table.Column(type: "datetime", nullable: false), + DateTimeValue = table.Column(type: "datetime", nullable: true), + DoubleValue = table.Column(type: "float", nullable: true), + IntegerValue = table.Column(type: "int", nullable: true), + StringValue = table.Column(type: "ntext", nullable: true, collation: "Vietnamese_CI_AS"), + EncryptValue = table.Column(type: "ntext", nullable: true, collation: "Vietnamese_CI_AS"), + EncryptKey = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), + EncryptType = table.Column(type: "int", nullable: false), ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), LastModified = table.Column(type: "datetime", nullable: true), + CreatedDateTime = table.Column(type: "datetime", nullable: false), Priority = table.Column(type: "int", nullable: false), Status = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS") }, constraints: table => { - table.PrimaryKey("PK_mix_related_data", x => new { x.Id, x.Specificulture }); + table.PrimaryKey("PK_mix_database_data_value", x => new { x.Id, x.Specificulture }); }); migrationBuilder.CreateTable( - name: "mix_theme", + name: "mix_media", columns: table => new { Id = table.Column(type: "int", nullable: false), - Thumbnail = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - Image = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - Title = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - Name = table.Column(type: "varchar(250)", nullable: false, collation: "Vietnamese_CI_AS"), - PreviewUrl = table.Column(type: "varchar(450)", nullable: true, collation: "Vietnamese_CI_AS"), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "Vietnamese_CI_AS"), + Description = table.Column(type: "ntext", nullable: true, collation: "Vietnamese_CI_AS"), + Extension = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), + FileFolder = table.Column(type: "nvarchar(250)", nullable: false, collation: "Vietnamese_CI_AS"), + FileName = table.Column(type: "nvarchar(250)", nullable: false, collation: "Vietnamese_CI_AS"), + FileProperties = table.Column(type: "ntext", nullable: true, collation: "Vietnamese_CI_AS"), + FileSize = table.Column(type: "bigint", nullable: false), + FileType = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), + Title = table.Column(type: "ntext", nullable: true, collation: "Vietnamese_CI_AS"), + Tags = table.Column(type: "nvarchar(400)", nullable: true, collation: "Vietnamese_CI_AS"), + Source = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + TargetUrl = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), CreatedDateTime = table.Column(type: "datetime", nullable: false), ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), @@ -285,91 +219,52 @@ protected override void Up(MigrationBuilder migrationBuilder) }, constraints: table => { - table.PrimaryKey("PK_mix_theme", x => x.Id); + table.PrimaryKey("PK_mix_media", x => new { x.Id, x.Specificulture }); }); migrationBuilder.CreateTable( - name: "mix_attribute_set_data", + name: "mix_portal_page", columns: table => new { - Id = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), - Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "Vietnamese_CI_AS"), - AttributeSetId = table.Column(type: "int", nullable: false), - AttributeSetName = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), + Id = table.Column(type: "int", nullable: false), + Icon = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), + TextKeyword = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Url = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Description = table.Column(type: "nvarchar(400)", nullable: true, collation: "Vietnamese_CI_AS"), + TextDefault = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Level = table.Column(type: "int", nullable: false), CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), - LastModified = table.Column(type: "datetime", nullable: true), CreatedDateTime = table.Column(type: "datetime", nullable: false), - Priority = table.Column(type: "int", nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS") - }, - constraints: table => - { - table.PrimaryKey("PK_mix_attribute_set_data", x => new { x.Id, x.Specificulture }); - table.ForeignKey( - name: "FK_mix_attribute_set_data_mix_attribute_set_AttributeSetId", - column: x => x.AttributeSetId, - principalTable: "mix_attribute_set", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "mix_attribute_set_reference", - columns: table => new - { - Id = table.Column(type: "int", nullable: false), - ParentId = table.Column(type: "int", nullable: false), - ParentType = table.Column(type: "int", nullable: false), - Description = table.Column(type: "varchar(450)", nullable: true, collation: "Vietnamese_CI_AS"), - Image = table.Column(type: "varchar(450)", nullable: true, collation: "Vietnamese_CI_AS"), - AttributeSetId = table.Column(type: "int", nullable: false), ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), LastModified = table.Column(type: "datetime", nullable: true), - CreatedDateTime = table.Column(type: "datetime", nullable: false), Priority = table.Column(type: "int", nullable: false), Status = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS") }, constraints: table => { - table.PrimaryKey("PK_mix_attribute_set_reference", x => x.Id); - table.ForeignKey( - name: "FK_mix_attribute_set_reference_mix_attribute_set_AttributeSetId", - column: x => x.AttributeSetId, - principalTable: "mix_attribute_set", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); + table.PrimaryKey("PK_mix_portal_page", x => x.Id); }); migrationBuilder.CreateTable( - name: "mix_related_attribute_set", + name: "mix_theme", columns: table => new { Id = table.Column(type: "int", nullable: false), - Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "Vietnamese_CI_AS"), - AttributeSetId = table.Column(type: "int", nullable: false), - ParentId = table.Column(type: "int", nullable: false), - ParentType = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), - Description = table.Column(type: "varchar(450)", nullable: true, collation: "Vietnamese_CI_AS"), - Image = table.Column(type: "varchar(450)", nullable: true, collation: "Vietnamese_CI_AS"), + Thumbnail = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Image = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Title = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Name = table.Column(type: "nvarchar(250)", nullable: false, collation: "Vietnamese_CI_AS"), + PreviewUrl = table.Column(type: "nvarchar(400)", nullable: true, collation: "Vietnamese_CI_AS"), CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), CreatedDateTime = table.Column(type: "datetime", nullable: false), ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), LastModified = table.Column(type: "datetime", nullable: true), Priority = table.Column(type: "int", nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), - IdNavigationId = table.Column(type: "int", nullable: true) + Status = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS") }, constraints: table => { - table.PrimaryKey("PK_mix_related_attribute_set", x => new { x.Id, x.Specificulture }); - table.ForeignKey( - name: "FK_mix_related_attribute_set_mix_attribute_set_IdNavigationId", - column: x => x.IdNavigationId, - principalTable: "mix_attribute_set", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); + table.PrimaryKey("PK_mix_theme", x => x.Id); }); migrationBuilder.CreateTable( @@ -379,10 +274,10 @@ protected override void Up(MigrationBuilder migrationBuilder) Id = table.Column(type: "int", nullable: false), Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "Vietnamese_CI_AS"), Keyword = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), - Category = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Category = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), DataType = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), - Description = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - Value = table.Column(type: "text", nullable: true, collation: "Vietnamese_CI_AS"), + Description = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Value = table.Column(type: "ntext", nullable: true, collation: "Vietnamese_CI_AS"), CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), CreatedDateTime = table.Column(type: "datetime", nullable: false), ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), @@ -408,11 +303,11 @@ protected override void Up(MigrationBuilder migrationBuilder) Id = table.Column(type: "int", nullable: false), Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "Vietnamese_CI_AS"), Keyword = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), - Category = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Category = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), DataType = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), - Description = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - Value = table.Column(type: "text", nullable: true, collation: "Vietnamese_CI_AS"), - DefaultValue = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Description = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Value = table.Column(type: "ntext", nullable: true, collation: "Vietnamese_CI_AS"), + DefaultValue = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), CreatedDateTime = table.Column(type: "datetime", nullable: false), ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), @@ -437,15 +332,15 @@ protected override void Up(MigrationBuilder migrationBuilder) { Id = table.Column(type: "int", nullable: false), Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "Vietnamese_CI_AS"), - Description = table.Column(type: "text", nullable: true, collation: "Vietnamese_CI_AS"), - Fields = table.Column(type: "text", nullable: true, collation: "Vietnamese_CI_AS"), - Thumbnail = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - Image = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Description = table.Column(type: "ntext", nullable: true, collation: "Vietnamese_CI_AS"), + Fields = table.Column(type: "ntext", nullable: true, collation: "Vietnamese_CI_AS"), + Thumbnail = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Image = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), Name = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), - Template = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - FormTemplate = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - EdmTemplate = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - Title = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Template = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + FormTemplate = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + EdmTemplate = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Title = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), Type = table.Column(type: "int", nullable: false), PostType = table.Column(type: "nvarchar(max)", nullable: true), PageSize = table.Column(type: "int", nullable: true), @@ -473,26 +368,26 @@ protected override void Up(MigrationBuilder migrationBuilder) { Id = table.Column(type: "int", nullable: false), Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "Vietnamese_CI_AS"), - Content = table.Column(type: "text", nullable: true, collation: "Vietnamese_CI_AS"), - CssClass = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - Excerpt = table.Column(type: "text", nullable: true, collation: "Vietnamese_CI_AS"), + Content = table.Column(type: "ntext", nullable: true, collation: "Vietnamese_CI_AS"), + CssClass = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Excerpt = table.Column(type: "ntext", nullable: true, collation: "Vietnamese_CI_AS"), Icon = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), - Image = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Image = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), Layout = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), Level = table.Column(type: "int", nullable: true), - SeoDescription = table.Column(type: "text", nullable: true, collation: "Vietnamese_CI_AS"), - SeoKeywords = table.Column(type: "text", nullable: true, collation: "Vietnamese_CI_AS"), + SeoDescription = table.Column(type: "ntext", nullable: true, collation: "Vietnamese_CI_AS"), + SeoKeywords = table.Column(type: "ntext", nullable: true, collation: "Vietnamese_CI_AS"), SeoName = table.Column(type: "varchar(500)", nullable: true, collation: "Vietnamese_CI_AS"), - SeoTitle = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - StaticUrl = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - Tags = table.Column(type: "text", nullable: true, collation: "Vietnamese_CI_AS"), - Template = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - Title = table.Column(type: "text", nullable: true, collation: "Vietnamese_CI_AS"), - Type = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), + SeoTitle = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + StaticUrl = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Tags = table.Column(type: "ntext", nullable: true, collation: "Vietnamese_CI_AS"), + Template = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Title = table.Column(type: "ntext", nullable: true, collation: "Vietnamese_CI_AS"), + Type = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), PostType = table.Column(type: "nvarchar(max)", nullable: true), Views = table.Column(type: "int", nullable: true), PageSize = table.Column(type: "int", nullable: true), - ExtraFields = table.Column(type: "text", nullable: true, collation: "Vietnamese_CI_AS"), + ExtraFields = table.Column(type: "ntext", nullable: true, collation: "Vietnamese_CI_AS"), CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), CreatedDateTime = table.Column(type: "datetime", nullable: false), ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), @@ -517,24 +412,24 @@ protected override void Up(MigrationBuilder migrationBuilder) { Id = table.Column(type: "int", nullable: false), Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "Vietnamese_CI_AS"), - Content = table.Column(type: "text", nullable: true, collation: "Vietnamese_CI_AS"), + Content = table.Column(type: "ntext", nullable: true, collation: "Vietnamese_CI_AS"), PublishedDateTime = table.Column(type: "datetime", nullable: true), - Excerpt = table.Column(type: "text", nullable: true, collation: "Vietnamese_CI_AS"), - ExtraProperties = table.Column(type: "text", nullable: true, collation: "Vietnamese_CI_AS"), - Icon = table.Column(type: "text", nullable: true, collation: "Vietnamese_CI_AS"), - Image = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - SeoDescription = table.Column(type: "text", nullable: true, collation: "Vietnamese_CI_AS"), - SeoKeywords = table.Column(type: "text", nullable: true, collation: "Vietnamese_CI_AS"), + Excerpt = table.Column(type: "ntext", nullable: true, collation: "Vietnamese_CI_AS"), + ExtraProperties = table.Column(type: "ntext", nullable: true, collation: "Vietnamese_CI_AS"), + Icon = table.Column(type: "ntext", nullable: true, collation: "Vietnamese_CI_AS"), + Image = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + SeoDescription = table.Column(type: "ntext", nullable: true, collation: "Vietnamese_CI_AS"), + SeoKeywords = table.Column(type: "ntext", nullable: true, collation: "Vietnamese_CI_AS"), SeoName = table.Column(type: "varchar(500)", nullable: true, collation: "Vietnamese_CI_AS"), - SeoTitle = table.Column(type: "text", nullable: true, collation: "Vietnamese_CI_AS"), - Source = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - Tags = table.Column(type: "text", nullable: true, collation: "Vietnamese_CI_AS"), - Template = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - Thumbnail = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - Title = table.Column(type: "text", nullable: true, collation: "Vietnamese_CI_AS"), + SeoTitle = table.Column(type: "ntext", nullable: true, collation: "Vietnamese_CI_AS"), + Source = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Tags = table.Column(type: "ntext", nullable: true, collation: "Vietnamese_CI_AS"), + Template = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Thumbnail = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Title = table.Column(type: "ntext", nullable: true, collation: "Vietnamese_CI_AS"), Type = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), Views = table.Column(type: "int", nullable: true), - ExtraFields = table.Column(type: "text", nullable: true, collation: "Vietnamese_CI_AS"), + ExtraFields = table.Column(type: "ntext", nullable: true, collation: "Vietnamese_CI_AS"), CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), CreatedDateTime = table.Column(type: "datetime", nullable: false), ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), @@ -581,6 +476,32 @@ protected override void Up(MigrationBuilder migrationBuilder) onDelete: ReferentialAction.Cascade); }); + migrationBuilder.CreateTable( + name: "mix_database_data", + columns: table => new + { + Id = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "Vietnamese_CI_AS"), + MixDatabaseId = table.Column(type: "int", nullable: false), + MixDatabaseName = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), + LastModified = table.Column(type: "datetime", nullable: true), + CreatedDateTime = table.Column(type: "datetime", nullable: false), + Priority = table.Column(type: "int", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS") + }, + constraints: table => + { + table.PrimaryKey("PK_mix_database_data", x => new { x.Id, x.Specificulture }); + table.ForeignKey( + name: "FK_mix_database_data_mix_database_MixDatabaseId", + column: x => x.MixDatabaseId, + principalTable: "mix_database", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + migrationBuilder.CreateTable( name: "mix_portal_page_navigation", columns: table => new @@ -588,8 +509,8 @@ protected override void Up(MigrationBuilder migrationBuilder) Id = table.Column(type: "int", nullable: false), PageId = table.Column(type: "int", nullable: false), ParentId = table.Column(type: "int", nullable: false), - Description = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - Image = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Description = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Image = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), CreatedDateTime = table.Column(type: "datetime", nullable: false), ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), @@ -618,15 +539,16 @@ protected override void Up(MigrationBuilder migrationBuilder) name: "mix_portal_page_role", columns: table => new { - Id = table.Column(type: "integer", nullable: false), + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), PageId = table.Column(type: "int", nullable: false), - RoleId = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), + RoleId = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + CreatedBy = table.Column(type: "varchar(50)", unicode: false, maxLength: 50, nullable: true), CreatedDateTime = table.Column(type: "datetime", nullable: false), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), + ModifiedBy = table.Column(type: "varchar(50)", unicode: false, maxLength: 50, nullable: true), LastModified = table.Column(type: "datetime", nullable: true), Priority = table.Column(type: "int", nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS") + Status = table.Column(type: "varchar(50)", unicode: false, maxLength: 50, nullable: false) }, constraints: table => { @@ -644,13 +566,13 @@ protected override void Up(MigrationBuilder migrationBuilder) columns: table => new { Id = table.Column(type: "int", nullable: false), - StringContent = table.Column(type: "text", nullable: false, collation: "Vietnamese_CI_AS"), + StringContent = table.Column(type: "ntext", nullable: false, collation: "Vietnamese_CI_AS"), Extension = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), - FileFolder = table.Column(type: "varchar(250)", nullable: false, collation: "Vietnamese_CI_AS"), - FileName = table.Column(type: "varchar(250)", nullable: false, collation: "Vietnamese_CI_AS"), + FileFolder = table.Column(type: "nvarchar(250)", nullable: false, collation: "Vietnamese_CI_AS"), + FileName = table.Column(type: "nvarchar(250)", nullable: false, collation: "Vietnamese_CI_AS"), FolderType = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), ThemeId = table.Column(type: "int", nullable: true), - ThemeName = table.Column(type: "varchar(250)", nullable: false, collation: "Vietnamese_CI_AS"), + ThemeName = table.Column(type: "nvarchar(250)", nullable: false, collation: "Vietnamese_CI_AS"), CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), CreatedDateTime = table.Column(type: "datetime", nullable: false), ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), @@ -674,17 +596,17 @@ protected override void Up(MigrationBuilder migrationBuilder) columns: table => new { Id = table.Column(type: "int", nullable: false), - Content = table.Column(type: "text", nullable: false, collation: "Vietnamese_CI_AS"), + Content = table.Column(type: "ntext", nullable: false, collation: "Vietnamese_CI_AS"), Extension = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), - FileFolder = table.Column(type: "varchar(250)", nullable: false, collation: "Vietnamese_CI_AS"), - FileName = table.Column(type: "varchar(250)", nullable: false, collation: "Vietnamese_CI_AS"), + FileFolder = table.Column(type: "nvarchar(250)", nullable: false, collation: "Vietnamese_CI_AS"), + FileName = table.Column(type: "nvarchar(250)", nullable: false, collation: "Vietnamese_CI_AS"), FolderType = table.Column(type: "varchar(50)", nullable: false, collation: "Vietnamese_CI_AS"), - MobileContent = table.Column(type: "text", nullable: true, collation: "Vietnamese_CI_AS"), - Scripts = table.Column(type: "text", nullable: true, collation: "Vietnamese_CI_AS"), - SpaContent = table.Column(type: "text", nullable: true, collation: "Vietnamese_CI_AS"), - Styles = table.Column(type: "text", nullable: true, collation: "Vietnamese_CI_AS"), + MobileContent = table.Column(type: "ntext", nullable: true, collation: "Vietnamese_CI_AS"), + Scripts = table.Column(type: "ntext", nullable: true, collation: "Vietnamese_CI_AS"), + SpaContent = table.Column(type: "ntext", nullable: true, collation: "Vietnamese_CI_AS"), + Styles = table.Column(type: "ntext", nullable: true, collation: "Vietnamese_CI_AS"), ThemeId = table.Column(type: "int", nullable: false), - ThemeName = table.Column(type: "varchar(250)", nullable: false, collation: "Vietnamese_CI_AS"), + ThemeName = table.Column(type: "nvarchar(250)", nullable: false, collation: "Vietnamese_CI_AS"), CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), CreatedDateTime = table.Column(type: "datetime", nullable: false), ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), @@ -711,8 +633,8 @@ protected override void Up(MigrationBuilder migrationBuilder) Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "Vietnamese_CI_AS"), ModuleId = table.Column(type: "int", nullable: false), PageId = table.Column(type: "int", nullable: false), - Description = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - Image = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Description = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Image = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), Position = table.Column(type: "int", nullable: false), CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), CreatedDateTime = table.Column(type: "datetime", nullable: false), @@ -747,8 +669,8 @@ protected override void Up(MigrationBuilder migrationBuilder) ModuleId = table.Column(type: "int", nullable: false), PageId = table.Column(type: "int", nullable: true), PostId = table.Column(type: "int", nullable: true), - Fields = table.Column(type: "text", nullable: false, collation: "Vietnamese_CI_AS"), - Value = table.Column(type: "text", nullable: true, collation: "Vietnamese_CI_AS"), + Fields = table.Column(type: "ntext", nullable: false, collation: "Vietnamese_CI_AS"), + Value = table.Column(type: "ntext", nullable: true, collation: "Vietnamese_CI_AS"), CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), CreatedDateTime = table.Column(type: "datetime", nullable: false), ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), @@ -787,8 +709,8 @@ protected override void Up(MigrationBuilder migrationBuilder) Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "Vietnamese_CI_AS"), PostId = table.Column(type: "int", nullable: false), ModuleId = table.Column(type: "int", nullable: false), - Description = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - Image = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Description = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Image = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), CreatedDateTime = table.Column(type: "datetime", nullable: false), ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), @@ -821,8 +743,8 @@ protected override void Up(MigrationBuilder migrationBuilder) Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "Vietnamese_CI_AS"), PostId = table.Column(type: "int", nullable: false), PageId = table.Column(type: "int", nullable: false), - Description = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - Image = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Description = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Image = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), CreatedDateTime = table.Column(type: "datetime", nullable: false), ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), @@ -848,16 +770,15 @@ protected override void Up(MigrationBuilder migrationBuilder) }); migrationBuilder.CreateTable( - name: "mix_post_media", + name: "mix_post_association", columns: table => new { Id = table.Column(type: "int", nullable: false), Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "Vietnamese_CI_AS"), - MediaId = table.Column(type: "int", nullable: false), - PostId = table.Column(type: "int", nullable: false), - Description = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - Image = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - Position = table.Column(type: "int", nullable: false), + SourceId = table.Column(type: "int", nullable: false), + DestinationId = table.Column(type: "int", nullable: false), + Description = table.Column(type: "nvarchar(400)", nullable: true, collation: "Vietnamese_CI_AS"), + Image = table.Column(type: "nvarchar(400)", nullable: true, collation: "Vietnamese_CI_AS"), CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), CreatedDateTime = table.Column(type: "datetime", nullable: false), ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), @@ -867,31 +788,31 @@ protected override void Up(MigrationBuilder migrationBuilder) }, constraints: table => { - table.PrimaryKey("PK_mix_post_media", x => new { x.Id, x.Specificulture }); + table.PrimaryKey("PK_mix_post_association", x => new { x.Id, x.Specificulture }); table.ForeignKey( - name: "FK_mix_post_media_mix_media", - columns: x => new { x.MediaId, x.Specificulture }, - principalTable: "mix_media", + name: "FK_mix_post_association_mix_post", + columns: x => new { x.SourceId, x.Specificulture }, + principalTable: "mix_post", principalColumns: new[] { "Id", "Specificulture" }, onDelete: ReferentialAction.Restrict); table.ForeignKey( - name: "FK_mix_post_media_mix_post", - columns: x => new { x.PostId, x.Specificulture }, + name: "FK_mix_post_association_mix_post1", + columns: x => new { x.DestinationId, x.Specificulture }, principalTable: "mix_post", principalColumns: new[] { "Id", "Specificulture" }, onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( - name: "mix_post_module", + name: "mix_post_media", columns: table => new { Id = table.Column(type: "int", nullable: false), Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "Vietnamese_CI_AS"), - ModuleId = table.Column(type: "int", nullable: false), + MediaId = table.Column(type: "int", nullable: false), PostId = table.Column(type: "int", nullable: false), - Description = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), - Image = table.Column(type: "varchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Description = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Image = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), Position = table.Column(type: "int", nullable: false), CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), CreatedDateTime = table.Column(type: "datetime", nullable: false), @@ -902,15 +823,15 @@ protected override void Up(MigrationBuilder migrationBuilder) }, constraints: table => { - table.PrimaryKey("PK_mix_post_module", x => new { x.Id, x.Specificulture }); + table.PrimaryKey("PK_mix_post_media", x => new { x.Id, x.Specificulture }); table.ForeignKey( - name: "FK_Mix_Post_Module_Mix_Module1", - columns: x => new { x.ModuleId, x.Specificulture }, - principalTable: "mix_module", + name: "FK_mix_post_media_mix_media", + columns: x => new { x.MediaId, x.Specificulture }, + principalTable: "mix_media", principalColumns: new[] { "Id", "Specificulture" }, - onDelete: ReferentialAction.Cascade); + onDelete: ReferentialAction.Restrict); table.ForeignKey( - name: "FK_Mix_Post_Module_Mix_Post", + name: "FK_mix_post_media_mix_post", columns: x => new { x.PostId, x.Specificulture }, principalTable: "mix_post", principalColumns: new[] { "Id", "Specificulture" }, @@ -918,15 +839,16 @@ protected override void Up(MigrationBuilder migrationBuilder) }); migrationBuilder.CreateTable( - name: "mix_related_post", + name: "mix_post_module", columns: table => new { Id = table.Column(type: "int", nullable: false), Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "Vietnamese_CI_AS"), - SourceId = table.Column(type: "int", nullable: false), - DestinationId = table.Column(type: "int", nullable: false), - Description = table.Column(type: "varchar(450)", nullable: true, collation: "Vietnamese_CI_AS"), - Image = table.Column(type: "varchar(450)", nullable: true, collation: "Vietnamese_CI_AS"), + ModuleId = table.Column(type: "int", nullable: false), + PostId = table.Column(type: "int", nullable: false), + Description = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Image = table.Column(type: "nvarchar(250)", nullable: true, collation: "Vietnamese_CI_AS"), + Position = table.Column(type: "int", nullable: false), CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), CreatedDateTime = table.Column(type: "datetime", nullable: false), ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "Vietnamese_CI_AS"), @@ -936,36 +858,21 @@ protected override void Up(MigrationBuilder migrationBuilder) }, constraints: table => { - table.PrimaryKey("PK_mix_related_post", x => new { x.Id, x.Specificulture }); + table.PrimaryKey("PK_mix_post_module", x => new { x.Id, x.Specificulture }); table.ForeignKey( - name: "FK_mix_related_post_mix_post", - columns: x => new { x.SourceId, x.Specificulture }, - principalTable: "mix_post", + name: "FK_Mix_Post_Module_Mix_Module1", + columns: x => new { x.ModuleId, x.Specificulture }, + principalTable: "mix_module", principalColumns: new[] { "Id", "Specificulture" }, - onDelete: ReferentialAction.Restrict); + onDelete: ReferentialAction.Cascade); table.ForeignKey( - name: "FK_mix_related_post_mix_post1", - columns: x => new { x.DestinationId, x.Specificulture }, + name: "FK_Mix_Post_Module_Mix_Post", + columns: x => new { x.PostId, x.Specificulture }, principalTable: "mix_post", principalColumns: new[] { "Id", "Specificulture" }, onDelete: ReferentialAction.Restrict); }); - migrationBuilder.CreateIndex( - name: "IX_mix_attribute_set_data_AttributeSetId", - table: "mix_attribute_set_data", - column: "AttributeSetId"); - - migrationBuilder.CreateIndex( - name: "IX_mix_attribute_set_reference_AttributeSetId", - table: "mix_attribute_set_reference", - column: "AttributeSetId"); - - migrationBuilder.CreateIndex( - name: "IX_mix_attribute_set_value_DataId", - table: "mix_attribute_set_value", - column: "DataId"); - migrationBuilder.CreateIndex( name: "Index_ExpiresAtTime", table: "mix_cache", @@ -982,6 +889,16 @@ protected override void Up(MigrationBuilder migrationBuilder) column: "Specificulture", unique: true); + migrationBuilder.CreateIndex( + name: "IX_mix_database_data_MixDatabaseId", + table: "mix_database_data", + column: "MixDatabaseId"); + + migrationBuilder.CreateIndex( + name: "IX_mix_database_data_value_DataId", + table: "mix_database_data_value", + column: "DataId"); + migrationBuilder.CreateIndex( name: "IX_mix_file_ThemeId", table: "mix_file", @@ -1072,6 +989,16 @@ protected override void Up(MigrationBuilder migrationBuilder) table: "mix_post", column: "Specificulture"); + migrationBuilder.CreateIndex( + name: "IX_mix_post_association_DestinationId_Specificulture", + table: "mix_post_association", + columns: new[] { "DestinationId", "Specificulture" }); + + migrationBuilder.CreateIndex( + name: "IX_mix_post_association_SourceId_Specificulture", + table: "mix_post_association", + columns: new[] { "SourceId", "Specificulture" }); + migrationBuilder.CreateIndex( name: "IX_mix_post_media_MediaId_Specificulture", table: "mix_post_media", @@ -1092,21 +1019,6 @@ protected override void Up(MigrationBuilder migrationBuilder) table: "mix_post_module", columns: new[] { "PostId", "Specificulture" }); - migrationBuilder.CreateIndex( - name: "IX_mix_related_attribute_set_IdNavigationId", - table: "mix_related_attribute_set", - column: "IdNavigationId"); - - migrationBuilder.CreateIndex( - name: "IX_mix_related_post_DestinationId_Specificulture", - table: "mix_related_post", - columns: new[] { "DestinationId", "Specificulture" }); - - migrationBuilder.CreateIndex( - name: "IX_mix_related_post_SourceId_Specificulture", - table: "mix_related_post", - columns: new[] { "SourceId", "Specificulture" }); - migrationBuilder.CreateIndex( name: "IX_mix_template_file_TemplateId", table: "mix_template", @@ -1121,25 +1033,25 @@ protected override void Up(MigrationBuilder migrationBuilder) protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropTable( - name: "mix_attribute_field"); + name: "mix_cache"); migrationBuilder.DropTable( - name: "mix_attribute_set_data"); + name: "mix_cms_user"); migrationBuilder.DropTable( - name: "mix_attribute_set_reference"); + name: "mix_configuration"); migrationBuilder.DropTable( - name: "mix_attribute_set_value"); + name: "mix_database_column"); migrationBuilder.DropTable( - name: "mix_cache"); + name: "mix_database_data"); migrationBuilder.DropTable( - name: "mix_cms_user"); + name: "mix_database_data_association"); migrationBuilder.DropTable( - name: "mix_configuration"); + name: "mix_database_data_value"); migrationBuilder.DropTable( name: "mix_file"); @@ -1166,22 +1078,13 @@ protected override void Down(MigrationBuilder migrationBuilder) name: "mix_portal_page_role"); migrationBuilder.DropTable( - name: "mix_post_media"); - - migrationBuilder.DropTable( - name: "mix_post_module"); - - migrationBuilder.DropTable( - name: "mix_related_attribute_data"); + name: "mix_post_association"); migrationBuilder.DropTable( - name: "mix_related_attribute_set"); - - migrationBuilder.DropTable( - name: "mix_related_data"); + name: "mix_post_media"); migrationBuilder.DropTable( - name: "mix_related_post"); + name: "mix_post_module"); migrationBuilder.DropTable( name: "mix_template"); @@ -1189,6 +1092,9 @@ protected override void Down(MigrationBuilder migrationBuilder) migrationBuilder.DropTable( name: "mix_url_alias"); + migrationBuilder.DropTable( + name: "mix_database"); + migrationBuilder.DropTable( name: "mix_page"); @@ -1201,9 +1107,6 @@ protected override void Down(MigrationBuilder migrationBuilder) migrationBuilder.DropTable( name: "mix_module"); - migrationBuilder.DropTable( - name: "mix_attribute_set"); - migrationBuilder.DropTable( name: "mix_post"); @@ -1214,4 +1117,4 @@ protected override void Down(MigrationBuilder migrationBuilder) name: "mix_culture"); } } -} \ No newline at end of file +} diff --git a/src/Mix.Cms.Lib/Migrations/MsSqlMixCms/20210216144629_RenameDatabase.Designer.cs b/src/Mix.Cms.Lib/Migrations/MsSqlMixCms/20210216144629_RenameDatabase.Designer.cs new file mode 100644 index 000000000..bc97c4927 --- /dev/null +++ b/src/Mix.Cms.Lib/Migrations/MsSqlMixCms/20210216144629_RenameDatabase.Designer.cs @@ -0,0 +1,2484 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Mix.Cms.Lib.Models.Cms; + +namespace Mix.Cms.Lib.Migrations +{ + [DbContext(typeof(MsSqlMixCmsContext))] + [Migration("20210216144629_RenameDatabase")] + partial class RenameDatabase + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseIdentityColumns() + .HasAnnotation("Relational:MaxIdentifierLength", 128) + .HasAnnotation("ProductVersion", "5.0.1"); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCache", b => + { + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("ExpiredDateTime") + .HasColumnType("datetime"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Value") + .IsRequired() + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.HasIndex("ExpiredDateTime") + .HasDatabaseName("Index_ExpiresAtTime"); + + b.ToTable("mix_cache"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCmsUser", b => + { + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Address") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Avatar") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Email") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FirstName") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("LastName") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("MiddleName") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("PhoneNumber") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Username") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.ToTable("mix_cms_user"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixConfiguration", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Category") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("DataType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Description") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Keyword") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Value") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_configuration"); + + b.HasIndex("Specificulture"); + + b.ToTable("mix_configuration"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCulture", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("Alias") + .HasColumnType("varchar(150)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FullName") + .HasColumnType("nvarchar(150)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Icon") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("Lcid") + .HasColumnType("varchar(50)") + .HasColumnName("LCID") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Specificulture") + .IsRequired() + .HasColumnType("varchar(10)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.HasIndex("Specificulture") + .IsUnique() + .HasDatabaseName("IX_Mix_Culture"); + + b.ToTable("mix_culture"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabase", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("EdmAutoSend") + .HasColumnType("bit"); + + b.Property("EdmFrom") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("EdmSubject") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("EdmTemplate") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FormTemplate") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Title") + .IsRequired() + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Type") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.ToTable("mix_database"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseColumn", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("Configurations") + .HasColumnType("nvarchar(max)"); + + b.Property("CreatedBy") + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("varchar(50)"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("DataType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("DefaultValue") + .HasColumnType("ntext"); + + b.Property("IsEncrypt") + .HasColumnType("bit"); + + b.Property("IsMultiple") + .HasColumnType("bit"); + + b.Property("IsRequire") + .HasColumnType("bit"); + + b.Property("IsSelect") + .HasColumnType("bit"); + + b.Property("IsUnique") + .HasColumnType("bit"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("MixDatabaseId") + .HasColumnType("int"); + + b.Property("MixDatabaseName") + .HasMaxLength(250) + .HasColumnType("nvarchar(250)"); + + b.Property("ModifiedBy") + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("varchar(50)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("nvarchar(250)"); + + b.Property("Options") + .HasColumnType("ntext"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("ReferenceId") + .HasColumnType("int"); + + b.Property("Regex") + .HasMaxLength(4000) + .HasColumnType("nvarchar(4000)"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Title") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("mix_database_column"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseData", b => + { + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("MixDatabaseId") + .HasColumnType("int"); + + b.Property("MixDatabaseName") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_database_data"); + + b.HasIndex("MixDatabaseId"); + + b.ToTable("mix_database_data"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseDataAssociation", b => + { + b.Property("Id") + .HasColumnType("nvarchar(450)"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("DataId") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Description") + .HasColumnType("nvarchar(400)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("MixDatabaseId") + .HasColumnType("int"); + + b.Property("MixDatabaseName") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ParentId") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ParentType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_database_data_association"); + + b.ToTable("mix_database_data_association"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseDataValue", b => + { + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("BooleanValue") + .HasColumnType("bit"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("DataId") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("DataType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("DateTimeValue") + .HasColumnType("datetime"); + + b.Property("DoubleValue") + .HasColumnType("float"); + + b.Property("EncryptKey") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("EncryptType") + .HasColumnType("int"); + + b.Property("EncryptValue") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("IntegerValue") + .HasColumnType("int"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("MixDatabaseColumnId") + .HasColumnType("int"); + + b.Property("MixDatabaseColumnName") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("MixDatabaseName") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Regex") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("StringValue") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_database_data_value"); + + b.HasIndex("DataId"); + + b.ToTable("mix_database_data_value"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixFile", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Extension") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileFolder") + .IsRequired() + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileName") + .IsRequired() + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FolderType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("StringContent") + .IsRequired() + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ThemeId") + .HasColumnType("int"); + + b.Property("ThemeName") + .IsRequired() + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.HasIndex("ThemeId"); + + b.ToTable("mix_file"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixLanguage", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Category") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("DataType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("DefaultValue") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Description") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Keyword") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Value") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_language"); + + b.HasIndex("Specificulture"); + + b.ToTable("mix_language"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixMedia", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Extension") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileFolder") + .IsRequired() + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileName") + .IsRequired() + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileProperties") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileSize") + .HasColumnType("bigint"); + + b.Property("FileType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Source") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Tags") + .HasColumnType("nvarchar(400)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("TargetUrl") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Title") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_media"); + + b.ToTable("mix_media"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModule", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("EdmTemplate") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Fields") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FormTemplate") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Name") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("PageSize") + .HasColumnType("int"); + + b.Property("PostType") + .HasColumnType("nvarchar(max)"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Template") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Thumbnail") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Title") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Type") + .HasColumnType("int"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_module"); + + b.HasIndex("Specificulture"); + + b.ToTable("mix_module"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModuleData", b => + { + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Fields") + .IsRequired() + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModuleId") + .HasColumnType("int"); + + b.Property("PageId") + .HasColumnType("int"); + + b.Property("PostId") + .HasColumnType("int"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Value") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_module_data"); + + b.HasIndex("ModuleId", "Specificulture"); + + b.HasIndex("PageId", "Specificulture"); + + b.HasIndex("PostId", "Specificulture"); + + b.HasIndex("ModuleId", "PageId", "Specificulture"); + + b.ToTable("mix_module_data"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModulePost", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModuleId") + .HasColumnType("int"); + + b.Property("PostId") + .HasColumnType("int"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_module_post"); + + b.HasIndex("ModuleId", "Specificulture"); + + b.HasIndex("PostId", "Specificulture"); + + b.ToTable("mix_module_post"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPage", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Content") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("CssClass") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Excerpt") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ExtraFields") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Icon") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("Layout") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("PageSize") + .HasColumnType("int"); + + b.Property("PostType") + .HasColumnType("nvarchar(max)"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("SeoDescription") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("SeoKeywords") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("SeoName") + .HasColumnType("varchar(500)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("SeoTitle") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("StaticUrl") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Tags") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Template") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Title") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Type") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Views") + .HasColumnType("int"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_page"); + + b.HasIndex("Specificulture"); + + b.ToTable("mix_page"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPageModule", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModuleId") + .HasColumnType("int"); + + b.Property("PageId") + .HasColumnType("int"); + + b.Property("Position") + .HasColumnType("int"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_page_module"); + + b.HasIndex("ModuleId", "Specificulture"); + + b.HasIndex("PageId", "Specificulture"); + + b.ToTable("mix_page_module"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPagePost", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("PageId") + .HasColumnType("int"); + + b.Property("PostId") + .HasColumnType("int"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_page_post"); + + b.HasIndex("PageId", "Specificulture"); + + b.HasIndex("PostId", "Specificulture"); + + b.ToTable("mix_page_post"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPage", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("nvarchar(400)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Icon") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("TextDefault") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("TextKeyword") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Url") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.ToTable("mix_portal_page"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPageNavigation", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("PageId") + .HasColumnType("int"); + + b.Property("ParentId") + .HasColumnType("int"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.HasIndex("PageId") + .HasDatabaseName("FK_mix_portal_page_navigation_mix_portal_page"); + + b.HasIndex("ParentId"); + + b.ToTable("mix_portal_page_navigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPageRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .UseIdentityColumn(); + + b.Property("CreatedBy") + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("varchar(50)"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("varchar(50)"); + + b.Property("PageId") + .HasColumnType("int"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("RoleId") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Status") + .IsRequired() + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("varchar(50)"); + + b.HasKey("Id") + .HasName("PK_mix_portal_page_role"); + + b.HasIndex("PageId"); + + b.ToTable("mix_portal_page_role"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPost", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Content") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Excerpt") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ExtraFields") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ExtraProperties") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Icon") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("PublishedDateTime") + .HasColumnType("datetime"); + + b.Property("SeoDescription") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("SeoKeywords") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("SeoName") + .HasColumnType("varchar(500)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("SeoTitle") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Source") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Tags") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Template") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Thumbnail") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Title") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Type") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Views") + .HasColumnType("int"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_post"); + + b.HasIndex("Specificulture"); + + b.ToTable("mix_post"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostAssociation", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("nvarchar(400)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("DestinationId") + .HasColumnType("int"); + + b.Property("Image") + .HasColumnType("nvarchar(400)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("SourceId") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_post_association"); + + b.HasIndex("DestinationId", "Specificulture"); + + b.HasIndex("SourceId", "Specificulture"); + + b.ToTable("mix_post_association"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostMedia", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("MediaId") + .HasColumnType("int"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Position") + .HasColumnType("int"); + + b.Property("PostId") + .HasColumnType("int"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_post_media"); + + b.HasIndex("MediaId", "Specificulture"); + + b.HasIndex("PostId", "Specificulture"); + + b.ToTable("mix_post_media"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostModule", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModuleId") + .HasColumnType("int"); + + b.Property("Position") + .HasColumnType("int"); + + b.Property("PostId") + .HasColumnType("int"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_post_module"); + + b.HasIndex("ModuleId", "Specificulture"); + + b.HasIndex("PostId", "Specificulture"); + + b.ToTable("mix_post_module"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTemplate", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("Content") + .IsRequired() + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Extension") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileFolder") + .IsRequired() + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileName") + .IsRequired() + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FolderType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("MobileContent") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Scripts") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("SpaContent") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Styles") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ThemeId") + .HasColumnType("int"); + + b.Property("ThemeName") + .IsRequired() + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.HasIndex("ThemeId") + .HasDatabaseName("IX_mix_template_file_TemplateId"); + + b.ToTable("mix_template"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTheme", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Image") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("PreviewUrl") + .HasColumnType("nvarchar(400)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Thumbnail") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Title") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.ToTable("mix_theme"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixUrlAlias", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Alias") + .HasMaxLength(250) + .HasColumnType("nvarchar(250)"); + + b.Property("CreatedBy") + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("varchar(50)"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasMaxLength(4000) + .HasColumnType("nvarchar(4000)"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("varchar(50)"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("SourceId") + .HasMaxLength(250) + .HasColumnType("nvarchar(250)"); + + b.Property("Status") + .IsRequired() + .IsUnicode(false) + .HasColumnType("varchar(50)"); + + b.Property("Type") + .HasColumnType("int"); + + b.HasKey("Id", "Specificulture"); + + b.HasIndex("Specificulture"); + + b.ToTable("mix_url_alias"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixConfiguration", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") + .WithMany("MixConfiguration") + .HasForeignKey("Specificulture") + .HasConstraintName("FK_Mix_Configuration_Mix_Culture") + .HasPrincipalKey("Specificulture") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseData", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixDatabase", "MixDatabase") + .WithMany() + .HasForeignKey("MixDatabaseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("MixDatabase"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixFile", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixTheme", "Theme") + .WithMany("MixFile") + .HasForeignKey("ThemeId") + .HasConstraintName("FK_mix_file_mix_template"); + + b.Navigation("Theme"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixLanguage", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") + .WithMany("MixLanguage") + .HasForeignKey("Specificulture") + .HasConstraintName("FK_Mix_Language_Mix_Culture") + .HasPrincipalKey("Specificulture") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModule", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") + .WithMany("MixModule") + .HasForeignKey("Specificulture") + .HasConstraintName("FK_Mix_Module_Mix_Culture") + .HasPrincipalKey("Specificulture") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModuleData", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixModule", "MixModule") + .WithMany("MixModuleData") + .HasForeignKey("ModuleId", "Specificulture") + .HasConstraintName("FK_Mix_Module_Data_Mix_Module") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPage", "MixPage") + .WithMany("MixModuleData") + .HasForeignKey("PageId", "Specificulture") + .HasConstraintName("FK_mix_module_data_mix_page"); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixModuleData") + .HasForeignKey("PostId", "Specificulture") + .HasConstraintName("FK_mix_module_data_mix_post"); + + b.Navigation("MixModule"); + + b.Navigation("MixPage"); + + b.Navigation("MixPost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModulePost", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixModule", "MixModule") + .WithMany("MixModulePost") + .HasForeignKey("ModuleId", "Specificulture") + .HasConstraintName("FK_Mix_Module_Post_Mix_Module") + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixModulePost") + .HasForeignKey("PostId", "Specificulture") + .HasConstraintName("FK_Mix_Module_Post_Mix_Post") + .IsRequired(); + + b.Navigation("MixModule"); + + b.Navigation("MixPost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPage", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") + .WithMany("MixPage") + .HasForeignKey("Specificulture") + .HasConstraintName("FK_Mix_Page_Mix_Culture") + .HasPrincipalKey("Specificulture") + .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPageModule", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixModule", "MixModule") + .WithMany("MixPageModule") + .HasForeignKey("ModuleId", "Specificulture") + .HasConstraintName("FK_Mix_Menu_Module_Mix_Module1") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPage", "MixPage") + .WithMany("MixPageModule") + .HasForeignKey("PageId", "Specificulture") + .HasConstraintName("FK_Mix_Page_Module_Mix_Page") + .IsRequired(); + + b.Navigation("MixModule"); + + b.Navigation("MixPage"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPagePost", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPage", "MixPage") + .WithMany("MixPagePost") + .HasForeignKey("PageId", "Specificulture") + .HasConstraintName("FK_Mix_Page_Post_Mix_Page") + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixPagePost") + .HasForeignKey("PostId", "Specificulture") + .HasConstraintName("FK_Mix_Page_Post_Mix_Post") + .IsRequired(); + + b.Navigation("MixPage"); + + b.Navigation("MixPost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPageNavigation", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPortalPage", "Page") + .WithMany("MixPortalPageNavigationPage") + .HasForeignKey("PageId") + .HasConstraintName("FK_mix_portal_page_navigation_mix_portal_page") + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPortalPage", "Parent") + .WithMany("MixPortalPageNavigationParent") + .HasForeignKey("ParentId") + .HasConstraintName("FK_mix_portal_page_navigation_mix_portal_page1") + .IsRequired(); + + b.Navigation("Page"); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPageRole", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPortalPage", "Page") + .WithMany("MixPortalPageRole") + .HasForeignKey("PageId") + .HasConstraintName("FK_mix_portal_page_role_mix_portal_page") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Page"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPost", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") + .WithMany("MixPost") + .HasForeignKey("Specificulture") + .HasConstraintName("FK_Mix_Post_Mix_Culture") + .HasPrincipalKey("Specificulture") + .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostAssociation", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixRelatedPostMixPost") + .HasForeignKey("DestinationId", "Specificulture") + .HasConstraintName("FK_mix_post_association_mix_post1") + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "S") + .WithMany("MixRelatedPostS") + .HasForeignKey("SourceId", "Specificulture") + .HasConstraintName("FK_mix_post_association_mix_post") + .IsRequired(); + + b.Navigation("MixPost"); + + b.Navigation("S"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostMedia", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixMedia", "MixMedia") + .WithMany("MixPostMedia") + .HasForeignKey("MediaId", "Specificulture") + .HasConstraintName("FK_mix_post_media_mix_media") + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixPostMedia") + .HasForeignKey("PostId", "Specificulture") + .HasConstraintName("FK_mix_post_media_mix_post") + .IsRequired(); + + b.Navigation("MixMedia"); + + b.Navigation("MixPost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostModule", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixModule", "MixModule") + .WithMany("MixPostModule") + .HasForeignKey("ModuleId", "Specificulture") + .HasConstraintName("FK_Mix_Post_Module_Mix_Module1") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixPostModule") + .HasForeignKey("PostId", "Specificulture") + .HasConstraintName("FK_Mix_Post_Module_Mix_Post") + .IsRequired(); + + b.Navigation("MixModule"); + + b.Navigation("MixPost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTemplate", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixTheme", "Theme") + .WithMany("MixTemplate") + .HasForeignKey("ThemeId") + .HasConstraintName("FK_mix_template_mix_theme") + .IsRequired(); + + b.Navigation("Theme"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixUrlAlias", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") + .WithMany("MixUrlAlias") + .HasForeignKey("Specificulture") + .HasConstraintName("FK_Mix_Url_Alias_Mix_Culture") + .HasPrincipalKey("Specificulture") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCulture", b => + { + b.Navigation("MixConfiguration"); + + b.Navigation("MixLanguage"); + + b.Navigation("MixModule"); + + b.Navigation("MixPage"); + + b.Navigation("MixPost"); + + b.Navigation("MixUrlAlias"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixMedia", b => + { + b.Navigation("MixPostMedia"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModule", b => + { + b.Navigation("MixModuleData"); + + b.Navigation("MixModulePost"); + + b.Navigation("MixPageModule"); + + b.Navigation("MixPostModule"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPage", b => + { + b.Navigation("MixModuleData"); + + b.Navigation("MixPageModule"); + + b.Navigation("MixPagePost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPage", b => + { + b.Navigation("MixPortalPageNavigationPage"); + + b.Navigation("MixPortalPageNavigationParent"); + + b.Navigation("MixPortalPageRole"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPost", b => + { + b.Navigation("MixModuleData"); + + b.Navigation("MixModulePost"); + + b.Navigation("MixPagePost"); + + b.Navigation("MixPostMedia"); + + b.Navigation("MixPostModule"); + + b.Navigation("MixRelatedPostMixPost"); + + b.Navigation("MixRelatedPostS"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTheme", b => + { + b.Navigation("MixFile"); + + b.Navigation("MixTemplate"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Mix.Cms.Lib/Migrations/MsSqlMixCms/20210216144629_RenameDatabase.cs b/src/Mix.Cms.Lib/Migrations/MsSqlMixCms/20210216144629_RenameDatabase.cs new file mode 100644 index 000000000..d1861844c --- /dev/null +++ b/src/Mix.Cms.Lib/Migrations/MsSqlMixCms/20210216144629_RenameDatabase.cs @@ -0,0 +1,101 @@ +using Microsoft.EntityFrameworkCore.Migrations; +using Mix.Cms.Lib.Constants; +using Mix.Cms.Lib.Services; +using System; + +namespace Mix.Cms.Lib.Migrations +{ + public partial class RenameDatabase : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + Version.TryParse(MixService.GetConfig(MixConfigurations.CONST_MIXCORE_VERSION), out Version dbVersion); + var prevVersion = new Version("1.0.0"); + if (dbVersion == null || dbVersion.CompareTo(prevVersion) <= 0) + { + string schema = null; + + migrationBuilder.DropForeignKey("FK_mix_attribute_set_data_mix_attribute_set", "mix_attribute_set_data", schema); + migrationBuilder.DropForeignKey("FK_mix_attribute_field_mix_attribute_set", "mix_attribute_field", schema); + migrationBuilder.DropForeignKey("FK_mix_attribute_field_mix_attribute_set1", "mix_attribute_field", schema); + + migrationBuilder.DropIndex("IX_mix_attribute_field_AttributeSetId", "mix_attribute_field", schema); + migrationBuilder.DropIndex("IX_mix_attribute_field_ReferenceId", "mix_attribute_field", schema); + migrationBuilder.DropIndex("IX_mix_attribute_set_data_AttributeSetId", "mix_attribute_set_data", schema); + migrationBuilder.DropIndex("IX_mix_attribute_set_value_DataId", "mix_attribute_set_value", schema); + + migrationBuilder.DropTable("mix_related_attribute_set"); + migrationBuilder.DropTable("mix_attribute_set_reference"); + + migrationBuilder.RenameTable("mix_related_post", schema, "mix_post_association"); + migrationBuilder.RenameTable("mix_attribute_set", schema, "mix_database"); + migrationBuilder.RenameTable("mix_related_attribute_data", schema, "mix_database_data_association"); + migrationBuilder.RenameTable("mix_attribute_set_value", schema, "mix_database_data_value"); + migrationBuilder.RenameTable("mix_attribute_set_data", schema, "mix_database_data"); + migrationBuilder.RenameTable("mix_attribute_field", schema, "mix_database_column"); + + migrationBuilder.RenameColumn("AttributeSetId", "mix_database_column", "MixDatabaseId", schema); + migrationBuilder.RenameColumn("AttributeSetName", "mix_database_column", "MixDatabaseName", schema); + + migrationBuilder.RenameColumn("AttributeFieldId", "mix_database_data_value", "MixDatabaseColumnId", schema); + migrationBuilder.RenameColumn("AttributeFieldName", "mix_database_data_value", "MixDatabaseColumnName", schema); + migrationBuilder.RenameColumn("AttributeSetName", "mix_database_data_value", "MixDatabaseName", schema); + + + migrationBuilder.RenameColumn("AttributeSetId", "mix_database_data_association", "MixDatabaseId", schema); + migrationBuilder.RenameColumn("AttributeSetName", "mix_database_data_association", "MixDatabaseName", schema); + + migrationBuilder.RenameColumn("AttributeSetId", "mix_database_data", "MixDatabaseId", schema); + migrationBuilder.RenameColumn("AttributeSetName", "mix_database_data", "MixDatabaseName", schema); + + + MixService.SetConfig(MixConfigurations.CONST_MIXCORE_VERSION, "1.0.1"); + MixService.SaveSettings(); + } + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + var dbVersion = MixService.GetConfig(MixConfigurations.CONST_MIXCORE_VERSION); + if (string.IsNullOrEmpty(dbVersion) || dbVersion == "1.0.0") + { + string schema = null; + + // mix_related_attribute_set and mix_attribute_set_reference not used, so we don't need to restore them. + + migrationBuilder.RenameTable("mix_post_association", schema, "mix_related_post"); + migrationBuilder.RenameTable("mix_database", schema, "mix_attribute_set"); + migrationBuilder.RenameTable("mix_database_data_association", schema, "mix_related_attribute_data"); + migrationBuilder.RenameTable("mix_database_data_value", schema, "mix_attribute_set_value"); + migrationBuilder.RenameTable("mix_database_data", schema, "mix_attribute_set_data"); + migrationBuilder.RenameTable("mix_database_column", schema, "mix_attribute_field"); + + migrationBuilder.RenameColumn("MixDatabaseId", "mix_database_column", "AttributeSetId", schema); + migrationBuilder.RenameColumn("MixDatabaseName", "mix_database_column", "AttributeSetName", schema); + + migrationBuilder.RenameColumn("MixDatabaseColumnId", "mix_database_data_value", "AttributeFieldId", schema); + migrationBuilder.RenameColumn("MixDatabaseColumnName", "mix_database_data_value", "AttributeFieldName", schema); + migrationBuilder.RenameColumn("MixDatabaseName", "mix_database_data_value", "AttributeSetName", schema); + + + migrationBuilder.RenameColumn("MixDatabaseId", "mix_database_data_association", "AttributeSetId", schema); + migrationBuilder.RenameColumn("MixDatabaseName", "mix_database_data_association", "AttributeSetName", schema); + + migrationBuilder.RenameColumn("MixDatabaseId", "mix_database_data", "AttributeSetId", schema); + migrationBuilder.RenameColumn("MixDatabaseName", "mix_database_data", "AttributeSetName", schema); + + migrationBuilder.CreateIndex("IX_mix_attribute_field_AttributeSetId", "mix_attribute_field", "AttributeSetId", schema); + migrationBuilder.CreateIndex("IX_mix_attribute_field_ReferenceId", "mix_attribute_field", "ReferenceId", schema); + migrationBuilder.CreateIndex("IX_mix_attribute_set_data_AttributeSetId", "mix_attribute_set_data", "AttributeSetId", schema); + migrationBuilder.CreateIndex("IX_mix_attribute_set_value_DataId", "mix_attribute_set_value", "DataId", schema); + + migrationBuilder.AddForeignKey("FK_mix_attribute_set_data_mix_attribute_set", "mix_attribute_set_data", "AttributeSetId", "mix_attribute_set", schema); + migrationBuilder.AddForeignKey("FK_mix_attribute_field_mix_attribute_set", "mix_attribute_field", "Id", "mix_attribute_set", schema); + migrationBuilder.AddForeignKey("FK_mix_attribute_field_mix_attribute_set1", "mix_attribute_field", "Id", "mix_attribute_set", schema); + + MixService.SetConfig(MixConfigurations.CONST_MIXCORE_VERSION, "1.0.0"); + MixService.SaveSettings(); + } + } + } +} diff --git a/src/Mix.Cms.Lib/Migrations/MsSqlMixCms/MsSqlMixCmsContextModelSnapshot.cs b/src/Mix.Cms.Lib/Migrations/MsSqlMixCms/MsSqlMixCmsContextModelSnapshot.cs index 0405b04f9..a333fe00c 100644 --- a/src/Mix.Cms.Lib/Migrations/MsSqlMixCms/MsSqlMixCmsContextModelSnapshot.cs +++ b/src/Mix.Cms.Lib/Migrations/MsSqlMixCms/MsSqlMixCmsContextModelSnapshot.cs @@ -19,145 +19,110 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasAnnotation("Relational:MaxIdentifierLength", 128) .HasAnnotation("ProductVersion", "5.0.1"); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeField", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCache", b => { - b.Property("Id") - .HasColumnType("int"); - - b.Property("AttributeSetId") - .HasColumnType("int"); - - b.Property("AttributeSetName") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Configurations") - .HasColumnType("nvarchar(max)"); + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); b.Property("CreatedBy") - .HasMaxLength(50) - .IsUnicode(false) - .HasColumnType("varchar(50)"); - - b.Property("CreatedDateTime") - .HasColumnType("datetime"); - - b.Property("DataType") - .IsRequired() .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("DefaultValue") - .HasColumnType("ntext"); - - b.Property("IsEncrypt") - .HasColumnType("bit"); - - b.Property("IsMultiple") - .HasColumnType("bit"); - - b.Property("IsRequire") - .HasColumnType("bit"); - - b.Property("IsSelect") - .HasColumnType("bit"); + b.Property("CreatedDateTime") + .HasColumnType("datetime"); - b.Property("IsUnique") - .HasColumnType("bit"); + b.Property("ExpiredDateTime") + .HasColumnType("datetime"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("ModifiedBy") - .HasMaxLength(50) - .IsUnicode(false) - .HasColumnType("varchar(50)"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Options") - .HasColumnType("ntext"); + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Priority") .HasColumnType("int"); - b.Property("ReferenceId") - .HasColumnType("int"); - - b.Property("Regex") - .HasMaxLength(4000) - .HasColumnType("nvarchar(4000)"); - b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Title") - .HasColumnType("nvarchar(max)"); + b.Property("Value") + .IsRequired() + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); b.HasKey("Id"); - b.ToTable("mix_attribute_field"); + b.HasIndex("ExpiredDateTime") + .HasDatabaseName("Index_ExpiresAtTime"); + + b.ToTable("mix_cache"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeSet", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCmsUser", b => { - b.Property("Id") - .HasColumnType("int"); - - b.Property("CreatedBy") + b.Property("Id") .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("CreatedDateTime") - .HasColumnType("datetime"); - - b.Property("Description") - .HasColumnType("varchar(250)") + b.Property("Address") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("EdmAutoSend") - .HasColumnType("bit"); - - b.Property("EdmFrom") - .HasColumnType("varchar(250)") + b.Property("Avatar") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("EdmSubject") - .HasColumnType("varchar(250)") + b.Property("CreatedBy") + .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("EdmTemplate") - .HasColumnType("varchar(250)") + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Email") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("FormTemplate") - .HasColumnType("varchar(250)") + b.Property("FirstName") + .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("LastModified") .HasColumnType("datetime"); + b.Property("LastName") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("MiddleName") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("ModifiedBy") .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Name") - .IsRequired() - .HasColumnType("varchar(250)") + b.Property("PhoneNumber") + .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -170,40 +135,28 @@ protected override void BuildModel(ModelBuilder modelBuilder) .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Title") - .IsRequired() - .HasColumnType("varchar(250)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Type") - .IsRequired() - .HasColumnType("varchar(50)") + b.Property("Username") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.HasKey("Id"); - b.ToTable("mix_attribute_set"); + b.ToTable("mix_cms_user"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeSetData", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixConfiguration", b => { - b.Property("Id") - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Id") + .HasColumnType("int"); b.Property("Specificulture") .HasColumnType("varchar(10)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("AttributeSetId") - .HasColumnType("int"); - - b.Property("AttributeSetName") - .HasColumnType("varchar(250)") + b.Property("Category") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -215,6 +168,23 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("CreatedDateTime") .HasColumnType("datetime"); + b.Property("DataType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Description") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Keyword") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("LastModified") .HasColumnType("datetime"); @@ -232,21 +202,28 @@ protected override void BuildModel(ModelBuilder modelBuilder) .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Value") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + b.HasKey("Id", "Specificulture") - .HasName("PK_mix_attribute_set_data"); + .HasName("PK_mix_configuration"); - b.HasIndex("AttributeSetId"); + b.HasIndex("Specificulture"); - b.ToTable("mix_attribute_set_data"); + b.ToTable("mix_configuration"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeSetReference", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCulture", b => { b.Property("Id") .HasColumnType("int"); - b.Property("AttributeSetId") - .HasColumnType("int"); + b.Property("Alias") + .HasColumnType("varchar(150)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") @@ -257,32 +234,43 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("datetime"); b.Property("Description") - .HasColumnType("varchar(450)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Image") - .HasColumnType("varchar(450)") + b.Property("FullName") + .HasColumnType("nvarchar(150)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Icon") + .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("LastModified") .HasColumnType("datetime"); - b.Property("ModifiedBy") + b.Property("Lcid") .HasColumnType("varchar(50)") + .HasColumnName("LCID") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("ParentId") - .HasColumnType("int"); - - b.Property("ParentType") - .HasColumnType("int"); + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Priority") .HasColumnType("int"); + b.Property("Specificulture") + .IsRequired() + .HasColumnType("varchar(10)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") @@ -291,35 +279,18 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.HasKey("Id"); - b.HasIndex("AttributeSetId"); + b.HasIndex("Specificulture") + .IsUnique() + .HasDatabaseName("IX_Mix_Culture"); - b.ToTable("mix_attribute_set_reference"); + b.ToTable("mix_culture"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeSetValue", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabase", b => { - b.Property("Id") - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("AttributeFieldId") + b.Property("Id") .HasColumnType("int"); - b.Property("AttributeFieldName") - .IsRequired() - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("AttributeSetName") - .HasColumnType("varchar(250)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("BooleanValue") - .HasColumnType("bit"); - b.Property("CreatedBy") .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") @@ -328,39 +299,33 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("CreatedDateTime") .HasColumnType("datetime"); - b.Property("DataId") - .IsRequired() - .HasColumnType("varchar(50)") + b.Property("Description") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("DataType") - .IsRequired() - .HasColumnType("varchar(50)") + b.Property("EdmAutoSend") + .HasColumnType("bit"); + + b.Property("EdmFrom") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("DateTimeValue") - .HasColumnType("datetime"); - - b.Property("DoubleValue") - .HasColumnType("float"); - - b.Property("EncryptKey") - .HasColumnType("varchar(50)") + b.Property("EdmSubject") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("EncryptType") - .HasColumnType("int"); - - b.Property("EncryptValue") - .HasColumnType("text") + b.Property("EdmTemplate") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("IntegerValue") - .HasColumnType("int"); + b.Property("FormTemplate") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); b.Property("LastModified") .HasColumnType("datetime"); @@ -370,101 +335,134 @@ protected override void BuildModel(ModelBuilder modelBuilder) .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Priority") .HasColumnType("int"); - b.Property("Regex") - .HasColumnType("varchar(250)") + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Specificulture") + b.Property("Title") .IsRequired() - .HasColumnType("varchar(10)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Status") + b.Property("Type") .IsRequired() .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("StringValue") - .HasColumnType("text") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.HasKey("Id", "Specificulture"); - - b.HasIndex("DataId"); + b.HasKey("Id"); - b.ToTable("mix_attribute_set_value"); + b.ToTable("mix_database"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCache", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseColumn", b => { - b.Property("Id") - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Id") + .HasColumnType("int"); + + b.Property("Configurations") + .HasColumnType("nvarchar(max)"); b.Property("CreatedBy") + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("varchar(50)"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("DataType") + .IsRequired() .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("CreatedDateTime") - .HasColumnType("datetime"); + b.Property("DefaultValue") + .HasColumnType("ntext"); - b.Property("ExpiredDateTime") - .HasColumnType("datetime"); + b.Property("IsEncrypt") + .HasColumnType("bit"); + + b.Property("IsMultiple") + .HasColumnType("bit"); + + b.Property("IsRequire") + .HasColumnType("bit"); + + b.Property("IsSelect") + .HasColumnType("bit"); + + b.Property("IsUnique") + .HasColumnType("bit"); b.Property("LastModified") .HasColumnType("datetime"); + b.Property("MixDatabaseId") + .HasColumnType("int"); + + b.Property("MixDatabaseName") + .HasMaxLength(250) + .HasColumnType("nvarchar(250)"); + b.Property("ModifiedBy") - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("varchar(50)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("nvarchar(250)"); + + b.Property("Options") + .HasColumnType("ntext"); b.Property("Priority") .HasColumnType("int"); + b.Property("ReferenceId") + .HasColumnType("int"); + + b.Property("Regex") + .HasMaxLength(4000) + .HasColumnType("nvarchar(4000)"); + b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Value") - .IsRequired() - .HasColumnType("text") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Title") + .HasColumnType("nvarchar(max)"); b.HasKey("Id"); - b.HasIndex("ExpiredDateTime") - .HasDatabaseName("Index_ExpiresAtTime"); - - b.ToTable("mix_cache"); + b.ToTable("mix_database_column"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCmsUser", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseData", b => { b.Property("Id") .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Address") - .HasColumnType("varchar(250)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Avatar") - .HasColumnType("varchar(250)") + b.Property("Specificulture") + .HasColumnType("varchar(10)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -476,26 +474,14 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("CreatedDateTime") .HasColumnType("datetime"); - b.Property("Email") - .HasColumnType("varchar(250)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("FirstName") - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("LastModified") .HasColumnType("datetime"); - b.Property("LastName") - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("MixDatabaseId") + .HasColumnType("int"); - b.Property("MiddleName") - .HasColumnType("varchar(50)") + b.Property("MixDatabaseName") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -504,11 +490,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("PhoneNumber") - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Priority") .HasColumnType("int"); @@ -518,31 +499,24 @@ protected override void BuildModel(ModelBuilder modelBuilder) .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Username") - .HasColumnType("varchar(250)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_database_data"); - b.HasKey("Id"); + b.HasIndex("MixDatabaseId"); - b.ToTable("mix_cms_user"); + b.ToTable("mix_database_data"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixConfiguration", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseDataAssociation", b => { - b.Property("Id") - .HasColumnType("int"); + b.Property("Id") + .HasColumnType("nvarchar(450)"); b.Property("Specificulture") .HasColumnType("varchar(10)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Category") - .HasColumnType("varchar(250)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("CreatedBy") .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") @@ -551,27 +525,41 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("CreatedDateTime") .HasColumnType("datetime"); - b.Property("DataType") + b.Property("DataId") .IsRequired() .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Description") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(400)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Keyword") - .IsRequired() + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("MixDatabaseId") + .HasColumnType("int"); + + b.Property("MixDatabaseName") + .HasColumnType("nvarchar(250)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModifiedBy") .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("LastModified") - .HasColumnType("datetime"); + b.Property("ParentId") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("ModifiedBy") + b.Property("ParentType") + .IsRequired() .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -585,29 +573,27 @@ protected override void BuildModel(ModelBuilder modelBuilder) .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Value") - .HasColumnType("text") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - b.HasKey("Id", "Specificulture") - .HasName("PK_mix_configuration"); - - b.HasIndex("Specificulture"); + .HasName("PK_mix_database_data_association"); - b.ToTable("mix_configuration"); + b.ToTable("mix_database_data_association"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCulture", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseDataValue", b => { - b.Property("Id") - .HasColumnType("int"); + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Alias") - .HasColumnType("varchar(150)") + b.Property("Specificulture") + .HasColumnType("varchar(10)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("BooleanValue") + .HasColumnType("bit"); + b.Property("CreatedBy") .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") @@ -616,27 +602,54 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("CreatedDateTime") .HasColumnType("datetime"); - b.Property("Description") - .HasColumnType("varchar(250)") + b.Property("DataId") + .IsRequired() + .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("FullName") - .HasColumnType("varchar(150)") + b.Property("DataType") + .IsRequired() + .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Icon") + b.Property("DateTimeValue") + .HasColumnType("datetime"); + + b.Property("DoubleValue") + .HasColumnType("float"); + + b.Property("EncryptKey") .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("EncryptType") + .HasColumnType("int"); + + b.Property("EncryptValue") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("IntegerValue") + .HasColumnType("int"); + b.Property("LastModified") .HasColumnType("datetime"); - b.Property("Lcid") + b.Property("MixDatabaseColumnId") + .HasColumnType("int"); + + b.Property("MixDatabaseColumnName") + .IsRequired() .HasColumnType("varchar(50)") - .HasColumnName("LCID") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("MixDatabaseName") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -648,9 +661,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Priority") .HasColumnType("int"); - b.Property("Specificulture") - .IsRequired() - .HasColumnType("varchar(10)") + b.Property("Regex") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -660,13 +672,17 @@ protected override void BuildModel(ModelBuilder modelBuilder) .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.HasKey("Id"); + b.Property("StringValue") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); - b.HasIndex("Specificulture") - .IsUnique() - .HasDatabaseName("IX_Mix_Culture"); + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_database_data_value"); - b.ToTable("mix_culture"); + b.HasIndex("DataId"); + + b.ToTable("mix_database_data_value"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixFile", b => @@ -690,13 +706,13 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("FileFolder") .IsRequired() - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("FileName") .IsRequired() - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -725,7 +741,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("StringContent") .IsRequired() - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -734,7 +750,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("ThemeName") .IsRequired() - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -756,7 +772,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Category") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -775,12 +791,12 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasAnnotation("MySql:CharSet", "utf8"); b.Property("DefaultValue") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Description") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -808,7 +824,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Value") - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -839,7 +855,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("datetime"); b.Property("Description") - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -851,18 +867,18 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("FileFolder") .IsRequired() - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("FileName") .IsRequired() - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("FileProperties") - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -887,7 +903,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("int"); b.Property("Source") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -898,17 +914,17 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Tags") - .HasColumnType("varchar(400)") + .HasColumnType("nvarchar(400)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("TargetUrl") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Title") - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -937,27 +953,27 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("datetime"); b.Property("Description") - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("EdmTemplate") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Fields") - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("FormTemplate") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Image") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -991,17 +1007,17 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Template") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Thumbnail") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Title") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1038,7 +1054,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Fields") .IsRequired() - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1069,7 +1085,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Value") - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1106,12 +1122,12 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("datetime"); b.Property("Description") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Image") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1159,7 +1175,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Content") - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1172,17 +1188,17 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("datetime"); b.Property("CssClass") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Excerpt") - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("ExtraFields") - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1192,7 +1208,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Image") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1222,12 +1238,12 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("int"); b.Property("SeoDescription") - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("SeoKeywords") - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1237,12 +1253,12 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasAnnotation("MySql:CharSet", "utf8"); b.Property("SeoTitle") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("StaticUrl") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1253,21 +1269,22 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Tags") - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Template") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Title") - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Type") + .IsRequired() .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1302,12 +1319,12 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("datetime"); b.Property("Description") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Image") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1366,12 +1383,12 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("datetime"); b.Property("Description") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Image") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1422,7 +1439,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("datetime"); b.Property("Description") - .HasColumnType("varchar(450)") + .HasColumnType("nvarchar(400)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1452,17 +1469,17 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasAnnotation("MySql:CharSet", "utf8"); b.Property("TextDefault") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("TextKeyword") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Url") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1485,12 +1502,12 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("datetime"); b.Property("Description") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Image") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1528,242 +1545,53 @@ protected override void BuildModel(ModelBuilder modelBuilder) }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPageRole", b => - { - b.Property("RoleId") - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("PageId") - .HasColumnType("int"); - - b.Property("CreatedBy") - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("CreatedDateTime") - .HasColumnType("datetime"); - - b.Property("LastModified") - .HasColumnType("datetime"); - - b.Property("ModifiedBy") - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Priority") - .HasColumnType("int"); - - b.Property("Status") - .IsRequired() - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.HasKey("RoleId", "PageId") - .HasName("PK_mix_portal_page_role"); - - b.HasIndex("PageId"); - - b.ToTable("mix_portal_page_role"); - }); - - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPost", b => - { - b.Property("Id") - .HasColumnType("int"); - - b.Property("Specificulture") - .HasColumnType("varchar(10)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Content") - .HasColumnType("text") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("CreatedBy") - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("CreatedDateTime") - .HasColumnType("datetime"); - - b.Property("Excerpt") - .HasColumnType("text") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("ExtraFields") - .HasColumnType("text") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("ExtraProperties") - .HasColumnType("text") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Icon") - .HasColumnType("text") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Image") - .HasColumnType("varchar(250)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("LastModified") - .HasColumnType("datetime"); - - b.Property("ModifiedBy") - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Priority") - .HasColumnType("int"); - - b.Property("PublishedDateTime") - .HasColumnType("datetime"); - - b.Property("SeoDescription") - .HasColumnType("text") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("SeoKeywords") - .HasColumnType("text") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("SeoName") - .HasColumnType("varchar(500)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("SeoTitle") - .HasColumnType("text") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Source") - .HasColumnType("varchar(250)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Status") - .IsRequired() - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Tags") - .HasColumnType("text") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Template") - .HasColumnType("varchar(250)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Thumbnail") - .HasColumnType("varchar(250)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Title") - .HasColumnType("text") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Type") - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Views") - .HasColumnType("int"); - - b.HasKey("Id", "Specificulture") - .HasName("PK_mix_post"); - - b.HasIndex("Specificulture"); - - b.ToTable("mix_post"); - }); - - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostMedia", b => { b.Property("Id") - .HasColumnType("int"); - - b.Property("Specificulture") - .HasColumnType("varchar(10)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); + .ValueGeneratedOnAdd() + .HasColumnType("int") + .UseIdentityColumn(); b.Property("CreatedBy") - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("varchar(50)"); b.Property("CreatedDateTime") .HasColumnType("datetime"); - b.Property("Description") - .HasColumnType("varchar(250)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Image") - .HasColumnType("varchar(250)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("LastModified") - .HasColumnType("datetime"); - - b.Property("MediaId") - .HasColumnType("int"); + .HasColumnType("datetime"); b.Property("ModifiedBy") - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Position") - .HasColumnType("int"); + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("varchar(50)"); - b.Property("PostId") + b.Property("PageId") .HasColumnType("int"); b.Property("Priority") .HasColumnType("int"); + b.Property("RoleId") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + b.Property("Status") .IsRequired() - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.HasKey("Id", "Specificulture") - .HasName("PK_mix_post_media"); + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("varchar(50)"); - b.HasIndex("MediaId", "Specificulture"); + b.HasKey("Id") + .HasName("PK_mix_portal_page_role"); - b.HasIndex("PostId", "Specificulture"); + b.HasIndex("PageId"); - b.ToTable("mix_post_media"); + b.ToTable("mix_portal_page_role"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostModule", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPost", b => { b.Property("Id") .HasColumnType("int"); @@ -1773,6 +1601,11 @@ protected override void BuildModel(ModelBuilder modelBuilder) .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Content") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("CreatedBy") .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") @@ -1781,13 +1614,28 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("CreatedDateTime") .HasColumnType("datetime"); - b.Property("Description") - .HasColumnType("varchar(250)") + b.Property("Excerpt") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ExtraFields") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ExtraProperties") + .HasColumnType("ntext") + .UseCollation("Vietnamese_CI_AS") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Icon") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Image") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1799,109 +1647,80 @@ protected override void BuildModel(ModelBuilder modelBuilder) .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("ModuleId") - .HasColumnType("int"); - - b.Property("Position") - .HasColumnType("int"); - - b.Property("PostId") - .HasColumnType("int"); - b.Property("Priority") .HasColumnType("int"); - b.Property("Status") - .IsRequired() - .HasColumnType("varchar(50)") + b.Property("PublishedDateTime") + .HasColumnType("datetime"); + + b.Property("SeoDescription") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.HasKey("Id", "Specificulture") - .HasName("PK_mix_post_module"); - - b.HasIndex("ModuleId", "Specificulture"); - - b.HasIndex("PostId", "Specificulture"); - - b.ToTable("mix_post_module"); - }); - - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixRelatedAttributeData", b => - { - b.Property("Id") - .HasColumnType("varchar(50)") + b.Property("SeoKeywords") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Specificulture") - .HasColumnType("varchar(10)") + b.Property("SeoName") + .HasColumnType("varchar(500)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("AttributeSetId") - .HasColumnType("int"); - - b.Property("AttributeSetName") - .HasColumnType("varchar(250)") + b.Property("SeoTitle") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("CreatedBy") - .HasColumnType("varchar(50)") + b.Property("Source") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("CreatedDateTime") - .HasColumnType("datetime"); - - b.Property("DataId") + b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Description") - .HasColumnType("varchar(450)") + b.Property("Tags") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("LastModified") - .HasColumnType("datetime"); - - b.Property("ModifiedBy") - .HasColumnType("varchar(50)") + b.Property("Template") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("ParentId") - .IsRequired() - .HasColumnType("varchar(50)") + b.Property("Thumbnail") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("ParentType") - .IsRequired() - .HasColumnType("varchar(50)") + b.Property("Title") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Priority") - .HasColumnType("int"); - - b.Property("Status") - .IsRequired() + b.Property("Type") .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Views") + .HasColumnType("int"); + b.HasKey("Id", "Specificulture") - .HasName("PK_mix_related_attribute_data"); + .HasName("PK_mix_post"); + + b.HasIndex("Specificulture"); - b.ToTable("mix_related_attribute_data"); + b.ToTable("mix_post"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixRelatedAttributeSet", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostAssociation", b => { b.Property("Id") .HasColumnType("int"); @@ -1911,9 +1730,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("AttributeSetId") - .HasColumnType("int"); - b.Property("CreatedBy") .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") @@ -1923,15 +1739,15 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("datetime"); b.Property("Description") - .HasColumnType("varchar(450)") + .HasColumnType("nvarchar(400)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("IdNavigationId") + b.Property("DestinationId") .HasColumnType("int"); b.Property("Image") - .HasColumnType("varchar(450)") + .HasColumnType("nvarchar(400)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1943,16 +1759,10 @@ protected override void BuildModel(ModelBuilder modelBuilder) .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("ParentId") + b.Property("Priority") .HasColumnType("int"); - b.Property("ParentType") - .IsRequired() - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Priority") + b.Property("SourceId") .HasColumnType("int"); b.Property("Status") @@ -1962,14 +1772,16 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasAnnotation("MySql:CharSet", "utf8"); b.HasKey("Id", "Specificulture") - .HasName("PK_mix_related_attribute_set"); + .HasName("PK_mix_post_association"); + + b.HasIndex("DestinationId", "Specificulture"); - b.HasIndex("IdNavigationId"); + b.HasIndex("SourceId", "Specificulture"); - b.ToTable("mix_related_attribute_set"); + b.ToTable("mix_post_association"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixRelatedData", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostMedia", b => { b.Property("Id") .HasColumnType("int"); @@ -1979,14 +1791,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("AttributeSetId") - .HasColumnType("int"); - - b.Property("AttributeSetName") - .HasColumnType("varchar(250)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("CreatedBy") .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") @@ -1995,36 +1799,32 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("CreatedDateTime") .HasColumnType("datetime"); - b.Property("DataId") - .IsRequired() - .HasColumnType("varchar(50)") + b.Property("Description") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Description") - .HasColumnType("varchar(450)") + b.Property("Image") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("LastModified") .HasColumnType("datetime"); + b.Property("MediaId") + .HasColumnType("int"); + b.Property("ModifiedBy") .HasColumnType("varchar(50)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("ParentId") - .IsRequired() - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Position") + .HasColumnType("int"); - b.Property("ParentType") - .IsRequired() - .HasColumnType("varchar(50)") - .UseCollation("Vietnamese_CI_AS") - .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("PostId") + .HasColumnType("int"); b.Property("Priority") .HasColumnType("int"); @@ -2035,16 +1835,17 @@ protected override void BuildModel(ModelBuilder modelBuilder) .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Type") - .HasColumnType("int"); - b.HasKey("Id", "Specificulture") - .HasName("PK_mix_related_data"); + .HasName("PK_mix_post_media"); + + b.HasIndex("MediaId", "Specificulture"); + + b.HasIndex("PostId", "Specificulture"); - b.ToTable("mix_related_data"); + b.ToTable("mix_post_media"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixRelatedPost", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostModule", b => { b.Property("Id") .HasColumnType("int"); @@ -2063,15 +1864,12 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("datetime"); b.Property("Description") - .HasColumnType("varchar(450)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("DestinationId") - .HasColumnType("int"); - b.Property("Image") - .HasColumnType("varchar(450)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -2083,10 +1881,16 @@ protected override void BuildModel(ModelBuilder modelBuilder) .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Priority") + b.Property("ModuleId") .HasColumnType("int"); - b.Property("SourceId") + b.Property("Position") + .HasColumnType("int"); + + b.Property("PostId") + .HasColumnType("int"); + + b.Property("Priority") .HasColumnType("int"); b.Property("Status") @@ -2096,13 +1900,13 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasAnnotation("MySql:CharSet", "utf8"); b.HasKey("Id", "Specificulture") - .HasName("PK_mix_related_post"); + .HasName("PK_mix_post_module"); - b.HasIndex("DestinationId", "Specificulture"); + b.HasIndex("ModuleId", "Specificulture"); - b.HasIndex("SourceId", "Specificulture"); + b.HasIndex("PostId", "Specificulture"); - b.ToTable("mix_related_post"); + b.ToTable("mix_post_module"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTemplate", b => @@ -2112,7 +1916,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Content") .IsRequired() - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -2132,13 +1936,13 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("FileFolder") .IsRequired() - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("FileName") .IsRequired() - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -2152,7 +1956,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("datetime"); b.Property("MobileContent") - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -2165,12 +1969,12 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("int"); b.Property("Scripts") - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("SpaContent") - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -2181,7 +1985,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Styles") - .HasColumnType("text") + .HasColumnType("ntext") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -2190,7 +1994,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("ThemeName") .IsRequired() - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -2216,7 +2020,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("datetime"); b.Property("Image") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -2230,12 +2034,12 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Name") .IsRequired() - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("PreviewUrl") - .HasColumnType("varchar(450)") + .HasColumnType("nvarchar(400)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -2249,12 +2053,12 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Thumbnail") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Title") - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .UseCollation("Vietnamese_CI_AS") .HasAnnotation("MySql:CharSet", "utf8"); @@ -2319,28 +2123,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.ToTable("mix_url_alias"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeSetData", b => - { - b.HasOne("Mix.Cms.Lib.Models.Cms.MixAttributeSet", "AttributeSet") - .WithMany() - .HasForeignKey("AttributeSetId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("AttributeSet"); - }); - - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeSetReference", b => - { - b.HasOne("Mix.Cms.Lib.Models.Cms.MixAttributeSet", "AttributeSet") - .WithMany() - .HasForeignKey("AttributeSetId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("AttributeSet"); - }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixConfiguration", b => { b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") @@ -2354,6 +2136,17 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Navigation("SpecificultureNavigation"); }); + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseData", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixDatabase", "MixDatabase") + .WithMany() + .HasForeignKey("MixDatabaseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("MixDatabase"); + }); + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixFile", b => { b.HasOne("Mix.Cms.Lib.Models.Cms.MixTheme", "Theme") @@ -2529,6 +2322,25 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Navigation("SpecificultureNavigation"); }); + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostAssociation", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixRelatedPostMixPost") + .HasForeignKey("DestinationId", "Specificulture") + .HasConstraintName("FK_mix_post_association_mix_post1") + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "S") + .WithMany("MixRelatedPostS") + .HasForeignKey("SourceId", "Specificulture") + .HasConstraintName("FK_mix_post_association_mix_post") + .IsRequired(); + + b.Navigation("MixPost"); + + b.Navigation("S"); + }); + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostMedia", b => { b.HasOne("Mix.Cms.Lib.Models.Cms.MixMedia", "MixMedia") @@ -2568,34 +2380,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Navigation("MixPost"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixRelatedAttributeSet", b => - { - b.HasOne("Mix.Cms.Lib.Models.Cms.MixAttributeSet", "IdNavigation") - .WithMany() - .HasForeignKey("IdNavigationId"); - - b.Navigation("IdNavigation"); - }); - - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixRelatedPost", b => - { - b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") - .WithMany("MixRelatedPostMixPost") - .HasForeignKey("DestinationId", "Specificulture") - .HasConstraintName("FK_mix_related_post_mix_post1") - .IsRequired(); - - b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "S") - .WithMany("MixRelatedPostS") - .HasForeignKey("SourceId", "Specificulture") - .HasConstraintName("FK_mix_related_post_mix_post") - .IsRequired(); - - b.Navigation("MixPost"); - - b.Navigation("S"); - }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTemplate", b => { b.HasOne("Mix.Cms.Lib.Models.Cms.MixTheme", "Theme") diff --git a/src/Mix.Cms.Lib/Migrations/MySqlMixCms/20201227053439_Init.Designer.cs b/src/Mix.Cms.Lib/Migrations/MySqlMixCms/20201227053439_Init.Designer.cs index 364863624..2004ce7a4 100644 --- a/src/Mix.Cms.Lib/Migrations/MySqlMixCms/20201227053439_Init.Designer.cs +++ b/src/Mix.Cms.Lib/Migrations/MySqlMixCms/20201227053439_Init.Designer.cs @@ -16,165 +16,115 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder - .HasAnnotation("ProductVersion", "3.1.3") - .HasAnnotation("Relational:MaxIdentifierLength", 64); + .HasAnnotation("Relational:MaxIdentifierLength", 64) + .HasAnnotation("ProductVersion", "5.0.1"); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeField", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCache", b => { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - b.Property("AttributeSetId") - .HasColumnType("int"); - - b.Property("AttributeSetName") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Configurations") - .HasColumnType("longtext"); + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); - b.Property("DataType") - .IsRequired() - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("DefaultValue") - .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("IsEncrypt") - .HasColumnType("bit(1)"); - - b.Property("IsMultiple") - .HasColumnType("bit(1)"); - - b.Property("IsRequire") - .HasColumnType("bit(1)"); - - b.Property("IsSelect") - .HasColumnType("bit(1)"); - - b.Property("IsUnique") - .HasColumnType("bit(1)"); + b.Property("ExpiredDateTime") + .HasColumnType("datetime"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Name") - .IsRequired() - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Options") - .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Priority") .HasColumnType("int"); - b.Property("ReferenceId") - .HasColumnType("int"); - - b.Property("Regex") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("Title") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("Value") + .IsRequired() + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id"); - b.HasIndex("AttributeSetId"); - - b.HasIndex("ReferenceId"); + b.HasIndex("ExpiredDateTime") + .HasDatabaseName("Index_ExpiresAtTime"); - b.ToTable("mix_attribute_field"); + b.ToTable("mix_cache"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeSet", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCmsUser", b => { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - b.Property("CreatedBy") + b.Property("Id") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("CreatedDateTime") - .HasColumnType("datetime"); - - b.Property("Description") + b.Property("Address") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("EdmAutoSend") - .HasColumnType("bit(1)"); - - b.Property("EdmFrom") + b.Property("Avatar") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("EdmSubject") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("EdmTemplate") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("CreatedDateTime") + .HasColumnType("datetime"); - b.Property("FormTemplate") + b.Property("Email") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("FirstName") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); + b.Property("LastName") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("MiddleName") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("Name") - .IsRequired() - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("PhoneNumber") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Priority") .HasColumnType("int"); @@ -182,61 +132,66 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("Title") - .IsRequired() + b.Property("Username") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Type") - .IsRequired() - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id"); - b.ToTable("mix_attribute_set"); + b.ToTable("mix_cms_user"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeSetData", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixConfiguration", b => { - b.Property("Id") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("Id") + .HasColumnType("int"); b.Property("Specificulture") .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("AttributeSetId") - .HasColumnType("int"); - - b.Property("AttributeSetName") + b.Property("Category") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); + b.Property("DataType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Keyword") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + b.Property("LastModified") .HasColumnType("datetime"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Priority") .HasColumnType("int"); @@ -244,286 +199,312 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Value") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id", "Specificulture") .HasName("PRIMARY"); - b.HasIndex("AttributeSetId"); + b.HasIndex("Specificulture"); - b.ToTable("mix_attribute_set_data"); + b.ToTable("mix_configuration"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeSetReference", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCulture", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); - b.Property("AttributeSetId") - .HasColumnType("int"); + b.Property("Alias") + .HasColumnType("varchar(150)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); b.Property("Description") - .HasColumnType("varchar(450)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("Image") - .HasColumnType("varchar(450)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("FullName") + .HasColumnType("varchar(150)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Icon") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); - b.Property("ModifiedBy") + b.Property("Lcid") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("ParentId") - .HasColumnType("int"); + .HasColumnName("LCID") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("ParentType") - .HasColumnType("int"); + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Priority") .HasColumnType("int"); + b.Property("Specificulture") + .IsRequired() + .HasColumnType("varchar(10)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id"); - b.HasIndex("AttributeSetId"); + b.HasIndex("Specificulture") + .IsUnique() + .HasDatabaseName("IX_Mix_Culture"); - b.ToTable("mix_attribute_set_reference"); + b.ToTable("mix_culture"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeSetValue", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabase", b => { - b.Property("Id") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("AttributeFieldId") + b.Property("Id") + .ValueGeneratedOnAdd() .HasColumnType("int"); - b.Property("AttributeFieldName") - .IsRequired() - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("AttributeSetName") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("BooleanValue") - .HasColumnType("bit(1)"); - b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); - b.Property("DataId") - .IsRequired() - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("DataType") - .IsRequired() - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("DateTimeValue") - .HasColumnType("datetime"); + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("DoubleValue") - .HasColumnType("double"); + b.Property("EdmAutoSend") + .HasColumnType("bit(1)"); - b.Property("EncryptKey") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("EdmFrom") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("EncryptType") - .HasColumnType("int"); + b.Property("EdmSubject") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("EncryptValue") - .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("EdmTemplate") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("IntegerValue") - .HasColumnType("int"); + b.Property("FormTemplate") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Name") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Priority") .HasColumnType("int"); - b.Property("Regex") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("Specificulture") + b.Property("Title") .IsRequired() - .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("Status") + b.Property("Type") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("StringValue") - .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id"); - b.HasIndex("DataId"); - - b.ToTable("mix_attribute_set_value"); + b.ToTable("mix_database"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCache", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseColumn", b => { - b.Property("Id") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Configurations") + .HasColumnType("longtext CHARACTER SET utf8mb4"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); - b.Property("ExpiredDateTime") - .HasColumnType("datetime"); + b.Property("DataType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("DefaultValue") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("IsEncrypt") + .HasColumnType("bit(1)"); + + b.Property("IsMultiple") + .HasColumnType("bit(1)"); + + b.Property("IsRequire") + .HasColumnType("bit(1)"); + + b.Property("IsSelect") + .HasColumnType("bit(1)"); + + b.Property("IsUnique") + .HasColumnType("bit(1)"); b.Property("LastModified") .HasColumnType("datetime"); + b.Property("MixDatabaseId") + .HasColumnType("int"); + + b.Property("MixDatabaseName") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Name") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Options") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Priority") .HasColumnType("int"); + b.Property("ReferenceId") + .HasColumnType("int"); + + b.Property("Regex") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("Value") - .IsRequired() - .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("Title") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id"); - b.HasIndex("ExpiredDateTime") - .HasName("Index_ExpiresAtTime"); + b.HasIndex("MixDatabaseId"); - b.ToTable("mix_cache"); + b.HasIndex("ReferenceId"); + + b.ToTable("mix_database_column"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCmsUser", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseData", b => { b.Property("Id") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Address") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("Avatar") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); - b.Property("Email") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("FirstName") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - b.Property("LastModified") .HasColumnType("datetime"); - b.Property("LastName") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("MixDatabaseId") + .HasColumnType("int"); - b.Property("MiddleName") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("MixDatabaseName") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("PhoneNumber") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Priority") .HasColumnType("int"); @@ -531,66 +512,75 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("Username") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_database_data_value"); - b.HasKey("Id"); + b.HasIndex("MixDatabaseId"); - b.ToTable("mix_cms_user"); + b.ToTable("mix_database_data"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixConfiguration", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseDataAssociation", b => { - b.Property("Id") - .HasColumnType("int"); + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Specificulture") .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Category") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); - b.Property("DataType") + b.Property("DataId") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Description") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Keyword") - .IsRequired() - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .HasColumnType("varchar(450)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); + b.Property("MixDatabaseId") + .HasColumnType("int"); + + b.Property("MixDatabaseName") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("ParentId") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("ParentType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Priority") .HasColumnType("int"); @@ -598,92 +588,119 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Value") - .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id", "Specificulture") .HasName("PRIMARY"); - b.HasIndex("Specificulture"); - - b.ToTable("mix_configuration"); + b.ToTable("mix_database_data_association"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCulture", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseDataValue", b => { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("Alias") - .HasColumnType("varchar(150)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("BooleanValue") + .HasColumnType("bit(1)"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("DataId") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("CreatedBy") + b.Property("DataType") + .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("CreatedDateTime") + b.Property("DateTimeValue") .HasColumnType("datetime"); - b.Property("Description") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("FullName") - .HasColumnType("varchar(150)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("DoubleValue") + .HasColumnType("double"); - b.Property("Icon") + b.Property("EncryptKey") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("EncryptType") + .HasColumnType("int"); + + b.Property("EncryptValue") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("IntegerValue") + .HasColumnType("int"); b.Property("LastModified") .HasColumnType("datetime"); - b.Property("Lcid") - .HasColumnName("LCID") + b.Property("MixDatabaseColumnId") + .HasColumnType("int"); + + b.Property("MixDatabaseColumnName") + .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("MixDatabaseName") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Priority") .HasColumnType("int"); - b.Property("Specificulture") - .IsRequired() - .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("Regex") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.HasKey("Id"); + b.Property("StringValue") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.HasIndex("Specificulture") - .IsUnique() - .HasName("IX_Mix_Culture"); + b.HasKey("Id", "Specificulture") + .HasName("PRIMARY"); - b.ToTable("mix_culture"); + b.HasIndex("DataId"); + + b.ToTable("mix_database_data_value"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixFile", b => @@ -694,8 +711,8 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); @@ -703,34 +720,34 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("Extension") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("FileFolder") .IsRequired() .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("FileName") .IsRequired() .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("FolderType") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Priority") .HasColumnType("int"); @@ -738,14 +755,14 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("StringContent") .IsRequired() .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("ThemeId") .HasColumnType("int"); @@ -753,8 +770,8 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("ThemeName") .IsRequired() .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id"); @@ -770,18 +787,18 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("Specificulture") .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Category") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); @@ -789,32 +806,32 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("DataType") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("DefaultValue") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Description") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Keyword") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Priority") .HasColumnType("int"); @@ -822,13 +839,13 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Value") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id", "Specificulture") .HasName("PRIMARY"); @@ -845,44 +862,44 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("Specificulture") .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); b.Property("Description") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Extension") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("FileFolder") .IsRequired() .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("FileName") .IsRequired() .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("FileProperties") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("FileSize") .HasColumnType("bigint"); @@ -890,45 +907,45 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("FileType") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Priority") .HasColumnType("int"); b.Property("Source") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Tags") .HasColumnType("varchar(400)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("TargetUrl") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Title") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id", "Specificulture") .HasName("PRIMARY"); @@ -943,61 +960,61 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("Specificulture") .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); b.Property("Description") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("EdmTemplate") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Fields") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("FormTemplate") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Image") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Name") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("PageSize") .HasColumnType("int"); b.Property("PostType") - .HasColumnType("longtext"); + .HasColumnType("longtext CHARACTER SET utf8mb4"); b.Property("Priority") .HasColumnType("int"); @@ -1005,23 +1022,23 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Template") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Thumbnail") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Title") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Type") .HasColumnType("int"); @@ -1038,18 +1055,18 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) { b.Property("Id") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Specificulture") .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); @@ -1057,16 +1074,16 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("Fields") .IsRequired() .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("ModuleId") .HasColumnType("int"); @@ -1083,13 +1100,13 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Value") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id", "Specificulture") .HasName("PRIMARY"); @@ -1112,34 +1129,34 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("Specificulture") .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); b.Property("Description") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Image") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("ModuleId") .HasColumnType("int"); @@ -1153,8 +1170,8 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id", "Specificulture") .HasName("PRIMARY"); @@ -1173,122 +1190,123 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("Specificulture") .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Content") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); b.Property("CssClass") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Excerpt") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("ExtraFields") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Icon") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Image") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("Layout") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Level") .HasColumnType("int"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("PageSize") .HasColumnType("int"); b.Property("PostType") - .HasColumnType("longtext"); + .HasColumnType("longtext CHARACTER SET utf8mb4"); b.Property("Priority") .HasColumnType("int"); b.Property("SeoDescription") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("SeoKeywords") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("SeoName") .HasColumnType("varchar(500)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("SeoTitle") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("StaticUrl") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Tags") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Template") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Title") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Type") + .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Views") .HasColumnType("int"); @@ -1308,34 +1326,34 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("Specificulture") .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); b.Property("Description") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Image") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("ModuleId") .HasColumnType("int"); @@ -1352,8 +1370,8 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id", "Specificulture") .HasName("PRIMARY"); @@ -1372,34 +1390,34 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("Specificulture") .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); b.Property("Description") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Image") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("PageId") .HasColumnType("int"); @@ -1413,8 +1431,8 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id", "Specificulture") .HasName("PRIMARY"); @@ -1434,21 +1452,21 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); b.Property("Description") .HasColumnType("varchar(450)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Icon") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); @@ -1458,8 +1476,8 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Priority") .HasColumnType("int"); @@ -1467,23 +1485,23 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("TextDefault") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("TextKeyword") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Url") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id"); @@ -1498,29 +1516,29 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); b.Property("Description") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Image") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("PageId") .HasColumnType("int"); @@ -1534,13 +1552,13 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id"); b.HasIndex("PageId") - .HasName("FK_mix_portal_page_navigation_mix_portal_page"); + .HasDatabaseName("FK_mix_portal_page_navigation_mix_portal_page"); b.HasIndex("ParentId"); @@ -1549,18 +1567,14 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPageRole", b => { - b.Property("RoleId") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("PageId") + b.Property("Id") + .ValueGeneratedOnAdd() .HasColumnType("int"); b.Property("CreatedBy") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("varchar(50) CHARACTER SET utf8mb4"); b.Property("CreatedDateTime") .HasColumnType("datetime"); @@ -1569,21 +1583,28 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasColumnType("datetime"); b.Property("ModifiedBy") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("varchar(50) CHARACTER SET utf8mb4"); + + b.Property("PageId") + .HasColumnType("int"); b.Property("Priority") .HasColumnType("int"); + b.Property("RoleId") + .HasMaxLength(50) + .HasColumnType("varchar(50) CHARACTER SET utf8mb4"); + b.Property("Status") .IsRequired() - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("varchar(50) CHARACTER SET utf8mb4"); - b.HasKey("RoleId", "PageId") - .HasName("PRIMARY"); + b.HasKey("Id") + .HasName("PK_mix_portal_page_role"); b.HasIndex("PageId"); @@ -1597,449 +1618,233 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("Specificulture") .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Content") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("CreatedBy") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("CreatedDateTime") - .HasColumnType("datetime"); - - b.Property("Excerpt") - .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("ExtraFields") - .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("ExtraProperties") - .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Icon") - .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Image") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("LastModified") - .HasColumnType("datetime"); - - b.Property("ModifiedBy") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Priority") - .HasColumnType("int"); - - b.Property("PublishedDateTime") - .HasColumnType("datetime"); - - b.Property("SeoDescription") - .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("SeoKeywords") - .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("SeoName") - .HasColumnType("varchar(500)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("SeoTitle") - .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Source") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Status") - .IsRequired() - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Tags") - .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Template") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Thumbnail") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Title") - .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Type") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Views") - .HasColumnType("int"); - - b.HasKey("Id", "Specificulture") - .HasName("PRIMARY"); - - b.HasIndex("Specificulture"); - - b.ToTable("mix_post"); - }); - - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostMedia", b => - { - b.Property("Id") - .HasColumnType("int"); - - b.Property("Specificulture") - .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("CreatedBy") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("CreatedDateTime") - .HasColumnType("datetime"); - - b.Property("Description") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Image") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("LastModified") - .HasColumnType("datetime"); - - b.Property("MediaId") - .HasColumnType("int"); - - b.Property("ModifiedBy") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Position") - .HasColumnType("int"); - - b.Property("PostId") - .HasColumnType("int"); - - b.Property("Priority") - .HasColumnType("int"); - - b.Property("Status") - .IsRequired() - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.HasKey("Id", "Specificulture") - .HasName("PRIMARY"); - - b.HasIndex("MediaId", "Specificulture"); - - b.HasIndex("PostId", "Specificulture"); - - b.ToTable("mix_post_media"); - }); - - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostModule", b => - { - b.Property("Id") - .HasColumnType("int"); - - b.Property("Specificulture") - .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("CreatedBy") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("CreatedDateTime") - .HasColumnType("datetime"); - - b.Property("Description") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Image") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("LastModified") - .HasColumnType("datetime"); - - b.Property("ModifiedBy") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("ModuleId") - .HasColumnType("int"); - - b.Property("Position") - .HasColumnType("int"); - - b.Property("PostId") - .HasColumnType("int"); - - b.Property("Priority") - .HasColumnType("int"); - - b.Property("Status") - .IsRequired() - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.HasKey("Id", "Specificulture") - .HasName("PRIMARY"); - - b.HasIndex("ModuleId", "Specificulture"); - - b.HasIndex("PostId", "Specificulture"); - - b.ToTable("mix_post_module"); - }); - - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixRelatedAttributeData", b => - { - b.Property("Id") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Specificulture") - .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("AttributeSetId") - .HasColumnType("int"); - - b.Property("AttributeSetName") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); - b.Property("DataId") - .IsRequired() - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("Excerpt") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("Description") - .HasColumnType("varchar(450)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("ExtraFields") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Icon") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("ParentId") - .IsRequired() - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("ParentType") - .IsRequired() - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Priority") .HasColumnType("int"); + b.Property("PublishedDateTime") + .HasColumnType("datetime"); + + b.Property("SeoDescription") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("SeoKeywords") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("SeoName") + .HasColumnType("varchar(500)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("SeoTitle") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Source") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Tags") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Template") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Thumbnail") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Title") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Type") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Views") + .HasColumnType("int"); b.HasKey("Id", "Specificulture") .HasName("PRIMARY"); - b.ToTable("mix_related_attribute_data"); + b.HasIndex("Specificulture"); + + b.ToTable("mix_post"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixRelatedAttributeSet", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostAssociation", b => { b.Property("Id") .HasColumnType("int"); b.Property("Specificulture") .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("AttributeSetId") - .HasColumnType("int"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); b.Property("Description") .HasColumnType("varchar(450)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("DestinationId") + .HasColumnType("int"); b.Property("Image") .HasColumnType("varchar(450)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("ParentId") + b.Property("Priority") .HasColumnType("int"); - b.Property("ParentType") - .IsRequired() - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Priority") + b.Property("SourceId") .HasColumnType("int"); b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id", "Specificulture") .HasName("PRIMARY"); - b.ToTable("mix_related_attribute_set"); + b.HasIndex("DestinationId", "Specificulture"); + + b.HasIndex("SourceId", "Specificulture"); + + b.ToTable("mix_post_association"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixRelatedData", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostMedia", b => { b.Property("Id") .HasColumnType("int"); b.Property("Specificulture") .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("AttributeSetId") - .HasColumnType("int"); - - b.Property("AttributeSetName") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); - b.Property("DataId") - .IsRequired() - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - b.Property("Description") - .HasColumnType("varchar(450)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); + b.Property("MediaId") + .HasColumnType("int"); + b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("ParentId") - .IsRequired() - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("Position") + .HasColumnType("int"); - b.Property("ParentType") - .IsRequired() - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("PostId") + .HasColumnType("int"); b.Property("Priority") .HasColumnType("int"); @@ -2047,77 +1852,81 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Type") - .HasColumnType("int"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id", "Specificulture") .HasName("PRIMARY"); - b.ToTable("mix_related_data"); + b.HasIndex("MediaId", "Specificulture"); + + b.HasIndex("PostId", "Specificulture"); + + b.ToTable("mix_post_media"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixRelatedPost", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostModule", b => { b.Property("Id") .HasColumnType("int"); b.Property("Specificulture") .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); b.Property("Description") - .HasColumnType("varchar(450)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("DestinationId") - .HasColumnType("int"); + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Image") - .HasColumnType("varchar(450)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("Priority") + b.Property("ModuleId") .HasColumnType("int"); - b.Property("SourceId") + b.Property("Position") + .HasColumnType("int"); + + b.Property("PostId") + .HasColumnType("int"); + + b.Property("Priority") .HasColumnType("int"); b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id", "Specificulture") .HasName("PRIMARY"); - b.HasIndex("DestinationId", "Specificulture"); + b.HasIndex("ModuleId", "Specificulture"); - b.HasIndex("SourceId", "Specificulture"); + b.HasIndex("PostId", "Specificulture"); - b.ToTable("mix_related_post"); + b.ToTable("mix_post_module"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTemplate", b => @@ -2129,13 +1938,13 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("Content") .IsRequired() .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); @@ -2143,63 +1952,63 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("Extension") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("FileFolder") .IsRequired() .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("FileName") .IsRequired() .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("FolderType") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("MobileContent") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Priority") .HasColumnType("int"); b.Property("Scripts") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("SpaContent") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Styles") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("ThemeId") .HasColumnType("int"); @@ -2207,13 +2016,13 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("ThemeName") .IsRequired() .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id"); b.HasIndex("ThemeId") - .HasName("IX_mix_template_file_TemplateId"); + .HasDatabaseName("IX_mix_template_file_TemplateId"); b.ToTable("mix_template"); }); @@ -2226,35 +2035,35 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); b.Property("Image") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Name") .IsRequired() .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("PreviewUrl") .HasColumnType("varchar(450)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Priority") .HasColumnType("int"); @@ -2262,18 +2071,18 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Thumbnail") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Title") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id"); @@ -2287,48 +2096,48 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("Specificulture") .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Alias") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); b.Property("Description") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Priority") .HasColumnType("int"); b.Property("SourceId") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Type") .HasColumnType("int"); @@ -2341,38 +2150,6 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.ToTable("mix_url_alias"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeField", b => - { - b.HasOne("Mix.Cms.Lib.Models.Cms.MixAttributeSet", "AttributeSet") - .WithMany("MixAttributeFieldAttributeSet") - .HasForeignKey("AttributeSetId") - .HasConstraintName("FK_mix_attribute_field_mix_attribute_set") - .IsRequired(); - - b.HasOne("Mix.Cms.Lib.Models.Cms.MixAttributeSet", "Reference") - .WithMany("MixAttributeFieldReference") - .HasForeignKey("ReferenceId") - .HasConstraintName("FK_mix_attribute_field_mix_attribute_set1"); - }); - - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeSetData", b => - { - b.HasOne("Mix.Cms.Lib.Models.Cms.MixAttributeSet", "AttributeSet") - .WithMany("MixAttributeSetData") - .HasForeignKey("AttributeSetId") - .HasConstraintName("FK_mix_attribute_set_data_mix_attribute_set") - .IsRequired(); - }); - - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeSetReference", b => - { - b.HasOne("Mix.Cms.Lib.Models.Cms.MixAttributeSet", "AttributeSet") - .WithMany("MixAttributeSetReference") - .HasForeignKey("AttributeSetId") - .HasConstraintName("FK_mix_attribute_set_reference_mix_attribute_set") - .IsRequired(); - }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixConfiguration", b => { b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") @@ -2382,6 +2159,19 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasPrincipalKey("Specificulture") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseData", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixDatabase", "MixDatabase") + .WithMany() + .HasForeignKey("MixDatabaseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("MixDatabase"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixFile", b => @@ -2390,6 +2180,8 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .WithMany("MixFile") .HasForeignKey("ThemeId") .HasConstraintName("FK_mix_file_mix_template"); + + b.Navigation("Theme"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixLanguage", b => @@ -2401,6 +2193,8 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasPrincipalKey("Specificulture") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); + + b.Navigation("SpecificultureNavigation"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModule", b => @@ -2412,6 +2206,8 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasPrincipalKey("Specificulture") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); + + b.Navigation("SpecificultureNavigation"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModuleData", b => @@ -2432,6 +2228,12 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .WithMany("MixModuleData") .HasForeignKey("PostId", "Specificulture") .HasConstraintName("FK_mix_module_data_mix_post"); + + b.Navigation("MixModule"); + + b.Navigation("MixPage"); + + b.Navigation("MixPost"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModulePost", b => @@ -2447,6 +2249,10 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasForeignKey("PostId", "Specificulture") .HasConstraintName("FK_Mix_Module_Post_Mix_Post") .IsRequired(); + + b.Navigation("MixModule"); + + b.Navigation("MixPost"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPage", b => @@ -2457,6 +2263,8 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasConstraintName("FK_Mix_Page_Mix_Culture") .HasPrincipalKey("Specificulture") .IsRequired(); + + b.Navigation("SpecificultureNavigation"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPageModule", b => @@ -2473,6 +2281,10 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasForeignKey("PageId", "Specificulture") .HasConstraintName("FK_Mix_Page_Module_Mix_Page") .IsRequired(); + + b.Navigation("MixModule"); + + b.Navigation("MixPage"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPagePost", b => @@ -2488,6 +2300,10 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasForeignKey("PostId", "Specificulture") .HasConstraintName("FK_Mix_Page_Post_Mix_Post") .IsRequired(); + + b.Navigation("MixPage"); + + b.Navigation("MixPost"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPageNavigation", b => @@ -2503,6 +2319,10 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasForeignKey("ParentId") .HasConstraintName("FK_mix_portal_page_navigation_mix_portal_page1") .IsRequired(); + + b.Navigation("Page"); + + b.Navigation("Parent"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPageRole", b => @@ -2513,6 +2333,8 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasConstraintName("FK_mix_portal_page_role_mix_portal_page") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); + + b.Navigation("Page"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPost", b => @@ -2523,6 +2345,27 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasConstraintName("FK_Mix_Post_Mix_Culture") .HasPrincipalKey("Specificulture") .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostAssociation", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixRelatedPostMixPost") + .HasForeignKey("DestinationId", "Specificulture") + .HasConstraintName("FK_mix_post_association_mix_post1") + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "S") + .WithMany("MixRelatedPostS") + .HasForeignKey("SourceId", "Specificulture") + .HasConstraintName("FK_mix_post_association_mix_post") + .IsRequired(); + + b.Navigation("MixPost"); + + b.Navigation("S"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostMedia", b => @@ -2538,6 +2381,10 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasForeignKey("PostId", "Specificulture") .HasConstraintName("FK_mix_post_media_mix_post") .IsRequired(); + + b.Navigation("MixMedia"); + + b.Navigation("MixPost"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostModule", b => @@ -2554,30 +2401,10 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasForeignKey("PostId", "Specificulture") .HasConstraintName("FK_Mix_Post_Module_Mix_Post") .IsRequired(); - }); - - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixRelatedAttributeSet", b => - { - b.HasOne("Mix.Cms.Lib.Models.Cms.MixAttributeSet", "IdNavigation") - .WithMany("MixRelatedAttributeSet") - .HasForeignKey("Id") - .HasConstraintName("FK_mix_related_attribute_set_mix_attribute_set") - .IsRequired(); - }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixRelatedPost", b => - { - b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") - .WithMany("MixRelatedPostMixPost") - .HasForeignKey("DestinationId", "Specificulture") - .HasConstraintName("FK_mix_related_post_mix_post1") - .IsRequired(); + b.Navigation("MixModule"); - b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "S") - .WithMany("MixRelatedPostS") - .HasForeignKey("SourceId", "Specificulture") - .HasConstraintName("FK_mix_related_post_mix_post") - .IsRequired(); + b.Navigation("MixPost"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTemplate", b => @@ -2587,6 +2414,8 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasForeignKey("ThemeId") .HasConstraintName("FK_mix_template_mix_theme") .IsRequired(); + + b.Navigation("Theme"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixUrlAlias", b => @@ -2598,6 +2427,81 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasPrincipalKey("Specificulture") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCulture", b => + { + b.Navigation("MixConfiguration"); + + b.Navigation("MixLanguage"); + + b.Navigation("MixModule"); + + b.Navigation("MixPage"); + + b.Navigation("MixPost"); + + b.Navigation("MixUrlAlias"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixMedia", b => + { + b.Navigation("MixPostMedia"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModule", b => + { + b.Navigation("MixModuleData"); + + b.Navigation("MixModulePost"); + + b.Navigation("MixPageModule"); + + b.Navigation("MixPostModule"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPage", b => + { + b.Navigation("MixModuleData"); + + b.Navigation("MixPageModule"); + + b.Navigation("MixPagePost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPage", b => + { + b.Navigation("MixPortalPageNavigationPage"); + + b.Navigation("MixPortalPageNavigationParent"); + + b.Navigation("MixPortalPageRole"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPost", b => + { + b.Navigation("MixModuleData"); + + b.Navigation("MixModulePost"); + + b.Navigation("MixPagePost"); + + b.Navigation("MixPostMedia"); + + b.Navigation("MixPostModule"); + + b.Navigation("MixRelatedPostMixPost"); + + b.Navigation("MixRelatedPostS"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTheme", b => + { + b.Navigation("MixFile"); + + b.Navigation("MixTemplate"); }); #pragma warning restore 612, 618 } diff --git a/src/Mix.Cms.Lib/Migrations/MySqlMixCms/20201227053439_Init.cs b/src/Mix.Cms.Lib/Migrations/MySqlMixCms/20201227053439_Init.cs index 915489ff4..d798c49eb 100644 --- a/src/Mix.Cms.Lib/Migrations/MySqlMixCms/20201227053439_Init.cs +++ b/src/Mix.Cms.Lib/Migrations/MySqlMixCms/20201227053439_Init.cs @@ -1,6 +1,8 @@ -using Microsoft.EntityFrameworkCore.Metadata; +using System; +using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; -using System; +using Mix.Cms.Lib.Constants; +using Mix.Cms.Lib.Services; namespace Mix.Cms.Lib.Migrations.MySqlMixCms { @@ -8,136 +10,26 @@ public partial class Init : Migration { protected override void Up(MigrationBuilder migrationBuilder) { - migrationBuilder.CreateTable( - name: "mix_attribute_set", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Type = table.Column(type: "varchar(50)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Title = table.Column(type: "varchar(250)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Name = table.Column(type: "varchar(250)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Description = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - FormTemplate = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - EdmTemplate = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - EdmSubject = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - EdmFrom = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - EdmAutoSend = table.Column(type: "bit(1)", nullable: true), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - LastModified = table.Column(type: "datetime", nullable: true), - CreatedDateTime = table.Column(type: "datetime", nullable: false), - Priority = table.Column(nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci") - }, - constraints: table => - { - table.PrimaryKey("PK_mix_attribute_set", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "mix_attribute_set_value", - columns: table => new - { - Id = table.Column(type: "varchar(50)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Specificulture = table.Column(type: "varchar(10)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - AttributeFieldId = table.Column(nullable: false), - AttributeFieldName = table.Column(type: "varchar(50)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - AttributeSetName = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Regex = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - DataType = table.Column(type: "varchar(50)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - BooleanValue = table.Column(type: "bit(1)", nullable: true), - DataId = table.Column(type: "varchar(50)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - DateTimeValue = table.Column(type: "datetime", nullable: true), - DoubleValue = table.Column(nullable: true), - IntegerValue = table.Column(nullable: true), - StringValue = table.Column(type: "text", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - EncryptValue = table.Column(type: "text", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - EncryptKey = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - EncryptType = table.Column(nullable: false), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - LastModified = table.Column(type: "datetime", nullable: true), - CreatedDateTime = table.Column(type: "datetime", nullable: false), - Priority = table.Column(nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci") - }, - constraints: table => - { - table.PrimaryKey("PK_mix_attribute_set_value", x => new { x.Id, x.Specificulture }); - }); - + MixService.SetConfig(MixConfigurations.CONST_MIXCORE_VERSION, "1.0.1"); + MixService.SaveSettings(); migrationBuilder.CreateTable( name: "mix_cache", columns: table => new { - Id = table.Column(type: "varchar(50)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Value = table.Column(type: "text", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + Id = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Value = table.Column(type: "text", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), ExpiredDateTime = table.Column(type: "datetime", nullable: true), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), LastModified = table.Column(type: "datetime", nullable: true), CreatedDateTime = table.Column(type: "datetime", nullable: false), - Priority = table.Column(nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false) + Priority = table.Column(type: "int", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci") }, constraints: table => { @@ -148,45 +40,33 @@ protected override void Up(MigrationBuilder migrationBuilder) name: "mix_cms_user", columns: table => new { - Id = table.Column(type: "varchar(50)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Address = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Avatar = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - FirstName = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - LastName = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - MiddleName = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - PhoneNumber = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Username = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Email = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + Id = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Address = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Avatar = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + FirstName = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + LastName = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + MiddleName = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + PhoneNumber = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Username = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Email = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), LastModified = table.Column(type: "datetime", nullable: true), CreatedDateTime = table.Column(type: "datetime", nullable: false), - Priority = table.Column(nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false) + Priority = table.Column(type: "int", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci") }, constraints: table => { @@ -197,38 +77,29 @@ protected override void Up(MigrationBuilder migrationBuilder) name: "mix_culture", columns: table => new { - Id = table.Column(nullable: false) + Id = table.Column(type: "int", nullable: false) .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Alias = table.Column(type: "varchar(150)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Description = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - FullName = table.Column(type: "varchar(150)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Icon = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - LCID = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Specificulture = table.Column(type: "varchar(10)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + Alias = table.Column(type: "varchar(150)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Description = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + FullName = table.Column(type: "varchar(150)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Icon = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + LCID = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), CreatedDateTime = table.Column(type: "datetime", nullable: false), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), LastModified = table.Column(type: "datetime", nullable: true), - Priority = table.Column(nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false) + Priority = table.Column(type: "int", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci") }, constraints: table => { @@ -237,140 +108,114 @@ protected override void Up(MigrationBuilder migrationBuilder) }); migrationBuilder.CreateTable( - name: "mix_media", + name: "mix_database", columns: table => new { - Id = table.Column(nullable: false), - Specificulture = table.Column(type: "varchar(10)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Description = table.Column(type: "text", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Extension = table.Column(type: "varchar(50)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - FileFolder = table.Column(type: "varchar(250)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - FileName = table.Column(type: "varchar(250)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - FileProperties = table.Column(type: "text", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - FileSize = table.Column(nullable: false), - FileType = table.Column(type: "varchar(50)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Title = table.Column(type: "text", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Tags = table.Column(type: "varchar(400)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Source = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - TargetUrl = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - CreatedDateTime = table.Column(type: "datetime", nullable: false), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + Id = table.Column(type: "int", nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Type = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Title = table.Column(type: "varchar(250)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Name = table.Column(type: "varchar(250)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Description = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + FormTemplate = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + EdmTemplate = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + EdmSubject = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + EdmFrom = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + EdmAutoSend = table.Column(type: "bit(1)", nullable: true), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), LastModified = table.Column(type: "datetime", nullable: true), - Priority = table.Column(nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false) + CreatedDateTime = table.Column(type: "datetime", nullable: false), + Priority = table.Column(type: "int", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci") }, constraints: table => { - table.PrimaryKey("PRIMARY", x => new { x.Id, x.Specificulture }); + table.PrimaryKey("PK_mix_database", x => x.Id); }); migrationBuilder.CreateTable( - name: "mix_portal_page", + name: "mix_database_column", columns: table => new { - Id = table.Column(nullable: false) + Id = table.Column(type: "int", nullable: false) .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Icon = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - TextKeyword = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Url = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Description = table.Column(type: "varchar(450)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - TextDefault = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Level = table.Column(nullable: false), - CreatedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - CreatedDateTime = table.Column(type: "datetime", nullable: false), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + MixDatabaseId = table.Column(type: "int", nullable: false), + MixDatabaseName = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Configurations = table.Column(type: "longtext CHARACTER SET utf8mb4", nullable: true), + Regex = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Title = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + DataType = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + DefaultValue = table.Column(type: "text", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Name = table.Column(type: "varchar(250)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Options = table.Column(type: "text", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + IsRequire = table.Column(type: "bit(1)", nullable: false), + IsEncrypt = table.Column(type: "bit(1)", nullable: false), + IsMultiple = table.Column(type: "bit(1)", nullable: false), + IsSelect = table.Column(type: "bit(1)", nullable: false), + IsUnique = table.Column(type: "bit(1)", nullable: false), + ReferenceId = table.Column(type: "int", nullable: true), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), LastModified = table.Column(type: "datetime", nullable: true), - Priority = table.Column(nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false) + CreatedDateTime = table.Column(type: "datetime", nullable: false), + Priority = table.Column(type: "int", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci") }, constraints: table => { - table.PrimaryKey("PK_mix_portal_page", x => x.Id); + table.PrimaryKey("PK_mix_database_column", x => x.Id); }); migrationBuilder.CreateTable( - name: "mix_related_attribute_data", + name: "mix_database_data_association", columns: table => new { - Id = table.Column(type: "varchar(50)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Specificulture = table.Column(type: "varchar(10)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - DataId = table.Column(type: "varchar(50)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - ParentId = table.Column(type: "varchar(50)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - ParentType = table.Column(type: "varchar(50)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - AttributeSetId = table.Column(nullable: false), - AttributeSetName = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Description = table.Column(type: "varchar(450)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + Id = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + DataId = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + ParentId = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + ParentType = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + MixDatabaseId = table.Column(type: "int", nullable: false), + MixDatabaseName = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Description = table.Column(type: "varchar(450)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), CreatedDateTime = table.Column(type: "datetime", nullable: false), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), LastModified = table.Column(type: "datetime", nullable: true), - Priority = table.Column(nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false) + Priority = table.Column(type: "int", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci") }, constraints: table => { @@ -378,42 +223,44 @@ protected override void Up(MigrationBuilder migrationBuilder) }); migrationBuilder.CreateTable( - name: "mix_related_data", + name: "mix_database_data_value", columns: table => new { - Id = table.Column(nullable: false), - Specificulture = table.Column(type: "varchar(10)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - DataId = table.Column(type: "varchar(50)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Type = table.Column(nullable: false), - ParentId = table.Column(type: "varchar(50)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - ParentType = table.Column(type: "varchar(50)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - AttributeSetId = table.Column(nullable: false), - AttributeSetName = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Description = table.Column(type: "varchar(450)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - CreatedDateTime = table.Column(type: "datetime", nullable: false), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + Id = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + MixDatabaseColumnId = table.Column(type: "int", nullable: false), + MixDatabaseColumnName = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + MixDatabaseName = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Regex = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + DataType = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + BooleanValue = table.Column(type: "bit(1)", nullable: true), + DataId = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + DateTimeValue = table.Column(type: "datetime", nullable: true), + DoubleValue = table.Column(type: "double", nullable: true), + IntegerValue = table.Column(type: "int", nullable: true), + StringValue = table.Column(type: "text", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + EncryptValue = table.Column(type: "text", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + EncryptKey = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + EncryptType = table.Column(type: "int", nullable: false), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), LastModified = table.Column(type: "datetime", nullable: true), - Priority = table.Column(nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false) + CreatedDateTime = table.Column(type: "datetime", nullable: false), + Priority = table.Column(type: "int", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci") }, constraints: table => { @@ -421,264 +268,137 @@ protected override void Up(MigrationBuilder migrationBuilder) }); migrationBuilder.CreateTable( - name: "mix_theme", + name: "mix_media", columns: table => new { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Thumbnail = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Image = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Title = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Name = table.Column(type: "varchar(250)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - PreviewUrl = table.Column(type: "varchar(450)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + Id = table.Column(type: "int", nullable: false), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Description = table.Column(type: "text", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Extension = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + FileFolder = table.Column(type: "varchar(250)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + FileName = table.Column(type: "varchar(250)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + FileProperties = table.Column(type: "text", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + FileSize = table.Column(type: "bigint", nullable: false), + FileType = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Title = table.Column(type: "text", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Tags = table.Column(type: "varchar(400)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Source = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + TargetUrl = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), CreatedDateTime = table.Column(type: "datetime", nullable: false), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), LastModified = table.Column(type: "datetime", nullable: true), - Priority = table.Column(nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false) + Priority = table.Column(type: "int", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci") }, constraints: table => { - table.PrimaryKey("PK_mix_theme", x => x.Id); + table.PrimaryKey("PRIMARY", x => new { x.Id, x.Specificulture }); }); migrationBuilder.CreateTable( - name: "mix_attribute_field", + name: "mix_portal_page", columns: table => new { - Id = table.Column(nullable: false) + Id = table.Column(type: "int", nullable: false) .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - AttributeSetId = table.Column(nullable: false), - AttributeSetName = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Configurations = table.Column(nullable: true), - Regex = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Title = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - DataType = table.Column(type: "varchar(50)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - DefaultValue = table.Column(type: "text", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Name = table.Column(type: "varchar(250)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Options = table.Column(type: "text", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - IsRequire = table.Column(type: "bit(1)", nullable: false), - IsEncrypt = table.Column(type: "bit(1)", nullable: false), - IsMultiple = table.Column(type: "bit(1)", nullable: false), - IsSelect = table.Column(type: "bit(1)", nullable: false), - IsUnique = table.Column(type: "bit(1)", nullable: false), - ReferenceId = table.Column(nullable: true), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - LastModified = table.Column(type: "datetime", nullable: true), + Icon = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + TextKeyword = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Url = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Description = table.Column(type: "varchar(450)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + TextDefault = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Level = table.Column(type: "int", nullable: false), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), CreatedDateTime = table.Column(type: "datetime", nullable: false), - Priority = table.Column(nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci") - }, - constraints: table => - { - table.PrimaryKey("PK_mix_attribute_field", x => x.Id); - table.ForeignKey( - name: "FK_mix_attribute_field_mix_attribute_set", - column: x => x.AttributeSetId, - principalTable: "mix_attribute_set", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - table.ForeignKey( - name: "FK_mix_attribute_field_mix_attribute_set1", - column: x => x.ReferenceId, - principalTable: "mix_attribute_set", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "mix_attribute_set_data", - columns: table => new - { - Id = table.Column(type: "varchar(50)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Specificulture = table.Column(type: "varchar(10)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - AttributeSetId = table.Column(nullable: false), - AttributeSetName = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), LastModified = table.Column(type: "datetime", nullable: true), - CreatedDateTime = table.Column(type: "datetime", nullable: false), - Priority = table.Column(nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false) + Priority = table.Column(type: "int", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci") }, constraints: table => { - table.PrimaryKey("PRIMARY", x => new { x.Id, x.Specificulture }); - table.ForeignKey( - name: "FK_mix_attribute_set_data_mix_attribute_set", - column: x => x.AttributeSetId, - principalTable: "mix_attribute_set", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); + table.PrimaryKey("PK_mix_portal_page", x => x.Id); }); migrationBuilder.CreateTable( - name: "mix_attribute_set_reference", + name: "mix_theme", columns: table => new { - Id = table.Column(nullable: false) + Id = table.Column(type: "int", nullable: false) .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - ParentId = table.Column(nullable: false), - ParentType = table.Column(nullable: false), - Description = table.Column(type: "varchar(450)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Image = table.Column(type: "varchar(450)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - AttributeSetId = table.Column(nullable: false), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - LastModified = table.Column(type: "datetime", nullable: true), + Thumbnail = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Image = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Title = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Name = table.Column(type: "varchar(250)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + PreviewUrl = table.Column(type: "varchar(450)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), CreatedDateTime = table.Column(type: "datetime", nullable: false), - Priority = table.Column(nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci") - }, - constraints: table => - { - table.PrimaryKey("PK_mix_attribute_set_reference", x => x.Id); - table.ForeignKey( - name: "FK_mix_attribute_set_reference_mix_attribute_set", - column: x => x.AttributeSetId, - principalTable: "mix_attribute_set", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "mix_related_attribute_set", - columns: table => new - { - Id = table.Column(nullable: false), - Specificulture = table.Column(type: "varchar(10)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - AttributeSetId = table.Column(nullable: false), - ParentId = table.Column(nullable: false), - ParentType = table.Column(type: "varchar(50)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Description = table.Column(type: "varchar(450)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Image = table.Column(type: "varchar(450)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - CreatedDateTime = table.Column(type: "datetime", nullable: false), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), LastModified = table.Column(type: "datetime", nullable: true), - Priority = table.Column(nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false) + Priority = table.Column(type: "int", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci") }, constraints: table => { - table.PrimaryKey("PRIMARY", x => new { x.Id, x.Specificulture }); - table.ForeignKey( - name: "FK_mix_related_attribute_set_mix_attribute_set", - column: x => x.Id, - principalTable: "mix_attribute_set", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); + table.PrimaryKey("PK_mix_theme", x => x.Id); }); migrationBuilder.CreateTable( name: "mix_configuration", columns: table => new { - Id = table.Column(nullable: false), - Specificulture = table.Column(type: "varchar(10)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Keyword = table.Column(type: "varchar(50)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Category = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - DataType = table.Column(type: "varchar(50)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Description = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Value = table.Column(type: "text", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + Id = table.Column(type: "int", nullable: false), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Keyword = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Category = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + DataType = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Description = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Value = table.Column(type: "text", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), CreatedDateTime = table.Column(type: "datetime", nullable: false), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), LastModified = table.Column(type: "datetime", nullable: true), - Priority = table.Column(nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false) + Priority = table.Column(type: "int", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci") }, constraints: table => { @@ -695,40 +415,30 @@ protected override void Up(MigrationBuilder migrationBuilder) name: "mix_language", columns: table => new { - Id = table.Column(nullable: false), - Specificulture = table.Column(type: "varchar(10)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Keyword = table.Column(type: "varchar(50)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Category = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - DataType = table.Column(type: "varchar(50)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Description = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Value = table.Column(type: "text", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - DefaultValue = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + Id = table.Column(type: "int", nullable: false), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Keyword = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Category = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + DataType = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Description = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Value = table.Column(type: "text", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + DefaultValue = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), CreatedDateTime = table.Column(type: "datetime", nullable: false), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), LastModified = table.Column(type: "datetime", nullable: true), - Priority = table.Column(nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false) + Priority = table.Column(type: "int", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci") }, constraints: table => { @@ -745,52 +455,39 @@ protected override void Up(MigrationBuilder migrationBuilder) name: "mix_module", columns: table => new { - Id = table.Column(nullable: false), - Specificulture = table.Column(type: "varchar(10)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Description = table.Column(type: "text", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Fields = table.Column(type: "text", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Thumbnail = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Image = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Name = table.Column(type: "varchar(50)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Template = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - FormTemplate = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - EdmTemplate = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Title = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Type = table.Column(nullable: false), - PostType = table.Column(nullable: true), - PageSize = table.Column(nullable: true), - CreatedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + Id = table.Column(type: "int", nullable: false), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Description = table.Column(type: "text", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Fields = table.Column(type: "text", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Thumbnail = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Image = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Name = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Template = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + FormTemplate = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + EdmTemplate = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Title = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Type = table.Column(type: "int", nullable: false), + PostType = table.Column(type: "longtext CHARACTER SET utf8mb4", nullable: true), + PageSize = table.Column(type: "int", nullable: true), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), CreatedDateTime = table.Column(type: "datetime", nullable: false), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), LastModified = table.Column(type: "datetime", nullable: true), - Priority = table.Column(nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false) + Priority = table.Column(type: "int", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci") }, constraints: table => { @@ -807,74 +504,54 @@ protected override void Up(MigrationBuilder migrationBuilder) name: "mix_page", columns: table => new { - Id = table.Column(nullable: false), - Specificulture = table.Column(type: "varchar(10)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Content = table.Column(type: "text", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - CssClass = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Excerpt = table.Column(type: "text", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Icon = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Image = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Layout = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Level = table.Column(nullable: true), - SeoDescription = table.Column(type: "text", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - SeoKeywords = table.Column(type: "text", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - SeoName = table.Column(type: "varchar(500)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - SeoTitle = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - StaticUrl = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Tags = table.Column(type: "text", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Template = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Title = table.Column(type: "text", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Type = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - PostType = table.Column(nullable: true), - Views = table.Column(nullable: true), - PageSize = table.Column(nullable: true), - ExtraFields = table.Column(type: "text", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + Id = table.Column(type: "int", nullable: false), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Content = table.Column(type: "text", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + CssClass = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Excerpt = table.Column(type: "text", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Icon = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Image = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Layout = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Level = table.Column(type: "int", nullable: true), + SeoDescription = table.Column(type: "text", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + SeoKeywords = table.Column(type: "text", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + SeoName = table.Column(type: "varchar(500)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + SeoTitle = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + StaticUrl = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Tags = table.Column(type: "text", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Template = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Title = table.Column(type: "text", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Type = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + PostType = table.Column(type: "longtext CHARACTER SET utf8mb4", nullable: true), + Views = table.Column(type: "int", nullable: true), + PageSize = table.Column(type: "int", nullable: true), + ExtraFields = table.Column(type: "text", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), CreatedDateTime = table.Column(type: "datetime", nullable: false), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), LastModified = table.Column(type: "datetime", nullable: true), - Priority = table.Column(nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false) + Priority = table.Column(type: "int", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci") }, constraints: table => { @@ -891,72 +568,52 @@ protected override void Up(MigrationBuilder migrationBuilder) name: "mix_post", columns: table => new { - Id = table.Column(nullable: false), - Specificulture = table.Column(type: "varchar(10)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Content = table.Column(type: "text", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + Id = table.Column(type: "int", nullable: false), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Content = table.Column(type: "text", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), PublishedDateTime = table.Column(type: "datetime", nullable: true), - Excerpt = table.Column(type: "text", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - ExtraProperties = table.Column(type: "text", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Icon = table.Column(type: "text", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Image = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - SeoDescription = table.Column(type: "text", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - SeoKeywords = table.Column(type: "text", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - SeoName = table.Column(type: "varchar(500)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - SeoTitle = table.Column(type: "text", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Source = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Tags = table.Column(type: "text", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Template = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Thumbnail = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Title = table.Column(type: "text", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Type = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Views = table.Column(nullable: true), - ExtraFields = table.Column(type: "text", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + Excerpt = table.Column(type: "text", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + ExtraProperties = table.Column(type: "text", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Icon = table.Column(type: "text", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Image = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + SeoDescription = table.Column(type: "text", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + SeoKeywords = table.Column(type: "text", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + SeoName = table.Column(type: "varchar(500)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + SeoTitle = table.Column(type: "text", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Source = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Tags = table.Column(type: "text", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Template = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Thumbnail = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Title = table.Column(type: "text", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Type = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Views = table.Column(type: "int", nullable: true), + ExtraFields = table.Column(type: "text", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), CreatedDateTime = table.Column(type: "datetime", nullable: false), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), LastModified = table.Column(type: "datetime", nullable: true), - Priority = table.Column(nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false) + Priority = table.Column(type: "int", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci") }, constraints: table => { @@ -973,32 +630,25 @@ protected override void Up(MigrationBuilder migrationBuilder) name: "mix_url_alias", columns: table => new { - Id = table.Column(nullable: false), - Specificulture = table.Column(type: "varchar(10)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - SourceId = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Type = table.Column(nullable: false), - Description = table.Column(type: "text", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Alias = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + Id = table.Column(type: "int", nullable: false), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + SourceId = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Type = table.Column(type: "int", nullable: false), + Description = table.Column(type: "text", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Alias = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), CreatedDateTime = table.Column(type: "datetime", nullable: false), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), LastModified = table.Column(type: "datetime", nullable: true), - Priority = table.Column(nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false) + Priority = table.Column(type: "int", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci") }, constraints: table => { @@ -1011,32 +661,59 @@ protected override void Up(MigrationBuilder migrationBuilder) onDelete: ReferentialAction.Cascade); }); + migrationBuilder.CreateTable( + name: "mix_database_data", + columns: table => new + { + Id = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + MixDatabaseId = table.Column(type: "int", nullable: false), + MixDatabaseName = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + LastModified = table.Column(type: "datetime", nullable: true), + CreatedDateTime = table.Column(type: "datetime", nullable: false), + Priority = table.Column(type: "int", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8") + }, + constraints: table => + { + table.PrimaryKey("PK_mix_database_data_value", x => new { x.Id, x.Specificulture }); + table.ForeignKey( + name: "FK_mix_database_data_mix_database_MixDatabaseId", + column: x => x.MixDatabaseId, + principalTable: "mix_database", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + migrationBuilder.CreateTable( name: "mix_portal_page_navigation", columns: table => new { - Id = table.Column(nullable: false) + Id = table.Column(type: "int", nullable: false) .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - PageId = table.Column(nullable: false), - ParentId = table.Column(nullable: false), - Description = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Image = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + PageId = table.Column(type: "int", nullable: false), + ParentId = table.Column(type: "int", nullable: false), + Description = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Image = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), CreatedDateTime = table.Column(type: "datetime", nullable: false), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), LastModified = table.Column(type: "datetime", nullable: true), - Priority = table.Column(nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false) + Priority = table.Column(type: "int", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci") }, constraints: table => { @@ -1059,27 +736,20 @@ protected override void Up(MigrationBuilder migrationBuilder) name: "mix_portal_page_role", columns: table => new { - Id = table.Column(type: "integer", nullable: false), - PageId = table.Column(nullable: false), - RoleId = table.Column(type: "varchar(50)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + Id = table.Column(type: "int", nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + PageId = table.Column(type: "int", nullable: false), + RoleId = table.Column(type: "varchar(50) CHARACTER SET utf8mb4", maxLength: 50, nullable: true), + CreatedBy = table.Column(type: "varchar(50) CHARACTER SET utf8mb4", unicode: false, maxLength: 50, nullable: true), CreatedDateTime = table.Column(type: "datetime", nullable: false), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + ModifiedBy = table.Column(type: "varchar(50) CHARACTER SET utf8mb4", unicode: false, maxLength: 50, nullable: true), LastModified = table.Column(type: "datetime", nullable: true), - Priority = table.Column(nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci") + Priority = table.Column(type: "int", nullable: false), + Status = table.Column(type: "varchar(50) CHARACTER SET utf8mb4", unicode: false, maxLength: 50, nullable: false) }, constraints: table => { - table.PrimaryKey("PRIMARY", x => x.Id); + table.PrimaryKey("PK_mix_portal_page_role", x => x.Id); table.ForeignKey( name: "FK_mix_portal_page_role_mix_portal_page", column: x => x.PageId, @@ -1092,39 +762,30 @@ protected override void Up(MigrationBuilder migrationBuilder) name: "mix_file", columns: table => new { - Id = table.Column(nullable: false) + Id = table.Column(type: "int", nullable: false) .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - StringContent = table.Column(type: "text", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Extension = table.Column(type: "varchar(50)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - FileFolder = table.Column(type: "varchar(250)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - FileName = table.Column(type: "varchar(250)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - FolderType = table.Column(type: "varchar(50)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - ThemeId = table.Column(nullable: true), - ThemeName = table.Column(type: "varchar(250)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + StringContent = table.Column(type: "text", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Extension = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + FileFolder = table.Column(type: "varchar(250)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + FileName = table.Column(type: "varchar(250)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + FolderType = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + ThemeId = table.Column(type: "int", nullable: true), + ThemeName = table.Column(type: "varchar(250)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), CreatedDateTime = table.Column(type: "datetime", nullable: false), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), LastModified = table.Column(type: "datetime", nullable: true), - Priority = table.Column(nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false) + Priority = table.Column(type: "int", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci") }, constraints: table => { @@ -1141,51 +802,38 @@ protected override void Up(MigrationBuilder migrationBuilder) name: "mix_template", columns: table => new { - Id = table.Column(nullable: false) + Id = table.Column(type: "int", nullable: false) .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Content = table.Column(type: "text", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Extension = table.Column(type: "varchar(50)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - FileFolder = table.Column(type: "varchar(250)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - FileName = table.Column(type: "varchar(250)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - FolderType = table.Column(type: "varchar(50)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - MobileContent = table.Column(type: "text", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Scripts = table.Column(type: "text", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - SpaContent = table.Column(type: "text", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Styles = table.Column(type: "text", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - ThemeId = table.Column(nullable: false), - ThemeName = table.Column(type: "varchar(250)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + Content = table.Column(type: "text", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Extension = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + FileFolder = table.Column(type: "varchar(250)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + FileName = table.Column(type: "varchar(250)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + FolderType = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + MobileContent = table.Column(type: "text", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Scripts = table.Column(type: "text", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + SpaContent = table.Column(type: "text", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Styles = table.Column(type: "text", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + ThemeId = table.Column(type: "int", nullable: false), + ThemeName = table.Column(type: "varchar(250)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), CreatedDateTime = table.Column(type: "datetime", nullable: false), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), LastModified = table.Column(type: "datetime", nullable: true), - Priority = table.Column(nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false) + Priority = table.Column(type: "int", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci") }, constraints: table => { @@ -1202,31 +850,25 @@ protected override void Up(MigrationBuilder migrationBuilder) name: "mix_page_module", columns: table => new { - Id = table.Column(nullable: false), - Specificulture = table.Column(type: "varchar(10)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - ModuleId = table.Column(nullable: false), - PageId = table.Column(nullable: false), - Description = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Image = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Position = table.Column(nullable: false), - CreatedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + Id = table.Column(type: "int", nullable: false), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + ModuleId = table.Column(type: "int", nullable: false), + PageId = table.Column(type: "int", nullable: false), + Description = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Image = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Position = table.Column(type: "int", nullable: false), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), CreatedDateTime = table.Column(type: "datetime", nullable: false), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), LastModified = table.Column(type: "datetime", nullable: true), - Priority = table.Column(nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false) + Priority = table.Column(type: "int", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci") }, constraints: table => { @@ -1249,33 +891,26 @@ protected override void Up(MigrationBuilder migrationBuilder) name: "mix_module_data", columns: table => new { - Id = table.Column(type: "varchar(50)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Specificulture = table.Column(type: "varchar(10)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - ModuleId = table.Column(nullable: false), - PageId = table.Column(nullable: true), - PostId = table.Column(nullable: true), - Fields = table.Column(type: "text", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Value = table.Column(type: "text", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + Id = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + ModuleId = table.Column(type: "int", nullable: false), + PageId = table.Column(type: "int", nullable: true), + PostId = table.Column(type: "int", nullable: true), + Fields = table.Column(type: "text", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Value = table.Column(type: "text", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), CreatedDateTime = table.Column(type: "datetime", nullable: false), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), LastModified = table.Column(type: "datetime", nullable: true), - Priority = table.Column(nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false) + Priority = table.Column(type: "int", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci") }, constraints: table => { @@ -1304,30 +939,24 @@ protected override void Up(MigrationBuilder migrationBuilder) name: "mix_module_post", columns: table => new { - Id = table.Column(nullable: false), - Specificulture = table.Column(type: "varchar(10)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - PostId = table.Column(nullable: false), - ModuleId = table.Column(nullable: false), - Description = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Image = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + Id = table.Column(type: "int", nullable: false), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + PostId = table.Column(type: "int", nullable: false), + ModuleId = table.Column(type: "int", nullable: false), + Description = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Image = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), CreatedDateTime = table.Column(type: "datetime", nullable: false), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), LastModified = table.Column(type: "datetime", nullable: true), - Priority = table.Column(nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false) + Priority = table.Column(type: "int", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci") }, constraints: table => { @@ -1350,30 +979,24 @@ protected override void Up(MigrationBuilder migrationBuilder) name: "mix_page_post", columns: table => new { - Id = table.Column(nullable: false), - Specificulture = table.Column(type: "varchar(10)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - PostId = table.Column(nullable: false), - PageId = table.Column(nullable: false), - Description = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Image = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + Id = table.Column(type: "int", nullable: false), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + PostId = table.Column(type: "int", nullable: false), + PageId = table.Column(type: "int", nullable: false), + Description = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Image = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), CreatedDateTime = table.Column(type: "datetime", nullable: false), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), LastModified = table.Column(type: "datetime", nullable: true), - Priority = table.Column(nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false) + Priority = table.Column(type: "int", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci") }, constraints: table => { @@ -1393,93 +1016,80 @@ protected override void Up(MigrationBuilder migrationBuilder) }); migrationBuilder.CreateTable( - name: "mix_post_media", + name: "mix_post_association", columns: table => new { - Id = table.Column(nullable: false), - Specificulture = table.Column(type: "varchar(10)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - MediaId = table.Column(nullable: false), - PostId = table.Column(nullable: false), - Description = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Image = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Position = table.Column(nullable: false), - CreatedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + Id = table.Column(type: "int", nullable: false), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + SourceId = table.Column(type: "int", nullable: false), + DestinationId = table.Column(type: "int", nullable: false), + Description = table.Column(type: "varchar(450)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Image = table.Column(type: "varchar(450)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), CreatedDateTime = table.Column(type: "datetime", nullable: false), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), LastModified = table.Column(type: "datetime", nullable: true), - Priority = table.Column(nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false) + Priority = table.Column(type: "int", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci") }, constraints: table => { table.PrimaryKey("PRIMARY", x => new { x.Id, x.Specificulture }); table.ForeignKey( - name: "FK_mix_post_media_mix_media", - columns: x => new { x.MediaId, x.Specificulture }, - principalTable: "mix_media", + name: "FK_mix_post_association_mix_post", + columns: x => new { x.SourceId, x.Specificulture }, + principalTable: "mix_post", principalColumns: new[] { "Id", "Specificulture" }, onDelete: ReferentialAction.Restrict); table.ForeignKey( - name: "FK_mix_post_media_mix_post", - columns: x => new { x.PostId, x.Specificulture }, + name: "FK_mix_post_association_mix_post1", + columns: x => new { x.DestinationId, x.Specificulture }, principalTable: "mix_post", principalColumns: new[] { "Id", "Specificulture" }, onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( - name: "mix_post_module", + name: "mix_post_media", columns: table => new { - Id = table.Column(nullable: false), - Specificulture = table.Column(type: "varchar(10)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - ModuleId = table.Column(nullable: false), - PostId = table.Column(nullable: false), - Description = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Image = table.Column(type: "varchar(250)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Position = table.Column(nullable: false), - CreatedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + Id = table.Column(type: "int", nullable: false), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + MediaId = table.Column(type: "int", nullable: false), + PostId = table.Column(type: "int", nullable: false), + Description = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Image = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Position = table.Column(type: "int", nullable: false), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), CreatedDateTime = table.Column(type: "datetime", nullable: false), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), LastModified = table.Column(type: "datetime", nullable: true), - Priority = table.Column(nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false) + Priority = table.Column(type: "int", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci") }, constraints: table => { table.PrimaryKey("PRIMARY", x => new { x.Id, x.Specificulture }); table.ForeignKey( - name: "FK_Mix_Post_Module_Mix_Module1", - columns: x => new { x.ModuleId, x.Specificulture }, - principalTable: "mix_module", + name: "FK_mix_post_media_mix_media", + columns: x => new { x.MediaId, x.Specificulture }, + principalTable: "mix_media", principalColumns: new[] { "Id", "Specificulture" }, - onDelete: ReferentialAction.Cascade); + onDelete: ReferentialAction.Restrict); table.ForeignKey( - name: "FK_Mix_Post_Module_Mix_Post", + name: "FK_mix_post_media_mix_post", columns: x => new { x.PostId, x.Specificulture }, principalTable: "mix_post", principalColumns: new[] { "Id", "Specificulture" }, @@ -1487,76 +1097,46 @@ protected override void Up(MigrationBuilder migrationBuilder) }); migrationBuilder.CreateTable( - name: "mix_related_post", + name: "mix_post_module", columns: table => new { - Id = table.Column(nullable: false), - Specificulture = table.Column(type: "varchar(10)", nullable: false) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - SourceId = table.Column(nullable: false), - DestinationId = table.Column(nullable: false), - Description = table.Column(type: "varchar(450)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - Image = table.Column(type: "varchar(450)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + Id = table.Column(type: "int", nullable: false), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + ModuleId = table.Column(type: "int", nullable: false), + PostId = table.Column(type: "int", nullable: false), + Description = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Image = table.Column(type: "varchar(250)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), + Position = table.Column(type: "int", nullable: false), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), CreatedDateTime = table.Column(type: "datetime", nullable: false), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true) - .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci"), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "utf8_unicode_ci") + .Annotation("MySql:CharSet", "utf8"), LastModified = table.Column(type: "datetime", nullable: true), - Priority = table.Column(nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false) + Priority = table.Column(type: "int", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "utf8_unicode_ci") .Annotation("MySql:CharSet", "utf8") - .Annotation("MySql:Collation", "utf8_unicode_ci") }, constraints: table => { table.PrimaryKey("PRIMARY", x => new { x.Id, x.Specificulture }); table.ForeignKey( - name: "FK_mix_related_post_mix_post1", - columns: x => new { x.DestinationId, x.Specificulture }, - principalTable: "mix_post", + name: "FK_Mix_Post_Module_Mix_Module1", + columns: x => new { x.ModuleId, x.Specificulture }, + principalTable: "mix_module", principalColumns: new[] { "Id", "Specificulture" }, - onDelete: ReferentialAction.Restrict); + onDelete: ReferentialAction.Cascade); table.ForeignKey( - name: "FK_mix_related_post_mix_post", - columns: x => new { x.SourceId, x.Specificulture }, + name: "FK_Mix_Post_Module_Mix_Post", + columns: x => new { x.PostId, x.Specificulture }, principalTable: "mix_post", principalColumns: new[] { "Id", "Specificulture" }, onDelete: ReferentialAction.Restrict); }); - migrationBuilder.CreateIndex( - name: "IX_mix_attribute_field_AttributeSetId", - table: "mix_attribute_field", - column: "AttributeSetId"); - - migrationBuilder.CreateIndex( - name: "IX_mix_attribute_field_ReferenceId", - table: "mix_attribute_field", - column: "ReferenceId"); - - migrationBuilder.CreateIndex( - name: "IX_mix_attribute_set_data_AttributeSetId", - table: "mix_attribute_set_data", - column: "AttributeSetId"); - - migrationBuilder.CreateIndex( - name: "IX_mix_attribute_set_reference_AttributeSetId", - table: "mix_attribute_set_reference", - column: "AttributeSetId"); - - migrationBuilder.CreateIndex( - name: "IX_mix_attribute_set_value_DataId", - table: "mix_attribute_set_value", - column: "DataId"); - migrationBuilder.CreateIndex( name: "Index_ExpiresAtTime", table: "mix_cache", @@ -1573,6 +1153,26 @@ protected override void Up(MigrationBuilder migrationBuilder) column: "Specificulture", unique: true); + migrationBuilder.CreateIndex( + name: "IX_mix_database_column_MixDatabaseId", + table: "mix_database_column", + column: "MixDatabaseId"); + + migrationBuilder.CreateIndex( + name: "IX_mix_database_column_ReferenceId", + table: "mix_database_column", + column: "ReferenceId"); + + migrationBuilder.CreateIndex( + name: "IX_mix_database_data_MixDatabaseId", + table: "mix_database_data", + column: "MixDatabaseId"); + + migrationBuilder.CreateIndex( + name: "IX_mix_database_data_value_DataId", + table: "mix_database_data_value", + column: "DataId"); + migrationBuilder.CreateIndex( name: "IX_mix_file_ThemeId", table: "mix_file", @@ -1588,6 +1188,11 @@ protected override void Up(MigrationBuilder migrationBuilder) table: "mix_module", column: "Specificulture"); + migrationBuilder.CreateIndex( + name: "IX_mix_module_data_ModuleId_PageId_Specificulture", + table: "mix_module_data", + columns: new[] { "ModuleId", "PageId", "Specificulture" }); + migrationBuilder.CreateIndex( name: "IX_mix_module_data_ModuleId_Specificulture", table: "mix_module_data", @@ -1603,11 +1208,6 @@ protected override void Up(MigrationBuilder migrationBuilder) table: "mix_module_data", columns: new[] { "PostId", "Specificulture" }); - migrationBuilder.CreateIndex( - name: "IX_mix_module_data_ModuleId_PageId_Specificulture", - table: "mix_module_data", - columns: new[] { "ModuleId", "PageId", "Specificulture" }); - migrationBuilder.CreateIndex( name: "IX_mix_module_post_ModuleId_Specificulture", table: "mix_module_post", @@ -1663,6 +1263,16 @@ protected override void Up(MigrationBuilder migrationBuilder) table: "mix_post", column: "Specificulture"); + migrationBuilder.CreateIndex( + name: "IX_mix_post_association_DestinationId_Specificulture", + table: "mix_post_association", + columns: new[] { "DestinationId", "Specificulture" }); + + migrationBuilder.CreateIndex( + name: "IX_mix_post_association_SourceId_Specificulture", + table: "mix_post_association", + columns: new[] { "SourceId", "Specificulture" }); + migrationBuilder.CreateIndex( name: "IX_mix_post_media_MediaId_Specificulture", table: "mix_post_media", @@ -1683,16 +1293,6 @@ protected override void Up(MigrationBuilder migrationBuilder) table: "mix_post_module", columns: new[] { "PostId", "Specificulture" }); - migrationBuilder.CreateIndex( - name: "IX_mix_related_post_DestinationId_Specificulture", - table: "mix_related_post", - columns: new[] { "DestinationId", "Specificulture" }); - - migrationBuilder.CreateIndex( - name: "IX_mix_related_post_SourceId_Specificulture", - table: "mix_related_post", - columns: new[] { "SourceId", "Specificulture" }); - migrationBuilder.CreateIndex( name: "IX_mix_template_file_TemplateId", table: "mix_template", @@ -1707,25 +1307,25 @@ protected override void Up(MigrationBuilder migrationBuilder) protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropTable( - name: "mix_attribute_field"); + name: "mix_cache"); migrationBuilder.DropTable( - name: "mix_attribute_set_data"); + name: "mix_cms_user"); migrationBuilder.DropTable( - name: "mix_attribute_set_reference"); + name: "mix_configuration"); migrationBuilder.DropTable( - name: "mix_attribute_set_value"); + name: "mix_database_column"); migrationBuilder.DropTable( - name: "mix_cache"); + name: "mix_database_data"); migrationBuilder.DropTable( - name: "mix_cms_user"); + name: "mix_database_data_association"); migrationBuilder.DropTable( - name: "mix_configuration"); + name: "mix_database_data_value"); migrationBuilder.DropTable( name: "mix_file"); @@ -1752,22 +1352,13 @@ protected override void Down(MigrationBuilder migrationBuilder) name: "mix_portal_page_role"); migrationBuilder.DropTable( - name: "mix_post_media"); - - migrationBuilder.DropTable( - name: "mix_post_module"); - - migrationBuilder.DropTable( - name: "mix_related_attribute_data"); - - migrationBuilder.DropTable( - name: "mix_related_attribute_set"); + name: "mix_post_association"); migrationBuilder.DropTable( - name: "mix_related_data"); + name: "mix_post_media"); migrationBuilder.DropTable( - name: "mix_related_post"); + name: "mix_post_module"); migrationBuilder.DropTable( name: "mix_template"); @@ -1775,6 +1366,9 @@ protected override void Down(MigrationBuilder migrationBuilder) migrationBuilder.DropTable( name: "mix_url_alias"); + migrationBuilder.DropTable( + name: "mix_database"); + migrationBuilder.DropTable( name: "mix_page"); @@ -1787,9 +1381,6 @@ protected override void Down(MigrationBuilder migrationBuilder) migrationBuilder.DropTable( name: "mix_module"); - migrationBuilder.DropTable( - name: "mix_attribute_set"); - migrationBuilder.DropTable( name: "mix_post"); @@ -1800,4 +1391,4 @@ protected override void Down(MigrationBuilder migrationBuilder) name: "mix_culture"); } } -} \ No newline at end of file +} diff --git a/src/Mix.Cms.Lib/Migrations/MySqlMixCms/20210216143114_RenameDatabase.Designer.cs b/src/Mix.Cms.Lib/Migrations/MySqlMixCms/20210216143114_RenameDatabase.Designer.cs new file mode 100644 index 000000000..a142fb37b --- /dev/null +++ b/src/Mix.Cms.Lib/Migrations/MySqlMixCms/20210216143114_RenameDatabase.Designer.cs @@ -0,0 +1,2509 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Mix.Cms.Lib.Models.Cms; + +namespace Mix.Cms.Lib.Migrations.MySqlMixCms +{ + [DbContext(typeof(MySqlMixCmsContext))] + [Migration("20210216143114_RenameDatabase")] + partial class RenameDatabase + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("Relational:MaxIdentifierLength", 64) + .HasAnnotation("ProductVersion", "5.0.1"); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCache", b => + { + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("ExpiredDateTime") + .HasColumnType("datetime"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Value") + .IsRequired() + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.HasKey("Id"); + + b.HasIndex("ExpiredDateTime") + .HasDatabaseName("Index_ExpiresAtTime"); + + b.ToTable("mix_cache"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCmsUser", b => + { + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Address") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Avatar") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Email") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("FirstName") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("LastName") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("MiddleName") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("PhoneNumber") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Username") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.HasKey("Id"); + + b.ToTable("mix_cms_user"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixConfiguration", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Category") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("DataType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Keyword") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Value") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PRIMARY"); + + b.HasIndex("Specificulture"); + + b.ToTable("mix_configuration"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCulture", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Alias") + .HasColumnType("varchar(150)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("FullName") + .HasColumnType("varchar(150)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Icon") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("Lcid") + .HasColumnType("varchar(50)") + .HasColumnName("LCID") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Specificulture") + .IsRequired() + .HasColumnType("varchar(10)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.HasKey("Id"); + + b.HasIndex("Specificulture") + .IsUnique() + .HasDatabaseName("IX_Mix_Culture"); + + b.ToTable("mix_culture"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabase", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("EdmAutoSend") + .HasColumnType("bit(1)"); + + b.Property("EdmFrom") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("EdmSubject") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("EdmTemplate") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("FormTemplate") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Name") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Title") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Type") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.HasKey("Id"); + + b.ToTable("mix_database"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseColumn", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Configurations") + .HasColumnType("longtext CHARACTER SET utf8mb4"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("DataType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("DefaultValue") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("IsEncrypt") + .HasColumnType("bit(1)"); + + b.Property("IsMultiple") + .HasColumnType("bit(1)"); + + b.Property("IsRequire") + .HasColumnType("bit(1)"); + + b.Property("IsSelect") + .HasColumnType("bit(1)"); + + b.Property("IsUnique") + .HasColumnType("bit(1)"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("MixDatabaseId") + .HasColumnType("int"); + + b.Property("MixDatabaseName") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Name") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Options") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("ReferenceId") + .HasColumnType("int"); + + b.Property("Regex") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Title") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.HasKey("Id"); + + b.HasIndex("MixDatabaseId"); + + b.HasIndex("ReferenceId"); + + b.ToTable("mix_database_column"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseData", b => + { + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("MixDatabaseId") + .HasColumnType("int"); + + b.Property("MixDatabaseName") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_database_data_value"); + + b.HasIndex("MixDatabaseId"); + + b.ToTable("mix_database_data"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseDataAssociation", b => + { + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("DataId") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Description") + .HasColumnType("varchar(450)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("MixDatabaseId") + .HasColumnType("int"); + + b.Property("MixDatabaseName") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("ParentId") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("ParentType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PRIMARY"); + + b.ToTable("mix_database_data_association"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseDataValue", b => + { + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("BooleanValue") + .HasColumnType("bit(1)"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("DataId") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("DataType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("DateTimeValue") + .HasColumnType("datetime"); + + b.Property("DoubleValue") + .HasColumnType("double"); + + b.Property("EncryptKey") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("EncryptType") + .HasColumnType("int"); + + b.Property("EncryptValue") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("IntegerValue") + .HasColumnType("int"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("MixDatabaseColumnId") + .HasColumnType("int"); + + b.Property("MixDatabaseColumnName") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("MixDatabaseName") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Regex") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("StringValue") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PRIMARY"); + + b.HasIndex("DataId"); + + b.ToTable("mix_database_data_value"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixFile", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Extension") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("FileFolder") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("FileName") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("FolderType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("StringContent") + .IsRequired() + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("ThemeId") + .HasColumnType("int"); + + b.Property("ThemeName") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.HasKey("Id"); + + b.HasIndex("ThemeId"); + + b.ToTable("mix_file"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixLanguage", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Category") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("DataType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("DefaultValue") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Keyword") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Value") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PRIMARY"); + + b.HasIndex("Specificulture"); + + b.ToTable("mix_language"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixMedia", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Extension") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("FileFolder") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("FileName") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("FileProperties") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("FileSize") + .HasColumnType("bigint"); + + b.Property("FileType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Source") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Tags") + .HasColumnType("varchar(400)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("TargetUrl") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Title") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PRIMARY"); + + b.ToTable("mix_media"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModule", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("EdmTemplate") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Fields") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("FormTemplate") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Name") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("PageSize") + .HasColumnType("int"); + + b.Property("PostType") + .HasColumnType("longtext CHARACTER SET utf8mb4"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Template") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Thumbnail") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Title") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Type") + .HasColumnType("int"); + + b.HasKey("Id", "Specificulture") + .HasName("PRIMARY"); + + b.HasIndex("Specificulture"); + + b.ToTable("mix_module"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModuleData", b => + { + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Fields") + .IsRequired() + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("ModuleId") + .HasColumnType("int"); + + b.Property("PageId") + .HasColumnType("int"); + + b.Property("PostId") + .HasColumnType("int"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Value") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PRIMARY"); + + b.HasIndex("ModuleId", "Specificulture"); + + b.HasIndex("PageId", "Specificulture"); + + b.HasIndex("PostId", "Specificulture"); + + b.HasIndex("ModuleId", "PageId", "Specificulture"); + + b.ToTable("mix_module_data"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModulePost", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("ModuleId") + .HasColumnType("int"); + + b.Property("PostId") + .HasColumnType("int"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PRIMARY"); + + b.HasIndex("ModuleId", "Specificulture"); + + b.HasIndex("PostId", "Specificulture"); + + b.ToTable("mix_module_post"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPage", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Content") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("CssClass") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Excerpt") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("ExtraFields") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Icon") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("Layout") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("PageSize") + .HasColumnType("int"); + + b.Property("PostType") + .HasColumnType("longtext CHARACTER SET utf8mb4"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("SeoDescription") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("SeoKeywords") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("SeoName") + .HasColumnType("varchar(500)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("SeoTitle") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("StaticUrl") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Tags") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Template") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Title") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Type") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Views") + .HasColumnType("int"); + + b.HasKey("Id", "Specificulture") + .HasName("PRIMARY"); + + b.HasIndex("Specificulture"); + + b.ToTable("mix_page"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPageModule", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("ModuleId") + .HasColumnType("int"); + + b.Property("PageId") + .HasColumnType("int"); + + b.Property("Position") + .HasColumnType("int"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PRIMARY"); + + b.HasIndex("ModuleId", "Specificulture"); + + b.HasIndex("PageId", "Specificulture"); + + b.ToTable("mix_page_module"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPagePost", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("PageId") + .HasColumnType("int"); + + b.Property("PostId") + .HasColumnType("int"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PRIMARY"); + + b.HasIndex("PageId", "Specificulture"); + + b.HasIndex("PostId", "Specificulture"); + + b.ToTable("mix_page_post"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(450)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Icon") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("TextDefault") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("TextKeyword") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Url") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.HasKey("Id"); + + b.ToTable("mix_portal_page"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPageNavigation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("PageId") + .HasColumnType("int"); + + b.Property("ParentId") + .HasColumnType("int"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.HasKey("Id"); + + b.HasIndex("PageId") + .HasDatabaseName("FK_mix_portal_page_navigation_mix_portal_page"); + + b.HasIndex("ParentId"); + + b.ToTable("mix_portal_page_navigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPageRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("CreatedBy") + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("varchar(50) CHARACTER SET utf8mb4"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("varchar(50) CHARACTER SET utf8mb4"); + + b.Property("PageId") + .HasColumnType("int"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("RoleId") + .HasMaxLength(50) + .HasColumnType("varchar(50) CHARACTER SET utf8mb4"); + + b.Property("Status") + .IsRequired() + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("varchar(50) CHARACTER SET utf8mb4"); + + b.HasKey("Id") + .HasName("PK_mix_portal_page_role"); + + b.HasIndex("PageId"); + + b.ToTable("mix_portal_page_role"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPost", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Content") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Excerpt") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("ExtraFields") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Icon") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("PublishedDateTime") + .HasColumnType("datetime"); + + b.Property("SeoDescription") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("SeoKeywords") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("SeoName") + .HasColumnType("varchar(500)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("SeoTitle") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Source") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Tags") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Template") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Thumbnail") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Title") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Type") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Views") + .HasColumnType("int"); + + b.HasKey("Id", "Specificulture") + .HasName("PRIMARY"); + + b.HasIndex("Specificulture"); + + b.ToTable("mix_post"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostAssociation", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(450)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("DestinationId") + .HasColumnType("int"); + + b.Property("Image") + .HasColumnType("varchar(450)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("SourceId") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PRIMARY"); + + b.HasIndex("DestinationId", "Specificulture"); + + b.HasIndex("SourceId", "Specificulture"); + + b.ToTable("mix_post_association"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostMedia", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("MediaId") + .HasColumnType("int"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Position") + .HasColumnType("int"); + + b.Property("PostId") + .HasColumnType("int"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PRIMARY"); + + b.HasIndex("MediaId", "Specificulture"); + + b.HasIndex("PostId", "Specificulture"); + + b.ToTable("mix_post_media"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostModule", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("ModuleId") + .HasColumnType("int"); + + b.Property("Position") + .HasColumnType("int"); + + b.Property("PostId") + .HasColumnType("int"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PRIMARY"); + + b.HasIndex("ModuleId", "Specificulture"); + + b.HasIndex("PostId", "Specificulture"); + + b.ToTable("mix_post_module"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTemplate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Content") + .IsRequired() + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Extension") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("FileFolder") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("FileName") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("FolderType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("MobileContent") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Scripts") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("SpaContent") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Styles") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("ThemeId") + .HasColumnType("int"); + + b.Property("ThemeName") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.HasKey("Id"); + + b.HasIndex("ThemeId") + .HasDatabaseName("IX_mix_template_file_TemplateId"); + + b.ToTable("mix_template"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTheme", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Name") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("PreviewUrl") + .HasColumnType("varchar(450)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Thumbnail") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Title") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.HasKey("Id"); + + b.ToTable("mix_theme"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixUrlAlias", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Alias") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("SourceId") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Type") + .HasColumnType("int"); + + b.HasKey("Id", "Specificulture") + .HasName("PRIMARY"); + + b.HasIndex("Specificulture"); + + b.ToTable("mix_url_alias"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixConfiguration", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") + .WithMany("MixConfiguration") + .HasForeignKey("Specificulture") + .HasConstraintName("FK_Mix_Configuration_Mix_Culture") + .HasPrincipalKey("Specificulture") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseData", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixDatabase", "MixDatabase") + .WithMany() + .HasForeignKey("MixDatabaseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("MixDatabase"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixFile", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixTheme", "Theme") + .WithMany("MixFile") + .HasForeignKey("ThemeId") + .HasConstraintName("FK_mix_file_mix_template"); + + b.Navigation("Theme"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixLanguage", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") + .WithMany("MixLanguage") + .HasForeignKey("Specificulture") + .HasConstraintName("FK_Mix_Language_Mix_Culture") + .HasPrincipalKey("Specificulture") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModule", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") + .WithMany("MixModule") + .HasForeignKey("Specificulture") + .HasConstraintName("FK_Mix_Module_Mix_Culture") + .HasPrincipalKey("Specificulture") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModuleData", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixModule", "MixModule") + .WithMany("MixModuleData") + .HasForeignKey("ModuleId", "Specificulture") + .HasConstraintName("FK_Mix_Module_Data_Mix_Module") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPage", "MixPage") + .WithMany("MixModuleData") + .HasForeignKey("PageId", "Specificulture") + .HasConstraintName("FK_mix_module_data_mix_page"); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixModuleData") + .HasForeignKey("PostId", "Specificulture") + .HasConstraintName("FK_mix_module_data_mix_post"); + + b.Navigation("MixModule"); + + b.Navigation("MixPage"); + + b.Navigation("MixPost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModulePost", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixModule", "MixModule") + .WithMany("MixModulePost") + .HasForeignKey("ModuleId", "Specificulture") + .HasConstraintName("FK_Mix_Module_Post_Mix_Module") + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixModulePost") + .HasForeignKey("PostId", "Specificulture") + .HasConstraintName("FK_Mix_Module_Post_Mix_Post") + .IsRequired(); + + b.Navigation("MixModule"); + + b.Navigation("MixPost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPage", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") + .WithMany("MixPage") + .HasForeignKey("Specificulture") + .HasConstraintName("FK_Mix_Page_Mix_Culture") + .HasPrincipalKey("Specificulture") + .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPageModule", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixModule", "MixModule") + .WithMany("MixPageModule") + .HasForeignKey("ModuleId", "Specificulture") + .HasConstraintName("FK_Mix_Menu_Module_Mix_Module1") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPage", "MixPage") + .WithMany("MixPageModule") + .HasForeignKey("PageId", "Specificulture") + .HasConstraintName("FK_Mix_Page_Module_Mix_Page") + .IsRequired(); + + b.Navigation("MixModule"); + + b.Navigation("MixPage"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPagePost", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPage", "MixPage") + .WithMany("MixPagePost") + .HasForeignKey("PageId", "Specificulture") + .HasConstraintName("FK_Mix_Page_Post_Mix_Page") + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixPagePost") + .HasForeignKey("PostId", "Specificulture") + .HasConstraintName("FK_Mix_Page_Post_Mix_Post") + .IsRequired(); + + b.Navigation("MixPage"); + + b.Navigation("MixPost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPageNavigation", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPortalPage", "Page") + .WithMany("MixPortalPageNavigationPage") + .HasForeignKey("PageId") + .HasConstraintName("FK_mix_portal_page_navigation_mix_portal_page") + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPortalPage", "Parent") + .WithMany("MixPortalPageNavigationParent") + .HasForeignKey("ParentId") + .HasConstraintName("FK_mix_portal_page_navigation_mix_portal_page1") + .IsRequired(); + + b.Navigation("Page"); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPageRole", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPortalPage", "Page") + .WithMany("MixPortalPageRole") + .HasForeignKey("PageId") + .HasConstraintName("FK_mix_portal_page_role_mix_portal_page") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Page"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPost", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") + .WithMany("MixPost") + .HasForeignKey("Specificulture") + .HasConstraintName("FK_Mix_Post_Mix_Culture") + .HasPrincipalKey("Specificulture") + .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostAssociation", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixRelatedPostMixPost") + .HasForeignKey("DestinationId", "Specificulture") + .HasConstraintName("FK_mix_post_association_mix_post1") + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "S") + .WithMany("MixRelatedPostS") + .HasForeignKey("SourceId", "Specificulture") + .HasConstraintName("FK_mix_post_association_mix_post") + .IsRequired(); + + b.Navigation("MixPost"); + + b.Navigation("S"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostMedia", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixMedia", "MixMedia") + .WithMany("MixPostMedia") + .HasForeignKey("MediaId", "Specificulture") + .HasConstraintName("FK_mix_post_media_mix_media") + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixPostMedia") + .HasForeignKey("PostId", "Specificulture") + .HasConstraintName("FK_mix_post_media_mix_post") + .IsRequired(); + + b.Navigation("MixMedia"); + + b.Navigation("MixPost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostModule", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixModule", "MixModule") + .WithMany("MixPostModule") + .HasForeignKey("ModuleId", "Specificulture") + .HasConstraintName("FK_Mix_Post_Module_Mix_Module1") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixPostModule") + .HasForeignKey("PostId", "Specificulture") + .HasConstraintName("FK_Mix_Post_Module_Mix_Post") + .IsRequired(); + + b.Navigation("MixModule"); + + b.Navigation("MixPost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTemplate", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixTheme", "Theme") + .WithMany("MixTemplate") + .HasForeignKey("ThemeId") + .HasConstraintName("FK_mix_template_mix_theme") + .IsRequired(); + + b.Navigation("Theme"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixUrlAlias", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") + .WithMany("MixUrlAlias") + .HasForeignKey("Specificulture") + .HasConstraintName("FK_Mix_Url_Alias_Mix_Culture") + .HasPrincipalKey("Specificulture") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCulture", b => + { + b.Navigation("MixConfiguration"); + + b.Navigation("MixLanguage"); + + b.Navigation("MixModule"); + + b.Navigation("MixPage"); + + b.Navigation("MixPost"); + + b.Navigation("MixUrlAlias"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixMedia", b => + { + b.Navigation("MixPostMedia"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModule", b => + { + b.Navigation("MixModuleData"); + + b.Navigation("MixModulePost"); + + b.Navigation("MixPageModule"); + + b.Navigation("MixPostModule"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPage", b => + { + b.Navigation("MixModuleData"); + + b.Navigation("MixPageModule"); + + b.Navigation("MixPagePost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPage", b => + { + b.Navigation("MixPortalPageNavigationPage"); + + b.Navigation("MixPortalPageNavigationParent"); + + b.Navigation("MixPortalPageRole"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPost", b => + { + b.Navigation("MixModuleData"); + + b.Navigation("MixModulePost"); + + b.Navigation("MixPagePost"); + + b.Navigation("MixPostMedia"); + + b.Navigation("MixPostModule"); + + b.Navigation("MixRelatedPostMixPost"); + + b.Navigation("MixRelatedPostS"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTheme", b => + { + b.Navigation("MixFile"); + + b.Navigation("MixTemplate"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Mix.Cms.Lib/Migrations/MySqlMixCms/20210216143114_RenameDatabase.cs b/src/Mix.Cms.Lib/Migrations/MySqlMixCms/20210216143114_RenameDatabase.cs new file mode 100644 index 000000000..a63d95fde --- /dev/null +++ b/src/Mix.Cms.Lib/Migrations/MySqlMixCms/20210216143114_RenameDatabase.cs @@ -0,0 +1,101 @@ +using Microsoft.EntityFrameworkCore.Migrations; +using Mix.Cms.Lib.Constants; +using Mix.Cms.Lib.Services; +using System; + +namespace Mix.Cms.Lib.Migrations.MySqlMixCms +{ + public partial class RenameDatabase : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + Version.TryParse(MixService.GetConfig(MixConfigurations.CONST_MIXCORE_VERSION), out Version dbVersion); + var prevVersion = new Version("1.0.0"); + if (dbVersion == null || dbVersion.CompareTo(prevVersion) <= 0) + { + string schema = null; + + migrationBuilder.DropForeignKey("FK_mix_attribute_set_data_mix_attribute_set", "mix_attribute_set_data", schema); + migrationBuilder.DropForeignKey("FK_mix_attribute_field_mix_attribute_set", "mix_attribute_field", schema); + migrationBuilder.DropForeignKey("FK_mix_attribute_field_mix_attribute_set1", "mix_attribute_field", schema); + + migrationBuilder.DropIndex("IX_mix_attribute_field_AttributeSetId", "mix_attribute_field", schema); + migrationBuilder.DropIndex("IX_mix_attribute_field_ReferenceId", "mix_attribute_field", schema); + migrationBuilder.DropIndex("IX_mix_attribute_set_data_AttributeSetId", "mix_attribute_set_data", schema); + migrationBuilder.DropIndex("IX_mix_attribute_set_value_DataId", "mix_attribute_set_value", schema); + + migrationBuilder.DropTable("mix_related_attribute_set"); + migrationBuilder.DropTable("mix_attribute_set_reference"); + + migrationBuilder.RenameTable("mix_related_post", schema, "mix_post_association"); + migrationBuilder.RenameTable("mix_attribute_set", schema, "mix_database"); + migrationBuilder.RenameTable("mix_related_attribute_data", schema, "mix_database_data_association"); + migrationBuilder.RenameTable("mix_attribute_set_value", schema, "mix_database_data_value"); + migrationBuilder.RenameTable("mix_attribute_set_data", schema, "mix_database_data"); + migrationBuilder.RenameTable("mix_attribute_field", schema, "mix_database_column"); + + migrationBuilder.RenameColumn("AttributeSetId", "mix_database_column", "MixDatabaseId", schema); + migrationBuilder.RenameColumn("AttributeSetName", "mix_database_column", "MixDatabaseName", schema); + + migrationBuilder.RenameColumn("AttributeFieldId", "mix_database_data_value", "MixDatabaseColumnId", schema); + migrationBuilder.RenameColumn("AttributeFieldName", "mix_database_data_value", "MixDatabaseColumnName", schema); + migrationBuilder.RenameColumn("AttributeSetName", "mix_database_data_value", "MixDatabaseName", schema); + + + migrationBuilder.RenameColumn("AttributeSetId", "mix_database_data_association", "MixDatabaseId", schema); + migrationBuilder.RenameColumn("AttributeSetName", "mix_database_data_association", "MixDatabaseName", schema); + + migrationBuilder.RenameColumn("AttributeSetId", "mix_database_data", "MixDatabaseId", schema); + migrationBuilder.RenameColumn("AttributeSetName", "mix_database_data", "MixDatabaseName", schema); + + + MixService.SetConfig(MixConfigurations.CONST_MIXCORE_VERSION, "1.0.1"); + MixService.SaveSettings(); + } + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + var dbVersion = MixService.GetConfig(MixConfigurations.CONST_MIXCORE_VERSION); + if (string.IsNullOrEmpty(dbVersion) || dbVersion == "1.0.0") + { + string schema = null; + + // mix_related_attribute_set and mix_attribute_set_reference not used, so we don't need to restore them. + + migrationBuilder.RenameTable("mix_post_association", schema, "mix_related_post"); + migrationBuilder.RenameTable("mix_database", schema, "mix_attribute_set"); + migrationBuilder.RenameTable("mix_database_data_association", schema, "mix_related_attribute_data"); + migrationBuilder.RenameTable("mix_database_data_value", schema, "mix_attribute_set_value"); + migrationBuilder.RenameTable("mix_database_data", schema, "mix_attribute_set_data"); + migrationBuilder.RenameTable("mix_database_column", schema, "mix_attribute_field"); + + migrationBuilder.RenameColumn("MixDatabaseId", "mix_database_column", "AttributeSetId", schema); + migrationBuilder.RenameColumn("MixDatabaseName", "mix_database_column", "AttributeSetName", schema); + + migrationBuilder.RenameColumn("MixDatabaseColumnId", "mix_database_data_value", "AttributeFieldId", schema); + migrationBuilder.RenameColumn("MixDatabaseColumnName", "mix_database_data_value", "AttributeFieldName", schema); + migrationBuilder.RenameColumn("MixDatabaseName", "mix_database_data_value", "AttributeSetName", schema); + + + migrationBuilder.RenameColumn("MixDatabaseId", "mix_database_data_association", "AttributeSetId", schema); + migrationBuilder.RenameColumn("MixDatabaseName", "mix_database_data_association", "AttributeSetName", schema); + + migrationBuilder.RenameColumn("MixDatabaseId", "mix_database_data", "AttributeSetId", schema); + migrationBuilder.RenameColumn("MixDatabaseName", "mix_database_data", "AttributeSetName", schema); + + migrationBuilder.CreateIndex("IX_mix_attribute_field_AttributeSetId", "mix_attribute_field", "AttributeSetId", schema); + migrationBuilder.CreateIndex("IX_mix_attribute_field_ReferenceId", "mix_attribute_field", "ReferenceId", schema); + migrationBuilder.CreateIndex("IX_mix_attribute_set_data_AttributeSetId", "mix_attribute_set_data", "AttributeSetId", schema); + migrationBuilder.CreateIndex("IX_mix_attribute_set_value_DataId", "mix_attribute_set_value", "DataId", schema); + + migrationBuilder.AddForeignKey("FK_mix_attribute_set_data_mix_attribute_set", "mix_attribute_set_data", "AttributeSetId", "mix_attribute_set", schema); + migrationBuilder.AddForeignKey("FK_mix_attribute_field_mix_attribute_set", "mix_attribute_field", "Id", "mix_attribute_set", schema); + migrationBuilder.AddForeignKey("FK_mix_attribute_field_mix_attribute_set1", "mix_attribute_field", "Id", "mix_attribute_set", schema); + + MixService.SetConfig(MixConfigurations.CONST_MIXCORE_VERSION, "1.0.0"); + MixService.SaveSettings(); + } + } + } +} diff --git a/src/Mix.Cms.Lib/Migrations/MySqlMixCms/MySqlMixCmsContextModelSnapshot.cs b/src/Mix.Cms.Lib/Migrations/MySqlMixCms/MySqlMixCmsContextModelSnapshot.cs index 16607e492..4b1395c93 100644 --- a/src/Mix.Cms.Lib/Migrations/MySqlMixCms/MySqlMixCmsContextModelSnapshot.cs +++ b/src/Mix.Cms.Lib/Migrations/MySqlMixCms/MySqlMixCmsContextModelSnapshot.cs @@ -14,165 +14,115 @@ protected override void BuildModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder - .HasAnnotation("ProductVersion", "3.1.3") - .HasAnnotation("Relational:MaxIdentifierLength", 64); + .HasAnnotation("Relational:MaxIdentifierLength", 64) + .HasAnnotation("ProductVersion", "5.0.1"); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeField", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCache", b => { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - b.Property("AttributeSetId") - .HasColumnType("int"); - - b.Property("AttributeSetName") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Configurations") - .HasColumnType("longtext"); + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); - b.Property("DataType") - .IsRequired() - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("DefaultValue") - .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("IsEncrypt") - .HasColumnType("bit(1)"); - - b.Property("IsMultiple") - .HasColumnType("bit(1)"); - - b.Property("IsRequire") - .HasColumnType("bit(1)"); - - b.Property("IsSelect") - .HasColumnType("bit(1)"); - - b.Property("IsUnique") - .HasColumnType("bit(1)"); + b.Property("ExpiredDateTime") + .HasColumnType("datetime"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Name") - .IsRequired() - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Options") - .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Priority") .HasColumnType("int"); - b.Property("ReferenceId") - .HasColumnType("int"); - - b.Property("Regex") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("Title") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("Value") + .IsRequired() + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id"); - b.HasIndex("AttributeSetId"); - - b.HasIndex("ReferenceId"); + b.HasIndex("ExpiredDateTime") + .HasDatabaseName("Index_ExpiresAtTime"); - b.ToTable("mix_attribute_field"); + b.ToTable("mix_cache"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeSet", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCmsUser", b => { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - b.Property("CreatedBy") + b.Property("Id") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("CreatedDateTime") - .HasColumnType("datetime"); - - b.Property("Description") + b.Property("Address") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("EdmAutoSend") - .HasColumnType("bit(1)"); - - b.Property("EdmFrom") + b.Property("Avatar") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("EdmSubject") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("EdmTemplate") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("CreatedDateTime") + .HasColumnType("datetime"); - b.Property("FormTemplate") + b.Property("Email") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("FirstName") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); + b.Property("LastName") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("MiddleName") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("Name") - .IsRequired() - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("PhoneNumber") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Priority") .HasColumnType("int"); @@ -180,61 +130,66 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("Title") - .IsRequired() + b.Property("Username") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Type") - .IsRequired() - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id"); - b.ToTable("mix_attribute_set"); + b.ToTable("mix_cms_user"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeSetData", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixConfiguration", b => { - b.Property("Id") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("Id") + .HasColumnType("int"); b.Property("Specificulture") .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("AttributeSetId") - .HasColumnType("int"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("AttributeSetName") + b.Property("Category") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); + b.Property("DataType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Keyword") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + b.Property("LastModified") .HasColumnType("datetime"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Priority") .HasColumnType("int"); @@ -242,286 +197,312 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Value") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id", "Specificulture") .HasName("PRIMARY"); - b.HasIndex("AttributeSetId"); + b.HasIndex("Specificulture"); - b.ToTable("mix_attribute_set_data"); + b.ToTable("mix_configuration"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeSetReference", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCulture", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); - b.Property("AttributeSetId") - .HasColumnType("int"); + b.Property("Alias") + .HasColumnType("varchar(150)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); b.Property("Description") - .HasColumnType("varchar(450)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("Image") - .HasColumnType("varchar(450)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("FullName") + .HasColumnType("varchar(150)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Icon") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); - b.Property("ModifiedBy") + b.Property("Lcid") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("ParentId") - .HasColumnType("int"); + .HasColumnName("LCID") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("ParentType") - .HasColumnType("int"); + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Priority") .HasColumnType("int"); + b.Property("Specificulture") + .IsRequired() + .HasColumnType("varchar(10)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id"); - b.HasIndex("AttributeSetId"); + b.HasIndex("Specificulture") + .IsUnique() + .HasDatabaseName("IX_Mix_Culture"); - b.ToTable("mix_attribute_set_reference"); + b.ToTable("mix_culture"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeSetValue", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabase", b => { - b.Property("Id") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("AttributeFieldId") + b.Property("Id") + .ValueGeneratedOnAdd() .HasColumnType("int"); - b.Property("AttributeFieldName") - .IsRequired() - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("AttributeSetName") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("BooleanValue") - .HasColumnType("bit(1)"); - b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); - b.Property("DataId") - .IsRequired() - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("DataType") - .IsRequired() - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("DateTimeValue") - .HasColumnType("datetime"); + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("DoubleValue") - .HasColumnType("double"); + b.Property("EdmAutoSend") + .HasColumnType("bit(1)"); - b.Property("EncryptKey") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("EdmFrom") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("EncryptType") - .HasColumnType("int"); + b.Property("EdmSubject") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("EncryptValue") - .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("EdmTemplate") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("IntegerValue") - .HasColumnType("int"); + b.Property("FormTemplate") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Priority") - .HasColumnType("int"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("Regex") + b.Property("Name") + .IsRequired() .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("Specificulture") - .IsRequired() - .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("Priority") + .HasColumnType("int"); b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("StringValue") - .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("Title") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.HasKey("Id", "Specificulture"); + b.Property("Type") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.HasIndex("DataId"); + b.HasKey("Id"); - b.ToTable("mix_attribute_set_value"); + b.ToTable("mix_database"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCache", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseColumn", b => { - b.Property("Id") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Configurations") + .HasColumnType("longtext CHARACTER SET utf8mb4"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); - b.Property("ExpiredDateTime") - .HasColumnType("datetime"); + b.Property("DataType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("DefaultValue") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("IsEncrypt") + .HasColumnType("bit(1)"); + + b.Property("IsMultiple") + .HasColumnType("bit(1)"); + + b.Property("IsRequire") + .HasColumnType("bit(1)"); + + b.Property("IsSelect") + .HasColumnType("bit(1)"); + + b.Property("IsUnique") + .HasColumnType("bit(1)"); b.Property("LastModified") .HasColumnType("datetime"); + b.Property("MixDatabaseId") + .HasColumnType("int"); + + b.Property("MixDatabaseName") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Name") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Options") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Priority") .HasColumnType("int"); + b.Property("ReferenceId") + .HasColumnType("int"); + + b.Property("Regex") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("Value") - .IsRequired() - .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("Title") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id"); - b.HasIndex("ExpiredDateTime") - .HasName("Index_ExpiresAtTime"); + b.HasIndex("MixDatabaseId"); - b.ToTable("mix_cache"); + b.HasIndex("ReferenceId"); + + b.ToTable("mix_database_column"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCmsUser", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseData", b => { b.Property("Id") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Address") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("Avatar") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); - b.Property("Email") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("FirstName") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - b.Property("LastModified") .HasColumnType("datetime"); - b.Property("LastName") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("MixDatabaseId") + .HasColumnType("int"); - b.Property("MiddleName") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("MixDatabaseName") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("PhoneNumber") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Priority") .HasColumnType("int"); @@ -529,66 +510,75 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("Username") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_database_data_value"); - b.HasKey("Id"); + b.HasIndex("MixDatabaseId"); - b.ToTable("mix_cms_user"); + b.ToTable("mix_database_data"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixConfiguration", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseDataAssociation", b => { - b.Property("Id") - .HasColumnType("int"); + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Specificulture") .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Category") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); - b.Property("DataType") + b.Property("DataId") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Description") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Keyword") - .IsRequired() - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .HasColumnType("varchar(450)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); + b.Property("MixDatabaseId") + .HasColumnType("int"); + + b.Property("MixDatabaseName") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("ParentId") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("ParentType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Priority") .HasColumnType("int"); @@ -596,92 +586,119 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Value") - .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id", "Specificulture") .HasName("PRIMARY"); - b.HasIndex("Specificulture"); - - b.ToTable("mix_configuration"); + b.ToTable("mix_database_data_association"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCulture", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseDataValue", b => { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("Alias") - .HasColumnType("varchar(150)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("BooleanValue") + .HasColumnType("bit(1)"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("DataId") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("CreatedBy") + b.Property("DataType") + .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("CreatedDateTime") + b.Property("DateTimeValue") .HasColumnType("datetime"); - b.Property("Description") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("FullName") - .HasColumnType("varchar(150)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("DoubleValue") + .HasColumnType("double"); - b.Property("Icon") + b.Property("EncryptKey") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("EncryptType") + .HasColumnType("int"); + + b.Property("EncryptValue") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("IntegerValue") + .HasColumnType("int"); b.Property("LastModified") .HasColumnType("datetime"); - b.Property("Lcid") - .HasColumnName("LCID") + b.Property("MixDatabaseColumnId") + .HasColumnType("int"); + + b.Property("MixDatabaseColumnName") + .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("MixDatabaseName") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Priority") .HasColumnType("int"); - b.Property("Specificulture") - .IsRequired() - .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("Regex") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.HasKey("Id"); + b.Property("StringValue") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.HasIndex("Specificulture") - .IsUnique() - .HasName("IX_Mix_Culture"); + b.HasKey("Id", "Specificulture") + .HasName("PRIMARY"); - b.ToTable("mix_culture"); + b.HasIndex("DataId"); + + b.ToTable("mix_database_data_value"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixFile", b => @@ -692,8 +709,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); @@ -701,34 +718,34 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Extension") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("FileFolder") .IsRequired() .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("FileName") .IsRequired() .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("FolderType") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Priority") .HasColumnType("int"); @@ -736,14 +753,14 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("StringContent") .IsRequired() .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("ThemeId") .HasColumnType("int"); @@ -751,8 +768,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("ThemeName") .IsRequired() .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id"); @@ -768,18 +785,18 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Specificulture") .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Category") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); @@ -787,32 +804,32 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("DataType") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("DefaultValue") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Description") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Keyword") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Priority") .HasColumnType("int"); @@ -820,13 +837,13 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Value") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id", "Specificulture") .HasName("PRIMARY"); @@ -843,44 +860,44 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Specificulture") .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); b.Property("Description") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Extension") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("FileFolder") .IsRequired() .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("FileName") .IsRequired() .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("FileProperties") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("FileSize") .HasColumnType("bigint"); @@ -888,45 +905,45 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("FileType") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Priority") .HasColumnType("int"); b.Property("Source") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Tags") .HasColumnType("varchar(400)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("TargetUrl") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Title") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id", "Specificulture") .HasName("PRIMARY"); @@ -941,61 +958,61 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Specificulture") .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); b.Property("Description") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("EdmTemplate") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Fields") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("FormTemplate") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Image") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Name") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("PageSize") .HasColumnType("int"); b.Property("PostType") - .HasColumnType("longtext"); + .HasColumnType("longtext CHARACTER SET utf8mb4"); b.Property("Priority") .HasColumnType("int"); @@ -1003,23 +1020,23 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Template") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Thumbnail") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Title") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Type") .HasColumnType("int"); @@ -1036,18 +1053,18 @@ protected override void BuildModel(ModelBuilder modelBuilder) { b.Property("Id") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Specificulture") .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); @@ -1055,16 +1072,16 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Fields") .IsRequired() .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("ModuleId") .HasColumnType("int"); @@ -1081,13 +1098,13 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Value") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id", "Specificulture") .HasName("PRIMARY"); @@ -1110,34 +1127,34 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Specificulture") .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); b.Property("Description") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Image") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("ModuleId") .HasColumnType("int"); @@ -1151,8 +1168,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id", "Specificulture") .HasName("PRIMARY"); @@ -1171,122 +1188,123 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Specificulture") .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Content") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); b.Property("CssClass") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Excerpt") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("ExtraFields") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Icon") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Image") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("Layout") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Level") .HasColumnType("int"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("PageSize") .HasColumnType("int"); b.Property("PostType") - .HasColumnType("longtext"); + .HasColumnType("longtext CHARACTER SET utf8mb4"); b.Property("Priority") .HasColumnType("int"); b.Property("SeoDescription") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("SeoKeywords") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("SeoName") .HasColumnType("varchar(500)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("SeoTitle") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("StaticUrl") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Tags") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Template") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Title") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Type") + .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Views") .HasColumnType("int"); @@ -1306,34 +1324,34 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Specificulture") .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); b.Property("Description") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Image") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("ModuleId") .HasColumnType("int"); @@ -1350,8 +1368,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id", "Specificulture") .HasName("PRIMARY"); @@ -1370,34 +1388,34 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Specificulture") .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); b.Property("Description") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Image") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("PageId") .HasColumnType("int"); @@ -1411,8 +1429,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id", "Specificulture") .HasName("PRIMARY"); @@ -1432,21 +1450,21 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); b.Property("Description") .HasColumnType("varchar(450)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Icon") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); @@ -1456,8 +1474,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Priority") .HasColumnType("int"); @@ -1465,23 +1483,23 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("TextDefault") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("TextKeyword") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Url") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id"); @@ -1496,29 +1514,29 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); b.Property("Description") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Image") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("PageId") .HasColumnType("int"); @@ -1532,13 +1550,13 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id"); b.HasIndex("PageId") - .HasName("FK_mix_portal_page_navigation_mix_portal_page"); + .HasDatabaseName("FK_mix_portal_page_navigation_mix_portal_page"); b.HasIndex("ParentId"); @@ -1547,18 +1565,14 @@ protected override void BuildModel(ModelBuilder modelBuilder) modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPageRole", b => { - b.Property("RoleId") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("PageId") + b.Property("Id") + .ValueGeneratedOnAdd() .HasColumnType("int"); b.Property("CreatedBy") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("varchar(50) CHARACTER SET utf8mb4"); b.Property("CreatedDateTime") .HasColumnType("datetime"); @@ -1567,21 +1581,28 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("datetime"); b.Property("ModifiedBy") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("varchar(50) CHARACTER SET utf8mb4"); + + b.Property("PageId") + .HasColumnType("int"); b.Property("Priority") .HasColumnType("int"); + b.Property("RoleId") + .HasMaxLength(50) + .HasColumnType("varchar(50) CHARACTER SET utf8mb4"); + b.Property("Status") .IsRequired() - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("varchar(50) CHARACTER SET utf8mb4"); - b.HasKey("RoleId", "PageId") - .HasName("PRIMARY"); + b.HasKey("Id") + .HasName("PK_mix_portal_page_role"); b.HasIndex("PageId"); @@ -1595,449 +1616,233 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Specificulture") .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Content") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("CreatedBy") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("CreatedDateTime") - .HasColumnType("datetime"); - - b.Property("Excerpt") - .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("ExtraFields") - .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("ExtraProperties") - .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Icon") - .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Image") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("LastModified") - .HasColumnType("datetime"); - - b.Property("ModifiedBy") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Priority") - .HasColumnType("int"); - - b.Property("PublishedDateTime") - .HasColumnType("datetime"); - - b.Property("SeoDescription") - .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("SeoKeywords") - .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("SeoName") - .HasColumnType("varchar(500)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("SeoTitle") - .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Source") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Status") - .IsRequired() - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Tags") - .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Template") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Thumbnail") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Title") - .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Type") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Views") - .HasColumnType("int"); - - b.HasKey("Id", "Specificulture") - .HasName("PRIMARY"); - - b.HasIndex("Specificulture"); - - b.ToTable("mix_post"); - }); - - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostMedia", b => - { - b.Property("Id") - .HasColumnType("int"); - - b.Property("Specificulture") - .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("CreatedBy") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("CreatedDateTime") - .HasColumnType("datetime"); - - b.Property("Description") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Image") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("LastModified") - .HasColumnType("datetime"); - - b.Property("MediaId") - .HasColumnType("int"); - - b.Property("ModifiedBy") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Position") - .HasColumnType("int"); - - b.Property("PostId") - .HasColumnType("int"); - - b.Property("Priority") - .HasColumnType("int"); - - b.Property("Status") - .IsRequired() - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.HasKey("Id", "Specificulture") - .HasName("PRIMARY"); - - b.HasIndex("MediaId", "Specificulture"); - - b.HasIndex("PostId", "Specificulture"); - - b.ToTable("mix_post_media"); - }); - - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostModule", b => - { - b.Property("Id") - .HasColumnType("int"); - - b.Property("Specificulture") - .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("CreatedBy") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("CreatedDateTime") - .HasColumnType("datetime"); - - b.Property("Description") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Image") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("LastModified") - .HasColumnType("datetime"); - - b.Property("ModifiedBy") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("ModuleId") - .HasColumnType("int"); - - b.Property("Position") - .HasColumnType("int"); - - b.Property("PostId") - .HasColumnType("int"); - - b.Property("Priority") - .HasColumnType("int"); - - b.Property("Status") - .IsRequired() - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.HasKey("Id", "Specificulture") - .HasName("PRIMARY"); - - b.HasIndex("ModuleId", "Specificulture"); - - b.HasIndex("PostId", "Specificulture"); - - b.ToTable("mix_post_module"); - }); - - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixRelatedAttributeData", b => - { - b.Property("Id") - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Specificulture") - .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("AttributeSetId") - .HasColumnType("int"); - - b.Property("AttributeSetName") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); - b.Property("DataId") - .IsRequired() - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("Excerpt") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("Description") - .HasColumnType("varchar(450)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("ExtraFields") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Icon") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("ParentId") - .IsRequired() - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("ParentType") - .IsRequired() - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Priority") .HasColumnType("int"); + b.Property("PublishedDateTime") + .HasColumnType("datetime"); + + b.Property("SeoDescription") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("SeoKeywords") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("SeoName") + .HasColumnType("varchar(500)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("SeoTitle") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Source") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Tags") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Template") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Thumbnail") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Title") + .HasColumnType("text") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Type") + .HasColumnType("varchar(50)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Views") + .HasColumnType("int"); b.HasKey("Id", "Specificulture") .HasName("PRIMARY"); - b.ToTable("mix_related_attribute_data"); + b.HasIndex("Specificulture"); + + b.ToTable("mix_post"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixRelatedAttributeSet", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostAssociation", b => { b.Property("Id") .HasColumnType("int"); b.Property("Specificulture") .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("AttributeSetId") - .HasColumnType("int"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); b.Property("Description") .HasColumnType("varchar(450)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("DestinationId") + .HasColumnType("int"); b.Property("Image") .HasColumnType("varchar(450)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("ParentId") + b.Property("Priority") .HasColumnType("int"); - b.Property("ParentType") - .IsRequired() - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Priority") + b.Property("SourceId") .HasColumnType("int"); b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id", "Specificulture") .HasName("PRIMARY"); - b.ToTable("mix_related_attribute_set"); + b.HasIndex("DestinationId", "Specificulture"); + + b.HasIndex("SourceId", "Specificulture"); + + b.ToTable("mix_post_association"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixRelatedData", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostMedia", b => { b.Property("Id") .HasColumnType("int"); b.Property("Specificulture") .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("AttributeSetId") - .HasColumnType("int"); - - b.Property("AttributeSetName") - .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); - b.Property("DataId") - .IsRequired() - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - b.Property("Description") - .HasColumnType("varchar(450)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); + b.Property("MediaId") + .HasColumnType("int"); + b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("ParentId") - .IsRequired() - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("Position") + .HasColumnType("int"); - b.Property("ParentType") - .IsRequired() - .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + b.Property("PostId") + .HasColumnType("int"); b.Property("Priority") .HasColumnType("int"); @@ -2045,77 +1850,81 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("Type") - .HasColumnType("int"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id", "Specificulture") .HasName("PRIMARY"); - b.ToTable("mix_related_data"); + b.HasIndex("MediaId", "Specificulture"); + + b.HasIndex("PostId", "Specificulture"); + + b.ToTable("mix_post_media"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixRelatedPost", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostModule", b => { b.Property("Id") .HasColumnType("int"); b.Property("Specificulture") .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); b.Property("Description") - .HasColumnType("varchar(450)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); - - b.Property("DestinationId") - .HasColumnType("int"); + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Image") - .HasColumnType("varchar(450)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .HasColumnType("varchar(250)") + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); - b.Property("Priority") + b.Property("ModuleId") .HasColumnType("int"); - b.Property("SourceId") + b.Property("Position") + .HasColumnType("int"); + + b.Property("PostId") + .HasColumnType("int"); + + b.Property("Priority") .HasColumnType("int"); b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id", "Specificulture") .HasName("PRIMARY"); - b.HasIndex("DestinationId", "Specificulture"); + b.HasIndex("ModuleId", "Specificulture"); - b.HasIndex("SourceId", "Specificulture"); + b.HasIndex("PostId", "Specificulture"); - b.ToTable("mix_related_post"); + b.ToTable("mix_post_module"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTemplate", b => @@ -2127,13 +1936,13 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Content") .IsRequired() .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); @@ -2141,63 +1950,63 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Extension") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("FileFolder") .IsRequired() .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("FileName") .IsRequired() .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("FolderType") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("MobileContent") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Priority") .HasColumnType("int"); b.Property("Scripts") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("SpaContent") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Styles") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("ThemeId") .HasColumnType("int"); @@ -2205,13 +2014,13 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("ThemeName") .IsRequired() .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id"); b.HasIndex("ThemeId") - .HasName("IX_mix_template_file_TemplateId"); + .HasDatabaseName("IX_mix_template_file_TemplateId"); b.ToTable("mix_template"); }); @@ -2224,35 +2033,35 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); b.Property("Image") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Name") .IsRequired() .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("PreviewUrl") .HasColumnType("varchar(450)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Priority") .HasColumnType("int"); @@ -2260,18 +2069,18 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Thumbnail") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Title") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.HasKey("Id"); @@ -2285,48 +2094,48 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Specificulture") .HasColumnType("varchar(10)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Alias") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("CreatedDateTime") .HasColumnType("datetime"); b.Property("Description") .HasColumnType("text") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("LastModified") .HasColumnType("datetime"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Priority") .HasColumnType("int"); b.Property("SourceId") .HasColumnType("varchar(250)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") - .HasAnnotation("MySql:CharSet", "utf8") - .HasAnnotation("MySql:Collation", "utf8_unicode_ci"); + .UseCollation("utf8_unicode_ci") + .HasCharSet("utf8"); b.Property("Type") .HasColumnType("int"); @@ -2339,38 +2148,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.ToTable("mix_url_alias"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeField", b => - { - b.HasOne("Mix.Cms.Lib.Models.Cms.MixAttributeSet", "AttributeSet") - .WithMany("MixAttributeFieldAttributeSet") - .HasForeignKey("AttributeSetId") - .HasConstraintName("FK_mix_attribute_field_mix_attribute_set") - .IsRequired(); - - b.HasOne("Mix.Cms.Lib.Models.Cms.MixAttributeSet", "Reference") - .WithMany("MixAttributeFieldReference") - .HasForeignKey("ReferenceId") - .HasConstraintName("FK_mix_attribute_field_mix_attribute_set1"); - }); - - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeSetData", b => - { - b.HasOne("Mix.Cms.Lib.Models.Cms.MixAttributeSet", "AttributeSet") - .WithMany("MixAttributeSetData") - .HasForeignKey("AttributeSetId") - .HasConstraintName("FK_mix_attribute_set_data_mix_attribute_set") - .IsRequired(); - }); - - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeSetReference", b => - { - b.HasOne("Mix.Cms.Lib.Models.Cms.MixAttributeSet", "AttributeSet") - .WithMany("MixAttributeSetReference") - .HasForeignKey("AttributeSetId") - .HasConstraintName("FK_mix_attribute_set_reference_mix_attribute_set") - .IsRequired(); - }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixConfiguration", b => { b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") @@ -2380,6 +2157,19 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasPrincipalKey("Specificulture") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseData", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixDatabase", "MixDatabase") + .WithMany() + .HasForeignKey("MixDatabaseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("MixDatabase"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixFile", b => @@ -2388,6 +2178,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) .WithMany("MixFile") .HasForeignKey("ThemeId") .HasConstraintName("FK_mix_file_mix_template"); + + b.Navigation("Theme"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixLanguage", b => @@ -2399,6 +2191,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasPrincipalKey("Specificulture") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); + + b.Navigation("SpecificultureNavigation"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModule", b => @@ -2410,6 +2204,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasPrincipalKey("Specificulture") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); + + b.Navigation("SpecificultureNavigation"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModuleData", b => @@ -2430,6 +2226,12 @@ protected override void BuildModel(ModelBuilder modelBuilder) .WithMany("MixModuleData") .HasForeignKey("PostId", "Specificulture") .HasConstraintName("FK_mix_module_data_mix_post"); + + b.Navigation("MixModule"); + + b.Navigation("MixPage"); + + b.Navigation("MixPost"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModulePost", b => @@ -2445,6 +2247,10 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasForeignKey("PostId", "Specificulture") .HasConstraintName("FK_Mix_Module_Post_Mix_Post") .IsRequired(); + + b.Navigation("MixModule"); + + b.Navigation("MixPost"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPage", b => @@ -2455,6 +2261,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasConstraintName("FK_Mix_Page_Mix_Culture") .HasPrincipalKey("Specificulture") .IsRequired(); + + b.Navigation("SpecificultureNavigation"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPageModule", b => @@ -2471,6 +2279,10 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasForeignKey("PageId", "Specificulture") .HasConstraintName("FK_Mix_Page_Module_Mix_Page") .IsRequired(); + + b.Navigation("MixModule"); + + b.Navigation("MixPage"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPagePost", b => @@ -2486,6 +2298,10 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasForeignKey("PostId", "Specificulture") .HasConstraintName("FK_Mix_Page_Post_Mix_Post") .IsRequired(); + + b.Navigation("MixPage"); + + b.Navigation("MixPost"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPageNavigation", b => @@ -2501,6 +2317,10 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasForeignKey("ParentId") .HasConstraintName("FK_mix_portal_page_navigation_mix_portal_page1") .IsRequired(); + + b.Navigation("Page"); + + b.Navigation("Parent"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPageRole", b => @@ -2511,6 +2331,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasConstraintName("FK_mix_portal_page_role_mix_portal_page") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); + + b.Navigation("Page"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPost", b => @@ -2521,6 +2343,27 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasConstraintName("FK_Mix_Post_Mix_Culture") .HasPrincipalKey("Specificulture") .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostAssociation", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixRelatedPostMixPost") + .HasForeignKey("DestinationId", "Specificulture") + .HasConstraintName("FK_mix_post_association_mix_post1") + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "S") + .WithMany("MixRelatedPostS") + .HasForeignKey("SourceId", "Specificulture") + .HasConstraintName("FK_mix_post_association_mix_post") + .IsRequired(); + + b.Navigation("MixPost"); + + b.Navigation("S"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostMedia", b => @@ -2536,6 +2379,10 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasForeignKey("PostId", "Specificulture") .HasConstraintName("FK_mix_post_media_mix_post") .IsRequired(); + + b.Navigation("MixMedia"); + + b.Navigation("MixPost"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostModule", b => @@ -2552,30 +2399,10 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasForeignKey("PostId", "Specificulture") .HasConstraintName("FK_Mix_Post_Module_Mix_Post") .IsRequired(); - }); - - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixRelatedAttributeSet", b => - { - b.HasOne("Mix.Cms.Lib.Models.Cms.MixAttributeSet", "IdNavigation") - .WithMany("MixRelatedAttributeSet") - .HasForeignKey("Id") - .HasConstraintName("FK_mix_related_attribute_set_mix_attribute_set") - .IsRequired(); - }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixRelatedPost", b => - { - b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") - .WithMany("MixRelatedPostMixPost") - .HasForeignKey("DestinationId", "Specificulture") - .HasConstraintName("FK_mix_related_post_mix_post1") - .IsRequired(); + b.Navigation("MixModule"); - b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "S") - .WithMany("MixRelatedPostS") - .HasForeignKey("SourceId", "Specificulture") - .HasConstraintName("FK_mix_related_post_mix_post") - .IsRequired(); + b.Navigation("MixPost"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTemplate", b => @@ -2585,6 +2412,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasForeignKey("ThemeId") .HasConstraintName("FK_mix_template_mix_theme") .IsRequired(); + + b.Navigation("Theme"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixUrlAlias", b => @@ -2596,6 +2425,81 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasPrincipalKey("Specificulture") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCulture", b => + { + b.Navigation("MixConfiguration"); + + b.Navigation("MixLanguage"); + + b.Navigation("MixModule"); + + b.Navigation("MixPage"); + + b.Navigation("MixPost"); + + b.Navigation("MixUrlAlias"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixMedia", b => + { + b.Navigation("MixPostMedia"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModule", b => + { + b.Navigation("MixModuleData"); + + b.Navigation("MixModulePost"); + + b.Navigation("MixPageModule"); + + b.Navigation("MixPostModule"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPage", b => + { + b.Navigation("MixModuleData"); + + b.Navigation("MixPageModule"); + + b.Navigation("MixPagePost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPage", b => + { + b.Navigation("MixPortalPageNavigationPage"); + + b.Navigation("MixPortalPageNavigationParent"); + + b.Navigation("MixPortalPageRole"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPost", b => + { + b.Navigation("MixModuleData"); + + b.Navigation("MixModulePost"); + + b.Navigation("MixPagePost"); + + b.Navigation("MixPostMedia"); + + b.Navigation("MixPostModule"); + + b.Navigation("MixRelatedPostMixPost"); + + b.Navigation("MixRelatedPostS"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTheme", b => + { + b.Navigation("MixFile"); + + b.Navigation("MixTemplate"); }); #pragma warning restore 612, 618 } diff --git a/src/Mix.Cms.Lib/Migrations/PostgresqlMixCms/20210119170618_Init.Designer.cs b/src/Mix.Cms.Lib/Migrations/PostgresqlMixCms/20210119170618_Init.Designer.cs index 8716e10eb..2eed36d4f 100644 --- a/src/Mix.Cms.Lib/Migrations/PostgresqlMixCms/20210119170618_Init.Designer.cs +++ b/src/Mix.Cms.Lib/Migrations/PostgresqlMixCms/20210119170618_Init.Designer.cs @@ -21,24 +21,13 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasAnnotation("Relational:MaxIdentifierLength", 63) .HasAnnotation("ProductVersion", "5.0.1"); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeField", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCache", b => { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .UseIdentityByDefaultColumn(); - - b.Property("AttributeSetId") - .HasColumnType("integer"); - - b.Property("AttributeSetName") - .HasColumnType("varchar(250)") + b.Property("Id") + .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Configurations") - .HasColumnType("text"); - b.Property("CreatedBy") .HasColumnType("varchar(50)") .UseCollation("und-x-icu") @@ -47,31 +36,8 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("CreatedDateTime") .HasColumnType("timestamp without time zone"); - b.Property("DataType") - .IsRequired() - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("DefaultValue") - .HasColumnType("text") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("IsEncrypt") - .HasColumnType("boolean"); - - b.Property("IsMultiple") - .HasColumnType("boolean"); - - b.Property("IsRequire") - .HasColumnType("boolean"); - - b.Property("IsSelect") - .HasColumnType("boolean"); - - b.Property("IsUnique") - .HasColumnType("boolean"); + b.Property("ExpiredDateTime") + .HasColumnType("timestamp without time zone"); b.Property("LastModified") .HasColumnType("timestamp without time zone"); @@ -81,102 +47,84 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Name") - .IsRequired() - .HasColumnType("varchar(250)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Options") - .HasColumnType("text") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Priority") .HasColumnType("integer"); - b.Property("ReferenceId") - .HasColumnType("integer"); - - b.Property("Regex") - .HasColumnType("varchar(250)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Title") - .HasColumnType("varchar(250)") + b.Property("Value") + .IsRequired() + .HasColumnType("text") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); b.HasKey("Id"); - b.HasIndex("AttributeSetId"); - - b.HasIndex("ReferenceId"); + b.HasIndex("ExpiredDateTime") + .HasDatabaseName("Index_ExpiresAtTime"); - b.ToTable("mix_attribute_field"); + b.ToTable("mix_cache"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeSet", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCmsUser", b => { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .UseIdentityByDefaultColumn(); - - b.Property("CreatedBy") + b.Property("Id") .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("CreatedDateTime") - .HasColumnType("timestamp without time zone"); - - b.Property("Description") + b.Property("Address") .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("EdmAutoSend") - .HasColumnType("boolean"); - - b.Property("EdmFrom") + b.Property("Avatar") .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("EdmSubject") - .HasColumnType("varchar(250)") + b.Property("CreatedBy") + .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("EdmTemplate") + b.Property("CreatedDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("Email") .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("FormTemplate") - .HasColumnType("varchar(250)") + b.Property("FirstName") + .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("LastModified") .HasColumnType("timestamp without time zone"); + b.Property("LastName") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("MiddleName") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("ModifiedBy") .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Name") - .IsRequired() - .HasColumnType("varchar(250)") + b.Property("PhoneNumber") + .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); @@ -189,39 +137,27 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Title") - .IsRequired() + b.Property("Username") .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Type") - .IsRequired() - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - b.HasKey("Id"); - b.ToTable("mix_attribute_set"); + b.ToTable("mix_cms_user"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeSetData", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixConfiguration", b => { - b.Property("Id") - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Id") + .HasColumnType("integer"); b.Property("Specificulture") .HasColumnType("varchar(10)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("AttributeSetId") - .HasColumnType("integer"); - - b.Property("AttributeSetName") + b.Property("Category") .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); @@ -234,6 +170,23 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("CreatedDateTime") .HasColumnType("timestamp without time zone"); + b.Property("DataType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Keyword") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("LastModified") .HasColumnType("timestamp without time zone"); @@ -251,23 +204,30 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Value") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + b.HasKey("Id", "Specificulture") - .HasName("PK_mix_attribute_set_data"); + .HasName("PK_mix_configuration"); - b.HasIndex("AttributeSetId"); + b.HasIndex("Specificulture"); - b.ToTable("mix_attribute_set_data"); + b.ToTable("mix_configuration"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeSetReference", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCulture", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer") .UseIdentityByDefaultColumn(); - b.Property("AttributeSetId") - .HasColumnType("integer"); + b.Property("Alias") + .HasColumnType("varchar(150)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") @@ -278,32 +238,43 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasColumnType("timestamp without time zone"); b.Property("Description") - .HasColumnType("varchar(450)") + .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Image") - .HasColumnType("varchar(450)") + b.Property("FullName") + .HasColumnType("varchar(150)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Icon") + .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("LastModified") .HasColumnType("timestamp without time zone"); - b.Property("ModifiedBy") + b.Property("Lcid") .HasColumnType("varchar(50)") + .HasColumnName("LCID") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("ParentId") - .HasColumnType("integer"); - - b.Property("ParentType") - .HasColumnType("integer"); + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Priority") .HasColumnType("integer"); + b.Property("Specificulture") + .IsRequired() + .HasColumnType("varchar(10)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") @@ -312,180 +283,207 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.HasKey("Id"); - b.HasIndex("AttributeSetId"); + b.HasIndex("Specificulture") + .IsUnique() + .HasDatabaseName("IX_Mix_Culture"); - b.ToTable("mix_attribute_set_reference"); + b.ToTable("mix_culture"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeSetValue", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabase", b => { - b.Property("Id") + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .UseIdentityByDefaultColumn(); + + b.Property("CreatedBy") .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Specificulture") - .HasColumnType("varchar(10)") + b.Property("CreatedDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("Description") + .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("AttributeFieldId") - .HasColumnType("integer"); + b.Property("EdmAutoSend") + .HasColumnType("boolean"); - b.Property("AttributeFieldName") - .IsRequired() - .HasColumnType("varchar(50)") + b.Property("EdmFrom") + .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("AttributeSetName") + b.Property("EdmSubject") .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("BooleanValue") - .HasColumnType("boolean"); + b.Property("EdmTemplate") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("CreatedBy") - .HasColumnType("varchar(50)") + b.Property("FormTemplate") + .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("CreatedDateTime") + b.Property("LastModified") .HasColumnType("timestamp without time zone"); - b.Property("DataId") - .IsRequired() + b.Property("ModifiedBy") .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("DataType") + b.Property("Name") .IsRequired() - .HasColumnType("varchar(50)") + .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("DateTimeValue") - .HasColumnType("timestamp without time zone"); - - b.Property("DoubleValue") - .HasColumnType("double precision"); + b.Property("Priority") + .HasColumnType("integer"); - b.Property("EncryptKey") + b.Property("Status") + .IsRequired() .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("EncryptType") - .HasColumnType("integer"); - - b.Property("EncryptValue") - .HasColumnType("text") + b.Property("Title") + .IsRequired() + .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("IntegerValue") - .HasColumnType("integer"); - - b.Property("LastModified") - .HasColumnType("timestamp without time zone"); - - b.Property("ModifiedBy") + b.Property("Type") + .IsRequired() .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Priority") - .HasColumnType("integer"); + b.HasKey("Id"); - b.Property("Regex") - .HasColumnType("varchar(250)") + b.ToTable("mix_database"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseColumn", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .UseIdentityByDefaultColumn(); + + b.Property("Configurations") + .HasColumnType("text"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Status") + b.Property("CreatedDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("DataType") .IsRequired() .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("StringValue") + b.Property("DefaultValue") .HasColumnType("text") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.HasKey("Id", "Specificulture") - .HasName("PK_mix_attribute_set_value"); + b.Property("IsEncrypt") + .HasColumnType("boolean"); - b.HasIndex("DataId"); + b.Property("IsMultiple") + .HasColumnType("boolean"); - b.ToTable("mix_attribute_set_value"); - }); + b.Property("IsRequire") + .HasColumnType("boolean"); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCache", b => - { - b.Property("Id") - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("IsSelect") + .HasColumnType("boolean"); - b.Property("CreatedBy") - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("IsUnique") + .HasColumnType("boolean"); - b.Property("CreatedDateTime") + b.Property("LastModified") .HasColumnType("timestamp without time zone"); - b.Property("ExpiredDateTime") - .HasColumnType("timestamp without time zone"); + b.Property("MixDatabaseId") + .HasColumnType("integer"); - b.Property("LastModified") - .HasColumnType("timestamp without time zone"); + b.Property("MixDatabaseName") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Name") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Options") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Priority") .HasColumnType("integer"); + b.Property("ReferenceId") + .HasColumnType("integer"); + + b.Property("Regex") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Value") - .IsRequired() - .HasColumnType("text") + b.Property("Title") + .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); b.HasKey("Id"); - b.HasIndex("ExpiredDateTime") - .HasDatabaseName("Index_ExpiresAtTime"); + b.HasIndex("MixDatabaseId"); - b.ToTable("mix_cache"); + b.HasIndex("ReferenceId"); + + b.ToTable("mix_database_column"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCmsUser", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseData", b => { b.Property("Id") .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Address") - .HasColumnType("varchar(250)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Avatar") - .HasColumnType("varchar(250)") + b.Property("Specificulture") + .HasColumnType("varchar(10)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); @@ -497,26 +495,14 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("CreatedDateTime") .HasColumnType("timestamp without time zone"); - b.Property("Email") - .HasColumnType("varchar(250)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("FirstName") - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("LastModified") .HasColumnType("timestamp without time zone"); - b.Property("LastName") - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("MixDatabaseId") + .HasColumnType("integer"); - b.Property("MiddleName") - .HasColumnType("varchar(50)") + b.Property("MixDatabaseName") + .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); @@ -525,11 +511,6 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("PhoneNumber") - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Priority") .HasColumnType("integer"); @@ -539,31 +520,24 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Username") - .HasColumnType("varchar(250)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_database_data"); - b.HasKey("Id"); + b.HasIndex("MixDatabaseId"); - b.ToTable("mix_cms_user"); + b.ToTable("mix_database_data"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixConfiguration", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseDataAssociation", b => { - b.Property("Id") - .HasColumnType("integer"); + b.Property("Id") + .HasColumnType("text"); b.Property("Specificulture") .HasColumnType("varchar(10)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Category") - .HasColumnType("varchar(250)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("CreatedBy") .HasColumnType("varchar(50)") .UseCollation("und-x-icu") @@ -572,27 +546,41 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("CreatedDateTime") .HasColumnType("timestamp without time zone"); - b.Property("DataType") + b.Property("DataId") .IsRequired() .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Description") + .HasColumnType("varchar(450)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("timestamp without time zone"); + + b.Property("MixDatabaseId") + .HasColumnType("integer"); + + b.Property("MixDatabaseName") .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Keyword") - .IsRequired() + b.Property("ModifiedBy") .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("LastModified") - .HasColumnType("timestamp without time zone"); + b.Property("ParentId") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("ModifiedBy") + b.Property("ParentType") + .IsRequired() .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); @@ -606,31 +594,27 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Value") - .HasColumnType("text") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - b.HasKey("Id", "Specificulture") - .HasName("PK_mix_configuration"); + .HasName("PK_mix_database_data_association"); - b.HasIndex("Specificulture"); - - b.ToTable("mix_configuration"); + b.ToTable("mix_database_data_association"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCulture", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseDataValue", b => { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .UseIdentityByDefaultColumn(); + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Alias") - .HasColumnType("varchar(150)") + b.Property("Specificulture") + .HasColumnType("varchar(10)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("BooleanValue") + .HasColumnType("boolean"); + b.Property("CreatedBy") .HasColumnType("varchar(50)") .UseCollation("und-x-icu") @@ -639,27 +623,54 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("CreatedDateTime") .HasColumnType("timestamp without time zone"); - b.Property("Description") - .HasColumnType("varchar(250)") + b.Property("DataId") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("DataType") + .IsRequired() + .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("FullName") - .HasColumnType("varchar(150)") + b.Property("DateTimeValue") + .HasColumnType("timestamp without time zone"); + + b.Property("DoubleValue") + .HasColumnType("double precision"); + + b.Property("EncryptKey") + .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Icon") - .HasColumnType("varchar(50)") + b.Property("EncryptType") + .HasColumnType("integer"); + + b.Property("EncryptValue") + .HasColumnType("text") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("IntegerValue") + .HasColumnType("integer"); + b.Property("LastModified") .HasColumnType("timestamp without time zone"); - b.Property("Lcid") + b.Property("MixDatabaseColumnId") + .HasColumnType("integer"); + + b.Property("MixDatabaseColumnName") + .IsRequired() .HasColumnType("varchar(50)") - .HasColumnName("LCID") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("MixDatabaseName") + .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); @@ -671,9 +682,8 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("Priority") .HasColumnType("integer"); - b.Property("Specificulture") - .IsRequired() - .HasColumnType("varchar(10)") + b.Property("Regex") + .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); @@ -683,13 +693,17 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.HasKey("Id"); + b.Property("StringValue") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); - b.HasIndex("Specificulture") - .IsUnique() - .HasDatabaseName("IX_Mix_Culture"); + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_database_data_value"); - b.ToTable("mix_culture"); + b.HasIndex("DataId"); + + b.ToTable("mix_database_data_value"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixFile", b => @@ -1293,6 +1307,7 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Type") + .IsRequired() .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1557,245 +1572,53 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPageRole", b => - { - b.Property("RoleId") - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("PageId") - .HasColumnType("integer"); - - b.Property("CreatedBy") - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("CreatedDateTime") - .HasColumnType("timestamp without time zone"); - - b.Property("Id") - .HasColumnType("integer"); - - b.Property("LastModified") - .HasColumnType("timestamp without time zone"); - - b.Property("ModifiedBy") - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Priority") - .HasColumnType("integer"); - - b.Property("Status") - .IsRequired() - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.HasKey("RoleId", "PageId") - .HasName("PK_mix_portal_page_role"); - - b.HasIndex("PageId"); - - b.ToTable("mix_portal_page_role"); - }); - - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPost", b => - { - b.Property("Id") - .HasColumnType("integer"); - - b.Property("Specificulture") - .HasColumnType("varchar(10)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Content") - .HasColumnType("text") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("CreatedBy") - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("CreatedDateTime") - .HasColumnType("timestamp without time zone"); - - b.Property("Excerpt") - .HasColumnType("text") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("ExtraFields") - .HasColumnType("text") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("ExtraProperties") - .HasColumnType("text") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Icon") - .HasColumnType("text") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Image") - .HasColumnType("varchar(250)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("LastModified") - .HasColumnType("timestamp without time zone"); - - b.Property("ModifiedBy") - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Priority") - .HasColumnType("integer"); - - b.Property("PublishedDateTime") - .HasColumnType("timestamp without time zone"); - - b.Property("SeoDescription") - .HasColumnType("text") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("SeoKeywords") - .HasColumnType("text") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("SeoName") - .HasColumnType("varchar(500)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("SeoTitle") - .HasColumnType("text") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Source") - .HasColumnType("varchar(250)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Status") - .IsRequired() - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Tags") - .HasColumnType("text") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Template") - .HasColumnType("varchar(250)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Thumbnail") - .HasColumnType("varchar(250)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Title") - .HasColumnType("text") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Type") - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Views") - .HasColumnType("integer"); - - b.HasKey("Id", "Specificulture") - .HasName("PK_mix_post"); - - b.HasIndex("Specificulture"); - - b.ToTable("mix_post"); - }); - - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostMedia", b => { b.Property("Id") - .HasColumnType("integer"); - - b.Property("Specificulture") - .HasColumnType("varchar(10)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .UseIdentityByDefaultColumn(); b.Property("CreatedBy") - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("character varying(50)"); b.Property("CreatedDateTime") .HasColumnType("timestamp without time zone"); - b.Property("Description") - .HasColumnType("varchar(250)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Image") - .HasColumnType("varchar(250)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("LastModified") .HasColumnType("timestamp without time zone"); - b.Property("MediaId") - .HasColumnType("integer"); - b.Property("ModifiedBy") - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Position") - .HasColumnType("integer"); + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("character varying(50)"); - b.Property("PostId") + b.Property("PageId") .HasColumnType("integer"); b.Property("Priority") .HasColumnType("integer"); + b.Property("RoleId") + .HasMaxLength(50) + .HasColumnType("character varying(50)"); + b.Property("Status") .IsRequired() - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.HasKey("Id", "Specificulture") - .HasName("PK_mix_post_media"); + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("character varying(50)"); - b.HasIndex("MediaId", "Specificulture"); + b.HasKey("Id") + .HasName("PK_mix_portal_page_role"); - b.HasIndex("PostId", "Specificulture"); + b.HasIndex("PageId"); - b.ToTable("mix_post_media"); + b.ToTable("mix_portal_page_role"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostModule", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPost", b => { b.Property("Id") .HasColumnType("integer"); @@ -1805,6 +1628,11 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Content") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("CreatedBy") .HasColumnType("varchar(50)") .UseCollation("und-x-icu") @@ -1813,8 +1641,23 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("CreatedDateTime") .HasColumnType("timestamp without time zone"); - b.Property("Description") - .HasColumnType("varchar(250)") + b.Property("Excerpt") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ExtraFields") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Icon") + .HasColumnType("text") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1831,109 +1674,80 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("ModuleId") - .HasColumnType("integer"); - - b.Property("Position") - .HasColumnType("integer"); - - b.Property("PostId") - .HasColumnType("integer"); - b.Property("Priority") .HasColumnType("integer"); - b.Property("Status") - .IsRequired() - .HasColumnType("varchar(50)") + b.Property("PublishedDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("SeoDescription") + .HasColumnType("text") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.HasKey("Id", "Specificulture") - .HasName("PK_mix_post_module"); - - b.HasIndex("ModuleId", "Specificulture"); - - b.HasIndex("PostId", "Specificulture"); - - b.ToTable("mix_post_module"); - }); - - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixRelatedAttributeData", b => - { - b.Property("Id") - .HasColumnType("varchar(50)") + b.Property("SeoKeywords") + .HasColumnType("text") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Specificulture") - .HasColumnType("varchar(10)") + b.Property("SeoName") + .HasColumnType("varchar(500)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("AttributeSetId") - .HasColumnType("integer"); - - b.Property("AttributeSetName") - .HasColumnType("varchar(250)") + b.Property("SeoTitle") + .HasColumnType("text") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("CreatedBy") - .HasColumnType("varchar(50)") + b.Property("Source") + .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("CreatedDateTime") - .HasColumnType("timestamp without time zone"); - - b.Property("DataId") + b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Description") - .HasColumnType("varchar(450)") + b.Property("Tags") + .HasColumnType("text") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("LastModified") - .HasColumnType("timestamp without time zone"); - - b.Property("ModifiedBy") - .HasColumnType("varchar(50)") + b.Property("Template") + .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("ParentId") - .IsRequired() - .HasColumnType("varchar(50)") + b.Property("Thumbnail") + .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("ParentType") - .IsRequired() - .HasColumnType("varchar(50)") + b.Property("Title") + .HasColumnType("text") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Priority") - .HasColumnType("integer"); - - b.Property("Status") - .IsRequired() + b.Property("Type") .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Views") + .HasColumnType("integer"); + b.HasKey("Id", "Specificulture") - .HasName("PK_mix_related_attribute_data"); + .HasName("PK_mix_post"); + + b.HasIndex("Specificulture"); - b.ToTable("mix_related_attribute_data"); + b.ToTable("mix_post"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixRelatedAttributeSet", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostAssociation", b => { b.Property("Id") .HasColumnType("integer"); @@ -1943,9 +1757,6 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("AttributeSetId") - .HasColumnType("integer"); - b.Property("CreatedBy") .HasColumnType("varchar(50)") .UseCollation("und-x-icu") @@ -1959,7 +1770,7 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("IdNavigationId") + b.Property("DestinationId") .HasColumnType("integer"); b.Property("Image") @@ -1975,16 +1786,10 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("ParentId") + b.Property("Priority") .HasColumnType("integer"); - b.Property("ParentType") - .IsRequired() - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Priority") + b.Property("SourceId") .HasColumnType("integer"); b.Property("Status") @@ -1994,14 +1799,16 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasAnnotation("MySql:CharSet", "utf8"); b.HasKey("Id", "Specificulture") - .HasName("PK_mix_related_attribute_set"); + .HasName("PK_mix_post_association"); + + b.HasIndex("DestinationId", "Specificulture"); - b.HasIndex("IdNavigationId"); + b.HasIndex("SourceId", "Specificulture"); - b.ToTable("mix_related_attribute_set"); + b.ToTable("mix_post_association"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixRelatedData", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostMedia", b => { b.Property("Id") .HasColumnType("integer"); @@ -2011,14 +1818,6 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("AttributeSetId") - .HasColumnType("integer"); - - b.Property("AttributeSetName") - .HasColumnType("varchar(250)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("CreatedBy") .HasColumnType("varchar(50)") .UseCollation("und-x-icu") @@ -2027,36 +1826,32 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("CreatedDateTime") .HasColumnType("timestamp without time zone"); - b.Property("DataId") - .IsRequired() - .HasColumnType("varchar(50)") + b.Property("Description") + .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Description") - .HasColumnType("varchar(450)") + b.Property("Image") + .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("LastModified") .HasColumnType("timestamp without time zone"); + b.Property("MediaId") + .HasColumnType("integer"); + b.Property("ModifiedBy") .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("ParentId") - .IsRequired() - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Position") + .HasColumnType("integer"); - b.Property("ParentType") - .IsRequired() - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("PostId") + .HasColumnType("integer"); b.Property("Priority") .HasColumnType("integer"); @@ -2067,16 +1862,17 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Type") - .HasColumnType("integer"); - b.HasKey("Id", "Specificulture") - .HasName("PK_mix_related_data"); + .HasName("PK_mix_post_media"); + + b.HasIndex("MediaId", "Specificulture"); + + b.HasIndex("PostId", "Specificulture"); - b.ToTable("mix_related_data"); + b.ToTable("mix_post_media"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixRelatedPost", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostModule", b => { b.Property("Id") .HasColumnType("integer"); @@ -2095,15 +1891,12 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasColumnType("timestamp without time zone"); b.Property("Description") - .HasColumnType("varchar(450)") + .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("DestinationId") - .HasColumnType("integer"); - b.Property("Image") - .HasColumnType("varchar(450)") + .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); @@ -2115,10 +1908,16 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Priority") + b.Property("ModuleId") .HasColumnType("integer"); - b.Property("SourceId") + b.Property("Position") + .HasColumnType("integer"); + + b.Property("PostId") + .HasColumnType("integer"); + + b.Property("Priority") .HasColumnType("integer"); b.Property("Status") @@ -2128,13 +1927,13 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .HasAnnotation("MySql:CharSet", "utf8"); b.HasKey("Id", "Specificulture") - .HasName("PK_mix_related_post"); + .HasName("PK_mix_post_module"); - b.HasIndex("DestinationId", "Specificulture"); + b.HasIndex("ModuleId", "Specificulture"); - b.HasIndex("SourceId", "Specificulture"); + b.HasIndex("PostId", "Specificulture"); - b.ToTable("mix_related_post"); + b.ToTable("mix_post_module"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTemplate", b => @@ -2360,28 +2159,6 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.ToTable("mix_url_alias"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeSetData", b => - { - b.HasOne("Mix.Cms.Lib.Models.Cms.MixAttributeSet", "AttributeSet") - .WithMany() - .HasForeignKey("AttributeSetId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("AttributeSet"); - }); - - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeSetReference", b => - { - b.HasOne("Mix.Cms.Lib.Models.Cms.MixAttributeSet", "AttributeSet") - .WithMany() - .HasForeignKey("AttributeSetId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("AttributeSet"); - }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixConfiguration", b => { b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") @@ -2395,6 +2172,17 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Navigation("SpecificultureNavigation"); }); + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseData", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixDatabase", "MixDatabase") + .WithMany() + .HasForeignKey("MixDatabaseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("MixDatabase"); + }); + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixFile", b => { b.HasOne("Mix.Cms.Lib.Models.Cms.MixTheme", "Theme") @@ -2570,6 +2358,25 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Navigation("SpecificultureNavigation"); }); + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostAssociation", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixRelatedPostMixPost") + .HasForeignKey("DestinationId", "Specificulture") + .HasConstraintName("FK_mix_post_association_mix_post1") + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "S") + .WithMany("MixRelatedPostS") + .HasForeignKey("SourceId", "Specificulture") + .HasConstraintName("FK_mix_post_association_mix_post") + .IsRequired(); + + b.Navigation("MixPost"); + + b.Navigation("S"); + }); + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostMedia", b => { b.HasOne("Mix.Cms.Lib.Models.Cms.MixMedia", "MixMedia") @@ -2609,34 +2416,6 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Navigation("MixPost"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixRelatedAttributeSet", b => - { - b.HasOne("Mix.Cms.Lib.Models.Cms.MixAttributeSet", "IdNavigation") - .WithMany() - .HasForeignKey("IdNavigationId"); - - b.Navigation("IdNavigation"); - }); - - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixRelatedPost", b => - { - b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") - .WithMany("MixRelatedPostMixPost") - .HasForeignKey("DestinationId", "Specificulture") - .HasConstraintName("FK_mix_related_post_mix_post1") - .IsRequired(); - - b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "S") - .WithMany("MixRelatedPostS") - .HasForeignKey("SourceId", "Specificulture") - .HasConstraintName("FK_mix_related_post_mix_post") - .IsRequired(); - - b.Navigation("MixPost"); - - b.Navigation("S"); - }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTemplate", b => { b.HasOne("Mix.Cms.Lib.Models.Cms.MixTheme", "Theme") diff --git a/src/Mix.Cms.Lib/Migrations/PostgresqlMixCms/20210119170618_Init.cs b/src/Mix.Cms.Lib/Migrations/PostgresqlMixCms/20210119170618_Init.cs index 2435b2650..5f3dd4dba 100644 --- a/src/Mix.Cms.Lib/Migrations/PostgresqlMixCms/20210119170618_Init.cs +++ b/src/Mix.Cms.Lib/Migrations/PostgresqlMixCms/20210119170618_Init.cs @@ -1,6 +1,8 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using System; +using Microsoft.EntityFrameworkCore.Migrations; +using Mix.Cms.Lib.Constants; +using Mix.Cms.Lib.Services; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; -using System; namespace Mix.Cms.Lib.Migrations.PostgresqlMixCms { @@ -8,98 +10,8 @@ public partial class Init : Migration { protected override void Up(MigrationBuilder migrationBuilder) { - migrationBuilder.CreateTable( - name: "mix_attribute_field", - columns: table => new - { - Id = table.Column(type: "integer", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - AttributeSetId = table.Column(type: "integer", nullable: false), - AttributeSetName = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), - Configurations = table.Column(type: "text", nullable: true), - Regex = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), - Title = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), - DataType = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu"), - DefaultValue = table.Column(type: "text", nullable: true, collation: "und-x-icu"), - Name = table.Column(type: "varchar(250)", nullable: false, collation: "und-x-icu"), - Options = table.Column(type: "text", nullable: true, collation: "und-x-icu"), - IsRequire = table.Column(type: "boolean", nullable: false), - IsEncrypt = table.Column(type: "boolean", nullable: false), - IsMultiple = table.Column(type: "boolean", nullable: false), - IsSelect = table.Column(type: "boolean", nullable: false), - IsUnique = table.Column(type: "boolean", nullable: false), - ReferenceId = table.Column(type: "integer", nullable: true), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), - LastModified = table.Column(type: "timestamp without time zone", nullable: true), - CreatedDateTime = table.Column(type: "timestamp without time zone", nullable: false), - Priority = table.Column(type: "integer", nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu") - }, - constraints: table => - { - table.PrimaryKey("PK_mix_attribute_field", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "mix_attribute_set", - columns: table => new - { - Id = table.Column(type: "integer", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - Type = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu"), - Title = table.Column(type: "varchar(250)", nullable: false, collation: "und-x-icu"), - Name = table.Column(type: "varchar(250)", nullable: false, collation: "und-x-icu"), - Description = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), - FormTemplate = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), - EdmTemplate = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), - EdmSubject = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), - EdmFrom = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), - EdmAutoSend = table.Column(type: "boolean", nullable: true), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), - LastModified = table.Column(type: "timestamp without time zone", nullable: true), - CreatedDateTime = table.Column(type: "timestamp without time zone", nullable: false), - Priority = table.Column(type: "integer", nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu") - }, - constraints: table => - { - table.PrimaryKey("PK_mix_attribute_set", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "mix_attribute_set_value", - columns: table => new - { - Id = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu"), - Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "und-x-icu"), - AttributeFieldId = table.Column(type: "integer", nullable: false), - AttributeFieldName = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu"), - AttributeSetName = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), - Regex = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), - DataType = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu"), - BooleanValue = table.Column(type: "boolean", nullable: true), - DataId = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu"), - DateTimeValue = table.Column(type: "timestamp without time zone", nullable: true), - DoubleValue = table.Column(type: "double precision", nullable: true), - IntegerValue = table.Column(type: "integer", nullable: true), - StringValue = table.Column(type: "text", nullable: true, collation: "und-x-icu"), - EncryptValue = table.Column(type: "text", nullable: true, collation: "und-x-icu"), - EncryptKey = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), - EncryptType = table.Column(type: "integer", nullable: false), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), - LastModified = table.Column(type: "timestamp without time zone", nullable: true), - CreatedDateTime = table.Column(type: "timestamp without time zone", nullable: false), - Priority = table.Column(type: "integer", nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu") - }, - constraints: table => - { - table.PrimaryKey("PK_mix_attribute_set_value", x => new { x.Id, x.Specificulture }); - }); - + MixService.SetConfig(MixConfigurations.CONST_MIXCORE_VERSION, "1.0.1"); + MixService.SaveSettings(); migrationBuilder.CreateTable( name: "mix_cache", columns: table => new @@ -170,69 +82,76 @@ protected override void Up(MigrationBuilder migrationBuilder) }); migrationBuilder.CreateTable( - name: "mix_media", + name: "mix_database", columns: table => new { - Id = table.Column(type: "integer", nullable: false), - Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "und-x-icu"), - Description = table.Column(type: "text", nullable: true, collation: "und-x-icu"), - Extension = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu"), - FileFolder = table.Column(type: "varchar(250)", nullable: false, collation: "und-x-icu"), - FileName = table.Column(type: "varchar(250)", nullable: false, collation: "und-x-icu"), - FileProperties = table.Column(type: "text", nullable: true, collation: "und-x-icu"), - FileSize = table.Column(type: "bigint", nullable: false), - FileType = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu"), - Title = table.Column(type: "text", nullable: true, collation: "und-x-icu"), - Tags = table.Column(type: "varchar(400)", nullable: true, collation: "und-x-icu"), - Source = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), - TargetUrl = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), - CreatedDateTime = table.Column(type: "timestamp without time zone", nullable: false), + Id = table.Column(type: "integer", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + Type = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu"), + Title = table.Column(type: "varchar(250)", nullable: false, collation: "und-x-icu"), + Name = table.Column(type: "varchar(250)", nullable: false, collation: "und-x-icu"), + Description = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), + FormTemplate = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), + EdmTemplate = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), + EdmSubject = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), + EdmFrom = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), + EdmAutoSend = table.Column(type: "boolean", nullable: true), ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), LastModified = table.Column(type: "timestamp without time zone", nullable: true), + CreatedDateTime = table.Column(type: "timestamp without time zone", nullable: false), Priority = table.Column(type: "integer", nullable: false), Status = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu") }, constraints: table => { - table.PrimaryKey("PRIMARY", x => new { x.Id, x.Specificulture }); + table.PrimaryKey("PK_mix_database", x => x.Id); }); migrationBuilder.CreateTable( - name: "mix_portal_page", + name: "mix_database_column", columns: table => new { Id = table.Column(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - Icon = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), - TextKeyword = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), - Url = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), - Description = table.Column(type: "varchar(450)", nullable: true, collation: "und-x-icu"), - TextDefault = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), - Level = table.Column(type: "integer", nullable: false), - CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), - CreatedDateTime = table.Column(type: "timestamp without time zone", nullable: false), + MixDatabaseId = table.Column(type: "integer", nullable: false), + MixDatabaseName = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), + Configurations = table.Column(type: "text", nullable: true), + Regex = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), + Title = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), + DataType = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu"), + DefaultValue = table.Column(type: "text", nullable: true, collation: "und-x-icu"), + Name = table.Column(type: "varchar(250)", nullable: false, collation: "und-x-icu"), + Options = table.Column(type: "text", nullable: true, collation: "und-x-icu"), + IsRequire = table.Column(type: "boolean", nullable: false), + IsEncrypt = table.Column(type: "boolean", nullable: false), + IsMultiple = table.Column(type: "boolean", nullable: false), + IsSelect = table.Column(type: "boolean", nullable: false), + IsUnique = table.Column(type: "boolean", nullable: false), + ReferenceId = table.Column(type: "integer", nullable: true), ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), LastModified = table.Column(type: "timestamp without time zone", nullable: true), + CreatedDateTime = table.Column(type: "timestamp without time zone", nullable: false), Priority = table.Column(type: "integer", nullable: false), Status = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu") }, constraints: table => { - table.PrimaryKey("PK_mix_portal_page", x => x.Id); + table.PrimaryKey("PK_mix_database_column", x => x.Id); }); migrationBuilder.CreateTable( - name: "mix_related_attribute_data", + name: "mix_database_data_association", columns: table => new { - Id = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu"), + Id = table.Column(type: "text", nullable: false), Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "und-x-icu"), DataId = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu"), ParentId = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu"), ParentType = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu"), - AttributeSetId = table.Column(type: "integer", nullable: false), - AttributeSetName = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), + MixDatabaseId = table.Column(type: "integer", nullable: false), + MixDatabaseName = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), Description = table.Column(type: "varchar(450)", nullable: true, collation: "und-x-icu"), CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), CreatedDateTime = table.Column(type: "timestamp without time zone", nullable: false), @@ -243,140 +162,115 @@ protected override void Up(MigrationBuilder migrationBuilder) }, constraints: table => { - table.PrimaryKey("PK_mix_related_attribute_data", x => new { x.Id, x.Specificulture }); + table.PrimaryKey("PK_mix_database_data_association", x => new { x.Id, x.Specificulture }); }); migrationBuilder.CreateTable( - name: "mix_related_data", + name: "mix_database_data_value", columns: table => new { - Id = table.Column(type: "integer", nullable: false), + Id = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu"), Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "und-x-icu"), + MixDatabaseColumnId = table.Column(type: "integer", nullable: false), + MixDatabaseColumnName = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu"), + MixDatabaseName = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), + Regex = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), + DataType = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu"), + BooleanValue = table.Column(type: "boolean", nullable: true), DataId = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu"), - Type = table.Column(type: "integer", nullable: false), - ParentId = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu"), - ParentType = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu"), - AttributeSetId = table.Column(type: "integer", nullable: false), - AttributeSetName = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), - Description = table.Column(type: "varchar(450)", nullable: true, collation: "und-x-icu"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), - CreatedDateTime = table.Column(type: "timestamp without time zone", nullable: false), + DateTimeValue = table.Column(type: "timestamp without time zone", nullable: true), + DoubleValue = table.Column(type: "double precision", nullable: true), + IntegerValue = table.Column(type: "integer", nullable: true), + StringValue = table.Column(type: "text", nullable: true, collation: "und-x-icu"), + EncryptValue = table.Column(type: "text", nullable: true, collation: "und-x-icu"), + EncryptKey = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), + EncryptType = table.Column(type: "integer", nullable: false), ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), - LastModified = table.Column(type: "timestamp without time zone", nullable: true), - Priority = table.Column(type: "integer", nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu") - }, - constraints: table => - { - table.PrimaryKey("PK_mix_related_data", x => new { x.Id, x.Specificulture }); - }); - - migrationBuilder.CreateTable( - name: "mix_theme", - columns: table => new - { - Id = table.Column(type: "integer", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - Thumbnail = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), - Image = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), - Title = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), - Name = table.Column(type: "varchar(250)", nullable: false, collation: "und-x-icu"), - PreviewUrl = table.Column(type: "varchar(450)", nullable: true, collation: "und-x-icu"), CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), - CreatedDateTime = table.Column(type: "timestamp without time zone", nullable: false), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), LastModified = table.Column(type: "timestamp without time zone", nullable: true), + CreatedDateTime = table.Column(type: "timestamp without time zone", nullable: false), Priority = table.Column(type: "integer", nullable: false), Status = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu") }, constraints: table => { - table.PrimaryKey("PK_mix_theme", x => x.Id); + table.PrimaryKey("PK_mix_database_data_value", x => new { x.Id, x.Specificulture }); }); migrationBuilder.CreateTable( - name: "mix_attribute_set_data", + name: "mix_media", columns: table => new { - Id = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu"), + Id = table.Column(type: "integer", nullable: false), Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "und-x-icu"), - AttributeSetId = table.Column(type: "integer", nullable: false), - AttributeSetName = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), + Description = table.Column(type: "text", nullable: true, collation: "und-x-icu"), + Extension = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu"), + FileFolder = table.Column(type: "varchar(250)", nullable: false, collation: "und-x-icu"), + FileName = table.Column(type: "varchar(250)", nullable: false, collation: "und-x-icu"), + FileProperties = table.Column(type: "text", nullable: true, collation: "und-x-icu"), + FileSize = table.Column(type: "bigint", nullable: false), + FileType = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu"), + Title = table.Column(type: "text", nullable: true, collation: "und-x-icu"), + Tags = table.Column(type: "varchar(400)", nullable: true, collation: "und-x-icu"), + Source = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), + TargetUrl = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), - LastModified = table.Column(type: "timestamp without time zone", nullable: true), CreatedDateTime = table.Column(type: "timestamp without time zone", nullable: false), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), + LastModified = table.Column(type: "timestamp without time zone", nullable: true), Priority = table.Column(type: "integer", nullable: false), Status = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu") }, constraints: table => { - table.PrimaryKey("PK_mix_attribute_set_data", x => new { x.Id, x.Specificulture }); - table.ForeignKey( - name: "FK_mix_attribute_set_data_mix_attribute_set_AttributeSetId", - column: x => x.AttributeSetId, - principalTable: "mix_attribute_set", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); + table.PrimaryKey("PRIMARY", x => new { x.Id, x.Specificulture }); }); migrationBuilder.CreateTable( - name: "mix_attribute_set_reference", + name: "mix_portal_page", columns: table => new { Id = table.Column(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - ParentId = table.Column(type: "integer", nullable: false), - ParentType = table.Column(type: "integer", nullable: false), + Icon = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), + TextKeyword = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), + Url = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), Description = table.Column(type: "varchar(450)", nullable: true, collation: "und-x-icu"), - Image = table.Column(type: "varchar(450)", nullable: true, collation: "und-x-icu"), - AttributeSetId = table.Column(type: "integer", nullable: false), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), + TextDefault = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), + Level = table.Column(type: "integer", nullable: false), CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), - LastModified = table.Column(type: "timestamp without time zone", nullable: true), CreatedDateTime = table.Column(type: "timestamp without time zone", nullable: false), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), + LastModified = table.Column(type: "timestamp without time zone", nullable: true), Priority = table.Column(type: "integer", nullable: false), Status = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu") }, constraints: table => { - table.PrimaryKey("PK_mix_attribute_set_reference", x => x.Id); - table.ForeignKey( - name: "FK_mix_attribute_set_reference_mix_attribute_set_AttributeSetId", - column: x => x.AttributeSetId, - principalTable: "mix_attribute_set", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); + table.PrimaryKey("PK_mix_portal_page", x => x.Id); }); migrationBuilder.CreateTable( - name: "mix_related_attribute_set", + name: "mix_theme", columns: table => new { - Id = table.Column(type: "integer", nullable: false), - Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "und-x-icu"), - AttributeSetId = table.Column(type: "integer", nullable: false), - ParentId = table.Column(type: "integer", nullable: false), - ParentType = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu"), - Description = table.Column(type: "varchar(450)", nullable: true, collation: "und-x-icu"), - Image = table.Column(type: "varchar(450)", nullable: true, collation: "und-x-icu"), + Id = table.Column(type: "integer", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + Thumbnail = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), + Image = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), + Title = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), + Name = table.Column(type: "varchar(250)", nullable: false, collation: "und-x-icu"), + PreviewUrl = table.Column(type: "varchar(450)", nullable: true, collation: "und-x-icu"), CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), CreatedDateTime = table.Column(type: "timestamp without time zone", nullable: false), ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), LastModified = table.Column(type: "timestamp without time zone", nullable: true), Priority = table.Column(type: "integer", nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu"), - IdNavigationId = table.Column(type: "integer", nullable: true) + Status = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu") }, constraints: table => { - table.PrimaryKey("PK_mix_related_attribute_set", x => new { x.Id, x.Specificulture }); - table.ForeignKey( - name: "FK_mix_related_attribute_set_mix_attribute_set_IdNavigationId", - column: x => x.IdNavigationId, - principalTable: "mix_attribute_set", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); + table.PrimaryKey("PK_mix_theme", x => x.Id); }); migrationBuilder.CreateTable( @@ -495,7 +389,7 @@ protected override void Up(MigrationBuilder migrationBuilder) Tags = table.Column(type: "text", nullable: true, collation: "und-x-icu"), Template = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), Title = table.Column(type: "text", nullable: true, collation: "und-x-icu"), - Type = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), + Type = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu"), PostType = table.Column(type: "text", nullable: true), Views = table.Column(type: "integer", nullable: true), PageSize = table.Column(type: "integer", nullable: true), @@ -588,6 +482,32 @@ protected override void Up(MigrationBuilder migrationBuilder) onDelete: ReferentialAction.Cascade); }); + migrationBuilder.CreateTable( + name: "mix_database_data", + columns: table => new + { + Id = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu"), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "und-x-icu"), + MixDatabaseId = table.Column(type: "integer", nullable: false), + MixDatabaseName = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), + LastModified = table.Column(type: "timestamp without time zone", nullable: true), + CreatedDateTime = table.Column(type: "timestamp without time zone", nullable: false), + Priority = table.Column(type: "integer", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu") + }, + constraints: table => + { + table.PrimaryKey("PK_mix_database_data", x => new { x.Id, x.Specificulture }); + table.ForeignKey( + name: "FK_mix_database_data_mix_database_MixDatabaseId", + column: x => x.MixDatabaseId, + principalTable: "mix_database", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + migrationBuilder.CreateTable( name: "mix_portal_page_navigation", columns: table => new @@ -626,15 +546,16 @@ protected override void Up(MigrationBuilder migrationBuilder) name: "mix_portal_page_role", columns: table => new { - Id = table.Column(type: "integer", nullable: false), + Id = table.Column(type: "integer", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), PageId = table.Column(type: "integer", nullable: false), - RoleId = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu"), - CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), + RoleId = table.Column(type: "character varying(50)", maxLength: 50, nullable: true), + CreatedBy = table.Column(type: "character varying(50)", unicode: false, maxLength: 50, nullable: true), CreatedDateTime = table.Column(type: "timestamp without time zone", nullable: false), - ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), + ModifiedBy = table.Column(type: "character varying(50)", unicode: false, maxLength: 50, nullable: true), LastModified = table.Column(type: "timestamp without time zone", nullable: true), Priority = table.Column(type: "integer", nullable: false), - Status = table.Column(type: "varchar(50)", nullable: false, collation: "und-x-icu") + Status = table.Column(type: "character varying(50)", unicode: false, maxLength: 50, nullable: false) }, constraints: table => { @@ -858,16 +779,15 @@ protected override void Up(MigrationBuilder migrationBuilder) }); migrationBuilder.CreateTable( - name: "mix_post_media", + name: "mix_post_association", columns: table => new { Id = table.Column(type: "integer", nullable: false), Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "und-x-icu"), - MediaId = table.Column(type: "integer", nullable: false), - PostId = table.Column(type: "integer", nullable: false), - Description = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), - Image = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), - Position = table.Column(type: "integer", nullable: false), + SourceId = table.Column(type: "integer", nullable: false), + DestinationId = table.Column(type: "integer", nullable: false), + Description = table.Column(type: "varchar(450)", nullable: true, collation: "und-x-icu"), + Image = table.Column(type: "varchar(450)", nullable: true, collation: "und-x-icu"), CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), CreatedDateTime = table.Column(type: "timestamp without time zone", nullable: false), ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), @@ -877,28 +797,28 @@ protected override void Up(MigrationBuilder migrationBuilder) }, constraints: table => { - table.PrimaryKey("PK_mix_post_media", x => new { x.Id, x.Specificulture }); + table.PrimaryKey("PK_mix_post_association", x => new { x.Id, x.Specificulture }); table.ForeignKey( - name: "FK_mix_post_media_mix_media", - columns: x => new { x.MediaId, x.Specificulture }, - principalTable: "mix_media", + name: "FK_mix_post_association_mix_post", + columns: x => new { x.SourceId, x.Specificulture }, + principalTable: "mix_post", principalColumns: new[] { "Id", "Specificulture" }, onDelete: ReferentialAction.Restrict); table.ForeignKey( - name: "FK_mix_post_media_mix_post", - columns: x => new { x.PostId, x.Specificulture }, + name: "FK_mix_post_association_mix_post1", + columns: x => new { x.DestinationId, x.Specificulture }, principalTable: "mix_post", principalColumns: new[] { "Id", "Specificulture" }, onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( - name: "mix_post_module", + name: "mix_post_media", columns: table => new { Id = table.Column(type: "integer", nullable: false), Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "und-x-icu"), - ModuleId = table.Column(type: "integer", nullable: false), + MediaId = table.Column(type: "integer", nullable: false), PostId = table.Column(type: "integer", nullable: false), Description = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), Image = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), @@ -912,15 +832,15 @@ protected override void Up(MigrationBuilder migrationBuilder) }, constraints: table => { - table.PrimaryKey("PK_mix_post_module", x => new { x.Id, x.Specificulture }); + table.PrimaryKey("PK_mix_post_media", x => new { x.Id, x.Specificulture }); table.ForeignKey( - name: "FK_Mix_Post_Module_Mix_Module1", - columns: x => new { x.ModuleId, x.Specificulture }, - principalTable: "mix_module", + name: "FK_mix_post_media_mix_media", + columns: x => new { x.MediaId, x.Specificulture }, + principalTable: "mix_media", principalColumns: new[] { "Id", "Specificulture" }, - onDelete: ReferentialAction.Cascade); + onDelete: ReferentialAction.Restrict); table.ForeignKey( - name: "FK_Mix_Post_Module_Mix_Post", + name: "FK_mix_post_media_mix_post", columns: x => new { x.PostId, x.Specificulture }, principalTable: "mix_post", principalColumns: new[] { "Id", "Specificulture" }, @@ -928,15 +848,16 @@ protected override void Up(MigrationBuilder migrationBuilder) }); migrationBuilder.CreateTable( - name: "mix_related_post", + name: "mix_post_module", columns: table => new { Id = table.Column(type: "integer", nullable: false), Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "und-x-icu"), - SourceId = table.Column(type: "integer", nullable: false), - DestinationId = table.Column(type: "integer", nullable: false), - Description = table.Column(type: "varchar(450)", nullable: true, collation: "und-x-icu"), - Image = table.Column(type: "varchar(450)", nullable: true, collation: "und-x-icu"), + ModuleId = table.Column(type: "integer", nullable: false), + PostId = table.Column(type: "integer", nullable: false), + Description = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), + Image = table.Column(type: "varchar(250)", nullable: true, collation: "und-x-icu"), + Position = table.Column(type: "integer", nullable: false), CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), CreatedDateTime = table.Column(type: "timestamp without time zone", nullable: false), ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "und-x-icu"), @@ -946,46 +867,21 @@ protected override void Up(MigrationBuilder migrationBuilder) }, constraints: table => { - table.PrimaryKey("PK_mix_related_post", x => new { x.Id, x.Specificulture }); + table.PrimaryKey("PK_mix_post_module", x => new { x.Id, x.Specificulture }); table.ForeignKey( - name: "FK_mix_related_post_mix_post", - columns: x => new { x.SourceId, x.Specificulture }, - principalTable: "mix_post", + name: "FK_Mix_Post_Module_Mix_Module1", + columns: x => new { x.ModuleId, x.Specificulture }, + principalTable: "mix_module", principalColumns: new[] { "Id", "Specificulture" }, - onDelete: ReferentialAction.Restrict); + onDelete: ReferentialAction.Cascade); table.ForeignKey( - name: "FK_mix_related_post_mix_post1", - columns: x => new { x.DestinationId, x.Specificulture }, + name: "FK_Mix_Post_Module_Mix_Post", + columns: x => new { x.PostId, x.Specificulture }, principalTable: "mix_post", principalColumns: new[] { "Id", "Specificulture" }, onDelete: ReferentialAction.Restrict); }); - migrationBuilder.CreateIndex( - name: "IX_mix_attribute_field_AttributeSetId", - table: "mix_attribute_field", - column: "AttributeSetId"); - - migrationBuilder.CreateIndex( - name: "IX_mix_attribute_field_ReferenceId", - table: "mix_attribute_field", - column: "ReferenceId"); - - migrationBuilder.CreateIndex( - name: "IX_mix_attribute_set_data_AttributeSetId", - table: "mix_attribute_set_data", - column: "AttributeSetId"); - - migrationBuilder.CreateIndex( - name: "IX_mix_attribute_set_reference_AttributeSetId", - table: "mix_attribute_set_reference", - column: "AttributeSetId"); - - migrationBuilder.CreateIndex( - name: "IX_mix_attribute_set_value_DataId", - table: "mix_attribute_set_value", - column: "DataId"); - migrationBuilder.CreateIndex( name: "Index_ExpiresAtTime", table: "mix_cache", @@ -1002,6 +898,26 @@ protected override void Up(MigrationBuilder migrationBuilder) column: "Specificulture", unique: true); + migrationBuilder.CreateIndex( + name: "IX_mix_database_column_MixDatabaseId", + table: "mix_database_column", + column: "MixDatabaseId"); + + migrationBuilder.CreateIndex( + name: "IX_mix_database_column_ReferenceId", + table: "mix_database_column", + column: "ReferenceId"); + + migrationBuilder.CreateIndex( + name: "IX_mix_database_data_MixDatabaseId", + table: "mix_database_data", + column: "MixDatabaseId"); + + migrationBuilder.CreateIndex( + name: "IX_mix_database_data_value_DataId", + table: "mix_database_data_value", + column: "DataId"); + migrationBuilder.CreateIndex( name: "IX_mix_file_ThemeId", table: "mix_file", @@ -1092,6 +1008,16 @@ protected override void Up(MigrationBuilder migrationBuilder) table: "mix_post", column: "Specificulture"); + migrationBuilder.CreateIndex( + name: "IX_mix_post_association_DestinationId_Specificulture", + table: "mix_post_association", + columns: new[] { "DestinationId", "Specificulture" }); + + migrationBuilder.CreateIndex( + name: "IX_mix_post_association_SourceId_Specificulture", + table: "mix_post_association", + columns: new[] { "SourceId", "Specificulture" }); + migrationBuilder.CreateIndex( name: "IX_mix_post_media_MediaId_Specificulture", table: "mix_post_media", @@ -1112,21 +1038,6 @@ protected override void Up(MigrationBuilder migrationBuilder) table: "mix_post_module", columns: new[] { "PostId", "Specificulture" }); - migrationBuilder.CreateIndex( - name: "IX_mix_related_attribute_set_IdNavigationId", - table: "mix_related_attribute_set", - column: "IdNavigationId"); - - migrationBuilder.CreateIndex( - name: "IX_mix_related_post_DestinationId_Specificulture", - table: "mix_related_post", - columns: new[] { "DestinationId", "Specificulture" }); - - migrationBuilder.CreateIndex( - name: "IX_mix_related_post_SourceId_Specificulture", - table: "mix_related_post", - columns: new[] { "SourceId", "Specificulture" }); - migrationBuilder.CreateIndex( name: "IX_mix_template_file_TemplateId", table: "mix_template", @@ -1141,25 +1052,25 @@ protected override void Up(MigrationBuilder migrationBuilder) protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropTable( - name: "mix_attribute_field"); + name: "mix_cache"); migrationBuilder.DropTable( - name: "mix_attribute_set_data"); + name: "mix_cms_user"); migrationBuilder.DropTable( - name: "mix_attribute_set_reference"); + name: "mix_configuration"); migrationBuilder.DropTable( - name: "mix_attribute_set_value"); + name: "mix_database_column"); migrationBuilder.DropTable( - name: "mix_cache"); + name: "mix_database_data"); migrationBuilder.DropTable( - name: "mix_cms_user"); + name: "mix_database_data_association"); migrationBuilder.DropTable( - name: "mix_configuration"); + name: "mix_database_data_value"); migrationBuilder.DropTable( name: "mix_file"); @@ -1186,22 +1097,13 @@ protected override void Down(MigrationBuilder migrationBuilder) name: "mix_portal_page_role"); migrationBuilder.DropTable( - name: "mix_post_media"); + name: "mix_post_association"); migrationBuilder.DropTable( - name: "mix_post_module"); - - migrationBuilder.DropTable( - name: "mix_related_attribute_data"); - - migrationBuilder.DropTable( - name: "mix_related_attribute_set"); - - migrationBuilder.DropTable( - name: "mix_related_data"); + name: "mix_post_media"); migrationBuilder.DropTable( - name: "mix_related_post"); + name: "mix_post_module"); migrationBuilder.DropTable( name: "mix_template"); @@ -1209,6 +1111,9 @@ protected override void Down(MigrationBuilder migrationBuilder) migrationBuilder.DropTable( name: "mix_url_alias"); + migrationBuilder.DropTable( + name: "mix_database"); + migrationBuilder.DropTable( name: "mix_page"); @@ -1221,9 +1126,6 @@ protected override void Down(MigrationBuilder migrationBuilder) migrationBuilder.DropTable( name: "mix_module"); - migrationBuilder.DropTable( - name: "mix_attribute_set"); - migrationBuilder.DropTable( name: "mix_post"); @@ -1234,4 +1136,4 @@ protected override void Down(MigrationBuilder migrationBuilder) name: "mix_culture"); } } -} \ No newline at end of file +} diff --git a/src/Mix.Cms.Lib/Migrations/PostgresqlMixCms/20210217103639_RenameDatabase.Designer.cs b/src/Mix.Cms.Lib/Migrations/PostgresqlMixCms/20210217103639_RenameDatabase.Designer.cs new file mode 100644 index 000000000..93300921a --- /dev/null +++ b/src/Mix.Cms.Lib/Migrations/PostgresqlMixCms/20210217103639_RenameDatabase.Designer.cs @@ -0,0 +1,2518 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Mix.Cms.Lib.Models.Cms; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +namespace Mix.Cms.Lib.Migrations.PostgresqlMixCms +{ + [DbContext(typeof(PostgresqlMixCmsContext))] + [Migration("20210217103639_RenameDatabase")] + partial class RenameDatabase + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseIdentityByDefaultColumns() + .HasAnnotation("Relational:MaxIdentifierLength", 63) + .HasAnnotation("ProductVersion", "5.0.1"); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCache", b => + { + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("ExpiredDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("LastModified") + .HasColumnType("timestamp without time zone"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("integer"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Value") + .IsRequired() + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.HasIndex("ExpiredDateTime") + .HasDatabaseName("Index_ExpiresAtTime"); + + b.ToTable("mix_cache"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCmsUser", b => + { + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Address") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Avatar") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("Email") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FirstName") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("timestamp without time zone"); + + b.Property("LastName") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("MiddleName") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("PhoneNumber") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("integer"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Username") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.ToTable("mix_cms_user"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixConfiguration", b => + { + b.Property("Id") + .HasColumnType("integer"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Category") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("DataType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Keyword") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("timestamp without time zone"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("integer"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Value") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_configuration"); + + b.HasIndex("Specificulture"); + + b.ToTable("mix_configuration"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCulture", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .UseIdentityByDefaultColumn(); + + b.Property("Alias") + .HasColumnType("varchar(150)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FullName") + .HasColumnType("varchar(150)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Icon") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("timestamp without time zone"); + + b.Property("Lcid") + .HasColumnType("varchar(50)") + .HasColumnName("LCID") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("integer"); + + b.Property("Specificulture") + .IsRequired() + .HasColumnType("varchar(10)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.HasIndex("Specificulture") + .IsUnique() + .HasDatabaseName("IX_Mix_Culture"); + + b.ToTable("mix_culture"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabase", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .UseIdentityByDefaultColumn(); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("EdmAutoSend") + .HasColumnType("boolean"); + + b.Property("EdmFrom") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("EdmSubject") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("EdmTemplate") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FormTemplate") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("timestamp without time zone"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Name") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("integer"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Title") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Type") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.ToTable("mix_database"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseColumn", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .UseIdentityByDefaultColumn(); + + b.Property("Configurations") + .HasColumnType("text"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("DataType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("DefaultValue") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("IsEncrypt") + .HasColumnType("boolean"); + + b.Property("IsMultiple") + .HasColumnType("boolean"); + + b.Property("IsRequire") + .HasColumnType("boolean"); + + b.Property("IsSelect") + .HasColumnType("boolean"); + + b.Property("IsUnique") + .HasColumnType("boolean"); + + b.Property("LastModified") + .HasColumnType("timestamp without time zone"); + + b.Property("MixDatabaseId") + .HasColumnType("integer"); + + b.Property("MixDatabaseName") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Name") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Options") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("integer"); + + b.Property("ReferenceId") + .HasColumnType("integer"); + + b.Property("Regex") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Title") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.HasIndex("MixDatabaseId"); + + b.HasIndex("ReferenceId"); + + b.ToTable("mix_database_column"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseData", b => + { + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("LastModified") + .HasColumnType("timestamp without time zone"); + + b.Property("MixDatabaseId") + .HasColumnType("integer"); + + b.Property("MixDatabaseName") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("integer"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_database_data"); + + b.HasIndex("MixDatabaseId"); + + b.ToTable("mix_database_data"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseDataAssociation", b => + { + b.Property("Id") + .HasColumnType("text"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("DataId") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Description") + .HasColumnType("varchar(450)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("timestamp without time zone"); + + b.Property("MixDatabaseId") + .HasColumnType("integer"); + + b.Property("MixDatabaseName") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ParentId") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ParentType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("integer"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_database_data_association"); + + b.ToTable("mix_database_data_association"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseDataValue", b => + { + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("BooleanValue") + .HasColumnType("boolean"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("DataId") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("DataType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("DateTimeValue") + .HasColumnType("timestamp without time zone"); + + b.Property("DoubleValue") + .HasColumnType("double precision"); + + b.Property("EncryptKey") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("EncryptType") + .HasColumnType("integer"); + + b.Property("EncryptValue") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("IntegerValue") + .HasColumnType("integer"); + + b.Property("LastModified") + .HasColumnType("timestamp without time zone"); + + b.Property("MixDatabaseColumnId") + .HasColumnType("integer"); + + b.Property("MixDatabaseColumnName") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("MixDatabaseName") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("integer"); + + b.Property("Regex") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("StringValue") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_database_data_value"); + + b.HasIndex("DataId"); + + b.ToTable("mix_database_data_value"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixFile", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .UseIdentityByDefaultColumn(); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("Extension") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileFolder") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileName") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FolderType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("timestamp without time zone"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("integer"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("StringContent") + .IsRequired() + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ThemeId") + .HasColumnType("integer"); + + b.Property("ThemeName") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.HasIndex("ThemeId"); + + b.ToTable("mix_file"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixLanguage", b => + { + b.Property("Id") + .HasColumnType("integer"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Category") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("DataType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("DefaultValue") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Keyword") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("timestamp without time zone"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("integer"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Value") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_language"); + + b.HasIndex("Specificulture"); + + b.ToTable("mix_language"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixMedia", b => + { + b.Property("Id") + .HasColumnType("integer"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("Description") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Extension") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileFolder") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileName") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileProperties") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileSize") + .HasColumnType("bigint"); + + b.Property("FileType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("timestamp without time zone"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("integer"); + + b.Property("Source") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Tags") + .HasColumnType("varchar(400)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("TargetUrl") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Title") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PRIMARY"); + + b.ToTable("mix_media"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModule", b => + { + b.Property("Id") + .HasColumnType("integer"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("Description") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("EdmTemplate") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Fields") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FormTemplate") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("timestamp without time zone"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Name") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("PageSize") + .HasColumnType("integer"); + + b.Property("PostType") + .HasColumnType("text"); + + b.Property("Priority") + .HasColumnType("integer"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Template") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Thumbnail") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Title") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_module"); + + b.HasIndex("Specificulture"); + + b.ToTable("mix_module"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModuleData", b => + { + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("Fields") + .IsRequired() + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("timestamp without time zone"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModuleId") + .HasColumnType("integer"); + + b.Property("PageId") + .HasColumnType("integer"); + + b.Property("PostId") + .HasColumnType("integer"); + + b.Property("Priority") + .HasColumnType("integer"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Value") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_module_data"); + + b.HasIndex("ModuleId", "Specificulture"); + + b.HasIndex("PageId", "Specificulture"); + + b.HasIndex("PostId", "Specificulture"); + + b.HasIndex("ModuleId", "PageId", "Specificulture"); + + b.ToTable("mix_module_data"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModulePost", b => + { + b.Property("Id") + .HasColumnType("integer"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("timestamp without time zone"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModuleId") + .HasColumnType("integer"); + + b.Property("PostId") + .HasColumnType("integer"); + + b.Property("Priority") + .HasColumnType("integer"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_module_post"); + + b.HasIndex("ModuleId", "Specificulture"); + + b.HasIndex("PostId", "Specificulture"); + + b.ToTable("mix_module_post"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPage", b => + { + b.Property("Id") + .HasColumnType("integer"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Content") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("CssClass") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Excerpt") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ExtraFields") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Icon") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("timestamp without time zone"); + + b.Property("Layout") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Level") + .HasColumnType("integer"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("PageSize") + .HasColumnType("integer"); + + b.Property("PostType") + .HasColumnType("text"); + + b.Property("Priority") + .HasColumnType("integer"); + + b.Property("SeoDescription") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("SeoKeywords") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("SeoName") + .HasColumnType("varchar(500)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("SeoTitle") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("StaticUrl") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Tags") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Template") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Title") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Type") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Views") + .HasColumnType("integer"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_page"); + + b.HasIndex("Specificulture"); + + b.ToTable("mix_page"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPageModule", b => + { + b.Property("Id") + .HasColumnType("integer"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("timestamp without time zone"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModuleId") + .HasColumnType("integer"); + + b.Property("PageId") + .HasColumnType("integer"); + + b.Property("Position") + .HasColumnType("integer"); + + b.Property("Priority") + .HasColumnType("integer"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_page_module"); + + b.HasIndex("ModuleId", "Specificulture"); + + b.HasIndex("PageId", "Specificulture"); + + b.ToTable("mix_page_module"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPagePost", b => + { + b.Property("Id") + .HasColumnType("integer"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("timestamp without time zone"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("PageId") + .HasColumnType("integer"); + + b.Property("PostId") + .HasColumnType("integer"); + + b.Property("Priority") + .HasColumnType("integer"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_page_post"); + + b.HasIndex("PageId", "Specificulture"); + + b.HasIndex("PostId", "Specificulture"); + + b.ToTable("mix_page_post"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .UseIdentityByDefaultColumn(); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("Description") + .HasColumnType("varchar(450)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Icon") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("timestamp without time zone"); + + b.Property("Level") + .HasColumnType("integer"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("integer"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("TextDefault") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("TextKeyword") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Url") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.ToTable("mix_portal_page"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPageNavigation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .UseIdentityByDefaultColumn(); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("timestamp without time zone"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("PageId") + .HasColumnType("integer"); + + b.Property("ParentId") + .HasColumnType("integer"); + + b.Property("Priority") + .HasColumnType("integer"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.HasIndex("PageId") + .HasDatabaseName("FK_mix_portal_page_navigation_mix_portal_page"); + + b.HasIndex("ParentId"); + + b.ToTable("mix_portal_page_navigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPageRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .UseIdentityByDefaultColumn(); + + b.Property("CreatedBy") + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("character varying(50)"); + + b.Property("CreatedDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("LastModified") + .HasColumnType("timestamp without time zone"); + + b.Property("ModifiedBy") + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("character varying(50)"); + + b.Property("PageId") + .HasColumnType("integer"); + + b.Property("Priority") + .HasColumnType("integer"); + + b.Property("RoleId") + .HasMaxLength(50) + .HasColumnType("character varying(50)"); + + b.Property("Status") + .IsRequired() + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("character varying(50)"); + + b.HasKey("Id") + .HasName("PK_mix_portal_page_role"); + + b.HasIndex("PageId"); + + b.ToTable("mix_portal_page_role"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPost", b => + { + b.Property("Id") + .HasColumnType("integer"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Content") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("Excerpt") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ExtraFields") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Icon") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("timestamp without time zone"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("integer"); + + b.Property("PublishedDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("SeoDescription") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("SeoKeywords") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("SeoName") + .HasColumnType("varchar(500)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("SeoTitle") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Source") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Tags") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Template") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Thumbnail") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Title") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Type") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Views") + .HasColumnType("integer"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_post"); + + b.HasIndex("Specificulture"); + + b.ToTable("mix_post"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostAssociation", b => + { + b.Property("Id") + .HasColumnType("integer"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("Description") + .HasColumnType("varchar(450)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("DestinationId") + .HasColumnType("integer"); + + b.Property("Image") + .HasColumnType("varchar(450)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("timestamp without time zone"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("integer"); + + b.Property("SourceId") + .HasColumnType("integer"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_post_association"); + + b.HasIndex("DestinationId", "Specificulture"); + + b.HasIndex("SourceId", "Specificulture"); + + b.ToTable("mix_post_association"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostMedia", b => + { + b.Property("Id") + .HasColumnType("integer"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("timestamp without time zone"); + + b.Property("MediaId") + .HasColumnType("integer"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Position") + .HasColumnType("integer"); + + b.Property("PostId") + .HasColumnType("integer"); + + b.Property("Priority") + .HasColumnType("integer"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_post_media"); + + b.HasIndex("MediaId", "Specificulture"); + + b.HasIndex("PostId", "Specificulture"); + + b.ToTable("mix_post_media"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostModule", b => + { + b.Property("Id") + .HasColumnType("integer"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("timestamp without time zone"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModuleId") + .HasColumnType("integer"); + + b.Property("Position") + .HasColumnType("integer"); + + b.Property("PostId") + .HasColumnType("integer"); + + b.Property("Priority") + .HasColumnType("integer"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_post_module"); + + b.HasIndex("ModuleId", "Specificulture"); + + b.HasIndex("PostId", "Specificulture"); + + b.ToTable("mix_post_module"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTemplate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .UseIdentityByDefaultColumn(); + + b.Property("Content") + .IsRequired() + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("Extension") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileFolder") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileName") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FolderType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("timestamp without time zone"); + + b.Property("MobileContent") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("integer"); + + b.Property("Scripts") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("SpaContent") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Styles") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ThemeId") + .HasColumnType("integer"); + + b.Property("ThemeName") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.HasIndex("ThemeId") + .HasDatabaseName("IX_mix_template_file_TemplateId"); + + b.ToTable("mix_template"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTheme", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .UseIdentityByDefaultColumn(); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("timestamp without time zone"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Name") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("PreviewUrl") + .HasColumnType("varchar(450)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("integer"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Thumbnail") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Title") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.ToTable("mix_theme"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixUrlAlias", b => + { + b.Property("Id") + .HasColumnType("integer"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Alias") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("Description") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("timestamp without time zone"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("integer"); + + b.Property("SourceId") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_url_alias"); + + b.HasIndex("Specificulture"); + + b.ToTable("mix_url_alias"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixConfiguration", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") + .WithMany("MixConfiguration") + .HasForeignKey("Specificulture") + .HasConstraintName("FK_Mix_Configuration_Mix_Culture") + .HasPrincipalKey("Specificulture") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseData", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixDatabase", "MixDatabase") + .WithMany() + .HasForeignKey("MixDatabaseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("MixDatabase"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixFile", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixTheme", "Theme") + .WithMany("MixFile") + .HasForeignKey("ThemeId") + .HasConstraintName("FK_mix_file_mix_template"); + + b.Navigation("Theme"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixLanguage", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") + .WithMany("MixLanguage") + .HasForeignKey("Specificulture") + .HasConstraintName("FK_Mix_Language_Mix_Culture") + .HasPrincipalKey("Specificulture") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModule", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") + .WithMany("MixModule") + .HasForeignKey("Specificulture") + .HasConstraintName("FK_Mix_Module_Mix_Culture") + .HasPrincipalKey("Specificulture") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModuleData", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixModule", "MixModule") + .WithMany("MixModuleData") + .HasForeignKey("ModuleId", "Specificulture") + .HasConstraintName("FK_Mix_Module_Data_Mix_Module") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPage", "MixPage") + .WithMany("MixModuleData") + .HasForeignKey("PageId", "Specificulture") + .HasConstraintName("FK_mix_module_data_mix_page"); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixModuleData") + .HasForeignKey("PostId", "Specificulture") + .HasConstraintName("FK_mix_module_data_mix_post"); + + b.Navigation("MixModule"); + + b.Navigation("MixPage"); + + b.Navigation("MixPost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModulePost", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixModule", "MixModule") + .WithMany("MixModulePost") + .HasForeignKey("ModuleId", "Specificulture") + .HasConstraintName("FK_Mix_Module_Post_Mix_Module") + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixModulePost") + .HasForeignKey("PostId", "Specificulture") + .HasConstraintName("FK_Mix_Module_Post_Mix_Post") + .IsRequired(); + + b.Navigation("MixModule"); + + b.Navigation("MixPost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPage", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") + .WithMany("MixPage") + .HasForeignKey("Specificulture") + .HasConstraintName("FK_Mix_Page_Mix_Culture") + .HasPrincipalKey("Specificulture") + .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPageModule", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixModule", "MixModule") + .WithMany("MixPageModule") + .HasForeignKey("ModuleId", "Specificulture") + .HasConstraintName("FK_Mix_Menu_Module_Mix_Module1") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPage", "MixPage") + .WithMany("MixPageModule") + .HasForeignKey("PageId", "Specificulture") + .HasConstraintName("FK_Mix_Page_Module_Mix_Page") + .IsRequired(); + + b.Navigation("MixModule"); + + b.Navigation("MixPage"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPagePost", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPage", "MixPage") + .WithMany("MixPagePost") + .HasForeignKey("PageId", "Specificulture") + .HasConstraintName("FK_Mix_Page_Post_Mix_Page") + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixPagePost") + .HasForeignKey("PostId", "Specificulture") + .HasConstraintName("FK_Mix_Page_Post_Mix_Post") + .IsRequired(); + + b.Navigation("MixPage"); + + b.Navigation("MixPost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPageNavigation", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPortalPage", "Page") + .WithMany("MixPortalPageNavigationPage") + .HasForeignKey("PageId") + .HasConstraintName("FK_mix_portal_page_navigation_mix_portal_page") + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPortalPage", "Parent") + .WithMany("MixPortalPageNavigationParent") + .HasForeignKey("ParentId") + .HasConstraintName("FK_mix_portal_page_navigation_mix_portal_page1") + .IsRequired(); + + b.Navigation("Page"); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPageRole", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPortalPage", "Page") + .WithMany("MixPortalPageRole") + .HasForeignKey("PageId") + .HasConstraintName("FK_mix_portal_page_role_mix_portal_page") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Page"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPost", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") + .WithMany("MixPost") + .HasForeignKey("Specificulture") + .HasConstraintName("FK_Mix_Post_Mix_Culture") + .HasPrincipalKey("Specificulture") + .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostAssociation", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixRelatedPostMixPost") + .HasForeignKey("DestinationId", "Specificulture") + .HasConstraintName("FK_mix_post_association_mix_post1") + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "S") + .WithMany("MixRelatedPostS") + .HasForeignKey("SourceId", "Specificulture") + .HasConstraintName("FK_mix_post_association_mix_post") + .IsRequired(); + + b.Navigation("MixPost"); + + b.Navigation("S"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostMedia", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixMedia", "MixMedia") + .WithMany("MixPostMedia") + .HasForeignKey("MediaId", "Specificulture") + .HasConstraintName("FK_mix_post_media_mix_media") + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixPostMedia") + .HasForeignKey("PostId", "Specificulture") + .HasConstraintName("FK_mix_post_media_mix_post") + .IsRequired(); + + b.Navigation("MixMedia"); + + b.Navigation("MixPost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostModule", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixModule", "MixModule") + .WithMany("MixPostModule") + .HasForeignKey("ModuleId", "Specificulture") + .HasConstraintName("FK_Mix_Post_Module_Mix_Module1") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixPostModule") + .HasForeignKey("PostId", "Specificulture") + .HasConstraintName("FK_Mix_Post_Module_Mix_Post") + .IsRequired(); + + b.Navigation("MixModule"); + + b.Navigation("MixPost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTemplate", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixTheme", "Theme") + .WithMany("MixTemplate") + .HasForeignKey("ThemeId") + .HasConstraintName("FK_mix_template_mix_theme") + .IsRequired(); + + b.Navigation("Theme"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixUrlAlias", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") + .WithMany("MixUrlAlias") + .HasForeignKey("Specificulture") + .HasConstraintName("FK_Mix_Url_Alias_Mix_Culture") + .HasPrincipalKey("Specificulture") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCulture", b => + { + b.Navigation("MixConfiguration"); + + b.Navigation("MixLanguage"); + + b.Navigation("MixModule"); + + b.Navigation("MixPage"); + + b.Navigation("MixPost"); + + b.Navigation("MixUrlAlias"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixMedia", b => + { + b.Navigation("MixPostMedia"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModule", b => + { + b.Navigation("MixModuleData"); + + b.Navigation("MixModulePost"); + + b.Navigation("MixPageModule"); + + b.Navigation("MixPostModule"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPage", b => + { + b.Navigation("MixModuleData"); + + b.Navigation("MixPageModule"); + + b.Navigation("MixPagePost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPage", b => + { + b.Navigation("MixPortalPageNavigationPage"); + + b.Navigation("MixPortalPageNavigationParent"); + + b.Navigation("MixPortalPageRole"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPost", b => + { + b.Navigation("MixModuleData"); + + b.Navigation("MixModulePost"); + + b.Navigation("MixPagePost"); + + b.Navigation("MixPostMedia"); + + b.Navigation("MixPostModule"); + + b.Navigation("MixRelatedPostMixPost"); + + b.Navigation("MixRelatedPostS"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTheme", b => + { + b.Navigation("MixFile"); + + b.Navigation("MixTemplate"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Mix.Cms.Lib/Migrations/PostgresqlMixCms/20210217103639_RenameDatabase.cs b/src/Mix.Cms.Lib/Migrations/PostgresqlMixCms/20210217103639_RenameDatabase.cs new file mode 100644 index 000000000..5dfffd83f --- /dev/null +++ b/src/Mix.Cms.Lib/Migrations/PostgresqlMixCms/20210217103639_RenameDatabase.cs @@ -0,0 +1,101 @@ +using Microsoft.EntityFrameworkCore.Migrations; +using Mix.Cms.Lib.Constants; +using Mix.Cms.Lib.Services; +using System; + +namespace Mix.Cms.Lib.Migrations.PostgresqlMixCms +{ + public partial class RenameDatabase : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + Version.TryParse(MixService.GetConfig(MixConfigurations.CONST_MIXCORE_VERSION), out Version dbVersion); + var prevVersion = new Version("1.0.0"); + if (dbVersion == null || dbVersion.CompareTo(prevVersion) <= 0) + { + string schema = null; + + migrationBuilder.DropForeignKey("FK_mix_attribute_set_data_mix_attribute_set", "mix_attribute_set_data", schema); + migrationBuilder.DropForeignKey("FK_mix_attribute_field_mix_attribute_set", "mix_attribute_field", schema); + migrationBuilder.DropForeignKey("FK_mix_attribute_field_mix_attribute_set1", "mix_attribute_field", schema); + + migrationBuilder.DropIndex("IX_mix_attribute_field_AttributeSetId", "mix_attribute_field", schema); + migrationBuilder.DropIndex("IX_mix_attribute_field_ReferenceId", "mix_attribute_field", schema); + migrationBuilder.DropIndex("IX_mix_attribute_set_data_AttributeSetId", "mix_attribute_set_data", schema); + migrationBuilder.DropIndex("IX_mix_attribute_set_value_DataId", "mix_attribute_set_value", schema); + + migrationBuilder.DropTable("mix_related_attribute_set"); + migrationBuilder.DropTable("mix_attribute_set_reference"); + + migrationBuilder.RenameTable("mix_related_post", schema, "mix_post_association"); + migrationBuilder.RenameTable("mix_attribute_set", schema, "mix_database"); + migrationBuilder.RenameTable("mix_related_attribute_data", schema, "mix_database_data_association"); + migrationBuilder.RenameTable("mix_attribute_set_value", schema, "mix_database_data_value"); + migrationBuilder.RenameTable("mix_attribute_set_data", schema, "mix_database_data"); + migrationBuilder.RenameTable("mix_attribute_field", schema, "mix_database_column"); + + migrationBuilder.RenameColumn("AttributeSetId", "mix_database_column", "MixDatabaseId", schema); + migrationBuilder.RenameColumn("AttributeSetName", "mix_database_column", "MixDatabaseName", schema); + + migrationBuilder.RenameColumn("AttributeFieldId", "mix_database_data_value", "MixDatabaseColumnId", schema); + migrationBuilder.RenameColumn("AttributeFieldName", "mix_database_data_value", "MixDatabaseColumnName", schema); + migrationBuilder.RenameColumn("AttributeSetName", "mix_database_data_value", "MixDatabaseName", schema); + + + migrationBuilder.RenameColumn("AttributeSetId", "mix_database_data_association", "MixDatabaseId", schema); + migrationBuilder.RenameColumn("AttributeSetName", "mix_database_data_association", "MixDatabaseName", schema); + + migrationBuilder.RenameColumn("AttributeSetId", "mix_database_data", "MixDatabaseId", schema); + migrationBuilder.RenameColumn("AttributeSetName", "mix_database_data", "MixDatabaseName", schema); + + + MixService.SetConfig(MixConfigurations.CONST_MIXCORE_VERSION, "1.0.1"); + MixService.SaveSettings(); + } + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + var dbVersion = MixService.GetConfig(MixConfigurations.CONST_MIXCORE_VERSION); + if (string.IsNullOrEmpty(dbVersion) || dbVersion == "1.0.0") + { + string schema = null; + + // mix_related_attribute_set and mix_attribute_set_reference not used, so we don't need to restore them. + + migrationBuilder.RenameTable("mix_post_association", schema, "mix_related_post"); + migrationBuilder.RenameTable("mix_database", schema, "mix_attribute_set"); + migrationBuilder.RenameTable("mix_database_data_association", schema, "mix_related_attribute_data"); + migrationBuilder.RenameTable("mix_database_data_value", schema, "mix_attribute_set_value"); + migrationBuilder.RenameTable("mix_database_data", schema, "mix_attribute_set_data"); + migrationBuilder.RenameTable("mix_database_column", schema, "mix_attribute_field"); + + migrationBuilder.RenameColumn("MixDatabaseId", "mix_database_column", "AttributeSetId", schema); + migrationBuilder.RenameColumn("MixDatabaseName", "mix_database_column", "AttributeSetName", schema); + + migrationBuilder.RenameColumn("MixDatabaseColumnId", "mix_database_data_value", "AttributeFieldId", schema); + migrationBuilder.RenameColumn("MixDatabaseColumnName", "mix_database_data_value", "AttributeFieldName", schema); + migrationBuilder.RenameColumn("MixDatabaseName", "mix_database_data_value", "AttributeSetName", schema); + + + migrationBuilder.RenameColumn("MixDatabaseId", "mix_database_data_association", "AttributeSetId", schema); + migrationBuilder.RenameColumn("MixDatabaseName", "mix_database_data_association", "AttributeSetName", schema); + + migrationBuilder.RenameColumn("MixDatabaseId", "mix_database_data", "AttributeSetId", schema); + migrationBuilder.RenameColumn("MixDatabaseName", "mix_database_data", "AttributeSetName", schema); + + migrationBuilder.CreateIndex("IX_mix_attribute_field_AttributeSetId", "mix_attribute_field", "AttributeSetId", schema); + migrationBuilder.CreateIndex("IX_mix_attribute_field_ReferenceId", "mix_attribute_field", "ReferenceId", schema); + migrationBuilder.CreateIndex("IX_mix_attribute_set_data_AttributeSetId", "mix_attribute_set_data", "AttributeSetId", schema); + migrationBuilder.CreateIndex("IX_mix_attribute_set_value_DataId", "mix_attribute_set_value", "DataId", schema); + + migrationBuilder.AddForeignKey("FK_mix_attribute_set_data_mix_attribute_set", "mix_attribute_set_data", "AttributeSetId", "mix_attribute_set", schema); + migrationBuilder.AddForeignKey("FK_mix_attribute_field_mix_attribute_set", "mix_attribute_field", "Id", "mix_attribute_set", schema); + migrationBuilder.AddForeignKey("FK_mix_attribute_field_mix_attribute_set1", "mix_attribute_field", "Id", "mix_attribute_set", schema); + + MixService.SetConfig(MixConfigurations.CONST_MIXCORE_VERSION, "1.0.0"); + MixService.SaveSettings(); + } + } + } +} diff --git a/src/Mix.Cms.Lib/Migrations/PostgresqlMixCms/PostgresqlMixCmsContextModelSnapshot.cs b/src/Mix.Cms.Lib/Migrations/PostgresqlMixCms/PostgresqlMixCmsContextModelSnapshot.cs index 8d654b2a0..efe52f46c 100644 --- a/src/Mix.Cms.Lib/Migrations/PostgresqlMixCms/PostgresqlMixCmsContextModelSnapshot.cs +++ b/src/Mix.Cms.Lib/Migrations/PostgresqlMixCms/PostgresqlMixCmsContextModelSnapshot.cs @@ -19,24 +19,13 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasAnnotation("Relational:MaxIdentifierLength", 63) .HasAnnotation("ProductVersion", "5.0.1"); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeField", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCache", b => { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .UseIdentityByDefaultColumn(); - - b.Property("AttributeSetId") - .HasColumnType("integer"); - - b.Property("AttributeSetName") - .HasColumnType("varchar(250)") + b.Property("Id") + .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Configurations") - .HasColumnType("text"); - b.Property("CreatedBy") .HasColumnType("varchar(50)") .UseCollation("und-x-icu") @@ -45,31 +34,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("CreatedDateTime") .HasColumnType("timestamp without time zone"); - b.Property("DataType") - .IsRequired() - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("DefaultValue") - .HasColumnType("text") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("IsEncrypt") - .HasColumnType("boolean"); - - b.Property("IsMultiple") - .HasColumnType("boolean"); - - b.Property("IsRequire") - .HasColumnType("boolean"); - - b.Property("IsSelect") - .HasColumnType("boolean"); - - b.Property("IsUnique") - .HasColumnType("boolean"); + b.Property("ExpiredDateTime") + .HasColumnType("timestamp without time zone"); b.Property("LastModified") .HasColumnType("timestamp without time zone"); @@ -79,102 +45,84 @@ protected override void BuildModel(ModelBuilder modelBuilder) .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Name") - .IsRequired() - .HasColumnType("varchar(250)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Options") - .HasColumnType("text") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Priority") .HasColumnType("integer"); - b.Property("ReferenceId") - .HasColumnType("integer"); - - b.Property("Regex") - .HasColumnType("varchar(250)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Title") - .HasColumnType("varchar(250)") + b.Property("Value") + .IsRequired() + .HasColumnType("text") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); b.HasKey("Id"); - b.HasIndex("AttributeSetId"); - - b.HasIndex("ReferenceId"); + b.HasIndex("ExpiredDateTime") + .HasDatabaseName("Index_ExpiresAtTime"); - b.ToTable("mix_attribute_field"); + b.ToTable("mix_cache"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeSet", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCmsUser", b => { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .UseIdentityByDefaultColumn(); - - b.Property("CreatedBy") + b.Property("Id") .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("CreatedDateTime") - .HasColumnType("timestamp without time zone"); - - b.Property("Description") + b.Property("Address") .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("EdmAutoSend") - .HasColumnType("boolean"); - - b.Property("EdmFrom") + b.Property("Avatar") .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("EdmSubject") - .HasColumnType("varchar(250)") + b.Property("CreatedBy") + .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("EdmTemplate") + b.Property("CreatedDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("Email") .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("FormTemplate") - .HasColumnType("varchar(250)") + b.Property("FirstName") + .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("LastModified") .HasColumnType("timestamp without time zone"); + b.Property("LastName") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("MiddleName") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("ModifiedBy") .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Name") - .IsRequired() - .HasColumnType("varchar(250)") + b.Property("PhoneNumber") + .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); @@ -187,39 +135,27 @@ protected override void BuildModel(ModelBuilder modelBuilder) .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Title") - .IsRequired() + b.Property("Username") .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Type") - .IsRequired() - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - b.HasKey("Id"); - b.ToTable("mix_attribute_set"); + b.ToTable("mix_cms_user"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeSetData", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixConfiguration", b => { - b.Property("Id") - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Id") + .HasColumnType("integer"); b.Property("Specificulture") .HasColumnType("varchar(10)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("AttributeSetId") - .HasColumnType("integer"); - - b.Property("AttributeSetName") + b.Property("Category") .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); @@ -232,6 +168,23 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("CreatedDateTime") .HasColumnType("timestamp without time zone"); + b.Property("DataType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Keyword") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("LastModified") .HasColumnType("timestamp without time zone"); @@ -249,23 +202,30 @@ protected override void BuildModel(ModelBuilder modelBuilder) .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Value") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + b.HasKey("Id", "Specificulture") - .HasName("PK_mix_attribute_set_data"); + .HasName("PK_mix_configuration"); - b.HasIndex("AttributeSetId"); + b.HasIndex("Specificulture"); - b.ToTable("mix_attribute_set_data"); + b.ToTable("mix_configuration"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeSetReference", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCulture", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("integer") .UseIdentityByDefaultColumn(); - b.Property("AttributeSetId") - .HasColumnType("integer"); + b.Property("Alias") + .HasColumnType("varchar(150)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); b.Property("CreatedBy") .HasColumnType("varchar(50)") @@ -276,32 +236,43 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("timestamp without time zone"); b.Property("Description") - .HasColumnType("varchar(450)") + .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Image") - .HasColumnType("varchar(450)") + b.Property("FullName") + .HasColumnType("varchar(150)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Icon") + .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("LastModified") .HasColumnType("timestamp without time zone"); - b.Property("ModifiedBy") + b.Property("Lcid") .HasColumnType("varchar(50)") + .HasColumnName("LCID") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("ParentId") - .HasColumnType("integer"); - - b.Property("ParentType") - .HasColumnType("integer"); + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Priority") .HasColumnType("integer"); + b.Property("Specificulture") + .IsRequired() + .HasColumnType("varchar(10)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") @@ -310,180 +281,207 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.HasKey("Id"); - b.HasIndex("AttributeSetId"); + b.HasIndex("Specificulture") + .IsUnique() + .HasDatabaseName("IX_Mix_Culture"); - b.ToTable("mix_attribute_set_reference"); + b.ToTable("mix_culture"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeSetValue", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabase", b => { - b.Property("Id") + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .UseIdentityByDefaultColumn(); + + b.Property("CreatedBy") .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Specificulture") - .HasColumnType("varchar(10)") + b.Property("CreatedDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("Description") + .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("AttributeFieldId") - .HasColumnType("integer"); + b.Property("EdmAutoSend") + .HasColumnType("boolean"); - b.Property("AttributeFieldName") - .IsRequired() - .HasColumnType("varchar(50)") + b.Property("EdmFrom") + .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("AttributeSetName") + b.Property("EdmSubject") .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("BooleanValue") - .HasColumnType("boolean"); + b.Property("EdmTemplate") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("CreatedBy") - .HasColumnType("varchar(50)") + b.Property("FormTemplate") + .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("CreatedDateTime") + b.Property("LastModified") .HasColumnType("timestamp without time zone"); - b.Property("DataId") - .IsRequired() + b.Property("ModifiedBy") .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("DataType") + b.Property("Name") .IsRequired() - .HasColumnType("varchar(50)") + .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("DateTimeValue") - .HasColumnType("timestamp without time zone"); - - b.Property("DoubleValue") - .HasColumnType("double precision"); + b.Property("Priority") + .HasColumnType("integer"); - b.Property("EncryptKey") + b.Property("Status") + .IsRequired() .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("EncryptType") - .HasColumnType("integer"); - - b.Property("EncryptValue") - .HasColumnType("text") + b.Property("Title") + .IsRequired() + .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("IntegerValue") - .HasColumnType("integer"); - - b.Property("LastModified") - .HasColumnType("timestamp without time zone"); - - b.Property("ModifiedBy") + b.Property("Type") + .IsRequired() .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Priority") - .HasColumnType("integer"); + b.HasKey("Id"); - b.Property("Regex") - .HasColumnType("varchar(250)") + b.ToTable("mix_database"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseColumn", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .UseIdentityByDefaultColumn(); + + b.Property("Configurations") + .HasColumnType("text"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Status") + b.Property("CreatedDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("DataType") .IsRequired() .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("StringValue") + b.Property("DefaultValue") .HasColumnType("text") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.HasKey("Id", "Specificulture") - .HasName("PK_mix_attribute_set_value"); + b.Property("IsEncrypt") + .HasColumnType("boolean"); - b.HasIndex("DataId"); + b.Property("IsMultiple") + .HasColumnType("boolean"); - b.ToTable("mix_attribute_set_value"); - }); + b.Property("IsRequire") + .HasColumnType("boolean"); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCache", b => - { - b.Property("Id") - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("IsSelect") + .HasColumnType("boolean"); - b.Property("CreatedBy") - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("IsUnique") + .HasColumnType("boolean"); - b.Property("CreatedDateTime") + b.Property("LastModified") .HasColumnType("timestamp without time zone"); - b.Property("ExpiredDateTime") - .HasColumnType("timestamp without time zone"); + b.Property("MixDatabaseId") + .HasColumnType("integer"); - b.Property("LastModified") - .HasColumnType("timestamp without time zone"); + b.Property("MixDatabaseName") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); b.Property("ModifiedBy") .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Name") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Options") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Priority") .HasColumnType("integer"); + b.Property("ReferenceId") + .HasColumnType("integer"); + + b.Property("Regex") + .HasColumnType("varchar(250)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Value") - .IsRequired() - .HasColumnType("text") + b.Property("Title") + .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); b.HasKey("Id"); - b.HasIndex("ExpiredDateTime") - .HasDatabaseName("Index_ExpiresAtTime"); + b.HasIndex("MixDatabaseId"); - b.ToTable("mix_cache"); + b.HasIndex("ReferenceId"); + + b.ToTable("mix_database_column"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCmsUser", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseData", b => { b.Property("Id") .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Address") - .HasColumnType("varchar(250)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Avatar") - .HasColumnType("varchar(250)") + b.Property("Specificulture") + .HasColumnType("varchar(10)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); @@ -495,26 +493,14 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("CreatedDateTime") .HasColumnType("timestamp without time zone"); - b.Property("Email") - .HasColumnType("varchar(250)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("FirstName") - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("LastModified") .HasColumnType("timestamp without time zone"); - b.Property("LastName") - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("MixDatabaseId") + .HasColumnType("integer"); - b.Property("MiddleName") - .HasColumnType("varchar(50)") + b.Property("MixDatabaseName") + .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); @@ -523,11 +509,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("PhoneNumber") - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Priority") .HasColumnType("integer"); @@ -537,31 +518,24 @@ protected override void BuildModel(ModelBuilder modelBuilder) .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Username") - .HasColumnType("varchar(250)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_database_data"); - b.HasKey("Id"); + b.HasIndex("MixDatabaseId"); - b.ToTable("mix_cms_user"); + b.ToTable("mix_database_data"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixConfiguration", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseDataAssociation", b => { - b.Property("Id") - .HasColumnType("integer"); + b.Property("Id") + .HasColumnType("text"); b.Property("Specificulture") .HasColumnType("varchar(10)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Category") - .HasColumnType("varchar(250)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("CreatedBy") .HasColumnType("varchar(50)") .UseCollation("und-x-icu") @@ -570,27 +544,41 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("CreatedDateTime") .HasColumnType("timestamp without time zone"); - b.Property("DataType") + b.Property("DataId") .IsRequired() .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Description") + .HasColumnType("varchar(450)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("timestamp without time zone"); + + b.Property("MixDatabaseId") + .HasColumnType("integer"); + + b.Property("MixDatabaseName") .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Keyword") - .IsRequired() + b.Property("ModifiedBy") .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("LastModified") - .HasColumnType("timestamp without time zone"); + b.Property("ParentId") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("ModifiedBy") + b.Property("ParentType") + .IsRequired() .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); @@ -604,31 +592,27 @@ protected override void BuildModel(ModelBuilder modelBuilder) .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Value") - .HasColumnType("text") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - b.HasKey("Id", "Specificulture") - .HasName("PK_mix_configuration"); + .HasName("PK_mix_database_data_association"); - b.HasIndex("Specificulture"); - - b.ToTable("mix_configuration"); + b.ToTable("mix_database_data_association"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCulture", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseDataValue", b => { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .UseIdentityByDefaultColumn(); + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Alias") - .HasColumnType("varchar(150)") + b.Property("Specificulture") + .HasColumnType("varchar(10)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("BooleanValue") + .HasColumnType("boolean"); + b.Property("CreatedBy") .HasColumnType("varchar(50)") .UseCollation("und-x-icu") @@ -637,27 +621,54 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("CreatedDateTime") .HasColumnType("timestamp without time zone"); - b.Property("Description") - .HasColumnType("varchar(250)") + b.Property("DataId") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("DataType") + .IsRequired() + .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("FullName") - .HasColumnType("varchar(150)") + b.Property("DateTimeValue") + .HasColumnType("timestamp without time zone"); + + b.Property("DoubleValue") + .HasColumnType("double precision"); + + b.Property("EncryptKey") + .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Icon") - .HasColumnType("varchar(50)") + b.Property("EncryptType") + .HasColumnType("integer"); + + b.Property("EncryptValue") + .HasColumnType("text") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("IntegerValue") + .HasColumnType("integer"); + b.Property("LastModified") .HasColumnType("timestamp without time zone"); - b.Property("Lcid") + b.Property("MixDatabaseColumnId") + .HasColumnType("integer"); + + b.Property("MixDatabaseColumnName") + .IsRequired() .HasColumnType("varchar(50)") - .HasColumnName("LCID") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("MixDatabaseName") + .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); @@ -669,9 +680,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Priority") .HasColumnType("integer"); - b.Property("Specificulture") - .IsRequired() - .HasColumnType("varchar(10)") + b.Property("Regex") + .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); @@ -681,13 +691,17 @@ protected override void BuildModel(ModelBuilder modelBuilder) .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.HasKey("Id"); + b.Property("StringValue") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); - b.HasIndex("Specificulture") - .IsUnique() - .HasDatabaseName("IX_Mix_Culture"); + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_database_data_value"); - b.ToTable("mix_culture"); + b.HasIndex("DataId"); + + b.ToTable("mix_database_data_value"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixFile", b => @@ -1291,6 +1305,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasAnnotation("MySql:CharSet", "utf8"); b.Property("Type") + .IsRequired() .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1555,245 +1570,53 @@ protected override void BuildModel(ModelBuilder modelBuilder) }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPageRole", b => - { - b.Property("RoleId") - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("PageId") - .HasColumnType("integer"); - - b.Property("CreatedBy") - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("CreatedDateTime") - .HasColumnType("timestamp without time zone"); - - b.Property("Id") - .HasColumnType("integer"); - - b.Property("LastModified") - .HasColumnType("timestamp without time zone"); - - b.Property("ModifiedBy") - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Priority") - .HasColumnType("integer"); - - b.Property("Status") - .IsRequired() - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.HasKey("RoleId", "PageId") - .HasName("PK_mix_portal_page_role"); - - b.HasIndex("PageId"); - - b.ToTable("mix_portal_page_role"); - }); - - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPost", b => - { - b.Property("Id") - .HasColumnType("integer"); - - b.Property("Specificulture") - .HasColumnType("varchar(10)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Content") - .HasColumnType("text") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("CreatedBy") - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("CreatedDateTime") - .HasColumnType("timestamp without time zone"); - - b.Property("Excerpt") - .HasColumnType("text") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("ExtraFields") - .HasColumnType("text") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("ExtraProperties") - .HasColumnType("text") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Icon") - .HasColumnType("text") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Image") - .HasColumnType("varchar(250)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("LastModified") - .HasColumnType("timestamp without time zone"); - - b.Property("ModifiedBy") - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Priority") - .HasColumnType("integer"); - - b.Property("PublishedDateTime") - .HasColumnType("timestamp without time zone"); - - b.Property("SeoDescription") - .HasColumnType("text") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("SeoKeywords") - .HasColumnType("text") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("SeoName") - .HasColumnType("varchar(500)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("SeoTitle") - .HasColumnType("text") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Source") - .HasColumnType("varchar(250)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Status") - .IsRequired() - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Tags") - .HasColumnType("text") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Template") - .HasColumnType("varchar(250)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Thumbnail") - .HasColumnType("varchar(250)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Title") - .HasColumnType("text") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Type") - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Views") - .HasColumnType("integer"); - - b.HasKey("Id", "Specificulture") - .HasName("PK_mix_post"); - - b.HasIndex("Specificulture"); - - b.ToTable("mix_post"); - }); - - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostMedia", b => { b.Property("Id") - .HasColumnType("integer"); - - b.Property("Specificulture") - .HasColumnType("varchar(10)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .UseIdentityByDefaultColumn(); b.Property("CreatedBy") - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("character varying(50)"); b.Property("CreatedDateTime") .HasColumnType("timestamp without time zone"); - b.Property("Description") - .HasColumnType("varchar(250)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Image") - .HasColumnType("varchar(250)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("LastModified") .HasColumnType("timestamp without time zone"); - b.Property("MediaId") - .HasColumnType("integer"); - b.Property("ModifiedBy") - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Position") - .HasColumnType("integer"); + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("character varying(50)"); - b.Property("PostId") + b.Property("PageId") .HasColumnType("integer"); b.Property("Priority") .HasColumnType("integer"); + b.Property("RoleId") + .HasMaxLength(50) + .HasColumnType("character varying(50)"); + b.Property("Status") .IsRequired() - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.HasKey("Id", "Specificulture") - .HasName("PK_mix_post_media"); + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("character varying(50)"); - b.HasIndex("MediaId", "Specificulture"); + b.HasKey("Id") + .HasName("PK_mix_portal_page_role"); - b.HasIndex("PostId", "Specificulture"); + b.HasIndex("PageId"); - b.ToTable("mix_post_media"); + b.ToTable("mix_portal_page_role"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostModule", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPost", b => { b.Property("Id") .HasColumnType("integer"); @@ -1803,6 +1626,11 @@ protected override void BuildModel(ModelBuilder modelBuilder) .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Content") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("CreatedBy") .HasColumnType("varchar(50)") .UseCollation("und-x-icu") @@ -1811,8 +1639,23 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("CreatedDateTime") .HasColumnType("timestamp without time zone"); - b.Property("Description") - .HasColumnType("varchar(250)") + b.Property("Excerpt") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ExtraFields") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .UseCollation("und-x-icu") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Icon") + .HasColumnType("text") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); @@ -1829,109 +1672,80 @@ protected override void BuildModel(ModelBuilder modelBuilder) .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("ModuleId") - .HasColumnType("integer"); - - b.Property("Position") - .HasColumnType("integer"); - - b.Property("PostId") - .HasColumnType("integer"); - b.Property("Priority") .HasColumnType("integer"); - b.Property("Status") - .IsRequired() - .HasColumnType("varchar(50)") + b.Property("PublishedDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("SeoDescription") + .HasColumnType("text") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.HasKey("Id", "Specificulture") - .HasName("PK_mix_post_module"); - - b.HasIndex("ModuleId", "Specificulture"); - - b.HasIndex("PostId", "Specificulture"); - - b.ToTable("mix_post_module"); - }); - - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixRelatedAttributeData", b => - { - b.Property("Id") - .HasColumnType("varchar(50)") + b.Property("SeoKeywords") + .HasColumnType("text") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Specificulture") - .HasColumnType("varchar(10)") + b.Property("SeoName") + .HasColumnType("varchar(500)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("AttributeSetId") - .HasColumnType("integer"); - - b.Property("AttributeSetName") - .HasColumnType("varchar(250)") + b.Property("SeoTitle") + .HasColumnType("text") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("CreatedBy") - .HasColumnType("varchar(50)") + b.Property("Source") + .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("CreatedDateTime") - .HasColumnType("timestamp without time zone"); - - b.Property("DataId") + b.Property("Status") .IsRequired() .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Description") - .HasColumnType("varchar(450)") + b.Property("Tags") + .HasColumnType("text") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("LastModified") - .HasColumnType("timestamp without time zone"); - - b.Property("ModifiedBy") - .HasColumnType("varchar(50)") + b.Property("Template") + .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("ParentId") - .IsRequired() - .HasColumnType("varchar(50)") + b.Property("Thumbnail") + .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("ParentType") - .IsRequired() - .HasColumnType("varchar(50)") + b.Property("Title") + .HasColumnType("text") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Priority") - .HasColumnType("integer"); - - b.Property("Status") - .IsRequired() + b.Property("Type") .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Views") + .HasColumnType("integer"); + b.HasKey("Id", "Specificulture") - .HasName("PK_mix_related_attribute_data"); + .HasName("PK_mix_post"); + + b.HasIndex("Specificulture"); - b.ToTable("mix_related_attribute_data"); + b.ToTable("mix_post"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixRelatedAttributeSet", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostAssociation", b => { b.Property("Id") .HasColumnType("integer"); @@ -1941,9 +1755,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("AttributeSetId") - .HasColumnType("integer"); - b.Property("CreatedBy") .HasColumnType("varchar(50)") .UseCollation("und-x-icu") @@ -1957,7 +1768,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("IdNavigationId") + b.Property("DestinationId") .HasColumnType("integer"); b.Property("Image") @@ -1973,16 +1784,10 @@ protected override void BuildModel(ModelBuilder modelBuilder) .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("ParentId") + b.Property("Priority") .HasColumnType("integer"); - b.Property("ParentType") - .IsRequired() - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - - b.Property("Priority") + b.Property("SourceId") .HasColumnType("integer"); b.Property("Status") @@ -1992,14 +1797,16 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasAnnotation("MySql:CharSet", "utf8"); b.HasKey("Id", "Specificulture") - .HasName("PK_mix_related_attribute_set"); + .HasName("PK_mix_post_association"); + + b.HasIndex("DestinationId", "Specificulture"); - b.HasIndex("IdNavigationId"); + b.HasIndex("SourceId", "Specificulture"); - b.ToTable("mix_related_attribute_set"); + b.ToTable("mix_post_association"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixRelatedData", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostMedia", b => { b.Property("Id") .HasColumnType("integer"); @@ -2009,14 +1816,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("AttributeSetId") - .HasColumnType("integer"); - - b.Property("AttributeSetName") - .HasColumnType("varchar(250)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("CreatedBy") .HasColumnType("varchar(50)") .UseCollation("und-x-icu") @@ -2025,36 +1824,32 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("CreatedDateTime") .HasColumnType("timestamp without time zone"); - b.Property("DataId") - .IsRequired() - .HasColumnType("varchar(50)") + b.Property("Description") + .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Description") - .HasColumnType("varchar(450)") + b.Property("Image") + .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); b.Property("LastModified") .HasColumnType("timestamp without time zone"); + b.Property("MediaId") + .HasColumnType("integer"); + b.Property("ModifiedBy") .HasColumnType("varchar(50)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("ParentId") - .IsRequired() - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("Position") + .HasColumnType("integer"); - b.Property("ParentType") - .IsRequired() - .HasColumnType("varchar(50)") - .UseCollation("und-x-icu") - .HasAnnotation("MySql:CharSet", "utf8"); + b.Property("PostId") + .HasColumnType("integer"); b.Property("Priority") .HasColumnType("integer"); @@ -2065,16 +1860,17 @@ protected override void BuildModel(ModelBuilder modelBuilder) .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Type") - .HasColumnType("integer"); - b.HasKey("Id", "Specificulture") - .HasName("PK_mix_related_data"); + .HasName("PK_mix_post_media"); + + b.HasIndex("MediaId", "Specificulture"); + + b.HasIndex("PostId", "Specificulture"); - b.ToTable("mix_related_data"); + b.ToTable("mix_post_media"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixRelatedPost", b => + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostModule", b => { b.Property("Id") .HasColumnType("integer"); @@ -2093,15 +1889,12 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("timestamp without time zone"); b.Property("Description") - .HasColumnType("varchar(450)") + .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("DestinationId") - .HasColumnType("integer"); - b.Property("Image") - .HasColumnType("varchar(450)") + .HasColumnType("varchar(250)") .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); @@ -2113,10 +1906,16 @@ protected override void BuildModel(ModelBuilder modelBuilder) .UseCollation("und-x-icu") .HasAnnotation("MySql:CharSet", "utf8"); - b.Property("Priority") + b.Property("ModuleId") .HasColumnType("integer"); - b.Property("SourceId") + b.Property("Position") + .HasColumnType("integer"); + + b.Property("PostId") + .HasColumnType("integer"); + + b.Property("Priority") .HasColumnType("integer"); b.Property("Status") @@ -2126,13 +1925,13 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasAnnotation("MySql:CharSet", "utf8"); b.HasKey("Id", "Specificulture") - .HasName("PK_mix_related_post"); + .HasName("PK_mix_post_module"); - b.HasIndex("DestinationId", "Specificulture"); + b.HasIndex("ModuleId", "Specificulture"); - b.HasIndex("SourceId", "Specificulture"); + b.HasIndex("PostId", "Specificulture"); - b.ToTable("mix_related_post"); + b.ToTable("mix_post_module"); }); modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTemplate", b => @@ -2358,28 +2157,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.ToTable("mix_url_alias"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeSetData", b => - { - b.HasOne("Mix.Cms.Lib.Models.Cms.MixAttributeSet", "AttributeSet") - .WithMany() - .HasForeignKey("AttributeSetId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("AttributeSet"); - }); - - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixAttributeSetReference", b => - { - b.HasOne("Mix.Cms.Lib.Models.Cms.MixAttributeSet", "AttributeSet") - .WithMany() - .HasForeignKey("AttributeSetId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("AttributeSet"); - }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixConfiguration", b => { b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") @@ -2393,6 +2170,17 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Navigation("SpecificultureNavigation"); }); + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseData", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixDatabase", "MixDatabase") + .WithMany() + .HasForeignKey("MixDatabaseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("MixDatabase"); + }); + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixFile", b => { b.HasOne("Mix.Cms.Lib.Models.Cms.MixTheme", "Theme") @@ -2568,6 +2356,25 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Navigation("SpecificultureNavigation"); }); + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostAssociation", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixRelatedPostMixPost") + .HasForeignKey("DestinationId", "Specificulture") + .HasConstraintName("FK_mix_post_association_mix_post1") + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "S") + .WithMany("MixRelatedPostS") + .HasForeignKey("SourceId", "Specificulture") + .HasConstraintName("FK_mix_post_association_mix_post") + .IsRequired(); + + b.Navigation("MixPost"); + + b.Navigation("S"); + }); + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostMedia", b => { b.HasOne("Mix.Cms.Lib.Models.Cms.MixMedia", "MixMedia") @@ -2607,34 +2414,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Navigation("MixPost"); }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixRelatedAttributeSet", b => - { - b.HasOne("Mix.Cms.Lib.Models.Cms.MixAttributeSet", "IdNavigation") - .WithMany() - .HasForeignKey("IdNavigationId"); - - b.Navigation("IdNavigation"); - }); - - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixRelatedPost", b => - { - b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") - .WithMany("MixRelatedPostMixPost") - .HasForeignKey("DestinationId", "Specificulture") - .HasConstraintName("FK_mix_related_post_mix_post1") - .IsRequired(); - - b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "S") - .WithMany("MixRelatedPostS") - .HasForeignKey("SourceId", "Specificulture") - .HasConstraintName("FK_mix_related_post_mix_post") - .IsRequired(); - - b.Navigation("MixPost"); - - b.Navigation("S"); - }); - modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTemplate", b => { b.HasOne("Mix.Cms.Lib.Models.Cms.MixTheme", "Theme") diff --git a/src/Mix.Cms.Lib/Migrations/SqliteMixCms/20201227053439_Init.Designer.cs b/src/Mix.Cms.Lib/Migrations/SqliteMixCms/20201227053439_Init.Designer.cs new file mode 100644 index 000000000..714967d5e --- /dev/null +++ b/src/Mix.Cms.Lib/Migrations/SqliteMixCms/20201227053439_Init.Designer.cs @@ -0,0 +1,2482 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Mix.Cms.Lib.Models.Cms; + +namespace Mix.Cms.Lib.Migrations.SqliteMixCms +{ + [DbContext(typeof(SqliteMixCmsContext))] + [Migration("20201227053439_Init")] + partial class Init + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "5.0.1"); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCache", b => + { + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("ExpiredDateTime") + .HasColumnType("datetime"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Value") + .IsRequired() + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.HasIndex("ExpiredDateTime") + .HasDatabaseName("Index_ExpiresAtTime"); + + b.ToTable("mix_cache"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCmsUser", b => + { + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Address") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Avatar") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Email") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FirstName") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("LastName") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("MiddleName") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("PhoneNumber") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Username") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.ToTable("mix_cms_user"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixConfiguration", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Category") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("DataType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Keyword") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Value") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_configuration"); + + b.HasIndex("Specificulture"); + + b.ToTable("mix_configuration"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCulture", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Alias") + .HasColumnType("varchar(150)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FullName") + .HasColumnType("varchar(150)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Icon") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("Lcid") + .HasColumnType("varchar(50)") + .HasColumnName("LCID") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .IsRequired() + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.HasIndex("Specificulture") + .IsUnique() + .HasDatabaseName("IX_Mix_Culture"); + + b.ToTable("mix_culture"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabase", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("EdmAutoSend") + .HasColumnType("bit"); + + b.Property("EdmFrom") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("EdmSubject") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("EdmTemplate") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FormTemplate") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Name") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Title") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Type") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.ToTable("mix_database"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseColumn", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Configurations") + .HasColumnType("TEXT"); + + b.Property("CreatedBy") + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("TEXT"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("DataType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("DefaultValue") + .HasColumnType("ntext"); + + b.Property("IsEncrypt") + .HasColumnType("INTEGER"); + + b.Property("IsMultiple") + .HasColumnType("INTEGER"); + + b.Property("IsRequire") + .HasColumnType("INTEGER"); + + b.Property("IsSelect") + .HasColumnType("INTEGER"); + + b.Property("IsUnique") + .HasColumnType("INTEGER"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("MixDatabaseId") + .HasColumnType("INTEGER"); + + b.Property("MixDatabaseName") + .HasMaxLength(250) + .HasColumnType("TEXT"); + + b.Property("ModifiedBy") + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("TEXT"); + + b.Property("Options") + .HasColumnType("ntext"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("ReferenceId") + .HasColumnType("INTEGER"); + + b.Property("Regex") + .HasMaxLength(4000) + .HasColumnType("TEXT"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Title") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("mix_database_column"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseData", b => + { + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("MixDatabaseId") + .HasColumnType("INTEGER"); + + b.Property("MixDatabaseName") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_database_data"); + + b.HasIndex("MixDatabaseId"); + + b.ToTable("mix_database_data"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseDataAssociation", b => + { + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("DataId") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Description") + .HasColumnType("varchar(450)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("MixDatabaseId") + .HasColumnType("INTEGER"); + + b.Property("MixDatabaseName") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ParentId") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ParentType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_database_data_association"); + + b.ToTable("mix_database_data_association"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseDataValue", b => + { + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("BooleanValue") + .HasColumnType("bit"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("DataId") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("DataType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("DateTimeValue") + .HasColumnType("datetime"); + + b.Property("DoubleValue") + .HasColumnType("REAL"); + + b.Property("EncryptKey") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("EncryptType") + .HasColumnType("INTEGER"); + + b.Property("EncryptValue") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("IntegerValue") + .HasColumnType("INTEGER"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("MixDatabaseColumnId") + .HasColumnType("INTEGER"); + + b.Property("MixDatabaseColumnName") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("MixDatabaseName") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Regex") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("StringValue") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_database_data_value"); + + b.HasIndex("DataId"); + + b.ToTable("mix_database_data_value"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixFile", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Extension") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileFolder") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileName") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FolderType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("StringContent") + .IsRequired() + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ThemeId") + .HasColumnType("INTEGER"); + + b.Property("ThemeName") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.HasIndex("ThemeId"); + + b.ToTable("mix_file"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixLanguage", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Category") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("DataType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("DefaultValue") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Keyword") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Value") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_language"); + + b.HasIndex("Specificulture"); + + b.ToTable("mix_language"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixMedia", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Extension") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileFolder") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileName") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileProperties") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileSize") + .HasColumnType("INTEGER"); + + b.Property("FileType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Source") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Tags") + .HasColumnType("varchar(400)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("TargetUrl") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Title") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_media"); + + b.ToTable("mix_media"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModule", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("EdmTemplate") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Fields") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FormTemplate") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Name") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("PageSize") + .HasColumnType("INTEGER"); + + b.Property("PostType") + .HasColumnType("TEXT"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Template") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Thumbnail") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Title") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Type") + .HasColumnType("INTEGER"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_module"); + + b.HasIndex("Specificulture"); + + b.ToTable("mix_module"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModuleData", b => + { + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Fields") + .IsRequired() + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModuleId") + .HasColumnType("INTEGER"); + + b.Property("PageId") + .HasColumnType("INTEGER"); + + b.Property("PostId") + .HasColumnType("INTEGER"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Value") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_module_data"); + + b.HasIndex("ModuleId", "Specificulture"); + + b.HasIndex("PageId", "Specificulture"); + + b.HasIndex("PostId", "Specificulture"); + + b.HasIndex("ModuleId", "PageId", "Specificulture"); + + b.ToTable("mix_module_data"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModulePost", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModuleId") + .HasColumnType("INTEGER"); + + b.Property("PostId") + .HasColumnType("INTEGER"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_module_post"); + + b.HasIndex("ModuleId", "Specificulture"); + + b.HasIndex("PostId", "Specificulture"); + + b.ToTable("mix_module_post"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPage", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Content") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("CssClass") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Excerpt") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ExtraFields") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Icon") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("Layout") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Level") + .HasColumnType("INTEGER"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("PageSize") + .HasColumnType("INTEGER"); + + b.Property("PostType") + .HasColumnType("TEXT"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("SeoDescription") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("SeoKeywords") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("SeoName") + .HasColumnType("varchar(500)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("SeoTitle") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("StaticUrl") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Tags") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Template") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Title") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Type") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Views") + .HasColumnType("INTEGER"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_page"); + + b.HasIndex("Specificulture"); + + b.ToTable("mix_page"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPageModule", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModuleId") + .HasColumnType("INTEGER"); + + b.Property("PageId") + .HasColumnType("INTEGER"); + + b.Property("Position") + .HasColumnType("INTEGER"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_page_module"); + + b.HasIndex("ModuleId", "Specificulture"); + + b.HasIndex("PageId", "Specificulture"); + + b.ToTable("mix_page_module"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPagePost", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("PageId") + .HasColumnType("INTEGER"); + + b.Property("PostId") + .HasColumnType("INTEGER"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_page_post"); + + b.HasIndex("PageId", "Specificulture"); + + b.HasIndex("PostId", "Specificulture"); + + b.ToTable("mix_page_post"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPage", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(450)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Icon") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("Level") + .HasColumnType("INTEGER"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("TextDefault") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("TextKeyword") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Url") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.ToTable("mix_portal_page"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPageNavigation", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("PageId") + .HasColumnType("INTEGER"); + + b.Property("ParentId") + .HasColumnType("INTEGER"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.HasIndex("PageId") + .HasDatabaseName("FK_mix_portal_page_navigation_mix_portal_page"); + + b.HasIndex("ParentId"); + + b.ToTable("mix_portal_page_navigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPageRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CreatedBy") + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("TEXT"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("TEXT"); + + b.Property("PageId") + .HasColumnType("INTEGER"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("RoleId") + .HasMaxLength(50) + .HasColumnType("TEXT"); + + b.Property("Status") + .IsRequired() + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("TEXT"); + + b.HasKey("Id") + .HasName("PK_mix_portal_page_role"); + + b.HasIndex("PageId"); + + b.ToTable("mix_portal_page_role"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPost", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Content") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Excerpt") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ExtraFields") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Icon") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("PublishedDateTime") + .HasColumnType("datetime"); + + b.Property("SeoDescription") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("SeoKeywords") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("SeoName") + .HasColumnType("varchar(500)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("SeoTitle") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Source") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Tags") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Template") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Thumbnail") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Title") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Type") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Views") + .HasColumnType("INTEGER"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_post"); + + b.HasIndex("Specificulture"); + + b.ToTable("mix_post"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostAssociation", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(450)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("DestinationId") + .HasColumnType("INTEGER"); + + b.Property("Image") + .HasColumnType("varchar(450)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("SourceId") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_post_association"); + + b.HasIndex("DestinationId", "Specificulture"); + + b.HasIndex("SourceId", "Specificulture"); + + b.ToTable("mix_post_association"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostMedia", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("MediaId") + .HasColumnType("INTEGER"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Position") + .HasColumnType("INTEGER"); + + b.Property("PostId") + .HasColumnType("INTEGER"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_post_media"); + + b.HasIndex("MediaId", "Specificulture"); + + b.HasIndex("PostId", "Specificulture"); + + b.ToTable("mix_post_media"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostModule", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModuleId") + .HasColumnType("INTEGER"); + + b.Property("Position") + .HasColumnType("INTEGER"); + + b.Property("PostId") + .HasColumnType("INTEGER"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_post_module"); + + b.HasIndex("ModuleId", "Specificulture"); + + b.HasIndex("PostId", "Specificulture"); + + b.ToTable("mix_post_module"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTemplate", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Content") + .IsRequired() + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Extension") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileFolder") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileName") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FolderType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("MobileContent") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Scripts") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("SpaContent") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Styles") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ThemeId") + .HasColumnType("INTEGER"); + + b.Property("ThemeName") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.HasIndex("ThemeId") + .HasDatabaseName("IX_mix_template_file_TemplateId"); + + b.ToTable("mix_template"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTheme", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Name") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("PreviewUrl") + .HasColumnType("varchar(450)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Thumbnail") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Title") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.ToTable("mix_theme"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixUrlAlias", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Alias") + .HasMaxLength(250) + .HasColumnType("TEXT"); + + b.Property("CreatedBy") + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("TEXT"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasMaxLength(4000) + .HasColumnType("TEXT"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("TEXT"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("SourceId") + .HasMaxLength(250) + .HasColumnType("TEXT"); + + b.Property("Status") + .IsRequired() + .IsUnicode(false) + .HasColumnType("varchar(50)"); + + b.Property("Type") + .HasColumnType("INTEGER"); + + b.HasKey("Id", "Specificulture"); + + b.HasIndex("Specificulture"); + + b.ToTable("mix_url_alias"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixConfiguration", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") + .WithMany("MixConfiguration") + .HasForeignKey("Specificulture") + .HasConstraintName("FK_Mix_Configuration_Mix_Culture") + .HasPrincipalKey("Specificulture") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseData", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixDatabase", "MixDatabase") + .WithMany() + .HasForeignKey("MixDatabaseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("MixDatabase"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixFile", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixTheme", "Theme") + .WithMany("MixFile") + .HasForeignKey("ThemeId") + .HasConstraintName("FK_mix_file_mix_template"); + + b.Navigation("Theme"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixLanguage", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") + .WithMany("MixLanguage") + .HasForeignKey("Specificulture") + .HasConstraintName("FK_Mix_Language_Mix_Culture") + .HasPrincipalKey("Specificulture") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModule", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") + .WithMany("MixModule") + .HasForeignKey("Specificulture") + .HasConstraintName("FK_Mix_Module_Mix_Culture") + .HasPrincipalKey("Specificulture") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModuleData", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixModule", "MixModule") + .WithMany("MixModuleData") + .HasForeignKey("ModuleId", "Specificulture") + .HasConstraintName("FK_Mix_Module_Data_Mix_Module") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPage", "MixPage") + .WithMany("MixModuleData") + .HasForeignKey("PageId", "Specificulture") + .HasConstraintName("FK_mix_module_data_mix_page"); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixModuleData") + .HasForeignKey("PostId", "Specificulture") + .HasConstraintName("FK_mix_module_data_mix_post"); + + b.Navigation("MixModule"); + + b.Navigation("MixPage"); + + b.Navigation("MixPost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModulePost", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixModule", "MixModule") + .WithMany("MixModulePost") + .HasForeignKey("ModuleId", "Specificulture") + .HasConstraintName("FK_Mix_Module_Post_Mix_Module") + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixModulePost") + .HasForeignKey("PostId", "Specificulture") + .HasConstraintName("FK_Mix_Module_Post_Mix_Post") + .IsRequired(); + + b.Navigation("MixModule"); + + b.Navigation("MixPost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPage", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") + .WithMany("MixPage") + .HasForeignKey("Specificulture") + .HasConstraintName("FK_Mix_Page_Mix_Culture") + .HasPrincipalKey("Specificulture") + .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPageModule", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixModule", "MixModule") + .WithMany("MixPageModule") + .HasForeignKey("ModuleId", "Specificulture") + .HasConstraintName("FK_Mix_Menu_Module_Mix_Module1") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPage", "MixPage") + .WithMany("MixPageModule") + .HasForeignKey("PageId", "Specificulture") + .HasConstraintName("FK_Mix_Page_Module_Mix_Page") + .IsRequired(); + + b.Navigation("MixModule"); + + b.Navigation("MixPage"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPagePost", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPage", "MixPage") + .WithMany("MixPagePost") + .HasForeignKey("PageId", "Specificulture") + .HasConstraintName("FK_Mix_Page_Post_Mix_Page") + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixPagePost") + .HasForeignKey("PostId", "Specificulture") + .HasConstraintName("FK_Mix_Page_Post_Mix_Post") + .IsRequired(); + + b.Navigation("MixPage"); + + b.Navigation("MixPost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPageNavigation", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPortalPage", "Page") + .WithMany("MixPortalPageNavigationPage") + .HasForeignKey("PageId") + .HasConstraintName("FK_mix_portal_page_navigation_mix_portal_page") + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPortalPage", "Parent") + .WithMany("MixPortalPageNavigationParent") + .HasForeignKey("ParentId") + .HasConstraintName("FK_mix_portal_page_navigation_mix_portal_page1") + .IsRequired(); + + b.Navigation("Page"); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPageRole", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPortalPage", "Page") + .WithMany("MixPortalPageRole") + .HasForeignKey("PageId") + .HasConstraintName("FK_mix_portal_page_role_mix_portal_page") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Page"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPost", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") + .WithMany("MixPost") + .HasForeignKey("Specificulture") + .HasConstraintName("FK_Mix_Post_Mix_Culture") + .HasPrincipalKey("Specificulture") + .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostAssociation", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixRelatedPostMixPost") + .HasForeignKey("DestinationId", "Specificulture") + .HasConstraintName("FK_mix_post_association_mix_post1") + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "S") + .WithMany("MixRelatedPostS") + .HasForeignKey("SourceId", "Specificulture") + .HasConstraintName("FK_mix_post_association_mix_post") + .IsRequired(); + + b.Navigation("MixPost"); + + b.Navigation("S"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostMedia", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixMedia", "MixMedia") + .WithMany("MixPostMedia") + .HasForeignKey("MediaId", "Specificulture") + .HasConstraintName("FK_mix_post_media_mix_media") + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixPostMedia") + .HasForeignKey("PostId", "Specificulture") + .HasConstraintName("FK_mix_post_media_mix_post") + .IsRequired(); + + b.Navigation("MixMedia"); + + b.Navigation("MixPost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostModule", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixModule", "MixModule") + .WithMany("MixPostModule") + .HasForeignKey("ModuleId", "Specificulture") + .HasConstraintName("FK_Mix_Post_Module_Mix_Module1") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixPostModule") + .HasForeignKey("PostId", "Specificulture") + .HasConstraintName("FK_Mix_Post_Module_Mix_Post") + .IsRequired(); + + b.Navigation("MixModule"); + + b.Navigation("MixPost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTemplate", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixTheme", "Theme") + .WithMany("MixTemplate") + .HasForeignKey("ThemeId") + .HasConstraintName("FK_mix_template_mix_theme") + .IsRequired(); + + b.Navigation("Theme"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixUrlAlias", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") + .WithMany("MixUrlAlias") + .HasForeignKey("Specificulture") + .HasConstraintName("FK_Mix_Url_Alias_Mix_Culture") + .HasPrincipalKey("Specificulture") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCulture", b => + { + b.Navigation("MixConfiguration"); + + b.Navigation("MixLanguage"); + + b.Navigation("MixModule"); + + b.Navigation("MixPage"); + + b.Navigation("MixPost"); + + b.Navigation("MixUrlAlias"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixMedia", b => + { + b.Navigation("MixPostMedia"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModule", b => + { + b.Navigation("MixModuleData"); + + b.Navigation("MixModulePost"); + + b.Navigation("MixPageModule"); + + b.Navigation("MixPostModule"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPage", b => + { + b.Navigation("MixModuleData"); + + b.Navigation("MixPageModule"); + + b.Navigation("MixPagePost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPage", b => + { + b.Navigation("MixPortalPageNavigationPage"); + + b.Navigation("MixPortalPageNavigationParent"); + + b.Navigation("MixPortalPageRole"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPost", b => + { + b.Navigation("MixModuleData"); + + b.Navigation("MixModulePost"); + + b.Navigation("MixPagePost"); + + b.Navigation("MixPostMedia"); + + b.Navigation("MixPostModule"); + + b.Navigation("MixRelatedPostMixPost"); + + b.Navigation("MixRelatedPostS"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTheme", b => + { + b.Navigation("MixFile"); + + b.Navigation("MixTemplate"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Mix.Cms.Lib/Migrations/SqliteMixCms/20201227053439_Init.cs b/src/Mix.Cms.Lib/Migrations/SqliteMixCms/20201227053439_Init.cs new file mode 100644 index 000000000..cf8895012 --- /dev/null +++ b/src/Mix.Cms.Lib/Migrations/SqliteMixCms/20201227053439_Init.cs @@ -0,0 +1,1121 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; +using Mix.Cms.Lib.Constants; +using Mix.Cms.Lib.Services; + +namespace Mix.Cms.Lib.Migrations.SqliteMixCms +{ + public partial class Init : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + MixService.SetConfig(MixConfigurations.CONST_MIXCORE_VERSION, "1.0.1"); + MixService.SaveSettings(); + + migrationBuilder.CreateTable( + name: "mix_cache", + columns: table => new + { + Id = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE"), + Value = table.Column(type: "text", nullable: false, collation: "NOCASE"), + ExpiredDateTime = table.Column(type: "datetime", nullable: true), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + LastModified = table.Column(type: "datetime", nullable: true), + CreatedDateTime = table.Column(type: "datetime", nullable: false), + Priority = table.Column(type: "INTEGER", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE") + }, + constraints: table => + { + table.PrimaryKey("PK_mix_cache", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "mix_cms_user", + columns: table => new + { + Id = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE"), + Address = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + Avatar = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + FirstName = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + LastName = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + MiddleName = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + PhoneNumber = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + Username = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + Email = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + LastModified = table.Column(type: "datetime", nullable: true), + CreatedDateTime = table.Column(type: "datetime", nullable: false), + Priority = table.Column(type: "INTEGER", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE") + }, + constraints: table => + { + table.PrimaryKey("PK_mix_cms_user", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "mix_culture", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false), + Alias = table.Column(type: "varchar(150)", nullable: true, collation: "NOCASE"), + Description = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + FullName = table.Column(type: "varchar(150)", nullable: true, collation: "NOCASE"), + Icon = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + LCID = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "NOCASE"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + CreatedDateTime = table.Column(type: "datetime", nullable: false), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + LastModified = table.Column(type: "datetime", nullable: true), + Priority = table.Column(type: "INTEGER", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE") + }, + constraints: table => + { + table.PrimaryKey("PK_mix_culture", x => x.Id); + table.UniqueConstraint("AK_mix_culture_Specificulture", x => x.Specificulture); + }); + + migrationBuilder.CreateTable( + name: "mix_database", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false), + Type = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE"), + Title = table.Column(type: "varchar(250)", nullable: false, collation: "NOCASE"), + Name = table.Column(type: "varchar(250)", nullable: false, collation: "NOCASE"), + Description = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + FormTemplate = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + EdmTemplate = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + EdmSubject = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + EdmFrom = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + EdmAutoSend = table.Column(type: "bit", nullable: true), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + LastModified = table.Column(type: "datetime", nullable: true), + CreatedDateTime = table.Column(type: "datetime", nullable: false), + Priority = table.Column(type: "INTEGER", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE") + }, + constraints: table => + { + table.PrimaryKey("PK_mix_database", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "mix_database_column", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false), + MixDatabaseId = table.Column(type: "INTEGER", nullable: false), + MixDatabaseName = table.Column(type: "TEXT", maxLength: 250, nullable: true), + Configurations = table.Column(type: "TEXT", nullable: true), + Regex = table.Column(type: "TEXT", maxLength: 4000, nullable: true), + Title = table.Column(type: "TEXT", nullable: true), + DataType = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE"), + DefaultValue = table.Column(type: "ntext", nullable: true), + Name = table.Column(type: "TEXT", maxLength: 250, nullable: false), + Options = table.Column(type: "ntext", nullable: true), + IsRequire = table.Column(type: "INTEGER", nullable: false), + IsEncrypt = table.Column(type: "INTEGER", nullable: false), + IsMultiple = table.Column(type: "INTEGER", nullable: false), + IsSelect = table.Column(type: "INTEGER", nullable: false), + IsUnique = table.Column(type: "INTEGER", nullable: false), + ReferenceId = table.Column(type: "INTEGER", nullable: true), + ModifiedBy = table.Column(type: "TEXT", unicode: false, maxLength: 50, nullable: true), + CreatedBy = table.Column(type: "TEXT", unicode: false, maxLength: 50, nullable: true), + LastModified = table.Column(type: "datetime", nullable: true), + CreatedDateTime = table.Column(type: "datetime", nullable: false), + Priority = table.Column(type: "INTEGER", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE") + }, + constraints: table => + { + table.PrimaryKey("PK_mix_database_column", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "mix_database_data_association", + columns: table => new + { + Id = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE"), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "NOCASE"), + DataId = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE"), + ParentId = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE"), + ParentType = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE"), + MixDatabaseId = table.Column(type: "INTEGER", nullable: false), + MixDatabaseName = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + Description = table.Column(type: "varchar(450)", nullable: true, collation: "NOCASE"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + CreatedDateTime = table.Column(type: "datetime", nullable: false), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + LastModified = table.Column(type: "datetime", nullable: true), + Priority = table.Column(type: "INTEGER", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE") + }, + constraints: table => + { + table.PrimaryKey("PK_mix_database_data_association", x => new { x.Id, x.Specificulture }); + }); + + migrationBuilder.CreateTable( + name: "mix_database_data_value", + columns: table => new + { + Id = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE"), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "NOCASE"), + MixDatabaseColumnId = table.Column(type: "INTEGER", nullable: false), + MixDatabaseColumnName = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE"), + MixDatabaseName = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + Regex = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + DataType = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE"), + BooleanValue = table.Column(type: "bit", nullable: true), + DataId = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE"), + DateTimeValue = table.Column(type: "datetime", nullable: true), + DoubleValue = table.Column(type: "REAL", nullable: true), + IntegerValue = table.Column(type: "INTEGER", nullable: true), + StringValue = table.Column(type: "text", nullable: true, collation: "NOCASE"), + EncryptValue = table.Column(type: "text", nullable: true, collation: "NOCASE"), + EncryptKey = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + EncryptType = table.Column(type: "INTEGER", nullable: false), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + LastModified = table.Column(type: "datetime", nullable: true), + CreatedDateTime = table.Column(type: "datetime", nullable: false), + Priority = table.Column(type: "INTEGER", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE") + }, + constraints: table => + { + table.PrimaryKey("PK_mix_database_data_value", x => new { x.Id, x.Specificulture }); + }); + + migrationBuilder.CreateTable( + name: "mix_media", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "NOCASE"), + Description = table.Column(type: "text", nullable: true, collation: "NOCASE"), + Extension = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE"), + FileFolder = table.Column(type: "varchar(250)", nullable: false, collation: "NOCASE"), + FileName = table.Column(type: "varchar(250)", nullable: false, collation: "NOCASE"), + FileProperties = table.Column(type: "text", nullable: true, collation: "NOCASE"), + FileSize = table.Column(type: "INTEGER", nullable: false), + FileType = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE"), + Title = table.Column(type: "text", nullable: true, collation: "NOCASE"), + Tags = table.Column(type: "varchar(400)", nullable: true, collation: "NOCASE"), + Source = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + TargetUrl = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + CreatedDateTime = table.Column(type: "datetime", nullable: false), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + LastModified = table.Column(type: "datetime", nullable: true), + Priority = table.Column(type: "INTEGER", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE") + }, + constraints: table => + { + table.PrimaryKey("PK_mix_media", x => new { x.Id, x.Specificulture }); + }); + + migrationBuilder.CreateTable( + name: "mix_portal_page", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false), + Icon = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + TextKeyword = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + Url = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + Description = table.Column(type: "varchar(450)", nullable: true, collation: "NOCASE"), + TextDefault = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + Level = table.Column(type: "INTEGER", nullable: false), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + CreatedDateTime = table.Column(type: "datetime", nullable: false), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + LastModified = table.Column(type: "datetime", nullable: true), + Priority = table.Column(type: "INTEGER", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE") + }, + constraints: table => + { + table.PrimaryKey("PK_mix_portal_page", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "mix_theme", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false), + Thumbnail = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + Image = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + Title = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + Name = table.Column(type: "varchar(250)", nullable: false, collation: "NOCASE"), + PreviewUrl = table.Column(type: "varchar(450)", nullable: true, collation: "NOCASE"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + CreatedDateTime = table.Column(type: "datetime", nullable: false), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + LastModified = table.Column(type: "datetime", nullable: true), + Priority = table.Column(type: "INTEGER", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE") + }, + constraints: table => + { + table.PrimaryKey("PK_mix_theme", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "mix_configuration", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "NOCASE"), + Keyword = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE"), + Category = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + DataType = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE"), + Description = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + Value = table.Column(type: "text", nullable: true, collation: "NOCASE"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + CreatedDateTime = table.Column(type: "datetime", nullable: false), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + LastModified = table.Column(type: "datetime", nullable: true), + Priority = table.Column(type: "INTEGER", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE") + }, + constraints: table => + { + table.PrimaryKey("PK_mix_configuration", x => new { x.Id, x.Specificulture }); + table.ForeignKey( + name: "FK_Mix_Configuration_Mix_Culture", + column: x => x.Specificulture, + principalTable: "mix_culture", + principalColumn: "Specificulture", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "mix_language", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "NOCASE"), + Keyword = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE"), + Category = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + DataType = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE"), + Description = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + Value = table.Column(type: "text", nullable: true, collation: "NOCASE"), + DefaultValue = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + CreatedDateTime = table.Column(type: "datetime", nullable: false), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + LastModified = table.Column(type: "datetime", nullable: true), + Priority = table.Column(type: "INTEGER", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE") + }, + constraints: table => + { + table.PrimaryKey("PK_mix_language", x => new { x.Id, x.Specificulture }); + table.ForeignKey( + name: "FK_Mix_Language_Mix_Culture", + column: x => x.Specificulture, + principalTable: "mix_culture", + principalColumn: "Specificulture", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "mix_module", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "NOCASE"), + Description = table.Column(type: "text", nullable: true, collation: "NOCASE"), + Fields = table.Column(type: "text", nullable: true, collation: "NOCASE"), + Thumbnail = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + Image = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + Name = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE"), + Template = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + FormTemplate = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + EdmTemplate = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + Title = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + Type = table.Column(type: "INTEGER", nullable: false), + PostType = table.Column(type: "TEXT", nullable: true), + PageSize = table.Column(type: "INTEGER", nullable: true), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + CreatedDateTime = table.Column(type: "datetime", nullable: false), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + LastModified = table.Column(type: "datetime", nullable: true), + Priority = table.Column(type: "INTEGER", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE") + }, + constraints: table => + { + table.PrimaryKey("PK_mix_module", x => new { x.Id, x.Specificulture }); + table.ForeignKey( + name: "FK_Mix_Module_Mix_Culture", + column: x => x.Specificulture, + principalTable: "mix_culture", + principalColumn: "Specificulture", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "mix_page", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "NOCASE"), + Content = table.Column(type: "text", nullable: true, collation: "NOCASE"), + CssClass = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + Excerpt = table.Column(type: "text", nullable: true, collation: "NOCASE"), + Icon = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + Image = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + Layout = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + Level = table.Column(type: "INTEGER", nullable: true), + SeoDescription = table.Column(type: "text", nullable: true, collation: "NOCASE"), + SeoKeywords = table.Column(type: "text", nullable: true, collation: "NOCASE"), + SeoName = table.Column(type: "varchar(500)", nullable: true, collation: "NOCASE"), + SeoTitle = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + StaticUrl = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + Tags = table.Column(type: "text", nullable: true, collation: "NOCASE"), + Template = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + Title = table.Column(type: "text", nullable: true, collation: "NOCASE"), + Type = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE"), + PostType = table.Column(type: "TEXT", nullable: true), + Views = table.Column(type: "INTEGER", nullable: true), + PageSize = table.Column(type: "INTEGER", nullable: true), + ExtraFields = table.Column(type: "text", nullable: true, collation: "NOCASE"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + CreatedDateTime = table.Column(type: "datetime", nullable: false), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + LastModified = table.Column(type: "datetime", nullable: true), + Priority = table.Column(type: "INTEGER", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE") + }, + constraints: table => + { + table.PrimaryKey("PK_mix_page", x => new { x.Id, x.Specificulture }); + table.ForeignKey( + name: "FK_Mix_Page_Mix_Culture", + column: x => x.Specificulture, + principalTable: "mix_culture", + principalColumn: "Specificulture", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "mix_post", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "NOCASE"), + Content = table.Column(type: "text", nullable: true, collation: "NOCASE"), + PublishedDateTime = table.Column(type: "datetime", nullable: true), + Excerpt = table.Column(type: "text", nullable: true, collation: "NOCASE"), + ExtraProperties = table.Column(type: "text", nullable: true, collation: "NOCASE"), + Icon = table.Column(type: "text", nullable: true, collation: "NOCASE"), + Image = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + SeoDescription = table.Column(type: "text", nullable: true, collation: "NOCASE"), + SeoKeywords = table.Column(type: "text", nullable: true, collation: "NOCASE"), + SeoName = table.Column(type: "varchar(500)", nullable: true, collation: "NOCASE"), + SeoTitle = table.Column(type: "text", nullable: true, collation: "NOCASE"), + Source = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + Tags = table.Column(type: "text", nullable: true, collation: "NOCASE"), + Template = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + Thumbnail = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + Title = table.Column(type: "text", nullable: true, collation: "NOCASE"), + Type = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + Views = table.Column(type: "INTEGER", nullable: true), + ExtraFields = table.Column(type: "text", nullable: true, collation: "NOCASE"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + CreatedDateTime = table.Column(type: "datetime", nullable: false), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + LastModified = table.Column(type: "datetime", nullable: true), + Priority = table.Column(type: "INTEGER", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE") + }, + constraints: table => + { + table.PrimaryKey("PK_mix_post", x => new { x.Id, x.Specificulture }); + table.ForeignKey( + name: "FK_Mix_Post_Mix_Culture", + column: x => x.Specificulture, + principalTable: "mix_culture", + principalColumn: "Specificulture", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "mix_url_alias", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "NOCASE"), + SourceId = table.Column(type: "TEXT", maxLength: 250, nullable: true), + Type = table.Column(type: "INTEGER", nullable: false), + Description = table.Column(type: "TEXT", maxLength: 4000, nullable: true), + Alias = table.Column(type: "TEXT", maxLength: 250, nullable: true), + CreatedBy = table.Column(type: "TEXT", unicode: false, maxLength: 50, nullable: true), + CreatedDateTime = table.Column(type: "datetime", nullable: false), + ModifiedBy = table.Column(type: "TEXT", unicode: false, maxLength: 50, nullable: true), + LastModified = table.Column(type: "datetime", nullable: true), + Priority = table.Column(type: "INTEGER", nullable: false), + Status = table.Column(type: "varchar(50)", unicode: false, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_mix_url_alias", x => new { x.Id, x.Specificulture }); + table.ForeignKey( + name: "FK_Mix_Url_Alias_Mix_Culture", + column: x => x.Specificulture, + principalTable: "mix_culture", + principalColumn: "Specificulture", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "mix_database_data", + columns: table => new + { + Id = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE"), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "NOCASE"), + MixDatabaseId = table.Column(type: "INTEGER", nullable: false), + MixDatabaseName = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + LastModified = table.Column(type: "datetime", nullable: true), + CreatedDateTime = table.Column(type: "datetime", nullable: false), + Priority = table.Column(type: "INTEGER", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE") + }, + constraints: table => + { + table.PrimaryKey("PK_mix_database_data", x => new { x.Id, x.Specificulture }); + table.ForeignKey( + name: "FK_mix_database_data_mix_database_MixDatabaseId", + column: x => x.MixDatabaseId, + principalTable: "mix_database", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "mix_portal_page_navigation", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false), + PageId = table.Column(type: "INTEGER", nullable: false), + ParentId = table.Column(type: "INTEGER", nullable: false), + Description = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + Image = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + CreatedDateTime = table.Column(type: "datetime", nullable: false), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + LastModified = table.Column(type: "datetime", nullable: true), + Priority = table.Column(type: "INTEGER", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE") + }, + constraints: table => + { + table.PrimaryKey("PK_mix_portal_page_navigation", x => x.Id); + table.ForeignKey( + name: "FK_mix_portal_page_navigation_mix_portal_page", + column: x => x.PageId, + principalTable: "mix_portal_page", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_mix_portal_page_navigation_mix_portal_page1", + column: x => x.ParentId, + principalTable: "mix_portal_page", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "mix_portal_page_role", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true), + PageId = table.Column(type: "INTEGER", nullable: false), + RoleId = table.Column(type: "TEXT", maxLength: 50, nullable: true), + CreatedBy = table.Column(type: "TEXT", unicode: false, maxLength: 50, nullable: true), + CreatedDateTime = table.Column(type: "datetime", nullable: false), + ModifiedBy = table.Column(type: "TEXT", unicode: false, maxLength: 50, nullable: true), + LastModified = table.Column(type: "datetime", nullable: true), + Priority = table.Column(type: "INTEGER", nullable: false), + Status = table.Column(type: "TEXT", unicode: false, maxLength: 50, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_mix_portal_page_role", x => x.Id); + table.ForeignKey( + name: "FK_mix_portal_page_role_mix_portal_page", + column: x => x.PageId, + principalTable: "mix_portal_page", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "mix_file", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false), + StringContent = table.Column(type: "text", nullable: false, collation: "NOCASE"), + Extension = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE"), + FileFolder = table.Column(type: "varchar(250)", nullable: false, collation: "NOCASE"), + FileName = table.Column(type: "varchar(250)", nullable: false, collation: "NOCASE"), + FolderType = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE"), + ThemeId = table.Column(type: "INTEGER", nullable: true), + ThemeName = table.Column(type: "varchar(250)", nullable: false, collation: "NOCASE"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + CreatedDateTime = table.Column(type: "datetime", nullable: false), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + LastModified = table.Column(type: "datetime", nullable: true), + Priority = table.Column(type: "INTEGER", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE") + }, + constraints: table => + { + table.PrimaryKey("PK_mix_file", x => x.Id); + table.ForeignKey( + name: "FK_mix_file_mix_template", + column: x => x.ThemeId, + principalTable: "mix_theme", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "mix_template", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false), + Content = table.Column(type: "text", nullable: false, collation: "NOCASE"), + Extension = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE"), + FileFolder = table.Column(type: "varchar(250)", nullable: false, collation: "NOCASE"), + FileName = table.Column(type: "varchar(250)", nullable: false, collation: "NOCASE"), + FolderType = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE"), + MobileContent = table.Column(type: "text", nullable: true, collation: "NOCASE"), + Scripts = table.Column(type: "text", nullable: true, collation: "NOCASE"), + SpaContent = table.Column(type: "text", nullable: true, collation: "NOCASE"), + Styles = table.Column(type: "text", nullable: true, collation: "NOCASE"), + ThemeId = table.Column(type: "INTEGER", nullable: false), + ThemeName = table.Column(type: "varchar(250)", nullable: false, collation: "NOCASE"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + CreatedDateTime = table.Column(type: "datetime", nullable: false), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + LastModified = table.Column(type: "datetime", nullable: true), + Priority = table.Column(type: "INTEGER", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE") + }, + constraints: table => + { + table.PrimaryKey("PK_mix_template", x => x.Id); + table.ForeignKey( + name: "FK_mix_template_mix_theme", + column: x => x.ThemeId, + principalTable: "mix_theme", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "mix_page_module", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "NOCASE"), + ModuleId = table.Column(type: "INTEGER", nullable: false), + PageId = table.Column(type: "INTEGER", nullable: false), + Description = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + Image = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + Position = table.Column(type: "INTEGER", nullable: false), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + CreatedDateTime = table.Column(type: "datetime", nullable: false), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + LastModified = table.Column(type: "datetime", nullable: true), + Priority = table.Column(type: "INTEGER", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE") + }, + constraints: table => + { + table.PrimaryKey("PK_mix_page_module", x => new { x.Id, x.Specificulture }); + table.ForeignKey( + name: "FK_Mix_Menu_Module_Mix_Module1", + columns: x => new { x.ModuleId, x.Specificulture }, + principalTable: "mix_module", + principalColumns: new[] { "Id", "Specificulture" }, + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Mix_Page_Module_Mix_Page", + columns: x => new { x.PageId, x.Specificulture }, + principalTable: "mix_page", + principalColumns: new[] { "Id", "Specificulture" }, + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "mix_module_data", + columns: table => new + { + Id = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE"), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "NOCASE"), + ModuleId = table.Column(type: "INTEGER", nullable: false), + PageId = table.Column(type: "INTEGER", nullable: true), + PostId = table.Column(type: "INTEGER", nullable: true), + Fields = table.Column(type: "text", nullable: false, collation: "NOCASE"), + Value = table.Column(type: "text", nullable: true, collation: "NOCASE"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + CreatedDateTime = table.Column(type: "datetime", nullable: false), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + LastModified = table.Column(type: "datetime", nullable: true), + Priority = table.Column(type: "INTEGER", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE") + }, + constraints: table => + { + table.PrimaryKey("PK_mix_module_data", x => new { x.Id, x.Specificulture }); + table.ForeignKey( + name: "FK_Mix_Module_Data_Mix_Module", + columns: x => new { x.ModuleId, x.Specificulture }, + principalTable: "mix_module", + principalColumns: new[] { "Id", "Specificulture" }, + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_mix_module_data_mix_page", + columns: x => new { x.PageId, x.Specificulture }, + principalTable: "mix_page", + principalColumns: new[] { "Id", "Specificulture" }, + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_mix_module_data_mix_post", + columns: x => new { x.PostId, x.Specificulture }, + principalTable: "mix_post", + principalColumns: new[] { "Id", "Specificulture" }, + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "mix_module_post", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "NOCASE"), + PostId = table.Column(type: "INTEGER", nullable: false), + ModuleId = table.Column(type: "INTEGER", nullable: false), + Description = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + Image = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + CreatedDateTime = table.Column(type: "datetime", nullable: false), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + LastModified = table.Column(type: "datetime", nullable: true), + Priority = table.Column(type: "INTEGER", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE") + }, + constraints: table => + { + table.PrimaryKey("PK_mix_module_post", x => new { x.Id, x.Specificulture }); + table.ForeignKey( + name: "FK_Mix_Module_Post_Mix_Module", + columns: x => new { x.ModuleId, x.Specificulture }, + principalTable: "mix_module", + principalColumns: new[] { "Id", "Specificulture" }, + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_Mix_Module_Post_Mix_Post", + columns: x => new { x.PostId, x.Specificulture }, + principalTable: "mix_post", + principalColumns: new[] { "Id", "Specificulture" }, + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "mix_page_post", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "NOCASE"), + PostId = table.Column(type: "INTEGER", nullable: false), + PageId = table.Column(type: "INTEGER", nullable: false), + Description = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + Image = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + CreatedDateTime = table.Column(type: "datetime", nullable: false), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + LastModified = table.Column(type: "datetime", nullable: true), + Priority = table.Column(type: "INTEGER", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE") + }, + constraints: table => + { + table.PrimaryKey("PK_mix_page_post", x => new { x.Id, x.Specificulture }); + table.ForeignKey( + name: "FK_Mix_Page_Post_Mix_Page", + columns: x => new { x.PageId, x.Specificulture }, + principalTable: "mix_page", + principalColumns: new[] { "Id", "Specificulture" }, + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_Mix_Page_Post_Mix_Post", + columns: x => new { x.PostId, x.Specificulture }, + principalTable: "mix_post", + principalColumns: new[] { "Id", "Specificulture" }, + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "mix_post_association", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "NOCASE"), + SourceId = table.Column(type: "INTEGER", nullable: false), + DestinationId = table.Column(type: "INTEGER", nullable: false), + Description = table.Column(type: "varchar(450)", nullable: true, collation: "NOCASE"), + Image = table.Column(type: "varchar(450)", nullable: true, collation: "NOCASE"), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + CreatedDateTime = table.Column(type: "datetime", nullable: false), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + LastModified = table.Column(type: "datetime", nullable: true), + Priority = table.Column(type: "INTEGER", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE") + }, + constraints: table => + { + table.PrimaryKey("PK_mix_post_association", x => new { x.Id, x.Specificulture }); + table.ForeignKey( + name: "FK_mix_post_association_mix_post", + columns: x => new { x.SourceId, x.Specificulture }, + principalTable: "mix_post", + principalColumns: new[] { "Id", "Specificulture" }, + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_mix_post_association_mix_post1", + columns: x => new { x.DestinationId, x.Specificulture }, + principalTable: "mix_post", + principalColumns: new[] { "Id", "Specificulture" }, + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "mix_post_media", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "NOCASE"), + MediaId = table.Column(type: "INTEGER", nullable: false), + PostId = table.Column(type: "INTEGER", nullable: false), + Description = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + Image = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + Position = table.Column(type: "INTEGER", nullable: false), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + CreatedDateTime = table.Column(type: "datetime", nullable: false), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + LastModified = table.Column(type: "datetime", nullable: true), + Priority = table.Column(type: "INTEGER", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE") + }, + constraints: table => + { + table.PrimaryKey("PK_mix_post_media", x => new { x.Id, x.Specificulture }); + table.ForeignKey( + name: "FK_mix_post_media_mix_media", + columns: x => new { x.MediaId, x.Specificulture }, + principalTable: "mix_media", + principalColumns: new[] { "Id", "Specificulture" }, + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_mix_post_media_mix_post", + columns: x => new { x.PostId, x.Specificulture }, + principalTable: "mix_post", + principalColumns: new[] { "Id", "Specificulture" }, + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "mix_post_module", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false), + Specificulture = table.Column(type: "varchar(10)", nullable: false, collation: "NOCASE"), + ModuleId = table.Column(type: "INTEGER", nullable: false), + PostId = table.Column(type: "INTEGER", nullable: false), + Description = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + Image = table.Column(type: "varchar(250)", nullable: true, collation: "NOCASE"), + Position = table.Column(type: "INTEGER", nullable: false), + CreatedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + CreatedDateTime = table.Column(type: "datetime", nullable: false), + ModifiedBy = table.Column(type: "varchar(50)", nullable: true, collation: "NOCASE"), + LastModified = table.Column(type: "datetime", nullable: true), + Priority = table.Column(type: "INTEGER", nullable: false), + Status = table.Column(type: "varchar(50)", nullable: false, collation: "NOCASE") + }, + constraints: table => + { + table.PrimaryKey("PK_mix_post_module", x => new { x.Id, x.Specificulture }); + table.ForeignKey( + name: "FK_Mix_Post_Module_Mix_Module1", + columns: x => new { x.ModuleId, x.Specificulture }, + principalTable: "mix_module", + principalColumns: new[] { "Id", "Specificulture" }, + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Mix_Post_Module_Mix_Post", + columns: x => new { x.PostId, x.Specificulture }, + principalTable: "mix_post", + principalColumns: new[] { "Id", "Specificulture" }, + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateIndex( + name: "Index_ExpiresAtTime", + table: "mix_cache", + column: "ExpiredDateTime"); + + migrationBuilder.CreateIndex( + name: "IX_mix_configuration_Specificulture", + table: "mix_configuration", + column: "Specificulture"); + + migrationBuilder.CreateIndex( + name: "IX_Mix_Culture", + table: "mix_culture", + column: "Specificulture", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_mix_database_data_MixDatabaseId", + table: "mix_database_data", + column: "MixDatabaseId"); + + migrationBuilder.CreateIndex( + name: "IX_mix_database_data_value_DataId", + table: "mix_database_data_value", + column: "DataId"); + + migrationBuilder.CreateIndex( + name: "IX_mix_file_ThemeId", + table: "mix_file", + column: "ThemeId"); + + migrationBuilder.CreateIndex( + name: "IX_mix_language_Specificulture", + table: "mix_language", + column: "Specificulture"); + + migrationBuilder.CreateIndex( + name: "IX_mix_module_Specificulture", + table: "mix_module", + column: "Specificulture"); + + migrationBuilder.CreateIndex( + name: "IX_mix_module_data_ModuleId_PageId_Specificulture", + table: "mix_module_data", + columns: new[] { "ModuleId", "PageId", "Specificulture" }); + + migrationBuilder.CreateIndex( + name: "IX_mix_module_data_ModuleId_Specificulture", + table: "mix_module_data", + columns: new[] { "ModuleId", "Specificulture" }); + + migrationBuilder.CreateIndex( + name: "IX_mix_module_data_PageId_Specificulture", + table: "mix_module_data", + columns: new[] { "PageId", "Specificulture" }); + + migrationBuilder.CreateIndex( + name: "IX_mix_module_data_PostId_Specificulture", + table: "mix_module_data", + columns: new[] { "PostId", "Specificulture" }); + + migrationBuilder.CreateIndex( + name: "IX_mix_module_post_ModuleId_Specificulture", + table: "mix_module_post", + columns: new[] { "ModuleId", "Specificulture" }); + + migrationBuilder.CreateIndex( + name: "IX_mix_module_post_PostId_Specificulture", + table: "mix_module_post", + columns: new[] { "PostId", "Specificulture" }); + + migrationBuilder.CreateIndex( + name: "IX_mix_page_Specificulture", + table: "mix_page", + column: "Specificulture"); + + migrationBuilder.CreateIndex( + name: "IX_mix_page_module_ModuleId_Specificulture", + table: "mix_page_module", + columns: new[] { "ModuleId", "Specificulture" }); + + migrationBuilder.CreateIndex( + name: "IX_mix_page_module_PageId_Specificulture", + table: "mix_page_module", + columns: new[] { "PageId", "Specificulture" }); + + migrationBuilder.CreateIndex( + name: "IX_mix_page_post_PageId_Specificulture", + table: "mix_page_post", + columns: new[] { "PageId", "Specificulture" }); + + migrationBuilder.CreateIndex( + name: "IX_mix_page_post_PostId_Specificulture", + table: "mix_page_post", + columns: new[] { "PostId", "Specificulture" }); + + migrationBuilder.CreateIndex( + name: "FK_mix_portal_page_navigation_mix_portal_page", + table: "mix_portal_page_navigation", + column: "PageId"); + + migrationBuilder.CreateIndex( + name: "IX_mix_portal_page_navigation_ParentId", + table: "mix_portal_page_navigation", + column: "ParentId"); + + migrationBuilder.CreateIndex( + name: "IX_mix_portal_page_role_PageId", + table: "mix_portal_page_role", + column: "PageId"); + + migrationBuilder.CreateIndex( + name: "IX_mix_post_Specificulture", + table: "mix_post", + column: "Specificulture"); + + migrationBuilder.CreateIndex( + name: "IX_mix_post_association_DestinationId_Specificulture", + table: "mix_post_association", + columns: new[] { "DestinationId", "Specificulture" }); + + migrationBuilder.CreateIndex( + name: "IX_mix_post_association_SourceId_Specificulture", + table: "mix_post_association", + columns: new[] { "SourceId", "Specificulture" }); + + migrationBuilder.CreateIndex( + name: "IX_mix_post_media_MediaId_Specificulture", + table: "mix_post_media", + columns: new[] { "MediaId", "Specificulture" }); + + migrationBuilder.CreateIndex( + name: "IX_mix_post_media_PostId_Specificulture", + table: "mix_post_media", + columns: new[] { "PostId", "Specificulture" }); + + migrationBuilder.CreateIndex( + name: "IX_mix_post_module_ModuleId_Specificulture", + table: "mix_post_module", + columns: new[] { "ModuleId", "Specificulture" }); + + migrationBuilder.CreateIndex( + name: "IX_mix_post_module_PostId_Specificulture", + table: "mix_post_module", + columns: new[] { "PostId", "Specificulture" }); + + migrationBuilder.CreateIndex( + name: "IX_mix_template_file_TemplateId", + table: "mix_template", + column: "ThemeId"); + + migrationBuilder.CreateIndex( + name: "IX_mix_url_alias_Specificulture", + table: "mix_url_alias", + column: "Specificulture"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "mix_cache"); + + migrationBuilder.DropTable( + name: "mix_cms_user"); + + migrationBuilder.DropTable( + name: "mix_configuration"); + + migrationBuilder.DropTable( + name: "mix_database_column"); + + migrationBuilder.DropTable( + name: "mix_database_data"); + + migrationBuilder.DropTable( + name: "mix_database_data_association"); + + migrationBuilder.DropTable( + name: "mix_database_data_value"); + + migrationBuilder.DropTable( + name: "mix_file"); + + migrationBuilder.DropTable( + name: "mix_language"); + + migrationBuilder.DropTable( + name: "mix_module_data"); + + migrationBuilder.DropTable( + name: "mix_module_post"); + + migrationBuilder.DropTable( + name: "mix_page_module"); + + migrationBuilder.DropTable( + name: "mix_page_post"); + + migrationBuilder.DropTable( + name: "mix_portal_page_navigation"); + + migrationBuilder.DropTable( + name: "mix_portal_page_role"); + + migrationBuilder.DropTable( + name: "mix_post_association"); + + migrationBuilder.DropTable( + name: "mix_post_media"); + + migrationBuilder.DropTable( + name: "mix_post_module"); + + migrationBuilder.DropTable( + name: "mix_template"); + + migrationBuilder.DropTable( + name: "mix_url_alias"); + + migrationBuilder.DropTable( + name: "mix_database"); + + migrationBuilder.DropTable( + name: "mix_page"); + + migrationBuilder.DropTable( + name: "mix_portal_page"); + + migrationBuilder.DropTable( + name: "mix_media"); + + migrationBuilder.DropTable( + name: "mix_module"); + + migrationBuilder.DropTable( + name: "mix_post"); + + migrationBuilder.DropTable( + name: "mix_theme"); + + migrationBuilder.DropTable( + name: "mix_culture"); + } + } +} diff --git a/src/Mix.Cms.Lib/Migrations/SqliteMixCms/20210217111513_RenameDatabase.Designer.cs b/src/Mix.Cms.Lib/Migrations/SqliteMixCms/20210217111513_RenameDatabase.Designer.cs new file mode 100644 index 000000000..8a177d619 --- /dev/null +++ b/src/Mix.Cms.Lib/Migrations/SqliteMixCms/20210217111513_RenameDatabase.Designer.cs @@ -0,0 +1,2482 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Mix.Cms.Lib.Models.Cms; + +namespace Mix.Cms.Lib.Migrations.SqliteMixCms +{ + [DbContext(typeof(SqliteMixCmsContext))] + [Migration("20210217111513_RenameDatabase")] + partial class RenameDatabase + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "5.0.1"); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCache", b => + { + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("ExpiredDateTime") + .HasColumnType("datetime"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Value") + .IsRequired() + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.HasIndex("ExpiredDateTime") + .HasDatabaseName("Index_ExpiresAtTime"); + + b.ToTable("mix_cache"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCmsUser", b => + { + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Address") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Avatar") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Email") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FirstName") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("LastName") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("MiddleName") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("PhoneNumber") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Username") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.ToTable("mix_cms_user"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixConfiguration", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Category") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("DataType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Keyword") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Value") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_configuration"); + + b.HasIndex("Specificulture"); + + b.ToTable("mix_configuration"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCulture", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Alias") + .HasColumnType("varchar(150)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FullName") + .HasColumnType("varchar(150)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Icon") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("Lcid") + .HasColumnType("varchar(50)") + .HasColumnName("LCID") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .IsRequired() + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.HasIndex("Specificulture") + .IsUnique() + .HasDatabaseName("IX_Mix_Culture"); + + b.ToTable("mix_culture"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabase", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("EdmAutoSend") + .HasColumnType("bit"); + + b.Property("EdmFrom") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("EdmSubject") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("EdmTemplate") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FormTemplate") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Name") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Title") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Type") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.ToTable("mix_database"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseColumn", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Configurations") + .HasColumnType("TEXT"); + + b.Property("CreatedBy") + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("TEXT"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("DataType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("DefaultValue") + .HasColumnType("ntext"); + + b.Property("IsEncrypt") + .HasColumnType("INTEGER"); + + b.Property("IsMultiple") + .HasColumnType("INTEGER"); + + b.Property("IsRequire") + .HasColumnType("INTEGER"); + + b.Property("IsSelect") + .HasColumnType("INTEGER"); + + b.Property("IsUnique") + .HasColumnType("INTEGER"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("MixDatabaseId") + .HasColumnType("INTEGER"); + + b.Property("MixDatabaseName") + .HasMaxLength(250) + .HasColumnType("TEXT"); + + b.Property("ModifiedBy") + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("TEXT"); + + b.Property("Options") + .HasColumnType("ntext"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("ReferenceId") + .HasColumnType("INTEGER"); + + b.Property("Regex") + .HasMaxLength(4000) + .HasColumnType("TEXT"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Title") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("mix_database_column"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseData", b => + { + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("MixDatabaseId") + .HasColumnType("INTEGER"); + + b.Property("MixDatabaseName") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_database_data"); + + b.HasIndex("MixDatabaseId"); + + b.ToTable("mix_database_data"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseDataAssociation", b => + { + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("DataId") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Description") + .HasColumnType("varchar(450)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("MixDatabaseId") + .HasColumnType("INTEGER"); + + b.Property("MixDatabaseName") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ParentId") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ParentType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_database_data_association"); + + b.ToTable("mix_database_data_association"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseDataValue", b => + { + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("BooleanValue") + .HasColumnType("bit"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("DataId") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("DataType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("DateTimeValue") + .HasColumnType("datetime"); + + b.Property("DoubleValue") + .HasColumnType("REAL"); + + b.Property("EncryptKey") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("EncryptType") + .HasColumnType("INTEGER"); + + b.Property("EncryptValue") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("IntegerValue") + .HasColumnType("INTEGER"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("MixDatabaseColumnId") + .HasColumnType("INTEGER"); + + b.Property("MixDatabaseColumnName") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("MixDatabaseName") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Regex") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("StringValue") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_database_data_value"); + + b.HasIndex("DataId"); + + b.ToTable("mix_database_data_value"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixFile", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Extension") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileFolder") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileName") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FolderType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("StringContent") + .IsRequired() + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ThemeId") + .HasColumnType("INTEGER"); + + b.Property("ThemeName") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.HasIndex("ThemeId"); + + b.ToTable("mix_file"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixLanguage", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Category") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("DataType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("DefaultValue") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Keyword") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Value") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_language"); + + b.HasIndex("Specificulture"); + + b.ToTable("mix_language"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixMedia", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Extension") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileFolder") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileName") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileProperties") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileSize") + .HasColumnType("INTEGER"); + + b.Property("FileType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Source") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Tags") + .HasColumnType("varchar(400)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("TargetUrl") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Title") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_media"); + + b.ToTable("mix_media"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModule", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("EdmTemplate") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Fields") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FormTemplate") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Name") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("PageSize") + .HasColumnType("INTEGER"); + + b.Property("PostType") + .HasColumnType("TEXT"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Template") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Thumbnail") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Title") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Type") + .HasColumnType("INTEGER"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_module"); + + b.HasIndex("Specificulture"); + + b.ToTable("mix_module"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModuleData", b => + { + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Fields") + .IsRequired() + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModuleId") + .HasColumnType("INTEGER"); + + b.Property("PageId") + .HasColumnType("INTEGER"); + + b.Property("PostId") + .HasColumnType("INTEGER"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Value") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_module_data"); + + b.HasIndex("ModuleId", "Specificulture"); + + b.HasIndex("PageId", "Specificulture"); + + b.HasIndex("PostId", "Specificulture"); + + b.HasIndex("ModuleId", "PageId", "Specificulture"); + + b.ToTable("mix_module_data"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModulePost", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModuleId") + .HasColumnType("INTEGER"); + + b.Property("PostId") + .HasColumnType("INTEGER"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_module_post"); + + b.HasIndex("ModuleId", "Specificulture"); + + b.HasIndex("PostId", "Specificulture"); + + b.ToTable("mix_module_post"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPage", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Content") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("CssClass") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Excerpt") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ExtraFields") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Icon") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("Layout") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Level") + .HasColumnType("INTEGER"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("PageSize") + .HasColumnType("INTEGER"); + + b.Property("PostType") + .HasColumnType("TEXT"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("SeoDescription") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("SeoKeywords") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("SeoName") + .HasColumnType("varchar(500)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("SeoTitle") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("StaticUrl") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Tags") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Template") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Title") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Type") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Views") + .HasColumnType("INTEGER"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_page"); + + b.HasIndex("Specificulture"); + + b.ToTable("mix_page"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPageModule", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModuleId") + .HasColumnType("INTEGER"); + + b.Property("PageId") + .HasColumnType("INTEGER"); + + b.Property("Position") + .HasColumnType("INTEGER"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_page_module"); + + b.HasIndex("ModuleId", "Specificulture"); + + b.HasIndex("PageId", "Specificulture"); + + b.ToTable("mix_page_module"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPagePost", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("PageId") + .HasColumnType("INTEGER"); + + b.Property("PostId") + .HasColumnType("INTEGER"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_page_post"); + + b.HasIndex("PageId", "Specificulture"); + + b.HasIndex("PostId", "Specificulture"); + + b.ToTable("mix_page_post"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPage", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(450)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Icon") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("Level") + .HasColumnType("INTEGER"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("TextDefault") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("TextKeyword") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Url") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.ToTable("mix_portal_page"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPageNavigation", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("PageId") + .HasColumnType("INTEGER"); + + b.Property("ParentId") + .HasColumnType("INTEGER"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.HasIndex("PageId") + .HasDatabaseName("FK_mix_portal_page_navigation_mix_portal_page"); + + b.HasIndex("ParentId"); + + b.ToTable("mix_portal_page_navigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPageRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CreatedBy") + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("TEXT"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("TEXT"); + + b.Property("PageId") + .HasColumnType("INTEGER"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("RoleId") + .HasMaxLength(50) + .HasColumnType("TEXT"); + + b.Property("Status") + .IsRequired() + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("TEXT"); + + b.HasKey("Id") + .HasName("PK_mix_portal_page_role"); + + b.HasIndex("PageId"); + + b.ToTable("mix_portal_page_role"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPost", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Content") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Excerpt") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ExtraFields") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Icon") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("PublishedDateTime") + .HasColumnType("datetime"); + + b.Property("SeoDescription") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("SeoKeywords") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("SeoName") + .HasColumnType("varchar(500)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("SeoTitle") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Source") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Tags") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Template") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Thumbnail") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Title") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Type") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Views") + .HasColumnType("INTEGER"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_post"); + + b.HasIndex("Specificulture"); + + b.ToTable("mix_post"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostAssociation", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(450)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("DestinationId") + .HasColumnType("INTEGER"); + + b.Property("Image") + .HasColumnType("varchar(450)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("SourceId") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_post_association"); + + b.HasIndex("DestinationId", "Specificulture"); + + b.HasIndex("SourceId", "Specificulture"); + + b.ToTable("mix_post_association"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostMedia", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("MediaId") + .HasColumnType("INTEGER"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Position") + .HasColumnType("INTEGER"); + + b.Property("PostId") + .HasColumnType("INTEGER"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_post_media"); + + b.HasIndex("MediaId", "Specificulture"); + + b.HasIndex("PostId", "Specificulture"); + + b.ToTable("mix_post_media"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostModule", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModuleId") + .HasColumnType("INTEGER"); + + b.Property("Position") + .HasColumnType("INTEGER"); + + b.Property("PostId") + .HasColumnType("INTEGER"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_post_module"); + + b.HasIndex("ModuleId", "Specificulture"); + + b.HasIndex("PostId", "Specificulture"); + + b.ToTable("mix_post_module"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTemplate", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Content") + .IsRequired() + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Extension") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileFolder") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileName") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FolderType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("MobileContent") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Scripts") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("SpaContent") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Styles") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ThemeId") + .HasColumnType("INTEGER"); + + b.Property("ThemeName") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.HasIndex("ThemeId") + .HasDatabaseName("IX_mix_template_file_TemplateId"); + + b.ToTable("mix_template"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTheme", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Name") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("PreviewUrl") + .HasColumnType("varchar(450)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Thumbnail") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Title") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.ToTable("mix_theme"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixUrlAlias", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Alias") + .HasMaxLength(250) + .HasColumnType("TEXT"); + + b.Property("CreatedBy") + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("TEXT"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasMaxLength(4000) + .HasColumnType("TEXT"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("TEXT"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("SourceId") + .HasMaxLength(250) + .HasColumnType("TEXT"); + + b.Property("Status") + .IsRequired() + .IsUnicode(false) + .HasColumnType("varchar(50)"); + + b.Property("Type") + .HasColumnType("INTEGER"); + + b.HasKey("Id", "Specificulture"); + + b.HasIndex("Specificulture"); + + b.ToTable("mix_url_alias"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixConfiguration", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") + .WithMany("MixConfiguration") + .HasForeignKey("Specificulture") + .HasConstraintName("FK_Mix_Configuration_Mix_Culture") + .HasPrincipalKey("Specificulture") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseData", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixDatabase", "MixDatabase") + .WithMany() + .HasForeignKey("MixDatabaseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("MixDatabase"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixFile", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixTheme", "Theme") + .WithMany("MixFile") + .HasForeignKey("ThemeId") + .HasConstraintName("FK_mix_file_mix_template"); + + b.Navigation("Theme"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixLanguage", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") + .WithMany("MixLanguage") + .HasForeignKey("Specificulture") + .HasConstraintName("FK_Mix_Language_Mix_Culture") + .HasPrincipalKey("Specificulture") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModule", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") + .WithMany("MixModule") + .HasForeignKey("Specificulture") + .HasConstraintName("FK_Mix_Module_Mix_Culture") + .HasPrincipalKey("Specificulture") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModuleData", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixModule", "MixModule") + .WithMany("MixModuleData") + .HasForeignKey("ModuleId", "Specificulture") + .HasConstraintName("FK_Mix_Module_Data_Mix_Module") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPage", "MixPage") + .WithMany("MixModuleData") + .HasForeignKey("PageId", "Specificulture") + .HasConstraintName("FK_mix_module_data_mix_page"); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixModuleData") + .HasForeignKey("PostId", "Specificulture") + .HasConstraintName("FK_mix_module_data_mix_post"); + + b.Navigation("MixModule"); + + b.Navigation("MixPage"); + + b.Navigation("MixPost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModulePost", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixModule", "MixModule") + .WithMany("MixModulePost") + .HasForeignKey("ModuleId", "Specificulture") + .HasConstraintName("FK_Mix_Module_Post_Mix_Module") + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixModulePost") + .HasForeignKey("PostId", "Specificulture") + .HasConstraintName("FK_Mix_Module_Post_Mix_Post") + .IsRequired(); + + b.Navigation("MixModule"); + + b.Navigation("MixPost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPage", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") + .WithMany("MixPage") + .HasForeignKey("Specificulture") + .HasConstraintName("FK_Mix_Page_Mix_Culture") + .HasPrincipalKey("Specificulture") + .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPageModule", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixModule", "MixModule") + .WithMany("MixPageModule") + .HasForeignKey("ModuleId", "Specificulture") + .HasConstraintName("FK_Mix_Menu_Module_Mix_Module1") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPage", "MixPage") + .WithMany("MixPageModule") + .HasForeignKey("PageId", "Specificulture") + .HasConstraintName("FK_Mix_Page_Module_Mix_Page") + .IsRequired(); + + b.Navigation("MixModule"); + + b.Navigation("MixPage"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPagePost", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPage", "MixPage") + .WithMany("MixPagePost") + .HasForeignKey("PageId", "Specificulture") + .HasConstraintName("FK_Mix_Page_Post_Mix_Page") + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixPagePost") + .HasForeignKey("PostId", "Specificulture") + .HasConstraintName("FK_Mix_Page_Post_Mix_Post") + .IsRequired(); + + b.Navigation("MixPage"); + + b.Navigation("MixPost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPageNavigation", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPortalPage", "Page") + .WithMany("MixPortalPageNavigationPage") + .HasForeignKey("PageId") + .HasConstraintName("FK_mix_portal_page_navigation_mix_portal_page") + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPortalPage", "Parent") + .WithMany("MixPortalPageNavigationParent") + .HasForeignKey("ParentId") + .HasConstraintName("FK_mix_portal_page_navigation_mix_portal_page1") + .IsRequired(); + + b.Navigation("Page"); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPageRole", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPortalPage", "Page") + .WithMany("MixPortalPageRole") + .HasForeignKey("PageId") + .HasConstraintName("FK_mix_portal_page_role_mix_portal_page") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Page"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPost", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") + .WithMany("MixPost") + .HasForeignKey("Specificulture") + .HasConstraintName("FK_Mix_Post_Mix_Culture") + .HasPrincipalKey("Specificulture") + .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostAssociation", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixRelatedPostMixPost") + .HasForeignKey("DestinationId", "Specificulture") + .HasConstraintName("FK_mix_post_association_mix_post1") + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "S") + .WithMany("MixRelatedPostS") + .HasForeignKey("SourceId", "Specificulture") + .HasConstraintName("FK_mix_post_association_mix_post") + .IsRequired(); + + b.Navigation("MixPost"); + + b.Navigation("S"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostMedia", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixMedia", "MixMedia") + .WithMany("MixPostMedia") + .HasForeignKey("MediaId", "Specificulture") + .HasConstraintName("FK_mix_post_media_mix_media") + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixPostMedia") + .HasForeignKey("PostId", "Specificulture") + .HasConstraintName("FK_mix_post_media_mix_post") + .IsRequired(); + + b.Navigation("MixMedia"); + + b.Navigation("MixPost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostModule", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixModule", "MixModule") + .WithMany("MixPostModule") + .HasForeignKey("ModuleId", "Specificulture") + .HasConstraintName("FK_Mix_Post_Module_Mix_Module1") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixPostModule") + .HasForeignKey("PostId", "Specificulture") + .HasConstraintName("FK_Mix_Post_Module_Mix_Post") + .IsRequired(); + + b.Navigation("MixModule"); + + b.Navigation("MixPost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTemplate", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixTheme", "Theme") + .WithMany("MixTemplate") + .HasForeignKey("ThemeId") + .HasConstraintName("FK_mix_template_mix_theme") + .IsRequired(); + + b.Navigation("Theme"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixUrlAlias", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") + .WithMany("MixUrlAlias") + .HasForeignKey("Specificulture") + .HasConstraintName("FK_Mix_Url_Alias_Mix_Culture") + .HasPrincipalKey("Specificulture") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCulture", b => + { + b.Navigation("MixConfiguration"); + + b.Navigation("MixLanguage"); + + b.Navigation("MixModule"); + + b.Navigation("MixPage"); + + b.Navigation("MixPost"); + + b.Navigation("MixUrlAlias"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixMedia", b => + { + b.Navigation("MixPostMedia"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModule", b => + { + b.Navigation("MixModuleData"); + + b.Navigation("MixModulePost"); + + b.Navigation("MixPageModule"); + + b.Navigation("MixPostModule"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPage", b => + { + b.Navigation("MixModuleData"); + + b.Navigation("MixPageModule"); + + b.Navigation("MixPagePost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPage", b => + { + b.Navigation("MixPortalPageNavigationPage"); + + b.Navigation("MixPortalPageNavigationParent"); + + b.Navigation("MixPortalPageRole"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPost", b => + { + b.Navigation("MixModuleData"); + + b.Navigation("MixModulePost"); + + b.Navigation("MixPagePost"); + + b.Navigation("MixPostMedia"); + + b.Navigation("MixPostModule"); + + b.Navigation("MixRelatedPostMixPost"); + + b.Navigation("MixRelatedPostS"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTheme", b => + { + b.Navigation("MixFile"); + + b.Navigation("MixTemplate"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Mix.Cms.Lib/Migrations/SqliteMixCms/20210217111513_RenameDatabase.cs b/src/Mix.Cms.Lib/Migrations/SqliteMixCms/20210217111513_RenameDatabase.cs new file mode 100644 index 000000000..06b985658 --- /dev/null +++ b/src/Mix.Cms.Lib/Migrations/SqliteMixCms/20210217111513_RenameDatabase.cs @@ -0,0 +1,101 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; +using Mix.Cms.Lib.Constants; +using Mix.Cms.Lib.Services; + +namespace Mix.Cms.Lib.Migrations.SqliteMixCms +{ + public partial class RenameDatabase : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + Version.TryParse(MixService.GetConfig(MixConfigurations.CONST_MIXCORE_VERSION), out Version dbVersion); + var prevVersion = new Version("1.0.0"); + if (dbVersion == null || dbVersion.CompareTo(prevVersion) <= 0) + { + string schema = null; + + migrationBuilder.DropForeignKey("FK_mix_attribute_set_data_mix_attribute_set", "mix_attribute_set_data", schema); + migrationBuilder.DropForeignKey("FK_mix_attribute_field_mix_attribute_set", "mix_attribute_field", schema); + migrationBuilder.DropForeignKey("FK_mix_attribute_field_mix_attribute_set1", "mix_attribute_field", schema); + + migrationBuilder.DropIndex("IX_mix_attribute_field_AttributeSetId", "mix_attribute_field", schema); + migrationBuilder.DropIndex("IX_mix_attribute_field_ReferenceId", "mix_attribute_field", schema); + migrationBuilder.DropIndex("IX_mix_attribute_set_data_AttributeSetId", "mix_attribute_set_data", schema); + migrationBuilder.DropIndex("IX_mix_attribute_set_value_DataId", "mix_attribute_set_value", schema); + + migrationBuilder.DropTable("mix_related_attribute_set"); + migrationBuilder.DropTable("mix_attribute_set_reference"); + + migrationBuilder.RenameTable("mix_related_post", schema, "mix_post_association"); + migrationBuilder.RenameTable("mix_attribute_set", schema, "mix_database"); + migrationBuilder.RenameTable("mix_related_attribute_data", schema, "mix_database_data_association"); + migrationBuilder.RenameTable("mix_attribute_set_value", schema, "mix_database_data_value"); + migrationBuilder.RenameTable("mix_attribute_set_data", schema, "mix_database_data"); + migrationBuilder.RenameTable("mix_attribute_field", schema, "mix_database_column"); + + migrationBuilder.RenameColumn("AttributeSetId", "mix_database_column", "MixDatabaseId", schema); + migrationBuilder.RenameColumn("AttributeSetName", "mix_database_column", "MixDatabaseName", schema); + + migrationBuilder.RenameColumn("AttributeFieldId", "mix_database_data_value", "MixDatabaseColumnId", schema); + migrationBuilder.RenameColumn("AttributeFieldName", "mix_database_data_value", "MixDatabaseColumnName", schema); + migrationBuilder.RenameColumn("AttributeSetName", "mix_database_data_value", "MixDatabaseName", schema); + + + migrationBuilder.RenameColumn("AttributeSetId", "mix_database_data_association", "MixDatabaseId", schema); + migrationBuilder.RenameColumn("AttributeSetName", "mix_database_data_association", "MixDatabaseName", schema); + + migrationBuilder.RenameColumn("AttributeSetId", "mix_database_data", "MixDatabaseId", schema); + migrationBuilder.RenameColumn("AttributeSetName", "mix_database_data", "MixDatabaseName", schema); + + + MixService.SetConfig(MixConfigurations.CONST_MIXCORE_VERSION, "1.0.1"); + MixService.SaveSettings(); + } + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + var dbVersion = MixService.GetConfig(MixConfigurations.CONST_MIXCORE_VERSION); + if (string.IsNullOrEmpty(dbVersion) || dbVersion == "1.0.0") + { + string schema = null; + + // mix_related_attribute_set and mix_attribute_set_reference not used, so we don't need to restore them. + + migrationBuilder.RenameTable("mix_post_association", schema, "mix_related_post"); + migrationBuilder.RenameTable("mix_database", schema, "mix_attribute_set"); + migrationBuilder.RenameTable("mix_database_data_association", schema, "mix_related_attribute_data"); + migrationBuilder.RenameTable("mix_database_data_value", schema, "mix_attribute_set_value"); + migrationBuilder.RenameTable("mix_database_data", schema, "mix_attribute_set_data"); + migrationBuilder.RenameTable("mix_database_column", schema, "mix_attribute_field"); + + migrationBuilder.RenameColumn("MixDatabaseId", "mix_database_column", "AttributeSetId", schema); + migrationBuilder.RenameColumn("MixDatabaseName", "mix_database_column", "AttributeSetName", schema); + + migrationBuilder.RenameColumn("MixDatabaseColumnId", "mix_database_data_value", "AttributeFieldId", schema); + migrationBuilder.RenameColumn("MixDatabaseColumnName", "mix_database_data_value", "AttributeFieldName", schema); + migrationBuilder.RenameColumn("MixDatabaseName", "mix_database_data_value", "AttributeSetName", schema); + + + migrationBuilder.RenameColumn("MixDatabaseId", "mix_database_data_association", "AttributeSetId", schema); + migrationBuilder.RenameColumn("MixDatabaseName", "mix_database_data_association", "AttributeSetName", schema); + + migrationBuilder.RenameColumn("MixDatabaseId", "mix_database_data", "AttributeSetId", schema); + migrationBuilder.RenameColumn("MixDatabaseName", "mix_database_data", "AttributeSetName", schema); + + migrationBuilder.CreateIndex("IX_mix_attribute_field_AttributeSetId", "mix_attribute_field", "AttributeSetId", schema); + migrationBuilder.CreateIndex("IX_mix_attribute_field_ReferenceId", "mix_attribute_field", "ReferenceId", schema); + migrationBuilder.CreateIndex("IX_mix_attribute_set_data_AttributeSetId", "mix_attribute_set_data", "AttributeSetId", schema); + migrationBuilder.CreateIndex("IX_mix_attribute_set_value_DataId", "mix_attribute_set_value", "DataId", schema); + + migrationBuilder.AddForeignKey("FK_mix_attribute_set_data_mix_attribute_set", "mix_attribute_set_data", "AttributeSetId", "mix_attribute_set", schema); + migrationBuilder.AddForeignKey("FK_mix_attribute_field_mix_attribute_set", "mix_attribute_field", "Id", "mix_attribute_set", schema); + migrationBuilder.AddForeignKey("FK_mix_attribute_field_mix_attribute_set1", "mix_attribute_field", "Id", "mix_attribute_set", schema); + + MixService.SetConfig(MixConfigurations.CONST_MIXCORE_VERSION, "1.0.0"); + MixService.SaveSettings(); + } + } + } +} diff --git a/src/Mix.Cms.Lib/Migrations/SqliteMixCms/SqliteMixCmsContextModelSnapshot.cs b/src/Mix.Cms.Lib/Migrations/SqliteMixCms/SqliteMixCmsContextModelSnapshot.cs new file mode 100644 index 000000000..8fa442f3a --- /dev/null +++ b/src/Mix.Cms.Lib/Migrations/SqliteMixCms/SqliteMixCmsContextModelSnapshot.cs @@ -0,0 +1,2480 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Mix.Cms.Lib.Models.Cms; + +namespace Mix.Cms.Lib.Migrations.SqliteMixCms +{ + [DbContext(typeof(SqliteMixCmsContext))] + partial class SqliteMixCmsContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "5.0.1"); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCache", b => + { + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("ExpiredDateTime") + .HasColumnType("datetime"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Value") + .IsRequired() + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.HasIndex("ExpiredDateTime") + .HasDatabaseName("Index_ExpiresAtTime"); + + b.ToTable("mix_cache"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCmsUser", b => + { + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Address") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Avatar") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Email") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FirstName") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("LastName") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("MiddleName") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("PhoneNumber") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Username") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.ToTable("mix_cms_user"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixConfiguration", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Category") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("DataType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Keyword") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Value") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_configuration"); + + b.HasIndex("Specificulture"); + + b.ToTable("mix_configuration"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCulture", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Alias") + .HasColumnType("varchar(150)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FullName") + .HasColumnType("varchar(150)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Icon") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("Lcid") + .HasColumnType("varchar(50)") + .HasColumnName("LCID") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .IsRequired() + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.HasIndex("Specificulture") + .IsUnique() + .HasDatabaseName("IX_Mix_Culture"); + + b.ToTable("mix_culture"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabase", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("EdmAutoSend") + .HasColumnType("bit"); + + b.Property("EdmFrom") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("EdmSubject") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("EdmTemplate") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FormTemplate") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Name") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Title") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Type") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.ToTable("mix_database"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseColumn", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Configurations") + .HasColumnType("TEXT"); + + b.Property("CreatedBy") + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("TEXT"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("DataType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("DefaultValue") + .HasColumnType("ntext"); + + b.Property("IsEncrypt") + .HasColumnType("INTEGER"); + + b.Property("IsMultiple") + .HasColumnType("INTEGER"); + + b.Property("IsRequire") + .HasColumnType("INTEGER"); + + b.Property("IsSelect") + .HasColumnType("INTEGER"); + + b.Property("IsUnique") + .HasColumnType("INTEGER"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("MixDatabaseId") + .HasColumnType("INTEGER"); + + b.Property("MixDatabaseName") + .HasMaxLength(250) + .HasColumnType("TEXT"); + + b.Property("ModifiedBy") + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("TEXT"); + + b.Property("Options") + .HasColumnType("ntext"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("ReferenceId") + .HasColumnType("INTEGER"); + + b.Property("Regex") + .HasMaxLength(4000) + .HasColumnType("TEXT"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Title") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("mix_database_column"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseData", b => + { + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("MixDatabaseId") + .HasColumnType("INTEGER"); + + b.Property("MixDatabaseName") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_database_data"); + + b.HasIndex("MixDatabaseId"); + + b.ToTable("mix_database_data"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseDataAssociation", b => + { + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("DataId") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Description") + .HasColumnType("varchar(450)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("MixDatabaseId") + .HasColumnType("INTEGER"); + + b.Property("MixDatabaseName") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ParentId") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ParentType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_database_data_association"); + + b.ToTable("mix_database_data_association"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseDataValue", b => + { + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("BooleanValue") + .HasColumnType("bit"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("DataId") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("DataType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("DateTimeValue") + .HasColumnType("datetime"); + + b.Property("DoubleValue") + .HasColumnType("REAL"); + + b.Property("EncryptKey") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("EncryptType") + .HasColumnType("INTEGER"); + + b.Property("EncryptValue") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("IntegerValue") + .HasColumnType("INTEGER"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("MixDatabaseColumnId") + .HasColumnType("INTEGER"); + + b.Property("MixDatabaseColumnName") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("MixDatabaseName") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Regex") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("StringValue") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_database_data_value"); + + b.HasIndex("DataId"); + + b.ToTable("mix_database_data_value"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixFile", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Extension") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileFolder") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileName") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FolderType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("StringContent") + .IsRequired() + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ThemeId") + .HasColumnType("INTEGER"); + + b.Property("ThemeName") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.HasIndex("ThemeId"); + + b.ToTable("mix_file"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixLanguage", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Category") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("DataType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("DefaultValue") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Keyword") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Value") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_language"); + + b.HasIndex("Specificulture"); + + b.ToTable("mix_language"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixMedia", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Extension") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileFolder") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileName") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileProperties") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileSize") + .HasColumnType("INTEGER"); + + b.Property("FileType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Source") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Tags") + .HasColumnType("varchar(400)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("TargetUrl") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Title") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_media"); + + b.ToTable("mix_media"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModule", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("EdmTemplate") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Fields") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FormTemplate") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Name") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("PageSize") + .HasColumnType("INTEGER"); + + b.Property("PostType") + .HasColumnType("TEXT"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Template") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Thumbnail") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Title") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Type") + .HasColumnType("INTEGER"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_module"); + + b.HasIndex("Specificulture"); + + b.ToTable("mix_module"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModuleData", b => + { + b.Property("Id") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Fields") + .IsRequired() + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModuleId") + .HasColumnType("INTEGER"); + + b.Property("PageId") + .HasColumnType("INTEGER"); + + b.Property("PostId") + .HasColumnType("INTEGER"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Value") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_module_data"); + + b.HasIndex("ModuleId", "Specificulture"); + + b.HasIndex("PageId", "Specificulture"); + + b.HasIndex("PostId", "Specificulture"); + + b.HasIndex("ModuleId", "PageId", "Specificulture"); + + b.ToTable("mix_module_data"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModulePost", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModuleId") + .HasColumnType("INTEGER"); + + b.Property("PostId") + .HasColumnType("INTEGER"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_module_post"); + + b.HasIndex("ModuleId", "Specificulture"); + + b.HasIndex("PostId", "Specificulture"); + + b.ToTable("mix_module_post"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPage", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Content") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("CssClass") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Excerpt") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ExtraFields") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Icon") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("Layout") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Level") + .HasColumnType("INTEGER"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("PageSize") + .HasColumnType("INTEGER"); + + b.Property("PostType") + .HasColumnType("TEXT"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("SeoDescription") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("SeoKeywords") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("SeoName") + .HasColumnType("varchar(500)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("SeoTitle") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("StaticUrl") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Tags") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Template") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Title") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Type") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Views") + .HasColumnType("INTEGER"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_page"); + + b.HasIndex("Specificulture"); + + b.ToTable("mix_page"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPageModule", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModuleId") + .HasColumnType("INTEGER"); + + b.Property("PageId") + .HasColumnType("INTEGER"); + + b.Property("Position") + .HasColumnType("INTEGER"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_page_module"); + + b.HasIndex("ModuleId", "Specificulture"); + + b.HasIndex("PageId", "Specificulture"); + + b.ToTable("mix_page_module"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPagePost", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("PageId") + .HasColumnType("INTEGER"); + + b.Property("PostId") + .HasColumnType("INTEGER"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_page_post"); + + b.HasIndex("PageId", "Specificulture"); + + b.HasIndex("PostId", "Specificulture"); + + b.ToTable("mix_page_post"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPage", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(450)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Icon") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("Level") + .HasColumnType("INTEGER"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("TextDefault") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("TextKeyword") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Url") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.ToTable("mix_portal_page"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPageNavigation", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("PageId") + .HasColumnType("INTEGER"); + + b.Property("ParentId") + .HasColumnType("INTEGER"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.HasIndex("PageId") + .HasDatabaseName("FK_mix_portal_page_navigation_mix_portal_page"); + + b.HasIndex("ParentId"); + + b.ToTable("mix_portal_page_navigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPageRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CreatedBy") + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("TEXT"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("TEXT"); + + b.Property("PageId") + .HasColumnType("INTEGER"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("RoleId") + .HasMaxLength(50) + .HasColumnType("TEXT"); + + b.Property("Status") + .IsRequired() + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("TEXT"); + + b.HasKey("Id") + .HasName("PK_mix_portal_page_role"); + + b.HasIndex("PageId"); + + b.ToTable("mix_portal_page_role"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPost", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Content") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Excerpt") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ExtraFields") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Icon") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("PublishedDateTime") + .HasColumnType("datetime"); + + b.Property("SeoDescription") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("SeoKeywords") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("SeoName") + .HasColumnType("varchar(500)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("SeoTitle") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Source") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Tags") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Template") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Thumbnail") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Title") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Type") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Views") + .HasColumnType("INTEGER"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_post"); + + b.HasIndex("Specificulture"); + + b.ToTable("mix_post"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostAssociation", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(450)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("DestinationId") + .HasColumnType("INTEGER"); + + b.Property("Image") + .HasColumnType("varchar(450)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("SourceId") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_post_association"); + + b.HasIndex("DestinationId", "Specificulture"); + + b.HasIndex("SourceId", "Specificulture"); + + b.ToTable("mix_post_association"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostMedia", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("MediaId") + .HasColumnType("INTEGER"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Position") + .HasColumnType("INTEGER"); + + b.Property("PostId") + .HasColumnType("INTEGER"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_post_media"); + + b.HasIndex("MediaId", "Specificulture"); + + b.HasIndex("PostId", "Specificulture"); + + b.ToTable("mix_post_media"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostModule", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModuleId") + .HasColumnType("INTEGER"); + + b.Property("Position") + .HasColumnType("INTEGER"); + + b.Property("PostId") + .HasColumnType("INTEGER"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id", "Specificulture") + .HasName("PK_mix_post_module"); + + b.HasIndex("ModuleId", "Specificulture"); + + b.HasIndex("PostId", "Specificulture"); + + b.ToTable("mix_post_module"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTemplate", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Content") + .IsRequired() + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Extension") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileFolder") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FileName") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("FolderType") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("MobileContent") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Scripts") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("SpaContent") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Styles") + .HasColumnType("text") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("ThemeId") + .HasColumnType("INTEGER"); + + b.Property("ThemeName") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.HasIndex("ThemeId") + .HasDatabaseName("IX_mix_template_file_TemplateId"); + + b.ToTable("mix_template"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTheme", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("CreatedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Image") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Name") + .IsRequired() + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("PreviewUrl") + .HasColumnType("varchar(450)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("Status") + .IsRequired() + .HasColumnType("varchar(50)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Thumbnail") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Title") + .HasColumnType("varchar(250)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.HasKey("Id"); + + b.ToTable("mix_theme"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixUrlAlias", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("Specificulture") + .HasColumnType("varchar(10)") + .UseCollation("NOCASE") + .HasAnnotation("MySql:CharSet", "utf8"); + + b.Property("Alias") + .HasMaxLength(250) + .HasColumnType("TEXT"); + + b.Property("CreatedBy") + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("TEXT"); + + b.Property("CreatedDateTime") + .HasColumnType("datetime"); + + b.Property("Description") + .HasMaxLength(4000) + .HasColumnType("TEXT"); + + b.Property("LastModified") + .HasColumnType("datetime"); + + b.Property("ModifiedBy") + .HasMaxLength(50) + .IsUnicode(false) + .HasColumnType("TEXT"); + + b.Property("Priority") + .HasColumnType("INTEGER"); + + b.Property("SourceId") + .HasMaxLength(250) + .HasColumnType("TEXT"); + + b.Property("Status") + .IsRequired() + .IsUnicode(false) + .HasColumnType("varchar(50)"); + + b.Property("Type") + .HasColumnType("INTEGER"); + + b.HasKey("Id", "Specificulture"); + + b.HasIndex("Specificulture"); + + b.ToTable("mix_url_alias"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixConfiguration", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") + .WithMany("MixConfiguration") + .HasForeignKey("Specificulture") + .HasConstraintName("FK_Mix_Configuration_Mix_Culture") + .HasPrincipalKey("Specificulture") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixDatabaseData", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixDatabase", "MixDatabase") + .WithMany() + .HasForeignKey("MixDatabaseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("MixDatabase"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixFile", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixTheme", "Theme") + .WithMany("MixFile") + .HasForeignKey("ThemeId") + .HasConstraintName("FK_mix_file_mix_template"); + + b.Navigation("Theme"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixLanguage", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") + .WithMany("MixLanguage") + .HasForeignKey("Specificulture") + .HasConstraintName("FK_Mix_Language_Mix_Culture") + .HasPrincipalKey("Specificulture") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModule", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") + .WithMany("MixModule") + .HasForeignKey("Specificulture") + .HasConstraintName("FK_Mix_Module_Mix_Culture") + .HasPrincipalKey("Specificulture") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModuleData", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixModule", "MixModule") + .WithMany("MixModuleData") + .HasForeignKey("ModuleId", "Specificulture") + .HasConstraintName("FK_Mix_Module_Data_Mix_Module") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPage", "MixPage") + .WithMany("MixModuleData") + .HasForeignKey("PageId", "Specificulture") + .HasConstraintName("FK_mix_module_data_mix_page"); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixModuleData") + .HasForeignKey("PostId", "Specificulture") + .HasConstraintName("FK_mix_module_data_mix_post"); + + b.Navigation("MixModule"); + + b.Navigation("MixPage"); + + b.Navigation("MixPost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModulePost", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixModule", "MixModule") + .WithMany("MixModulePost") + .HasForeignKey("ModuleId", "Specificulture") + .HasConstraintName("FK_Mix_Module_Post_Mix_Module") + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixModulePost") + .HasForeignKey("PostId", "Specificulture") + .HasConstraintName("FK_Mix_Module_Post_Mix_Post") + .IsRequired(); + + b.Navigation("MixModule"); + + b.Navigation("MixPost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPage", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") + .WithMany("MixPage") + .HasForeignKey("Specificulture") + .HasConstraintName("FK_Mix_Page_Mix_Culture") + .HasPrincipalKey("Specificulture") + .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPageModule", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixModule", "MixModule") + .WithMany("MixPageModule") + .HasForeignKey("ModuleId", "Specificulture") + .HasConstraintName("FK_Mix_Menu_Module_Mix_Module1") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPage", "MixPage") + .WithMany("MixPageModule") + .HasForeignKey("PageId", "Specificulture") + .HasConstraintName("FK_Mix_Page_Module_Mix_Page") + .IsRequired(); + + b.Navigation("MixModule"); + + b.Navigation("MixPage"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPagePost", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPage", "MixPage") + .WithMany("MixPagePost") + .HasForeignKey("PageId", "Specificulture") + .HasConstraintName("FK_Mix_Page_Post_Mix_Page") + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixPagePost") + .HasForeignKey("PostId", "Specificulture") + .HasConstraintName("FK_Mix_Page_Post_Mix_Post") + .IsRequired(); + + b.Navigation("MixPage"); + + b.Navigation("MixPost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPageNavigation", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPortalPage", "Page") + .WithMany("MixPortalPageNavigationPage") + .HasForeignKey("PageId") + .HasConstraintName("FK_mix_portal_page_navigation_mix_portal_page") + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPortalPage", "Parent") + .WithMany("MixPortalPageNavigationParent") + .HasForeignKey("ParentId") + .HasConstraintName("FK_mix_portal_page_navigation_mix_portal_page1") + .IsRequired(); + + b.Navigation("Page"); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPageRole", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPortalPage", "Page") + .WithMany("MixPortalPageRole") + .HasForeignKey("PageId") + .HasConstraintName("FK_mix_portal_page_role_mix_portal_page") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Page"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPost", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") + .WithMany("MixPost") + .HasForeignKey("Specificulture") + .HasConstraintName("FK_Mix_Post_Mix_Culture") + .HasPrincipalKey("Specificulture") + .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostAssociation", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixRelatedPostMixPost") + .HasForeignKey("DestinationId", "Specificulture") + .HasConstraintName("FK_mix_post_association_mix_post1") + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "S") + .WithMany("MixRelatedPostS") + .HasForeignKey("SourceId", "Specificulture") + .HasConstraintName("FK_mix_post_association_mix_post") + .IsRequired(); + + b.Navigation("MixPost"); + + b.Navigation("S"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostMedia", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixMedia", "MixMedia") + .WithMany("MixPostMedia") + .HasForeignKey("MediaId", "Specificulture") + .HasConstraintName("FK_mix_post_media_mix_media") + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixPostMedia") + .HasForeignKey("PostId", "Specificulture") + .HasConstraintName("FK_mix_post_media_mix_post") + .IsRequired(); + + b.Navigation("MixMedia"); + + b.Navigation("MixPost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPostModule", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixModule", "MixModule") + .WithMany("MixPostModule") + .HasForeignKey("ModuleId", "Specificulture") + .HasConstraintName("FK_Mix_Post_Module_Mix_Module1") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Mix.Cms.Lib.Models.Cms.MixPost", "MixPost") + .WithMany("MixPostModule") + .HasForeignKey("PostId", "Specificulture") + .HasConstraintName("FK_Mix_Post_Module_Mix_Post") + .IsRequired(); + + b.Navigation("MixModule"); + + b.Navigation("MixPost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTemplate", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixTheme", "Theme") + .WithMany("MixTemplate") + .HasForeignKey("ThemeId") + .HasConstraintName("FK_mix_template_mix_theme") + .IsRequired(); + + b.Navigation("Theme"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixUrlAlias", b => + { + b.HasOne("Mix.Cms.Lib.Models.Cms.MixCulture", "SpecificultureNavigation") + .WithMany("MixUrlAlias") + .HasForeignKey("Specificulture") + .HasConstraintName("FK_Mix_Url_Alias_Mix_Culture") + .HasPrincipalKey("Specificulture") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("SpecificultureNavigation"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixCulture", b => + { + b.Navigation("MixConfiguration"); + + b.Navigation("MixLanguage"); + + b.Navigation("MixModule"); + + b.Navigation("MixPage"); + + b.Navigation("MixPost"); + + b.Navigation("MixUrlAlias"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixMedia", b => + { + b.Navigation("MixPostMedia"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixModule", b => + { + b.Navigation("MixModuleData"); + + b.Navigation("MixModulePost"); + + b.Navigation("MixPageModule"); + + b.Navigation("MixPostModule"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPage", b => + { + b.Navigation("MixModuleData"); + + b.Navigation("MixPageModule"); + + b.Navigation("MixPagePost"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPortalPage", b => + { + b.Navigation("MixPortalPageNavigationPage"); + + b.Navigation("MixPortalPageNavigationParent"); + + b.Navigation("MixPortalPageRole"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixPost", b => + { + b.Navigation("MixModuleData"); + + b.Navigation("MixModulePost"); + + b.Navigation("MixPagePost"); + + b.Navigation("MixPostMedia"); + + b.Navigation("MixPostModule"); + + b.Navigation("MixRelatedPostMixPost"); + + b.Navigation("MixRelatedPostS"); + }); + + modelBuilder.Entity("Mix.Cms.Lib.Models.Cms.MixTheme", b => + { + b.Navigation("MixFile"); + + b.Navigation("MixTemplate"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Mix.Cms.Lib/MixConstants.cs b/src/Mix.Cms.Lib/MixConstants.cs index 1b4b8f932..403a19ba6 100644 --- a/src/Mix.Cms.Lib/MixConstants.cs +++ b/src/Mix.Cms.Lib/MixConstants.cs @@ -30,7 +30,7 @@ public class MixConstants public const string CONST_DEFAULT_STRING_ID = "default"; public const string CONST_UPLOAD_FOLDER_DATE_FORMAT = "yyyy-MM"; - public static class AttributeSetName + public static class MixDatabaseName { public const string ADDITIONAL_FIELD_PAGE = "sys_additional_field_page"; public const string ADDITIONAL_FIELD_POST = "sys_additional_field_post"; @@ -56,7 +56,7 @@ public static class DefaultTemplate { public const string Master = "_Layout.cshtml"; public const string Page = "_Blank.cshtml"; - public const string Post = "_Blank.cshtml"; + public const string Post = "Default.cshtml"; public const string Module = "_Blank.cshtml"; } } diff --git a/src/Mix.Cms.Lib/Models/Cms/Aspnetroleclaims.cs b/src/Mix.Cms.Lib/Models/Cms/Aspnetroleclaims.cs deleted file mode 100644 index 68e90f49f..000000000 --- a/src/Mix.Cms.Lib/Models/Cms/Aspnetroleclaims.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Mix.Cms.Lib.Models.Cms -{ - public partial class Aspnetroleclaims - { - public int Id { get; set; } - public string ClaimType { get; set; } - public string ClaimValue { get; set; } - public string RoleId { get; set; } - - public virtual Aspnetroles Role { get; set; } - } -} \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/Cms/Aspnetroles.cs b/src/Mix.Cms.Lib/Models/Cms/Aspnetroles.cs deleted file mode 100644 index 4aed3671e..000000000 --- a/src/Mix.Cms.Lib/Models/Cms/Aspnetroles.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System.Collections.Generic; - -namespace Mix.Cms.Lib.Models.Cms -{ - public partial class Aspnetroles - { - public Aspnetroles() - { - Aspnetroleclaims = new HashSet(); - Aspnetuserroles = new HashSet(); - } - - public string Id { get; set; } - public string ConcurrencyStamp { get; set; } - public string Name { get; set; } - public string NormalizedName { get; set; } - - public virtual ICollection Aspnetroleclaims { get; set; } - public virtual ICollection Aspnetuserroles { get; set; } - } -} \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/Cms/Aspnetuserclaims.cs b/src/Mix.Cms.Lib/Models/Cms/Aspnetuserclaims.cs deleted file mode 100644 index dc2eb1846..000000000 --- a/src/Mix.Cms.Lib/Models/Cms/Aspnetuserclaims.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace Mix.Cms.Lib.Models.Cms -{ - public partial class Aspnetuserclaims - { - public int Id { get; set; } - public string ApplicationUserId { get; set; } - public string ClaimType { get; set; } - public string ClaimValue { get; set; } - public string UserId { get; set; } - - public virtual Aspnetusers ApplicationUser { get; set; } - public virtual Aspnetusers User { get; set; } - } -} \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/Cms/Aspnetuserlogins.cs b/src/Mix.Cms.Lib/Models/Cms/Aspnetuserlogins.cs deleted file mode 100644 index 3904f00a4..000000000 --- a/src/Mix.Cms.Lib/Models/Cms/Aspnetuserlogins.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace Mix.Cms.Lib.Models.Cms -{ - public partial class Aspnetuserlogins - { - public string LoginProvider { get; set; } - public string ProviderKey { get; set; } - public string ApplicationUserId { get; set; } - public string ProviderDisplayName { get; set; } - public string UserId { get; set; } - - public virtual Aspnetusers ApplicationUser { get; set; } - public virtual Aspnetusers User { get; set; } - } -} \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/Cms/Aspnetuserroles.cs b/src/Mix.Cms.Lib/Models/Cms/Aspnetuserroles.cs deleted file mode 100644 index ca677cf24..000000000 --- a/src/Mix.Cms.Lib/Models/Cms/Aspnetuserroles.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace Mix.Cms.Lib.Models.Cms -{ - public partial class Aspnetuserroles - { - public string UserId { get; set; } - public string RoleId { get; set; } - public string ApplicationUserId { get; set; } - - public virtual Aspnetusers ApplicationUser { get; set; } - public virtual Aspnetroles Role { get; set; } - public virtual Aspnetusers User { get; set; } - } -} \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/Cms/Aspnetusers.cs b/src/Mix.Cms.Lib/Models/Cms/Aspnetusers.cs deleted file mode 100644 index 9cfdc2875..000000000 --- a/src/Mix.Cms.Lib/Models/Cms/Aspnetusers.cs +++ /dev/null @@ -1,56 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace Mix.Cms.Lib.Models.Cms -{ - public partial class Aspnetusers - { - public Aspnetusers() - { - AspnetuserclaimsApplicationUser = new HashSet(); - AspnetuserclaimsUser = new HashSet(); - AspnetuserloginsApplicationUser = new HashSet(); - AspnetuserloginsUser = new HashSet(); - AspnetuserrolesApplicationUser = new HashSet(); - AspnetuserrolesUser = new HashSet(); - Aspnetusertokens = new HashSet(); - } - - public string Id { get; set; } - public int AccessFailedCount { get; set; } - public string Avatar { get; set; } - public string ConcurrencyStamp { get; set; } - public int CountryId { get; set; } - public string Culture { get; set; } - public DateTime? Dob { get; set; } - public string Email { get; set; } - public ulong EmailConfirmed { get; set; } - public string FirstName { get; set; } - public string Gender { get; set; } - public ulong IsActived { get; set; } - public DateTime JoinDate { get; set; } - public DateTime LastModified { get; set; } - public string LastName { get; set; } - public ulong LockoutEnabled { get; set; } - public DateTime? LockoutEnd { get; set; } - public string ModifiedBy { get; set; } - public string NickName { get; set; } - public string NormalizedEmail { get; set; } - public string NormalizedUserName { get; set; } - public string PasswordHash { get; set; } - public string PhoneNumber { get; set; } - public ulong PhoneNumberConfirmed { get; set; } - public string RegisterType { get; set; } - public string SecurityStamp { get; set; } - public ulong TwoFactorEnabled { get; set; } - public string UserName { get; set; } - - public virtual ICollection AspnetuserclaimsApplicationUser { get; set; } - public virtual ICollection AspnetuserclaimsUser { get; set; } - public virtual ICollection AspnetuserloginsApplicationUser { get; set; } - public virtual ICollection AspnetuserloginsUser { get; set; } - public virtual ICollection AspnetuserrolesApplicationUser { get; set; } - public virtual ICollection AspnetuserrolesUser { get; set; } - public virtual ICollection Aspnetusertokens { get; set; } - } -} \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/Cms/Aspnetusertokens.cs b/src/Mix.Cms.Lib/Models/Cms/Aspnetusertokens.cs deleted file mode 100644 index 16e70fb60..000000000 --- a/src/Mix.Cms.Lib/Models/Cms/Aspnetusertokens.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Mix.Cms.Lib.Models.Cms -{ - public partial class Aspnetusertokens - { - public string UserId { get; set; } - public string LoginProvider { get; set; } - public string Name { get; set; } - public string Value { get; set; } - - public virtual Aspnetusers User { get; set; } - } -} \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/Cms/Clients.cs b/src/Mix.Cms.Lib/Models/Cms/Clients.cs deleted file mode 100644 index 5c88f4f89..000000000 --- a/src/Mix.Cms.Lib/Models/Cms/Clients.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace Mix.Cms.Lib.Models.Cms -{ - public partial class Clients - { - public string Id { get; set; } - public ulong Active { get; set; } - public string AllowedOrigin { get; set; } - public int ApplicationType { get; set; } - public string Name { get; set; } - public int RefreshTokenLifeTime { get; set; } - public string Secret { get; set; } - } -} \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/Cms/Efmigrationshistory.cs b/src/Mix.Cms.Lib/Models/Cms/Efmigrationshistory.cs deleted file mode 100644 index 87c65de6e..000000000 --- a/src/Mix.Cms.Lib/Models/Cms/Efmigrationshistory.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Mix.Cms.Lib.Models.Cms -{ - public partial class Efmigrationshistory - { - public string MigrationId { get; set; } - public string ProductVersion { get; set; } - } -} \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/Cms/MixAttributeSetReference.cs b/src/Mix.Cms.Lib/Models/Cms/MixAttributeSetReference.cs deleted file mode 100644 index 7f9aebfc9..000000000 --- a/src/Mix.Cms.Lib/Models/Cms/MixAttributeSetReference.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Mix.Cms.Lib.Enums; -using System; - -namespace Mix.Cms.Lib.Models.Cms -{ - public partial class MixAttributeSetReference - { - public int Id { get; set; } - public int ParentId { get; set; } - public int ParentType { get; set; } - public string Description { get; set; } - public string Image { get; set; } - public int AttributeSetId { get; set; } - public string ModifiedBy { get; set; } - public string CreatedBy { get; set; } - public DateTime? LastModified { get; set; } - public DateTime CreatedDateTime { get; set; } - public int Priority { get; set; } - public MixContentStatus Status { get; set; } - - public virtual MixAttributeSet AttributeSet { get; set; } - } -} \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/Cms/MixAttributeSet.cs b/src/Mix.Cms.Lib/Models/Cms/MixDatabase.cs similarity index 92% rename from src/Mix.Cms.Lib/Models/Cms/MixAttributeSet.cs rename to src/Mix.Cms.Lib/Models/Cms/MixDatabase.cs index c7ea53dfc..9fedc8f5a 100644 --- a/src/Mix.Cms.Lib/Models/Cms/MixAttributeSet.cs +++ b/src/Mix.Cms.Lib/Models/Cms/MixDatabase.cs @@ -3,9 +3,9 @@ namespace Mix.Cms.Lib.Models.Cms { - public partial class MixAttributeSet + public partial class MixDatabase { - public MixAttributeSet() + public MixDatabase() { } diff --git a/src/Mix.Cms.Lib/Models/Cms/MixAttributeField.cs b/src/Mix.Cms.Lib/Models/Cms/MixDatabaseColumn.cs similarity index 87% rename from src/Mix.Cms.Lib/Models/Cms/MixAttributeField.cs rename to src/Mix.Cms.Lib/Models/Cms/MixDatabaseColumn.cs index 9a3463162..dc1614e56 100644 --- a/src/Mix.Cms.Lib/Models/Cms/MixAttributeField.cs +++ b/src/Mix.Cms.Lib/Models/Cms/MixDatabaseColumn.cs @@ -3,11 +3,11 @@ namespace Mix.Cms.Lib.Models.Cms { - public partial class MixAttributeField + public partial class MixDatabaseColumn { public int Id { get; set; } - public int AttributeSetId { get; set; } - public string AttributeSetName { get; set; } + public int MixDatabaseId { get; set; } + public string MixDatabaseName { get; set; } public string Configurations { get; set; } public string Regex { get; set; } public string Title { get; set; } diff --git a/src/Mix.Cms.Lib/Models/Cms/MixAttributeSetData.cs b/src/Mix.Cms.Lib/Models/Cms/MixDatabaseData.cs similarity index 69% rename from src/Mix.Cms.Lib/Models/Cms/MixAttributeSetData.cs rename to src/Mix.Cms.Lib/Models/Cms/MixDatabaseData.cs index 9970b3b08..4dd1896ad 100644 --- a/src/Mix.Cms.Lib/Models/Cms/MixAttributeSetData.cs +++ b/src/Mix.Cms.Lib/Models/Cms/MixDatabaseData.cs @@ -3,12 +3,12 @@ namespace Mix.Cms.Lib.Models.Cms { - public partial class MixAttributeSetData + public partial class MixDatabaseData { public string Id { get; set; } public string Specificulture { get; set; } - public int AttributeSetId { get; set; } - public string AttributeSetName { get; set; } + public int MixDatabaseId { get; set; } + public string MixDatabaseName { get; set; } public string ModifiedBy { get; set; } public string CreatedBy { get; set; } public DateTime? LastModified { get; set; } @@ -16,6 +16,6 @@ public partial class MixAttributeSetData public int Priority { get; set; } public MixContentStatus Status { get; set; } - public virtual MixAttributeSet AttributeSet { get; set; } + public virtual MixDatabase MixDatabase { get; set; } } } \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/Cms/MixRelatedAttributeData.cs b/src/Mix.Cms.Lib/Models/Cms/MixDatabaseDataAssociation.cs similarity index 81% rename from src/Mix.Cms.Lib/Models/Cms/MixRelatedAttributeData.cs rename to src/Mix.Cms.Lib/Models/Cms/MixDatabaseDataAssociation.cs index fea4f6009..c196e9847 100644 --- a/src/Mix.Cms.Lib/Models/Cms/MixRelatedAttributeData.cs +++ b/src/Mix.Cms.Lib/Models/Cms/MixDatabaseDataAssociation.cs @@ -3,15 +3,15 @@ namespace Mix.Cms.Lib.Models.Cms { - public partial class MixRelatedAttributeData + public partial class MixDatabaseDataAssociation { public string Id { get; set; } public string Specificulture { get; set; } public string DataId { get; set; } public string ParentId { get; set; } public MixDatabaseParentType ParentType { get; set; } - public int AttributeSetId { get; set; } - public string AttributeSetName { get; set; } + public int MixDatabaseId { get; set; } + public string MixDatabaseName { get; set; } public string Description { get; set; } public string CreatedBy { get; set; } public DateTime CreatedDateTime { get; set; } diff --git a/src/Mix.Cms.Lib/Models/Cms/MixAttributeSetValue.cs b/src/Mix.Cms.Lib/Models/Cms/MixDatabaseDataValue.cs similarity index 82% rename from src/Mix.Cms.Lib/Models/Cms/MixAttributeSetValue.cs rename to src/Mix.Cms.Lib/Models/Cms/MixDatabaseDataValue.cs index a5ca26409..8084b683d 100644 --- a/src/Mix.Cms.Lib/Models/Cms/MixAttributeSetValue.cs +++ b/src/Mix.Cms.Lib/Models/Cms/MixDatabaseDataValue.cs @@ -3,13 +3,13 @@ namespace Mix.Cms.Lib.Models.Cms { - public partial class MixAttributeSetValue + public partial class MixDatabaseDataValue { public string Id { get; set; } public string Specificulture { get; set; } - public int AttributeFieldId { get; set; } - public string AttributeFieldName { get; set; } - public string AttributeSetName { get; set; } + public int MixDatabaseColumnId { get; set; } + public string MixDatabaseColumnName { get; set; } + public string MixDatabaseName { get; set; } public string Regex { get; set; } public MixDataType DataType { get; set; } public bool? BooleanValue { get; set; } diff --git a/src/Mix.Cms.Lib/Models/Cms/MixPost.cs b/src/Mix.Cms.Lib/Models/Cms/MixPost.cs index 41ffd3dec..f6ddd0c36 100644 --- a/src/Mix.Cms.Lib/Models/Cms/MixPost.cs +++ b/src/Mix.Cms.Lib/Models/Cms/MixPost.cs @@ -13,8 +13,8 @@ public MixPost() MixPagePost = new HashSet(); MixPostMedia = new HashSet(); MixPostModule = new HashSet(); - MixRelatedPostMixPost = new HashSet(); - MixRelatedPostS = new HashSet(); + MixRelatedPostMixPost = new HashSet(); + MixRelatedPostS = new HashSet(); } public int Id { get; set; } @@ -50,7 +50,7 @@ public MixPost() public virtual ICollection MixPagePost { get; set; } public virtual ICollection MixPostMedia { get; set; } public virtual ICollection MixPostModule { get; set; } - public virtual ICollection MixRelatedPostMixPost { get; set; } - public virtual ICollection MixRelatedPostS { get; set; } + public virtual ICollection MixRelatedPostMixPost { get; set; } + public virtual ICollection MixRelatedPostS { get; set; } } } \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/Cms/MixRelatedPost.cs b/src/Mix.Cms.Lib/Models/Cms/MixPostAssociation.cs similarity index 94% rename from src/Mix.Cms.Lib/Models/Cms/MixRelatedPost.cs rename to src/Mix.Cms.Lib/Models/Cms/MixPostAssociation.cs index aa1ba35df..bb6964f67 100644 --- a/src/Mix.Cms.Lib/Models/Cms/MixRelatedPost.cs +++ b/src/Mix.Cms.Lib/Models/Cms/MixPostAssociation.cs @@ -3,7 +3,7 @@ namespace Mix.Cms.Lib.Models.Cms { - public partial class MixRelatedPost + public partial class MixPostAssociation { public int Id { get; set; } public string Specificulture { get; set; } diff --git a/src/Mix.Cms.Lib/Models/Cms/MixRelatedAttributeSet.cs b/src/Mix.Cms.Lib/Models/Cms/MixRelatedAttributeSet.cs deleted file mode 100644 index fe5059a18..000000000 --- a/src/Mix.Cms.Lib/Models/Cms/MixRelatedAttributeSet.cs +++ /dev/null @@ -1,24 +0,0 @@ -using Mix.Cms.Lib.Enums; -using System; - -namespace Mix.Cms.Lib.Models.Cms -{ - public partial class MixRelatedAttributeSet - { - public int Id { get; set; } - public string Specificulture { get; set; } - public int AttributeSetId { get; set; } - public int ParentId { get; set; } - public MixDatabaseType ParentType { get; set; } - public string Description { get; set; } - public string Image { get; set; } - public string CreatedBy { get; set; } - public DateTime CreatedDateTime { get; set; } - public string ModifiedBy { get; set; } - public DateTime? LastModified { get; set; } - public int Priority { get; set; } - public MixContentStatus Status { get; set; } - - public virtual MixAttributeSet IdNavigation { get; set; } - } -} \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/Cms/MixRelatedData.cs b/src/Mix.Cms.Lib/Models/Cms/MixRelatedData.cs deleted file mode 100644 index 5dad9519f..000000000 --- a/src/Mix.Cms.Lib/Models/Cms/MixRelatedData.cs +++ /dev/null @@ -1,24 +0,0 @@ -using Mix.Cms.Lib.Enums; -using System; - -namespace Mix.Cms.Lib.Models.Cms -{ - public partial class MixRelatedData - { - public int Id { get; set; } - public string Specificulture { get; set; } - public string DataId { get; set; } - public int Type { get; set; } - public string ParentId { get; set; } - public string ParentType { get; set; } - public int AttributeSetId { get; set; } - public string AttributeSetName { get; set; } - public string Description { get; set; } - public string CreatedBy { get; set; } - public DateTime CreatedDateTime { get; set; } - public string ModifiedBy { get; set; } - public DateTime? LastModified { get; set; } - public int Priority { get; set; } - public MixContentStatus Status { get; set; } - } -} \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/Cms/Refreshtokens.cs b/src/Mix.Cms.Lib/Models/Cms/Refreshtokens.cs deleted file mode 100644 index d4a902460..000000000 --- a/src/Mix.Cms.Lib/Models/Cms/Refreshtokens.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System; - -namespace Mix.Cms.Lib.Models.Cms -{ - public partial class Refreshtokens - { - public string Id { get; set; } - public string ClientId { get; set; } - public string Email { get; set; } - public string Username { get; set; } - public DateTime ExpiresUtc { get; set; } - public DateTime IssuedUtc { get; set; } - } -} \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/Cms/_MixCmsContext.cs b/src/Mix.Cms.Lib/Models/Cms/_MixCmsContext.cs index cb811c19d..faef4d357 100644 --- a/src/Mix.Cms.Lib/Models/Cms/_MixCmsContext.cs +++ b/src/Mix.Cms.Lib/Models/Cms/_MixCmsContext.cs @@ -9,11 +9,11 @@ namespace Mix.Cms.Lib.Models.Cms { public partial class MixCmsContext : DbContext { - public virtual DbSet MixAttributeField { get; set; } - public virtual DbSet MixAttributeSet { get; set; } - public virtual DbSet MixAttributeSetData { get; set; } - public virtual DbSet MixAttributeSetReference { get; set; } - public virtual DbSet MixAttributeSetValue { get; set; } + public virtual DbSet MixDatabaseColumn { get; set; } + public virtual DbSet MixDatabase { get; set; } + public virtual DbSet MixDatabaseData { get; set; } + public virtual DbSet MixDatabaseDataAssociation { get; set; } + public virtual DbSet MixDatabaseDataValue { get; set; } public virtual DbSet MixCache { get; set; } public virtual DbSet MixCmsUser { get; set; } public virtual DbSet MixConfiguration { get; set; } @@ -33,9 +33,8 @@ public partial class MixCmsContext : DbContext public virtual DbSet MixPost { get; set; } public virtual DbSet MixPostMedia { get; set; } public virtual DbSet MixPostModule { get; set; } - public virtual DbSet MixRelatedAttributeData { get; set; } - public virtual DbSet MixRelatedAttributeSet { get; set; } - public virtual DbSet MixRelatedPost { get; set; } + + public virtual DbSet MixRelatedPost { get; set; } public virtual DbSet MixTemplate { get; set; } public virtual DbSet MixTheme { get; set; } public virtual DbSet MixUrlAlias { get; set; } diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixAttributeSetReferenceConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixAttributeSetReferenceConfiguration.cs deleted file mode 100644 index 9fb6c9f2f..000000000 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixAttributeSetReferenceConfiguration.cs +++ /dev/null @@ -1,52 +0,0 @@ -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata.Builders; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Mix.Cms.Lib.Enums; -using Mix.Cms.Lib.Models.Cms; - -namespace Mix.Cms.Lib.Models.EntityConfigurations.MSSQL -{ - public class MixAttributeSetReferenceConfiguration : IEntityTypeConfiguration - { - public void Configure(EntityTypeBuilder entity) - { - entity.ToTable("mix_attribute_set_reference"); - - entity.Property(e => e.Id) - .ValueGeneratedNever(); - - entity.HasIndex(e => e.AttributeSetId); - - entity.Property(e => e.CreatedBy) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - - entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); - - entity.Property(e => e.Description) - .HasColumnType("varchar(450)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - - entity.Property(e => e.Image) - .HasColumnType("varchar(450)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - - entity.Property(e => e.LastModified).HasColumnType("datetime"); - - entity.Property(e => e.ModifiedBy) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - - entity.Property(e => e.Status) - .IsRequired() - .HasConversion(new EnumToStringConverter()) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - } - } -} \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixAttributeValueConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixAttributeValueConfiguration.cs deleted file mode 100644 index 57e12a30b..000000000 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixAttributeValueConfiguration.cs +++ /dev/null @@ -1,21 +0,0 @@ -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata.Builders; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Mix.Cms.Lib.Enums; -using Mix.Cms.Lib.Models.Cms; - -namespace Mix.Cms.Lib.Models.EntityConfigurations.MSSQL -{ - public class MixAttributeValueConfiguration : IEntityTypeConfiguration - { - public void Configure(EntityTypeBuilder builder) - { - builder - .Property(e => e.DataType) - .HasConversion(new EnumToStringConverter()) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - } - } -} \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixCmsUserConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixCmsUserConfiguration.cs index a8fde34c6..ab33e0940 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixCmsUserConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixCmsUserConfiguration.cs @@ -19,12 +19,12 @@ public void Configure(EntityTypeBuilder entity) .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.Address) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.Avatar) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); @@ -36,7 +36,7 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); entity.Property(e => e.Email) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); @@ -75,7 +75,7 @@ public void Configure(EntityTypeBuilder entity) .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.Username) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); } diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixConfigurationConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixConfigurationConfiguration.cs index 439c8bf6f..ff993a45a 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixConfigurationConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixConfigurationConfiguration.cs @@ -26,7 +26,7 @@ public void Configure(EntityTypeBuilder entity) .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.Category) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); @@ -38,7 +38,7 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); entity.Property(e => e.Description) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixCultureConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixCultureConfiguration.cs index e7c2af1d5..1b03f17dc 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixCultureConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixCultureConfiguration.cs @@ -32,12 +32,12 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); entity.Property(e => e.Description) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.FullName) - .HasColumnType("varchar(150)") + .HasColumnType("nvarchar(150)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixAttributeFieldConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixDatabaseColumnConfiguration.cs similarity index 84% rename from src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixAttributeFieldConfiguration.cs rename to src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixDatabaseColumnConfiguration.cs index 9128a56ab..c4d643764 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixAttributeFieldConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixDatabaseColumnConfiguration.cs @@ -6,11 +6,11 @@ namespace Mix.Cms.Lib.Models.EntityConfigurations.MSSQL { - public class MixAttributeFieldConfiguration : IEntityTypeConfiguration + public class MixDatabaseColumnConfiguration : IEntityTypeConfiguration { - public void Configure(EntityTypeBuilder entity) + public void Configure(EntityTypeBuilder entity) { - entity.ToTable("mix_attribute_field"); + entity.ToTable("mix_database_column"); entity.Property(e => e.Id) .ValueGeneratedNever(); @@ -22,7 +22,7 @@ public void Configure(EntityTypeBuilder entity) .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); - entity.Property(e => e.AttributeSetName).HasMaxLength(250); + entity.Property(e => e.MixDatabaseName).HasMaxLength(250); entity.Property(e => e.CreatedBy) .HasMaxLength(50) diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixAttributeSetConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixDatabaseConfiguration.cs similarity index 82% rename from src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixAttributeSetConfiguration.cs rename to src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixDatabaseConfiguration.cs index f26e214e0..abd658f1c 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixAttributeSetConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixDatabaseConfiguration.cs @@ -6,11 +6,11 @@ namespace Mix.Cms.Lib.Models.EntityConfigurations.MSSQL { - public class MixAttributeSetConfiguration : IEntityTypeConfiguration + public class MixDatabaseConfiguration : IEntityTypeConfiguration { - public void Configure(EntityTypeBuilder entity) + public void Configure(EntityTypeBuilder entity) { - entity.ToTable("mix_attribute_set"); + entity.ToTable("mix_database"); entity.Property(e => e.Id) .ValueGeneratedNever(); @@ -23,29 +23,29 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); entity.Property(e => e.Description) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.EdmAutoSend).HasColumnType("bit"); entity.Property(e => e.EdmFrom) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.EdmSubject) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.EdmTemplate) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.FormTemplate) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); @@ -58,7 +58,7 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.Name) .IsRequired() - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); @@ -71,7 +71,7 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.Title) .IsRequired() - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixRelatedDataConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixDatabaseDataAssociationConfiguration.cs similarity index 82% rename from src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixRelatedDataConfiguration.cs rename to src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixDatabaseDataAssociationConfiguration.cs index f85fa2d0b..658c1be6a 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixRelatedDataConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixDatabaseDataAssociationConfiguration.cs @@ -6,14 +6,14 @@ namespace Mix.Cms.Lib.Models.EntityConfigurations.MSSQL { - public class MixRelatedDataConfiguration : IEntityTypeConfiguration + public class MixDatabaseDataAssociationConfiguration : IEntityTypeConfiguration { - public void Configure(EntityTypeBuilder entity) + public void Configure(EntityTypeBuilder entity) { entity.HasKey(e => new { e.Id, e.Specificulture }) - .HasName("PK_mix_related_data"); + .HasName("PK_mix_database_data_association"); - entity.ToTable("mix_related_data"); + entity.ToTable("mix_database_data_association"); entity.Property(e => e.Id) .ValueGeneratedNever(); @@ -23,8 +23,8 @@ public void Configure(EntityTypeBuilder entity) .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); - entity.Property(e => e.AttributeSetName) - .HasColumnType("varchar(250)") + entity.Property(e => e.MixDatabaseName) + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); @@ -42,7 +42,7 @@ public void Configure(EntityTypeBuilder entity) .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.Description) - .HasColumnType("varchar(450)") + .HasColumnType("nvarchar(400)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixAttributeSetDataConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixDatabaseDataConfiguration.cs similarity index 79% rename from src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixAttributeSetDataConfiguration.cs rename to src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixDatabaseDataConfiguration.cs index c1c92aa8b..5218bc047 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixAttributeSetDataConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixDatabaseDataConfiguration.cs @@ -6,16 +6,16 @@ namespace Mix.Cms.Lib.Models.EntityConfigurations.MSSQL { - public class MixAttributeSetDataConfiguration : IEntityTypeConfiguration + public class MixDatabaseDataConfiguration : IEntityTypeConfiguration { - public void Configure(EntityTypeBuilder entity) + public void Configure(EntityTypeBuilder entity) { entity.HasKey(e => new { e.Id, e.Specificulture }) - .HasName("PK_mix_attribute_set_data"); + .HasName("PK_mix_database_data"); - entity.ToTable("mix_attribute_set_data"); + entity.ToTable("mix_database_data"); - entity.HasIndex(e => e.AttributeSetId); + entity.HasIndex(e => e.MixDatabaseId); entity.Property(e => e.Id) .ValueGeneratedNever() @@ -28,8 +28,8 @@ public void Configure(EntityTypeBuilder entity) .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); - entity.Property(e => e.AttributeSetName) - .HasColumnType("varchar(250)") + entity.Property(e => e.MixDatabaseName) + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixAttributeSetValueConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixDatabaseDataValueConfiguration.cs similarity index 86% rename from src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixAttributeSetValueConfiguration.cs rename to src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixDatabaseDataValueConfiguration.cs index 792aa788e..0220985cd 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixAttributeSetValueConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixDatabaseDataValueConfiguration.cs @@ -6,14 +6,14 @@ namespace Mix.Cms.Lib.Models.EntityConfigurations.MSSQL { - public class MixAttributeSetValueConfiguration : IEntityTypeConfiguration + public class MixDatabaseDataValueConfiguration : IEntityTypeConfiguration { - public void Configure(EntityTypeBuilder entity) + public void Configure(EntityTypeBuilder entity) { entity.HasKey(e => new { e.Id, e.Specificulture }) - .HasName("PK_mix_attribute_set_value"); + .HasName("PK_mix_database_data_value"); - entity.ToTable("mix_attribute_set_value"); + entity.ToTable("mix_database_data_value"); entity.HasIndex(e => e.DataId); @@ -23,14 +23,14 @@ public void Configure(EntityTypeBuilder entity) .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); - entity.Property(e => e.AttributeFieldName) + entity.Property(e => e.MixDatabaseColumnName) .IsRequired() .HasColumnType("varchar(50)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); - entity.Property(e => e.AttributeSetName) - .HasColumnType("varchar(250)") + entity.Property(e => e.MixDatabaseName) + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); @@ -69,7 +69,7 @@ public void Configure(EntityTypeBuilder entity) .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.Regex) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixFileConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixFileConfiguration.cs index 1072b148a..d8aa1e7c2 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixFileConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixFileConfiguration.cs @@ -32,13 +32,13 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.FileFolder) .IsRequired() - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.FileName) .IsRequired() - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); @@ -70,7 +70,7 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.ThemeName) .IsRequired() - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixLanguageConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixLanguageConfiguration.cs index 08b2eb56e..c24890af3 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixLanguageConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixLanguageConfiguration.cs @@ -26,7 +26,7 @@ public void Configure(EntityTypeBuilder entity) .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.Category) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); @@ -38,12 +38,12 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); entity.Property(e => e.DefaultValue) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.Description) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixMediaConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixMediaConfiguration.cs index 5e6d7fab7..618f0eab8 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixMediaConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixMediaConfiguration.cs @@ -43,13 +43,13 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.FileFolder) .IsRequired() - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.FileName) .IsRequired() - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); @@ -72,7 +72,7 @@ public void Configure(EntityTypeBuilder entity) .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.Source) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); @@ -84,12 +84,12 @@ public void Configure(EntityTypeBuilder entity) .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.Tags) - .HasColumnType("varchar(400)") + .HasColumnType("nvarchar(400)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.TargetUrl) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixModuleConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixModuleConfiguration.cs index 0707e19e6..5581b117b 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixModuleConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixModuleConfiguration.cs @@ -38,7 +38,7 @@ public void Configure(EntityTypeBuilder entity) .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.EdmTemplate) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); @@ -48,12 +48,12 @@ public void Configure(EntityTypeBuilder entity) .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.FormTemplate) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.Image) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); @@ -78,17 +78,17 @@ public void Configure(EntityTypeBuilder entity) .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.Template) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.Thumbnail) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.Title) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixModulePostConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixModulePostConfiguration.cs index b6f3d2be0..9bf3165b2 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixModulePostConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixModulePostConfiguration.cs @@ -35,12 +35,12 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); entity.Property(e => e.Description) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.Image) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixPageConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixPageConfiguration.cs index 346d60f25..da1dc034e 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixPageConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixPageConfiguration.cs @@ -38,7 +38,7 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); entity.Property(e => e.CssClass) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); @@ -58,7 +58,7 @@ public void Configure(EntityTypeBuilder entity) .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.Image) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); @@ -90,12 +90,12 @@ public void Configure(EntityTypeBuilder entity) .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.SeoTitle) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.StaticUrl) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); @@ -112,7 +112,7 @@ public void Configure(EntityTypeBuilder entity) .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.Template) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixPageModuleConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixPageModuleConfiguration.cs index 0c8fe7993..544fa25f4 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixPageModuleConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixPageModuleConfiguration.cs @@ -35,12 +35,12 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); entity.Property(e => e.Description) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.Image) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixPagePostConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixPagePostConfiguration.cs index fa0d19cb6..62fea0442 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixPagePostConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixPagePostConfiguration.cs @@ -35,12 +35,12 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); entity.Property(e => e.Description) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.Image) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixPortalPageConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixPortalPageConfiguration.cs index fec09a92d..f0c606abb 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixPortalPageConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixPortalPageConfiguration.cs @@ -23,7 +23,7 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); entity.Property(e => e.Description) - .HasColumnType("varchar(450)") + .HasColumnType("nvarchar(400)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); @@ -47,17 +47,17 @@ public void Configure(EntityTypeBuilder entity) .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.TextDefault) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.TextKeyword) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.Url) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); } diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixPortalPageNavigationConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixPortalPageNavigationConfiguration.cs index 7c5e4bb7c..696ffcf5b 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixPortalPageNavigationConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixPortalPageNavigationConfiguration.cs @@ -28,12 +28,12 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); entity.Property(e => e.Description) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.Image) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixRelatedPostConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixPostAssociationConfiguration.cs similarity index 81% rename from src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixRelatedPostConfiguration.cs rename to src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixPostAssociationConfiguration.cs index c0b83604e..701a88130 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixRelatedPostConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixPostAssociationConfiguration.cs @@ -6,14 +6,14 @@ namespace Mix.Cms.Lib.Models.EntityConfigurations.MSSQL { - public class MixRelatedPostConfiguration : IEntityTypeConfiguration + public class MixPostAssociationConfiguration : IEntityTypeConfiguration { - public void Configure(EntityTypeBuilder entity) + public void Configure(EntityTypeBuilder entity) { entity.HasKey(e => new { e.Id, e.Specificulture }) - .HasName("PK_mix_related_post"); + .HasName("PK_mix_post_association"); - entity.ToTable("mix_related_post"); + entity.ToTable("mix_post_association"); entity.Property(e => e.Id) .ValueGeneratedNever(); @@ -35,12 +35,12 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); entity.Property(e => e.Description) - .HasColumnType("varchar(450)") + .HasColumnType("nvarchar(400)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.Image) - .HasColumnType("varchar(450)") + .HasColumnType("nvarchar(400)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); @@ -62,13 +62,13 @@ public void Configure(EntityTypeBuilder entity) .WithMany(p => p.MixRelatedPostMixPost) .HasForeignKey(d => new { d.DestinationId, d.Specificulture }) .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("FK_mix_related_post_mix_post1"); + .HasConstraintName("FK_mix_post_association_mix_post1"); entity.HasOne(d => d.S) .WithMany(p => p.MixRelatedPostS) .HasForeignKey(d => new { d.SourceId, d.Specificulture }) .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("FK_mix_related_post_mix_post"); + .HasConstraintName("FK_mix_post_association_mix_post"); } } } \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixPostConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixPostConfiguration.cs index 3f2c67dec..dc1b0b0f4 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixPostConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixPostConfiguration.cs @@ -58,7 +58,7 @@ public void Configure(EntityTypeBuilder entity) .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.Image) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); @@ -92,7 +92,7 @@ public void Configure(EntityTypeBuilder entity) .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.Source) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); @@ -109,12 +109,12 @@ public void Configure(EntityTypeBuilder entity) .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.Template) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.Thumbnail) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixPostMediaConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixPostMediaConfiguration.cs index 44cc50e40..9e238a184 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixPostMediaConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixPostMediaConfiguration.cs @@ -35,12 +35,12 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); entity.Property(e => e.Description) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.Image) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixPostModuleConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixPostModuleConfiguration.cs index 005515917..685b157ac 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixPostModuleConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixPostModuleConfiguration.cs @@ -35,12 +35,12 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); entity.Property(e => e.Description) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.Image) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixRelatedAttributeDataConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixRelatedAttributeDataConfiguration.cs deleted file mode 100644 index 4241f534b..000000000 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixRelatedAttributeDataConfiguration.cs +++ /dev/null @@ -1,80 +0,0 @@ -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata.Builders; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Mix.Cms.Lib.Enums; -using Mix.Cms.Lib.Models.Cms; - -namespace Mix.Cms.Lib.Models.EntityConfigurations.MSSQL -{ - public class MixRelatedAttributeDataConfiguration : IEntityTypeConfiguration - { - public void Configure(EntityTypeBuilder entity) - { - entity.HasKey(e => new { e.Id, e.Specificulture }) - .HasName("PK_mix_related_attribute_data"); - - entity.ToTable("mix_related_attribute_data"); - - entity.Property(e => e.Id) - .ValueGeneratedNever() - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - - entity.Property(e => e.Specificulture) - .HasColumnType("varchar(10)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - - entity.Property(e => e.AttributeSetName) - .HasColumnType("varchar(250)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - - entity.Property(e => e.CreatedBy) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - - entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); - - entity.Property(e => e.DataId) - .IsRequired() - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - - entity.Property(e => e.Description) - .HasColumnType("varchar(450)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - - entity.Property(e => e.LastModified).HasColumnType("datetime"); - - entity.Property(e => e.ModifiedBy) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - - entity.Property(e => e.ParentId) - .IsRequired() - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - - entity.Property(e => e.ParentType) - .IsRequired() - .HasConversion(new EnumToStringConverter()) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - - entity.Property(e => e.Status) - .IsRequired() - .HasConversion(new EnumToStringConverter()) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - } - } -} \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixRelatedAttributeSetConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixRelatedAttributeSetConfiguration.cs deleted file mode 100644 index 1ca5121c4..000000000 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixRelatedAttributeSetConfiguration.cs +++ /dev/null @@ -1,65 +0,0 @@ -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata.Builders; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Mix.Cms.Lib.Enums; -using Mix.Cms.Lib.Models.Cms; - -namespace Mix.Cms.Lib.Models.EntityConfigurations.MSSQL -{ - public class MixRelatedAttributeSetConfiguration : IEntityTypeConfiguration - { - public void Configure(EntityTypeBuilder entity) - { - entity.HasKey(e => new { e.Id, e.Specificulture }) - .HasName("PK_mix_related_attribute_set"); - - entity.ToTable("mix_related_attribute_set"); - - entity.Property(e => e.Id) - .ValueGeneratedNever(); - - entity.Property(e => e.Specificulture) - .HasColumnType("varchar(10)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - - entity.Property(e => e.CreatedBy) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - - entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); - - entity.Property(e => e.Description) - .HasColumnType("varchar(450)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - - entity.Property(e => e.Image) - .HasColumnType("varchar(450)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - - entity.Property(e => e.LastModified).HasColumnType("datetime"); - - entity.Property(e => e.ModifiedBy) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - - entity.Property(e => e.ParentType) - .IsRequired() - .HasConversion(new EnumToStringConverter()) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - - entity.Property(e => e.Status) - .IsRequired() - .HasConversion(new EnumToStringConverter()) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - } - } -} \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixTemplateConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixTemplateConfiguration.cs index b355f6804..1b575a47f 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixTemplateConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixTemplateConfiguration.cs @@ -39,13 +39,13 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.FileFolder) .IsRequired() - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.FileName) .IsRequired() - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); @@ -91,7 +91,7 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.ThemeName) .IsRequired() - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixThemeConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixThemeConfiguration.cs index 667bba6ea..ff2dd3de4 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixThemeConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/MSSQL/MixThemeConfiguration.cs @@ -23,7 +23,7 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); entity.Property(e => e.Image) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); @@ -36,12 +36,12 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.Name) .IsRequired() - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.PreviewUrl) - .HasColumnType("varchar(450)") + .HasColumnType("nvarchar(400)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); @@ -53,12 +53,12 @@ public void Configure(EntityTypeBuilder entity) .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.Thumbnail) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); entity.Property(e => e.Title) - .HasColumnType("varchar(250)") + .HasColumnType("nvarchar(250)") .HasCharSet("utf8") .HasCollation("Vietnamese_CI_AS"); } diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixAttributeSetReferenceConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixAttributeSetReferenceConfiguration.cs deleted file mode 100644 index dc5dda079..000000000 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixAttributeSetReferenceConfiguration.cs +++ /dev/null @@ -1,49 +0,0 @@ -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata.Builders; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Mix.Cms.Lib.Enums; -using Mix.Cms.Lib.Models.Cms; - -namespace Mix.Cms.Lib.Models.EntityConfigurations.MySQL -{ - public class MixAttributeSetReferenceConfiguration : IEntityTypeConfiguration - { - public void Configure(EntityTypeBuilder entity) - { - entity.ToTable("mix_attribute_set_reference"); - - entity.HasIndex(e => e.AttributeSetId); - - entity.Property(e => e.CreatedBy) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("utf8_unicode_ci"); - - entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); - - entity.Property(e => e.Description) - .HasColumnType("varchar(450)") - .HasCharSet("utf8") - .HasCollation("utf8_unicode_ci"); - - entity.Property(e => e.Image) - .HasColumnType("varchar(450)") - .HasCharSet("utf8") - .HasCollation("utf8_unicode_ci"); - - entity.Property(e => e.LastModified).HasColumnType("datetime"); - - entity.Property(e => e.ModifiedBy) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("utf8_unicode_ci"); - - entity.Property(e => e.Status) - .IsRequired() - .HasConversion(new EnumToStringConverter()) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("utf8_unicode_ci"); - } - } -} \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixAttributeValueConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixAttributeValueConfiguration.cs deleted file mode 100644 index c35720589..000000000 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixAttributeValueConfiguration.cs +++ /dev/null @@ -1,19 +0,0 @@ -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata.Builders; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Mix.Cms.Lib.Enums; -using Mix.Cms.Lib.Models.Cms; - -namespace Mix.Cms.Lib.Models.EntityConfigurations.MySQL -{ - public class MixAttributeValueConfiguration : IEntityTypeConfiguration - { - public void Configure(EntityTypeBuilder builder) - { - builder - .Property(e => e.DataType) - .HasConversion(new EnumToStringConverter()) - .HasColumnType("varchar(50)"); - } - } -} \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixAttributeFieldConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixDatabaseColumnConfiguration.cs similarity index 89% rename from src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixAttributeFieldConfiguration.cs rename to src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixDatabaseColumnConfiguration.cs index 272050f5c..3fc8854ee 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixAttributeFieldConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixDatabaseColumnConfiguration.cs @@ -6,17 +6,17 @@ namespace Mix.Cms.Lib.Models.EntityConfigurations.MySQL { - public class MixAttributeFieldConfiguration : IEntityTypeConfiguration + public class MixDatabaseColumnConfiguration : IEntityTypeConfiguration { - public void Configure(EntityTypeBuilder entity) + public void Configure(EntityTypeBuilder entity) { - entity.ToTable("mix_attribute_field"); + entity.ToTable("mix_database_column"); - entity.HasIndex(e => e.AttributeSetId); + entity.HasIndex(e => e.MixDatabaseId); entity.HasIndex(e => e.ReferenceId); - entity.Property(e => e.AttributeSetName) + entity.Property(e => e.MixDatabaseName) .HasColumnType("varchar(250)") .HasCharSet("utf8") .HasCollation("utf8_unicode_ci"); diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixAttributeSetConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixDatabaseConfiguration.cs similarity index 92% rename from src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixAttributeSetConfiguration.cs rename to src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixDatabaseConfiguration.cs index 9443c1901..6bdc95f17 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixAttributeSetConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixDatabaseConfiguration.cs @@ -6,11 +6,11 @@ namespace Mix.Cms.Lib.Models.EntityConfigurations.MySQL { - public class MixAttributeSetConfiguration : IEntityTypeConfiguration + public class MixDatabaseConfiguration : IEntityTypeConfiguration { - public void Configure(EntityTypeBuilder entity) + public void Configure(EntityTypeBuilder entity) { - entity.ToTable("mix_attribute_set"); + entity.ToTable("mix_database"); entity.Property(e => e.CreatedBy) .HasColumnType("varchar(50)") diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixRelatedAttributeDataConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixDatabaseDataAssociationConfiguration.cs similarity index 89% rename from src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixRelatedAttributeDataConfiguration.cs rename to src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixDatabaseDataAssociationConfiguration.cs index 957aed8cf..8ff4f4ba6 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixRelatedAttributeDataConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixDatabaseDataAssociationConfiguration.cs @@ -6,14 +6,14 @@ namespace Mix.Cms.Lib.Models.EntityConfigurations.MySQL { - public class MixRelatedAttributeDataConfiguration : IEntityTypeConfiguration + public class MixDatabaseDataAssociationConfiguration : IEntityTypeConfiguration { - public void Configure(EntityTypeBuilder entity) + public void Configure(EntityTypeBuilder entity) { entity.HasKey(e => new { e.Id, e.Specificulture }) .HasName("PRIMARY"); - entity.ToTable("mix_related_attribute_data"); + entity.ToTable("mix_database_data_association"); entity.Property(e => e.Id) .HasColumnType("varchar(50)") @@ -25,7 +25,7 @@ public void Configure(EntityTypeBuilder entity) .HasCharSet("utf8") .HasCollation("utf8_unicode_ci"); - entity.Property(e => e.AttributeSetName) + entity.Property(e => e.MixDatabaseName) .HasColumnType("varchar(250)") .HasCharSet("utf8") .HasCollation("utf8_unicode_ci"); diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixAttributeSetDataConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixDatabaseDataConfiguration.cs similarity index 80% rename from src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixAttributeSetDataConfiguration.cs rename to src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixDatabaseDataConfiguration.cs index c133b9ced..912872018 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixAttributeSetDataConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixDatabaseDataConfiguration.cs @@ -6,16 +6,16 @@ namespace Mix.Cms.Lib.Models.EntityConfigurations.MySQL { - public class MixAttributeSetDataConfiguration : IEntityTypeConfiguration + public class MixDatabaseDataConfiguration : IEntityTypeConfiguration { - public void Configure(EntityTypeBuilder entity) + public void Configure(EntityTypeBuilder entity) { entity.HasKey(e => new { e.Id, e.Specificulture }) - .HasName("PK_mix_attribute_set_value"); + .HasName("PK_mix_database_data_value"); - entity.ToTable("mix_attribute_set_data"); + entity.ToTable("mix_database_data"); - entity.HasIndex(e => e.AttributeSetId); + entity.HasIndex(e => e.MixDatabaseId); entity.Property(e => e.Id) .HasColumnType("varchar(50)") @@ -27,7 +27,7 @@ public void Configure(EntityTypeBuilder entity) .HasCharSet("utf8") .HasCollation("utf8_unicode_ci"); - entity.Property(e => e.AttributeSetName) + entity.Property(e => e.MixDatabaseName) .HasColumnType("varchar(250)") .HasCharSet("utf8") .HasCollation("utf8_unicode_ci"); diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixAttributeSetValueConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixDatabaseDataValueConfiguration.cs similarity index 90% rename from src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixAttributeSetValueConfiguration.cs rename to src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixDatabaseDataValueConfiguration.cs index cfb099a58..7602c3b7f 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixAttributeSetValueConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixDatabaseDataValueConfiguration.cs @@ -6,14 +6,14 @@ namespace Mix.Cms.Lib.Models.EntityConfigurations.MySQL { - public class MixAttributeSetValueConfiguration : IEntityTypeConfiguration + public class MixDatabaseDataValueConfiguration : IEntityTypeConfiguration { - public void Configure(EntityTypeBuilder entity) + public void Configure(EntityTypeBuilder entity) { entity.HasKey(e => new { e.Id, e.Specificulture }) .HasName("PRIMARY"); - entity.ToTable("mix_attribute_set_value"); + entity.ToTable("mix_database_data_value"); entity.HasIndex(e => e.DataId); @@ -22,13 +22,13 @@ public void Configure(EntityTypeBuilder entity) .HasCharSet("utf8") .HasCollation("utf8_unicode_ci"); - entity.Property(e => e.AttributeFieldName) + entity.Property(e => e.MixDatabaseColumnName) .IsRequired() .HasColumnType("varchar(50)") .HasCharSet("utf8") .HasCollation("utf8_unicode_ci"); - entity.Property(e => e.AttributeSetName) + entity.Property(e => e.MixDatabaseName) .HasColumnType("varchar(250)") .HasCharSet("utf8") .HasCollation("utf8_unicode_ci"); diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixRelatedPostConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixPostAssociationConfiguration.cs similarity index 86% rename from src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixRelatedPostConfiguration.cs rename to src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixPostAssociationConfiguration.cs index 70d2b9ea1..edb1b6619 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixRelatedPostConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixPostAssociationConfiguration.cs @@ -6,14 +6,14 @@ namespace Mix.Cms.Lib.Models.EntityConfigurations.MySQL { - public class MixRelatedPostConfiguration : IEntityTypeConfiguration + public class MixPostAssociationConfiguration : IEntityTypeConfiguration { - public void Configure(EntityTypeBuilder entity) + public void Configure(EntityTypeBuilder entity) { entity.HasKey(e => new { e.Id, e.Specificulture }) .HasName("PRIMARY"); - entity.ToTable("mix_related_post"); + entity.ToTable("mix_post_association"); entity.HasIndex(e => new { e.DestinationId, e.Specificulture }); @@ -59,13 +59,13 @@ public void Configure(EntityTypeBuilder entity) .WithMany(p => p.MixRelatedPostMixPost) .HasForeignKey(d => new { d.DestinationId, d.Specificulture }) .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("FK_mix_related_post_mix_post1"); + .HasConstraintName("FK_mix_post_association_mix_post1"); entity.HasOne(d => d.S) .WithMany(p => p.MixRelatedPostS) .HasForeignKey(d => new { d.SourceId, d.Specificulture }) .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("FK_mix_related_post_mix_post"); + .HasConstraintName("FK_mix_post_association_mix_post"); } } } \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixRelatedAttributeSetConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixRelatedAttributeSetConfiguration.cs deleted file mode 100644 index a07d3e92b..000000000 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixRelatedAttributeSetConfiguration.cs +++ /dev/null @@ -1,62 +0,0 @@ -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata.Builders; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Mix.Cms.Lib.Enums; -using Mix.Cms.Lib.Models.Cms; - -namespace Mix.Cms.Lib.Models.EntityConfigurations.MySQL -{ - public class MixRelatedAttributeSetConfiguration : IEntityTypeConfiguration - { - public void Configure(EntityTypeBuilder entity) - { - entity.HasKey(e => new { e.Id, e.Specificulture }) - .HasName("PRIMARY"); - - entity.ToTable("mix_related_attribute_set"); - - entity.Property(e => e.Specificulture) - .HasColumnType("varchar(10)") - .HasCharSet("utf8") - .HasCollation("utf8_unicode_ci"); - - entity.Property(e => e.CreatedBy) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("utf8_unicode_ci"); - - entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); - - entity.Property(e => e.Description) - .HasColumnType("varchar(450)") - .HasCharSet("utf8") - .HasCollation("utf8_unicode_ci"); - - entity.Property(e => e.Image) - .HasColumnType("varchar(450)") - .HasCharSet("utf8") - .HasCollation("utf8_unicode_ci"); - - entity.Property(e => e.LastModified).HasColumnType("datetime"); - - entity.Property(e => e.ModifiedBy) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("utf8_unicode_ci"); - - entity.Property(e => e.ParentType) - .IsRequired() - .HasConversion(new EnumToStringConverter()) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("utf8_unicode_ci"); - - entity.Property(e => e.Status) - .IsRequired() - .HasConversion(new EnumToStringConverter()) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("utf8_unicode_ci"); - } - } -} \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixRelatedDataConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixRelatedDataConfiguration.cs deleted file mode 100644 index 1d40653de..000000000 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/MySQL/MixRelatedDataConfiguration.cs +++ /dev/null @@ -1,73 +0,0 @@ -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata.Builders; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Mix.Cms.Lib.Enums; -using Mix.Cms.Lib.Models.Cms; - -namespace Mix.Cms.Lib.Models.EntityConfigurations.MySQL -{ - public class MixRelatedDataConfiguration : IEntityTypeConfiguration - { - public void Configure(EntityTypeBuilder entity) - { - entity.HasKey(e => new { e.Id, e.Specificulture }) - .HasName("PRIMARY"); - - entity.ToTable("mix_related_data"); - - entity.Property(e => e.Specificulture) - .HasColumnType("varchar(10)") - .HasCharSet("utf8") - .HasCollation("utf8_unicode_ci"); - - entity.Property(e => e.AttributeSetName) - .HasColumnType("varchar(250)") - .HasCharSet("utf8") - .HasCollation("utf8_unicode_ci"); - - entity.Property(e => e.CreatedBy) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("utf8_unicode_ci"); - - entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); - - entity.Property(e => e.DataId) - .IsRequired() - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("utf8_unicode_ci"); - - entity.Property(e => e.Description) - .HasColumnType("varchar(450)") - .HasCharSet("utf8") - .HasCollation("utf8_unicode_ci"); - - entity.Property(e => e.LastModified).HasColumnType("datetime"); - - entity.Property(e => e.ModifiedBy) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("utf8_unicode_ci"); - - entity.Property(e => e.ParentId) - .IsRequired() - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("utf8_unicode_ci"); - - entity.Property(e => e.ParentType) - .IsRequired() - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("utf8_unicode_ci"); - - entity.Property(e => e.Status) - .IsRequired() - .HasConversion(new EnumToStringConverter()) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("utf8_unicode_ci"); - } - } -} \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixAttributeSetReferenceConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixAttributeSetReferenceConfiguration.cs deleted file mode 100644 index f261c2c22..000000000 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixAttributeSetReferenceConfiguration.cs +++ /dev/null @@ -1,49 +0,0 @@ -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata.Builders; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Mix.Cms.Lib.Enums; -using Mix.Cms.Lib.Models.Cms; - -namespace Mix.Cms.Lib.Models.EntityConfigurations.POSTGRESQL -{ - public class MixAttributeSetReferenceConfiguration : IEntityTypeConfiguration - { - public void Configure(EntityTypeBuilder entity) - { - entity.ToTable("mix_attribute_set_reference"); - - entity.HasIndex(e => e.AttributeSetId); - - entity.Property(e => e.CreatedBy) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("und-x-icu"); - - entity.Property(e => e.CreatedDateTime).HasColumnType("timestamp without time zone"); - - entity.Property(e => e.Description) - .HasColumnType("varchar(450)") - .HasCharSet("utf8") - .HasCollation("und-x-icu"); - - entity.Property(e => e.Image) - .HasColumnType("varchar(450)") - .HasCharSet("utf8") - .HasCollation("und-x-icu"); - - entity.Property(e => e.LastModified).HasColumnType("timestamp without time zone"); - - entity.Property(e => e.ModifiedBy) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("und-x-icu"); - - entity.Property(e => e.Status) - .IsRequired() - .HasConversion(new EnumToStringConverter()) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("und-x-icu"); - } - } -} \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixAttributeValueConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixAttributeValueConfiguration.cs deleted file mode 100644 index 86179c140..000000000 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixAttributeValueConfiguration.cs +++ /dev/null @@ -1,19 +0,0 @@ -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata.Builders; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Mix.Cms.Lib.Enums; -using Mix.Cms.Lib.Models.Cms; - -namespace Mix.Cms.Lib.Models.EntityConfigurations.POSTGRESQL -{ - public class MixAttributeValueConfiguration : IEntityTypeConfiguration - { - public void Configure(EntityTypeBuilder builder) - { - builder - .Property(e => e.DataType) - .HasConversion(new EnumToStringConverter()) - .HasColumnType("varchar(50)"); - } - } -} \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixAttributeFieldConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixDatabaseColumnConfiguration.cs similarity index 89% rename from src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixAttributeFieldConfiguration.cs rename to src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixDatabaseColumnConfiguration.cs index 8d783b870..7db935e0e 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixAttributeFieldConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixDatabaseColumnConfiguration.cs @@ -6,17 +6,17 @@ namespace Mix.Cms.Lib.Models.EntityConfigurations.POSTGRESQL { - public class MixAttributeFieldConfiguration : IEntityTypeConfiguration + public class MixDatabaseColumnConfiguration : IEntityTypeConfiguration { - public void Configure(EntityTypeBuilder entity) + public void Configure(EntityTypeBuilder entity) { - entity.ToTable("mix_attribute_field"); + entity.ToTable("mix_database_column"); - entity.HasIndex(e => e.AttributeSetId); + entity.HasIndex(e => e.MixDatabaseId); entity.HasIndex(e => e.ReferenceId); - entity.Property(e => e.AttributeSetName) + entity.Property(e => e.MixDatabaseName) .HasColumnType("varchar(250)") .HasCharSet("utf8") .HasCollation("und-x-icu"); diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixAttributeSetConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixDatabaseConfiguration.cs similarity index 92% rename from src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixAttributeSetConfiguration.cs rename to src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixDatabaseConfiguration.cs index 47d96da4d..8f6975525 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixAttributeSetConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixDatabaseConfiguration.cs @@ -6,11 +6,11 @@ namespace Mix.Cms.Lib.Models.EntityConfigurations.POSTGRESQL { - public class MixAttributeSetConfiguration : IEntityTypeConfiguration + public class MixDatabaseConfiguration : IEntityTypeConfiguration { - public void Configure(EntityTypeBuilder entity) + public void Configure(EntityTypeBuilder entity) { - entity.ToTable("mix_attribute_set"); + entity.ToTable("mix_database"); entity.Property(e => e.CreatedBy) .HasColumnType("varchar(50)") diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixRelatedDataConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixDatabaseDataAssociationConfiguration.cs similarity index 85% rename from src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixRelatedDataConfiguration.cs rename to src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixDatabaseDataAssociationConfiguration.cs index 253a988d1..da47c3d4a 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixRelatedDataConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixDatabaseDataAssociationConfiguration.cs @@ -6,21 +6,21 @@ namespace Mix.Cms.Lib.Models.EntityConfigurations.POSTGRESQL { - public class MixRelatedDataConfiguration : IEntityTypeConfiguration + public class MixDatabaseDataAssociationConfiguration : IEntityTypeConfiguration { - public void Configure(EntityTypeBuilder entity) + public void Configure(EntityTypeBuilder entity) { entity.HasKey(e => new { e.Id, e.Specificulture }) - .HasName("PK_mix_related_data"); + .HasName("PK_mix_database_data_association"); - entity.ToTable("mix_related_data"); + entity.ToTable("mix_database_data_association"); entity.Property(e => e.Specificulture) .HasColumnType("varchar(10)") .HasCharSet("utf8") .HasCollation("und-x-icu"); - entity.Property(e => e.AttributeSetName) + entity.Property(e => e.MixDatabaseName) .HasColumnType("varchar(250)") .HasCharSet("utf8") .HasCollation("und-x-icu"); diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixAttributeSetDataConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixDatabaseDataConfiguration.cs similarity index 80% rename from src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixAttributeSetDataConfiguration.cs rename to src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixDatabaseDataConfiguration.cs index 98fc40be6..e6bac19cd 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixAttributeSetDataConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixDatabaseDataConfiguration.cs @@ -6,16 +6,16 @@ namespace Mix.Cms.Lib.Models.EntityConfigurations.POSTGRESQL { - public class MixAttributeSetDataConfiguration : IEntityTypeConfiguration + public class MixDatabaseDataConfiguration : IEntityTypeConfiguration { - public void Configure(EntityTypeBuilder entity) + public void Configure(EntityTypeBuilder entity) { entity.HasKey(e => new { e.Id, e.Specificulture }) - .HasName("PK_mix_attribute_set_data"); + .HasName("PK_mix_database_data"); - entity.ToTable("mix_attribute_set_data"); + entity.ToTable("mix_database_data"); - entity.HasIndex(e => e.AttributeSetId); + entity.HasIndex(e => e.MixDatabaseId); entity.Property(e => e.Id) .HasColumnType("varchar(50)") @@ -27,7 +27,7 @@ public void Configure(EntityTypeBuilder entity) .HasCharSet("utf8") .HasCollation("und-x-icu"); - entity.Property(e => e.AttributeSetName) + entity.Property(e => e.MixDatabaseName) .HasColumnType("varchar(250)") .HasCharSet("utf8") .HasCollation("und-x-icu"); diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixAttributeSetValueConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixDatabaseDataValueConfiguration.cs similarity index 89% rename from src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixAttributeSetValueConfiguration.cs rename to src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixDatabaseDataValueConfiguration.cs index aee779125..08a4049ac 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixAttributeSetValueConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixDatabaseDataValueConfiguration.cs @@ -6,14 +6,14 @@ namespace Mix.Cms.Lib.Models.EntityConfigurations.POSTGRESQL { - public class MixAttributeSetValueConfiguration : IEntityTypeConfiguration + public class MixDatabaseDataValueConfiguration : IEntityTypeConfiguration { - public void Configure(EntityTypeBuilder entity) + public void Configure(EntityTypeBuilder entity) { entity.HasKey(e => new { e.Id, e.Specificulture }) - .HasName("PK_mix_attribute_set_value"); + .HasName("PK_mix_database_data_value"); - entity.ToTable("mix_attribute_set_value"); + entity.ToTable("mix_database_data_value"); entity.HasIndex(e => e.DataId); @@ -22,13 +22,13 @@ public void Configure(EntityTypeBuilder entity) .HasCharSet("utf8") .HasCollation("und-x-icu"); - entity.Property(e => e.AttributeFieldName) + entity.Property(e => e.MixDatabaseColumnName) .IsRequired() .HasColumnType("varchar(50)") .HasCharSet("utf8") .HasCollation("und-x-icu"); - entity.Property(e => e.AttributeSetName) + entity.Property(e => e.MixDatabaseName) .HasColumnType("varchar(250)") .HasCharSet("utf8") .HasCollation("und-x-icu"); diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixRelatedPostConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixPostAssociationConfiguration.cs similarity index 84% rename from src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixRelatedPostConfiguration.cs rename to src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixPostAssociationConfiguration.cs index ab350a029..f47ab7a8f 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixRelatedPostConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixPostAssociationConfiguration.cs @@ -6,14 +6,14 @@ namespace Mix.Cms.Lib.Models.EntityConfigurations.POSTGRESQL { - public class MixRelatedPostConfiguration : IEntityTypeConfiguration + public class MixPostAssociationConfiguration : IEntityTypeConfiguration { - public void Configure(EntityTypeBuilder entity) + public void Configure(EntityTypeBuilder entity) { entity.HasKey(e => new { e.Id, e.Specificulture }) - .HasName("PK_mix_related_post"); + .HasName("PK_mix_post_association"); - entity.ToTable("mix_related_post"); + entity.ToTable("mix_post_association"); entity.HasIndex(e => new { e.DestinationId, e.Specificulture }); @@ -59,13 +59,13 @@ public void Configure(EntityTypeBuilder entity) .WithMany(p => p.MixRelatedPostMixPost) .HasForeignKey(d => new { d.DestinationId, d.Specificulture }) .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("FK_mix_related_post_mix_post1"); + .HasConstraintName("FK_mix_post_association_mix_post1"); entity.HasOne(d => d.S) .WithMany(p => p.MixRelatedPostS) .HasForeignKey(d => new { d.SourceId, d.Specificulture }) .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("FK_mix_related_post_mix_post"); + .HasConstraintName("FK_mix_post_association_mix_post"); } } } \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixRelatedAttributeDataConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixRelatedAttributeDataConfiguration.cs deleted file mode 100644 index 04bd6c258..000000000 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixRelatedAttributeDataConfiguration.cs +++ /dev/null @@ -1,79 +0,0 @@ -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata.Builders; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Mix.Cms.Lib.Enums; -using Mix.Cms.Lib.Models.Cms; - -namespace Mix.Cms.Lib.Models.EntityConfigurations.POSTGRESQL -{ - public class MixRelatedAttributeDataConfiguration : IEntityTypeConfiguration - { - public void Configure(EntityTypeBuilder entity) - { - entity.HasKey(e => new { e.Id, e.Specificulture }) - .HasName("PK_mix_related_attribute_data"); - - entity.ToTable("mix_related_attribute_data"); - - entity.Property(e => e.Id) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("und-x-icu"); - - entity.Property(e => e.Specificulture) - .HasColumnType("varchar(10)") - .HasCharSet("utf8") - .HasCollation("und-x-icu"); - - entity.Property(e => e.AttributeSetName) - .HasColumnType("varchar(250)") - .HasCharSet("utf8") - .HasCollation("und-x-icu"); - - entity.Property(e => e.CreatedBy) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("und-x-icu"); - - entity.Property(e => e.CreatedDateTime).HasColumnType("timestamp without time zone"); - - entity.Property(e => e.DataId) - .IsRequired() - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("und-x-icu"); - - entity.Property(e => e.Description) - .HasColumnType("varchar(450)") - .HasCharSet("utf8") - .HasCollation("und-x-icu"); - - entity.Property(e => e.LastModified).HasColumnType("timestamp without time zone"); - - entity.Property(e => e.ModifiedBy) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("und-x-icu"); - - entity.Property(e => e.ParentId) - .IsRequired() - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("und-x-icu"); - - entity.Property(e => e.ParentType) - .IsRequired() - .HasConversion(new EnumToStringConverter()) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("und-x-icu"); - - entity.Property(e => e.Status) - .IsRequired() - .HasConversion(new EnumToStringConverter()) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("und-x-icu"); - } - } -} \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixRelatedAttributeSetConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixRelatedAttributeSetConfiguration.cs deleted file mode 100644 index 21fe847e1..000000000 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/POSTGRESQL/MixRelatedAttributeSetConfiguration.cs +++ /dev/null @@ -1,62 +0,0 @@ -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata.Builders; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Mix.Cms.Lib.Enums; -using Mix.Cms.Lib.Models.Cms; - -namespace Mix.Cms.Lib.Models.EntityConfigurations.POSTGRESQL -{ - public class MixRelatedAttributeSetConfiguration : IEntityTypeConfiguration - { - public void Configure(EntityTypeBuilder entity) - { - entity.HasKey(e => new { e.Id, e.Specificulture }) - .HasName("PK_mix_related_attribute_set"); - - entity.ToTable("mix_related_attribute_set"); - - entity.Property(e => e.Specificulture) - .HasColumnType("varchar(10)") - .HasCharSet("utf8") - .HasCollation("und-x-icu"); - - entity.Property(e => e.CreatedBy) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("und-x-icu"); - - entity.Property(e => e.CreatedDateTime).HasColumnType("timestamp without time zone"); - - entity.Property(e => e.Description) - .HasColumnType("varchar(450)") - .HasCharSet("utf8") - .HasCollation("und-x-icu"); - - entity.Property(e => e.Image) - .HasColumnType("varchar(450)") - .HasCharSet("utf8") - .HasCollation("und-x-icu"); - - entity.Property(e => e.LastModified).HasColumnType("timestamp without time zone"); - - entity.Property(e => e.ModifiedBy) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("und-x-icu"); - - entity.Property(e => e.ParentType) - .IsRequired() - .HasConversion(new EnumToStringConverter()) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("und-x-icu"); - - entity.Property(e => e.Status) - .IsRequired() - .HasConversion(new EnumToStringConverter()) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("und-x-icu"); - } - } -} \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixAttributeSetReferenceConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixAttributeSetReferenceConfiguration.cs deleted file mode 100644 index 97b2898b8..000000000 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixAttributeSetReferenceConfiguration.cs +++ /dev/null @@ -1,52 +0,0 @@ -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata.Builders; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Mix.Cms.Lib.Enums; -using Mix.Cms.Lib.Models.Cms; - -namespace Mix.Cms.Lib.Models.EntityConfigurations.SQLITE -{ - public class MixAttributeSetReferenceConfiguration : IEntityTypeConfiguration - { - public void Configure(EntityTypeBuilder entity) - { - entity.ToTable("mix_attribute_set_reference"); - - entity.Property(e => e.Id) - .ValueGeneratedNever(); - - entity.HasIndex(e => e.AttributeSetId); - - entity.Property(e => e.CreatedBy) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - - entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); - - entity.Property(e => e.Description) - .HasColumnType("varchar(450)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - - entity.Property(e => e.Image) - .HasColumnType("varchar(450)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - - entity.Property(e => e.LastModified).HasColumnType("datetime"); - - entity.Property(e => e.ModifiedBy) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - - entity.Property(e => e.Status) - .IsRequired() - .HasConversion(new EnumToStringConverter()) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - } - } -} \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixAttributeValueConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixAttributeValueConfiguration.cs deleted file mode 100644 index 0092c91db..000000000 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixAttributeValueConfiguration.cs +++ /dev/null @@ -1,21 +0,0 @@ -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata.Builders; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Mix.Cms.Lib.Enums; -using Mix.Cms.Lib.Models.Cms; - -namespace Mix.Cms.Lib.Models.EntityConfigurations.SQLITE -{ - public class MixAttributeValueConfiguration : IEntityTypeConfiguration - { - public void Configure(EntityTypeBuilder builder) - { - builder - .Property(e => e.DataType) - .HasConversion(new EnumToStringConverter()) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - } - } -} \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixCacheConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixCacheConfiguration.cs index 8a3644ebf..90e4155ac 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixCacheConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixCacheConfiguration.cs @@ -19,12 +19,12 @@ public void Configure(EntityTypeBuilder entity) .ValueGeneratedNever() .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); @@ -35,20 +35,20 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.ModifiedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Status) .IsRequired() .HasConversion(new EnumToStringConverter()) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Value) .IsRequired() .HasColumnType("text") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); } } } \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixCmsUserConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixCmsUserConfiguration.cs index 165b5343a..9c7c9e546 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixCmsUserConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixCmsUserConfiguration.cs @@ -16,68 +16,68 @@ public void Configure(EntityTypeBuilder entity) .ValueGeneratedNever() .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Address) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Avatar) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); entity.Property(e => e.Email) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.FirstName) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.LastModified).HasColumnType("datetime"); entity.Property(e => e.LastName) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.MiddleName) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.ModifiedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.PhoneNumber) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Status) .IsRequired() .HasConversion(new EnumToStringConverter()) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Username) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); } } } \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixConfigurationConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixConfigurationConfiguration.cs index f938b7214..319ceb007 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixConfigurationConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixConfigurationConfiguration.cs @@ -23,56 +23,56 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.Specificulture) .HasColumnType("varchar(10)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Category) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); entity.Property(e => e.Description) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Keyword) .IsRequired() .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.LastModified).HasColumnType("datetime"); entity.Property(e => e.ModifiedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Status) .IsRequired() .HasConversion(new EnumToStringConverter()) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.DataType) .IsRequired() .HasConversion(new EnumToStringConverter()) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Value) .HasColumnType("text") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.HasOne(d => d.SpecificultureNavigation) .WithMany(p => p.MixConfiguration) diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixCultureConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixCultureConfiguration.cs index 707a83c69..1a6a06912 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixCultureConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixCultureConfiguration.cs @@ -22,29 +22,29 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.Alias) .HasColumnType("varchar(150)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); entity.Property(e => e.Description) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.FullName) .HasColumnType("varchar(150)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Icon) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.LastModified).HasColumnType("datetime"); @@ -52,25 +52,25 @@ public void Configure(EntityTypeBuilder entity) .HasColumnName("LCID") .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.ModifiedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Specificulture) .IsRequired() .HasColumnType("varchar(10)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Status) .IsRequired() .HasConversion(new EnumToStringConverter()) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); } } } \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixAttributeFieldConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixDatabaseColumnConfiguration.cs similarity index 79% rename from src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixAttributeFieldConfiguration.cs rename to src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixDatabaseColumnConfiguration.cs index 9bfc67a03..4e3b61bda 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixAttributeFieldConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixDatabaseColumnConfiguration.cs @@ -6,11 +6,11 @@ namespace Mix.Cms.Lib.Models.EntityConfigurations.SQLITE { - public class MixAttributeFieldConfiguration : IEntityTypeConfiguration + public class MixDatabaseColumnConfiguration : IEntityTypeConfiguration { - public void Configure(EntityTypeBuilder entity) + public void Configure(EntityTypeBuilder entity) { - entity.ToTable("mix_attribute_field"); + entity.ToTable("mix_database_column"); entity.Property(e => e.Id) .ValueGeneratedNever(); @@ -20,9 +20,9 @@ public void Configure(EntityTypeBuilder entity) .HasConversion(new EnumToStringConverter()) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); - entity.Property(e => e.AttributeSetName).HasMaxLength(250); + entity.Property(e => e.MixDatabaseName).HasMaxLength(250); entity.Property(e => e.CreatedBy) .HasMaxLength(50) @@ -51,7 +51,7 @@ public void Configure(EntityTypeBuilder entity) .HasConversion(new EnumToStringConverter()) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); } } } \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixAttributeSetConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixDatabaseConfiguration.cs similarity index 74% rename from src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixAttributeSetConfiguration.cs rename to src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixDatabaseConfiguration.cs index c9648c5dd..3e134793d 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixAttributeSetConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixDatabaseConfiguration.cs @@ -6,11 +6,11 @@ namespace Mix.Cms.Lib.Models.EntityConfigurations.SQLITE { - public class MixAttributeSetConfiguration : IEntityTypeConfiguration + public class MixDatabaseConfiguration : IEntityTypeConfiguration { - public void Configure(EntityTypeBuilder entity) + public void Configure(EntityTypeBuilder entity) { - entity.ToTable("mix_attribute_set"); + entity.ToTable("mix_database"); entity.Property(e => e.Id) .ValueGeneratedNever(); @@ -18,69 +18,69 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.CreatedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); entity.Property(e => e.Description) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.EdmAutoSend).HasColumnType("bit"); entity.Property(e => e.EdmFrom) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.EdmSubject) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.EdmTemplate) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.FormTemplate) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.LastModified).HasColumnType("datetime"); entity.Property(e => e.ModifiedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Name) .IsRequired() .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Status) .IsRequired() .HasConversion(new EnumToStringConverter()) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Title) .IsRequired() .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Type) .IsRequired() .HasConversion(new EnumToStringConverter()) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); } } } \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixRelatedAttributeDataConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixDatabaseDataAssociationConfiguration.cs similarity index 70% rename from src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixRelatedAttributeDataConfiguration.cs rename to src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixDatabaseDataAssociationConfiguration.cs index ebe96b58e..b134e759f 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixRelatedAttributeDataConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixDatabaseDataAssociationConfiguration.cs @@ -6,35 +6,35 @@ namespace Mix.Cms.Lib.Models.EntityConfigurations.SQLITE { - public class MixRelatedAttributeDataConfiguration : IEntityTypeConfiguration + public class MixDatabaseDataAssociationConfiguration : IEntityTypeConfiguration { - public void Configure(EntityTypeBuilder entity) + public void Configure(EntityTypeBuilder entity) { entity.HasKey(e => new { e.Id, e.Specificulture }) - .HasName("PK_mix_related_attribute_data"); + .HasName("PK_mix_database_data_association"); - entity.ToTable("mix_related_attribute_data"); + entity.ToTable("mix_database_data_association"); entity.Property(e => e.Id) .ValueGeneratedNever() .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Specificulture) .HasColumnType("varchar(10)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); - entity.Property(e => e.AttributeSetName) + entity.Property(e => e.MixDatabaseName) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); @@ -42,39 +42,39 @@ public void Configure(EntityTypeBuilder entity) .IsRequired() .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Description) .HasColumnType("varchar(450)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.LastModified).HasColumnType("datetime"); entity.Property(e => e.ModifiedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.ParentId) .IsRequired() .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.ParentType) .IsRequired() .HasConversion(new EnumToStringConverter()) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Status) .IsRequired() .HasConversion(new EnumToStringConverter()) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); } } } \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixAttributeSetDataConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixDatabaseDataConfiguration.cs similarity index 66% rename from src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixAttributeSetDataConfiguration.cs rename to src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixDatabaseDataConfiguration.cs index bef054ad8..3fe661a9e 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixAttributeSetDataConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixDatabaseDataConfiguration.cs @@ -6,37 +6,37 @@ namespace Mix.Cms.Lib.Models.EntityConfigurations.SQLITE { - public class MixAttributeSetDataConfiguration : IEntityTypeConfiguration + public class MixDatabaseDataConfiguration : IEntityTypeConfiguration { - public void Configure(EntityTypeBuilder entity) + public void Configure(EntityTypeBuilder entity) { entity.HasKey(e => new { e.Id, e.Specificulture }) - .HasName("PK_mix_attribute_set_data"); + .HasName("PK_mix_database_data"); - entity.ToTable("mix_attribute_set_data"); + entity.ToTable("mix_database_data"); - entity.HasIndex(e => e.AttributeSetId); + entity.HasIndex(e => e.MixDatabaseId); entity.Property(e => e.Id) .ValueGeneratedNever() .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Specificulture) .HasColumnType("varchar(10)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); - entity.Property(e => e.AttributeSetName) + entity.Property(e => e.MixDatabaseName) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); @@ -45,14 +45,14 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.ModifiedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Status) .IsRequired() .HasConversion(new EnumToStringConverter()) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); } } } \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixAttributeSetValueConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixDatabaseDataValueConfiguration.cs similarity index 71% rename from src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixAttributeSetValueConfiguration.cs rename to src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixDatabaseDataValueConfiguration.cs index 8c0412a41..d27a5f8a4 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixAttributeSetValueConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixDatabaseDataValueConfiguration.cs @@ -6,14 +6,14 @@ namespace Mix.Cms.Lib.Models.EntityConfigurations.SQLITE { - public class MixAttributeSetValueConfiguration : IEntityTypeConfiguration + public class MixDatabaseDataValueConfiguration : IEntityTypeConfiguration { - public void Configure(EntityTypeBuilder entity) + public void Configure(EntityTypeBuilder entity) { entity.HasKey(e => new { e.Id, e.Specificulture }) - .HasName("PK_mix_attribute_set_value"); + .HasName("PK_mix_database_data_value"); - entity.ToTable("mix_attribute_set_value"); + entity.ToTable("mix_database_data_value"); entity.HasIndex(e => e.DataId); @@ -21,25 +21,25 @@ public void Configure(EntityTypeBuilder entity) .ValueGeneratedNever() .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); - entity.Property(e => e.AttributeFieldName) + entity.Property(e => e.MixDatabaseColumnName) .IsRequired() .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); - entity.Property(e => e.AttributeSetName) + entity.Property(e => e.MixDatabaseName) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.BooleanValue).HasColumnType("bit"); entity.Property(e => e.CreatedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); @@ -47,56 +47,56 @@ public void Configure(EntityTypeBuilder entity) .IsRequired() .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.DateTimeValue).HasColumnType("datetime"); entity.Property(e => e.EncryptKey) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.EncryptValue) .HasColumnType("text") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.LastModified).HasColumnType("datetime"); entity.Property(e => e.ModifiedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Regex) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Specificulture) .IsRequired() .HasColumnType("varchar(10)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Status) .IsRequired() .HasConversion(new EnumToStringConverter()) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.DataType) .IsRequired() .HasConversion(new EnumToStringConverter()) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.StringValue) .HasColumnType("text") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); } } } \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixFileConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixFileConfiguration.cs index e96a1b400..44a08989e 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixFileConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixFileConfiguration.cs @@ -20,7 +20,7 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.CreatedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); @@ -28,51 +28,51 @@ public void Configure(EntityTypeBuilder entity) .IsRequired() .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.FileFolder) .IsRequired() .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.FileName) .IsRequired() .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.FolderType) .IsRequired() .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.LastModified).HasColumnType("datetime"); entity.Property(e => e.ModifiedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Status) .IsRequired() .HasConversion(new EnumToStringConverter()) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.StringContent) .IsRequired() .HasColumnType("text") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.ThemeName) .IsRequired() .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.HasOne(d => d.Theme) .WithMany(p => p.MixFile) diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixLanguageConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixLanguageConfiguration.cs index 3d96bd940..35a32c174 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixLanguageConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixLanguageConfiguration.cs @@ -23,61 +23,61 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.Specificulture) .HasColumnType("varchar(10)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Category) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); entity.Property(e => e.DefaultValue) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Description) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Keyword) .IsRequired() .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.LastModified).HasColumnType("datetime"); entity.Property(e => e.ModifiedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Status) .IsRequired() .HasConversion(new EnumToStringConverter()) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.DataType) .IsRequired() .HasConversion(new EnumToStringConverter()) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Value) .HasColumnType("text") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.HasOne(d => d.SpecificultureNavigation) .WithMany(p => p.MixLanguage) diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixMediaConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixMediaConfiguration.cs index 1dd30d028..f27f36871 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixMediaConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixMediaConfiguration.cs @@ -21,82 +21,82 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.Specificulture) .HasColumnType("varchar(10)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); entity.Property(e => e.Description) .HasColumnType("text") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Extension) .IsRequired() .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.FileFolder) .IsRequired() .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.FileName) .IsRequired() .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.FileProperties) .HasColumnType("text") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.FileType) .IsRequired() .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.LastModified).HasColumnType("datetime"); entity.Property(e => e.ModifiedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Source) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Status) .IsRequired() .HasConversion(new EnumToStringConverter()) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Tags) .HasColumnType("varchar(400)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.TargetUrl) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Title) .HasColumnType("text") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); } } } \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixModuleConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixModuleConfiguration.cs index f9c77f796..5ba821ec9 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixModuleConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixModuleConfiguration.cs @@ -23,74 +23,74 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.Specificulture) .HasColumnType("varchar(10)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); entity.Property(e => e.Description) .HasColumnType("text") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.EdmTemplate) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Fields) .HasColumnType("text") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.FormTemplate) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Image) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.LastModified).HasColumnType("datetime"); entity.Property(e => e.ModifiedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Name) .IsRequired() .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Status) .IsRequired() .HasConversion(new EnumToStringConverter()) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Template) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Thumbnail) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Title) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.HasOne(d => d.SpecificultureNavigation) .WithMany(p => p.MixModule) diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixModuleDataConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixModuleDataConfiguration.cs index 63029589f..b799785d5 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixModuleDataConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixModuleDataConfiguration.cs @@ -27,17 +27,17 @@ public void Configure(EntityTypeBuilder entity) .ValueGeneratedNever() .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Specificulture) .HasColumnType("varchar(10)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); @@ -45,26 +45,26 @@ public void Configure(EntityTypeBuilder entity) .IsRequired() .HasColumnType("text") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.LastModified).HasColumnType("datetime"); entity.Property(e => e.ModifiedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Status) .IsRequired() .HasConversion(new EnumToStringConverter()) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Value) .HasColumnType("text") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.HasOne(d => d.MixModule) .WithMany(p => p.MixModuleData) diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixModulePostConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixModulePostConfiguration.cs index 2abcac842..1519f611f 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixModulePostConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixModulePostConfiguration.cs @@ -25,38 +25,38 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.Specificulture) .HasColumnType("varchar(10)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); entity.Property(e => e.Description) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Image) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.LastModified).HasColumnType("datetime"); entity.Property(e => e.ModifiedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Status) .IsRequired() .HasConversion(new EnumToStringConverter()) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.HasOne(d => d.MixModule) .WithMany(p => p.MixModulePost) diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixPageConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixPageConfiguration.cs index 00a1b6099..ec851f046 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixPageConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixPageConfiguration.cs @@ -23,109 +23,109 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.Specificulture) .HasColumnType("varchar(10)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Content) .HasColumnType("text") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); entity.Property(e => e.CssClass) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Excerpt) .HasColumnType("text") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.ExtraFields) .HasColumnType("text") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Icon) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Image) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.LastModified).HasColumnType("datetime"); entity.Property(e => e.Layout) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.ModifiedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.SeoDescription) .HasColumnType("text") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.SeoKeywords) .HasColumnType("text") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.SeoName) .HasColumnType("varchar(500)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.SeoTitle) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.StaticUrl) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Status) .IsRequired() .HasConversion(new EnumToStringConverter()) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Tags) .HasColumnType("text") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Template) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Title) .HasColumnType("text") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Type) .HasConversion(new EnumToStringConverter()) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.HasOne(d => d.SpecificultureNavigation) .WithMany(p => p.MixPage) diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixPageModuleConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixPageModuleConfiguration.cs index a913da835..11b02ab8a 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixPageModuleConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixPageModuleConfiguration.cs @@ -25,38 +25,38 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.Specificulture) .HasColumnType("varchar(10)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); entity.Property(e => e.Description) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Image) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.LastModified).HasColumnType("datetime"); entity.Property(e => e.ModifiedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Status) .IsRequired() .HasConversion(new EnumToStringConverter()) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.HasOne(d => d.MixModule) .WithMany(p => p.MixPageModule) diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixPagePostConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixPagePostConfiguration.cs index 6d2db8bcd..00d60d0d0 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixPagePostConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixPagePostConfiguration.cs @@ -25,38 +25,38 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.Specificulture) .HasColumnType("varchar(10)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); entity.Property(e => e.Description) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Image) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.LastModified).HasColumnType("datetime"); entity.Property(e => e.ModifiedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Status) .IsRequired() .HasConversion(new EnumToStringConverter()) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.HasOne(d => d.MixPage) .WithMany(p => p.MixPagePost) diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixPortalPageConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixPortalPageConfiguration.cs index b262d8dcc..7d28be208 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixPortalPageConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixPortalPageConfiguration.cs @@ -18,48 +18,48 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.CreatedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); entity.Property(e => e.Description) .HasColumnType("varchar(450)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Icon) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.LastModified).HasColumnType("datetime"); entity.Property(e => e.ModifiedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Status) .IsRequired() .HasConversion(new EnumToStringConverter()) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.TextDefault) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.TextKeyword) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Url) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); } } } \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixPortalPageNavigationConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixPortalPageNavigationConfiguration.cs index 2dacfd74b..d9a9d4520 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixPortalPageNavigationConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixPortalPageNavigationConfiguration.cs @@ -23,33 +23,33 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.CreatedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); entity.Property(e => e.Description) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Image) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.LastModified).HasColumnType("datetime"); entity.Property(e => e.ModifiedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Status) .IsRequired() .HasConversion(new EnumToStringConverter()) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.HasOne(d => d.Page) .WithMany(p => p.MixPortalPageNavigationPage) diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixRelatedPostConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixPostAssociationConfiguration.cs similarity index 74% rename from src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixRelatedPostConfiguration.cs rename to src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixPostAssociationConfiguration.cs index c7ecc76bb..e0366646b 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixRelatedPostConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixPostAssociationConfiguration.cs @@ -6,14 +6,14 @@ namespace Mix.Cms.Lib.Models.EntityConfigurations.SQLITE { - public class MixRelatedPostConfiguration : IEntityTypeConfiguration + public class MixPostAssociationConfiguration : IEntityTypeConfiguration { - public void Configure(EntityTypeBuilder entity) + public void Configure(EntityTypeBuilder entity) { entity.HasKey(e => new { e.Id, e.Specificulture }) - .HasName("PK_mix_related_post"); + .HasName("PK_mix_post_association"); - entity.ToTable("mix_related_post"); + entity.ToTable("mix_post_association"); entity.Property(e => e.Id) .ValueGeneratedNever(); @@ -25,50 +25,50 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.Specificulture) .HasColumnType("varchar(10)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); entity.Property(e => e.Description) .HasColumnType("varchar(450)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Image) .HasColumnType("varchar(450)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.LastModified).HasColumnType("datetime"); entity.Property(e => e.ModifiedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Status) .IsRequired() .HasConversion(new EnumToStringConverter()) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.HasOne(d => d.MixPost) .WithMany(p => p.MixRelatedPostMixPost) .HasForeignKey(d => new { d.DestinationId, d.Specificulture }) .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("FK_mix_related_post_mix_post1"); + .HasConstraintName("FK_mix_post_association_mix_post1"); entity.HasOne(d => d.S) .WithMany(p => p.MixRelatedPostS) .HasForeignKey(d => new { d.SourceId, d.Specificulture }) .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("FK_mix_related_post_mix_post"); + .HasConstraintName("FK_mix_post_association_mix_post"); } } } \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixPostConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixPostConfiguration.cs index 21a8ad3b6..e606a5e82 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixPostConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixPostConfiguration.cs @@ -23,110 +23,110 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.Specificulture) .HasColumnType("varchar(10)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Content) .HasColumnType("text") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); entity.Property(e => e.Excerpt) .HasColumnType("text") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.ExtraFields) .HasColumnType("text") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.ExtraProperties) .HasColumnType("text") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Icon) .HasColumnType("text") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Image) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.LastModified).HasColumnType("datetime"); entity.Property(e => e.ModifiedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.PublishedDateTime).HasColumnType("datetime"); entity.Property(e => e.SeoDescription) .HasColumnType("text") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.SeoKeywords) .HasColumnType("text") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.SeoName) .HasColumnType("varchar(500)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.SeoTitle) .HasColumnType("text") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Source) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Status) .IsRequired() .HasConversion(new EnumToStringConverter()) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Tags) .HasColumnType("text") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Template) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Thumbnail) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Title) .HasColumnType("text") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Type) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.HasOne(d => d.SpecificultureNavigation) .WithMany(p => p.MixPost) diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixPostMediaConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixPostMediaConfiguration.cs index 7706ee96e..9e2e13ff2 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixPostMediaConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixPostMediaConfiguration.cs @@ -25,38 +25,38 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.Specificulture) .HasColumnType("varchar(10)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); entity.Property(e => e.Description) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Image) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.LastModified).HasColumnType("datetime"); entity.Property(e => e.ModifiedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Status) .IsRequired() .HasConversion(new EnumToStringConverter()) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.HasOne(d => d.MixMedia) .WithMany(p => p.MixPostMedia) diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixPostModuleConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixPostModuleConfiguration.cs index 4c134459a..60e02e36d 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixPostModuleConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixPostModuleConfiguration.cs @@ -25,38 +25,38 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.Specificulture) .HasColumnType("varchar(10)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); entity.Property(e => e.Description) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Image) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.LastModified).HasColumnType("datetime"); entity.Property(e => e.ModifiedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Status) .IsRequired() .HasConversion(new EnumToStringConverter()) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.HasOne(d => d.MixModule) .WithMany(p => p.MixPostModule) diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixRelatedAttributeSetConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixRelatedAttributeSetConfiguration.cs deleted file mode 100644 index f7de4d415..000000000 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixRelatedAttributeSetConfiguration.cs +++ /dev/null @@ -1,65 +0,0 @@ -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata.Builders; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Mix.Cms.Lib.Enums; -using Mix.Cms.Lib.Models.Cms; - -namespace Mix.Cms.Lib.Models.EntityConfigurations.SQLITE -{ - public class MixRelatedAttributeSetConfiguration : IEntityTypeConfiguration - { - public void Configure(EntityTypeBuilder entity) - { - entity.HasKey(e => new { e.Id, e.Specificulture }) - .HasName("PK_mix_related_attribute_set"); - - entity.ToTable("mix_related_attribute_set"); - - entity.Property(e => e.Id) - .ValueGeneratedNever(); - - entity.Property(e => e.Specificulture) - .HasColumnType("varchar(10)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - - entity.Property(e => e.CreatedBy) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - - entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); - - entity.Property(e => e.Description) - .HasColumnType("varchar(450)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - - entity.Property(e => e.Image) - .HasColumnType("varchar(450)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - - entity.Property(e => e.LastModified).HasColumnType("datetime"); - - entity.Property(e => e.ModifiedBy) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - - entity.Property(e => e.ParentType) - .IsRequired() - .HasConversion(new EnumToStringConverter()) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - - entity.Property(e => e.Status) - .IsRequired() - .HasConversion(new EnumToStringConverter()) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - } - } -} \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixRelatedDataConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixRelatedDataConfiguration.cs deleted file mode 100644 index e0eec8887..000000000 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixRelatedDataConfiguration.cs +++ /dev/null @@ -1,76 +0,0 @@ -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata.Builders; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Mix.Cms.Lib.Enums; -using Mix.Cms.Lib.Models.Cms; - -namespace Mix.Cms.Lib.Models.EntityConfigurations.SQLITE -{ - public class MixRelatedDataConfiguration : IEntityTypeConfiguration - { - public void Configure(EntityTypeBuilder entity) - { - entity.HasKey(e => new { e.Id, e.Specificulture }) - .HasName("PK_mix_related_data"); - - entity.ToTable("mix_related_data"); - - entity.Property(e => e.Id) - .ValueGeneratedNever(); - - entity.Property(e => e.Specificulture) - .HasColumnType("varchar(10)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - - entity.Property(e => e.AttributeSetName) - .HasColumnType("varchar(250)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - - entity.Property(e => e.CreatedBy) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - - entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); - - entity.Property(e => e.DataId) - .IsRequired() - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - - entity.Property(e => e.Description) - .HasColumnType("varchar(450)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - - entity.Property(e => e.LastModified).HasColumnType("datetime"); - - entity.Property(e => e.ModifiedBy) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - - entity.Property(e => e.ParentId) - .IsRequired() - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - - entity.Property(e => e.ParentType) - .IsRequired() - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - - entity.Property(e => e.Status) - .IsRequired() - .HasConversion(new EnumToStringConverter()) - .HasColumnType("varchar(50)") - .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); - } - } -} \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixTemplateConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixTemplateConfiguration.cs index 5c7d042d4..d7bb0cb40 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixTemplateConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixTemplateConfiguration.cs @@ -22,12 +22,12 @@ public void Configure(EntityTypeBuilder entity) .IsRequired() .HasColumnType("text") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); @@ -35,65 +35,65 @@ public void Configure(EntityTypeBuilder entity) .IsRequired() .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.FileFolder) .IsRequired() .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.FileName) .IsRequired() .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.FolderType) .IsRequired() .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.LastModified).HasColumnType("datetime"); entity.Property(e => e.MobileContent) .HasColumnType("text") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.ModifiedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Scripts) .HasColumnType("text") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.SpaContent) .HasColumnType("text") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Status) .IsRequired() .HasConversion(new EnumToStringConverter()) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Styles) .HasColumnType("text") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.ThemeName) .IsRequired() .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.HasOne(d => d.Theme) .WithMany(p => p.MixTemplate) diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixThemeConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixThemeConfiguration.cs index e299f4d49..e6b848efb 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixThemeConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixThemeConfiguration.cs @@ -18,49 +18,49 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.CreatedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.CreatedDateTime).HasColumnType("datetime"); entity.Property(e => e.Image) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.LastModified).HasColumnType("datetime"); entity.Property(e => e.ModifiedBy) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Name) .IsRequired() .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.PreviewUrl) .HasColumnType("varchar(450)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Status) .IsRequired() .HasConversion(new EnumToStringConverter()) .HasColumnType("varchar(50)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Thumbnail) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Title) .HasColumnType("varchar(250)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); } } } \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixUrlAliasConfiguration.cs b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixUrlAliasConfiguration.cs index fdf1177cd..e6c68c7c5 100644 --- a/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixUrlAliasConfiguration.cs +++ b/src/Mix.Cms.Lib/Models/EntityConfigurations/SQLITE/MixUrlAliasConfiguration.cs @@ -20,7 +20,7 @@ public void Configure(EntityTypeBuilder entity) entity.Property(e => e.Specificulture) .HasColumnType("varchar(10)") .HasCharSet("utf8") - .HasCollation("Vietnamese_CI_AS"); + .HasCollation("NOCASE"); entity.Property(e => e.Alias).HasMaxLength(250); diff --git a/src/Mix.Cms.Lib/Readme.txt b/src/Mix.Cms.Lib/Readme.txt index ead243620..ac9e26063 100644 --- a/src/Mix.Cms.Lib/Readme.txt +++ b/src/Mix.Cms.Lib/Readme.txt @@ -23,12 +23,12 @@ remove default value delete from test_123.dbo.mix_module delete from test_123.dbo.mix_theme delete from test_123.dbo.mix_template - delete from test_123.[dbo].[mix_related_attribute_data] - delete from test_123.dbo.mix_attribute_set_data - delete from test_123.dbo.mix_attribute_set_value - delete from test_123.dbo.mix_attribute_field - delete from test_123.dbo.mix_attribute_set_data - delete from test_123.dbo.mix_attribute_set + delete from test_123.[dbo].[mix_database_data_association] + delete from test_123.dbo.mix_database_data + delete from test_123.dbo.mix_database_data_value + delete from test_123.dbo.mix_database_column + delete from test_123.dbo.mix_database_data + delete from test_123.dbo.mix_database UnitOfWorkHelper.InitTransaction(_context, _transaction, out TDbContext context, out IDbContextTransaction transaction, out bool isRoot); try diff --git a/src/Mix.Cms.Lib/Services/InitCmsService.cs b/src/Mix.Cms.Lib/Services/InitCmsService.cs index eb96828c4..eb80a1877 100644 --- a/src/Mix.Cms.Lib/Services/InitCmsService.cs +++ b/src/Mix.Cms.Lib/Services/InitCmsService.cs @@ -167,7 +167,7 @@ public static async Task> InitConfigurationsAsync(strin /// /// /// - public static async Task> InitAttributeSetsAsync(MixCmsContext _context = null, IDbContextTransaction _transaction = null) + public static async Task> InitMixDatabasesAsync(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { /* Init Configs */ @@ -175,7 +175,7 @@ public static async Task> InitAttributeSetsAsync(MixCms var result = new RepositoryResponse() { IsSucceed = true }; var getData = MixFileRepository.Instance.GetFile(MixConstants.CONST_FILE_ATTRIBUTE_SETS, MixFolders.JsonDataFolder, true, "{}"); var obj = JObject.Parse(getData.Content); - var data = obj["data"].ToObject>(); + var data = obj["data"].ToObject>(); foreach (var item in data) { if (result.IsSucceed) diff --git a/src/Mix.Cms.Lib/Services/MixService.cs b/src/Mix.Cms.Lib/Services/MixService.cs index c1f0079aa..6397513ac 100644 --- a/src/Mix.Cms.Lib/Services/MixService.cs +++ b/src/Mix.Cms.Lib/Services/MixService.cs @@ -499,7 +499,7 @@ public static MixCmsContext GetDbContext() return new MySqlMixCmsContext(); case MixDatabaseProvider.SQLITE: - return new MySqlMixCmsContext(); + return new SqliteMixCmsContext(); case MixDatabaseProvider.PostgreSQL: return new PostgresqlMixCmsContext(); @@ -526,15 +526,5 @@ public static MixCmsAccountContext GetAccountDbContext() return null; } } - - public static async Task RemoveCacheAsync(Type type, string key = null) - { - string path = $"{MixFolders.MixCacheFolder}/Mix/Cms/Lib/ViewModels/{type.Name}"; - if (!string.IsNullOrEmpty(key)) - { - path += $"/{key}"; - } - await CacheService.RemoveCacheAsync(path); - } } } \ No newline at end of file diff --git a/src/Mix.Cms.Lib/Services/SitemapService.cs b/src/Mix.Cms.Lib/Services/SitemapService.cs index 0bc83716d..de6ae3776 100644 --- a/src/Mix.Cms.Lib/Services/SitemapService.cs +++ b/src/Mix.Cms.Lib/Services/SitemapService.cs @@ -100,8 +100,8 @@ private static async Task ParsePostsDocAsync(XElement root, MixCmsContext contex private static async Task ParseNavigationsAsync(XElement root, MixCmsContext context, IDbContextTransaction transaction) { - var getNavigations = await ViewModels.MixAttributeSetDatas.ReadMvcViewModel.Repository.GetModelListByAsync( - m => m.AttributeSetName == MixDatabaseNames.NAVIGATION, + var getNavigations = await ViewModels.MixDatabaseDatas.ReadMvcViewModel.Repository.GetModelListByAsync( + m => m.MixDatabaseName == MixDatabaseNames.NAVIGATION, context, transaction ); var navs = getNavigations.Data.Select(n => new MixNavigation(n.Obj, n.Specificulture)).ToList(); diff --git a/src/Mix.Cms.Lib/ViewModels/Account/MixAccountHelper.cs b/src/Mix.Cms.Lib/ViewModels/Account/MixAccountHelper.cs index 5ced01699..4aba44459 100644 --- a/src/Mix.Cms.Lib/ViewModels/Account/MixAccountHelper.cs +++ b/src/Mix.Cms.Lib/ViewModels/Account/MixAccountHelper.cs @@ -15,20 +15,20 @@ namespace Mix.Cms.Lib.ViewModels.Account { public class MixAccountHelper { - public static async Task LoadUserInfoAsync(string userName, + public static async Task LoadUserInfoAsync(string userName, MixCmsContext _context = null, IDbContextTransaction _transaction = null) { var culture = MixService.GetConfig(MixAppSettingKeywords.DefaultCulture); UnitOfWorkHelper.InitTransaction(_context, _transaction, out MixCmsContext context, out IDbContextTransaction transaction, out bool isRoot); try { - var getInfo = await MixAttributeSetDatas.Helper.LoadAdditionalDataAsync(MixDatabaseParentType.User, userName, MixDatabaseNames.SYSTEM_USER_DATA + var getInfo = await MixDatabaseDatas.Helper.LoadAdditionalDataAsync(MixDatabaseParentType.User, userName, MixDatabaseNames.SYSTEM_USER_DATA , culture, context, transaction); return getInfo.Data; } catch (Exception ex) { - return UnitOfWorkHelper.HandleException(ex, isRoot, transaction).Data; + return UnitOfWorkHelper.HandleException(ex, isRoot, transaction).Data; } finally { diff --git a/src/Mix.Cms.Lib/ViewModels/Account/MixRegisterViewModel.cs b/src/Mix.Cms.Lib/ViewModels/Account/MixRegisterViewModel.cs index 7bc603968..b9edd1b86 100644 --- a/src/Mix.Cms.Lib/ViewModels/Account/MixRegisterViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/Account/MixRegisterViewModel.cs @@ -2,6 +2,7 @@ using Microsoft.EntityFrameworkCore.Storage; using Mix.Cms.Lib.Constants; using Mix.Cms.Lib.Enums; +using Mix.Cms.Lib.Helpers; using Mix.Cms.Lib.Models.Account; using Mix.Cms.Lib.Models.Cms; using Mix.Cms.Lib.Services; diff --git a/src/Mix.Cms.Lib/ViewModels/Account/MixUserViewModel.cs b/src/Mix.Cms.Lib/ViewModels/Account/MixUserViewModel.cs index 7c172bc57..7f9c51692 100644 --- a/src/Mix.Cms.Lib/ViewModels/Account/MixUserViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/Account/MixUserViewModel.cs @@ -16,7 +16,7 @@ public class MixUserViewModel public FileViewModel MediaFile { get; set; } = new FileViewModel(); [JsonProperty("userData")] - public MixAttributeSetDatas.AdditionalViewModel UserData { get; set; } + public MixDatabaseDatas.AdditionalViewModel UserData { get; set; } [JsonProperty("userRoles")] public List UserRoles { get; set; } diff --git a/src/Mix.Cms.Lib/ViewModels/Account/MixUsers/UpdateViewModel.cs b/src/Mix.Cms.Lib/ViewModels/Account/MixUsers/UpdateViewModel.cs index 1d64578d8..4fb1d0aff 100644 --- a/src/Mix.Cms.Lib/ViewModels/Account/MixUsers/UpdateViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/Account/MixUsers/UpdateViewModel.cs @@ -1,6 +1,7 @@ using Microsoft.EntityFrameworkCore.Storage; using Mix.Cms.Lib.Constants; using Mix.Cms.Lib.Enums; +using Mix.Cms.Lib.Helpers; using Mix.Cms.Lib.Models.Cms; using Mix.Cms.Lib.Services; using Mix.Domain.Data.ViewModels; diff --git a/src/Mix.Cms.Lib/ViewModels/Account/UserInfoViewModel.cs b/src/Mix.Cms.Lib/ViewModels/Account/UserInfoViewModel.cs index da83e4dc3..031809dee 100644 --- a/src/Mix.Cms.Lib/ViewModels/Account/UserInfoViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/Account/UserInfoViewModel.cs @@ -1,66 +1,52 @@ using Microsoft.EntityFrameworkCore.Storage; using Mix.Cms.Lib.Constants; -using Mix.Cms.Lib.Enums; -using Mix.Cms.Lib.Models.Cms; +using Mix.Cms.Lib.Helpers; +using Mix.Cms.Lib.Models.Account; using Mix.Cms.Lib.Services; using Mix.Domain.Data.ViewModels; using Mix.Identity.Models.AccountViewModels; using Mix.Services; using Newtonsoft.Json; -using Newtonsoft.Json.Converters; using System; using System.Collections.Generic; namespace Mix.Cms.Lib.ViewModels.Account { public class UserInfoViewModel - : ViewModelBase + : ViewModelBase { #region Properties - //[JsonProperty("id")] - #region Models - [JsonProperty("id")] public string Id { get; set; } - - [JsonProperty("username")] - public string Username { get; set; } - - [JsonProperty("email")] + public int AccessFailedCount { get; set; } + public string Avatar { get; set; } + public string ConcurrencyStamp { get; set; } + public int CountryId { get; set; } + public string Culture { get; set; } + public DateTime? Dob { get; set; } public string Email { get; set; } - - [JsonProperty("firstName")] + public ulong EmailConfirmed { get; set; } public string FirstName { get; set; } - - [JsonProperty("middleName")] - public string MiddleName { get; set; } - - [JsonProperty("lastName")] + public string Gender { get; set; } + public ulong IsActived { get; set; } + public DateTime JoinDate { get; set; } + public DateTime LastModified { get; set; } public string LastName { get; set; } - - [JsonProperty("avatar")] - public string Avatar { get; set; } - - [JsonProperty("address")] - public string Address { get; set; } - - [JsonProperty("phoneNumber")] + public ulong LockoutEnabled { get; set; } + public DateTime? LockoutEnd { get; set; } + public string ModifiedBy { get; set; } + public string NickName { get; set; } + public string NormalizedEmail { get; set; } + public string NormalizedUserName { get; set; } + public string PasswordHash { get; set; } public string PhoneNumber { get; set; } - - [JsonProperty("createdDateTime")] - public DateTime CreatedDateTime { get; set; } - - [JsonProperty("createdBy")] - public string CreatedBy { get; set; } - - [JsonProperty("priority")] - public int Priority { get; set; } - - [JsonConverter(typeof(StringEnumConverter))] - [JsonProperty("status")] - public MixUserStatus Status { get; set; } + public ulong PhoneNumberConfirmed { get; set; } + public string RegisterType { get; set; } + public string SecurityStamp { get; set; } + public ulong TwoFactorEnabled { get; set; } + public string UserName { get; set; } #endregion Models @@ -70,7 +56,7 @@ public class UserInfoViewModel public string DetailsUrl { get; set; } [JsonProperty("userRoles")] - public List UserRoles { get; set; } = new List(); + public List UserRoles { get; set; } [JsonProperty("domain")] public string Domain { get { return MixService.GetConfig(MixAppSettingKeywords.Domain); } } @@ -111,7 +97,7 @@ public UserInfoViewModel() : base() { } - public UserInfoViewModel(MixCmsUser model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) + public UserInfoViewModel(AspNetUsers model, MixCmsAccountContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) { } @@ -120,7 +106,7 @@ public UserInfoViewModel(MixCmsUser model, MixCmsContext _context = null, IDbCon #region Overrides - public override MixCmsUser ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) + public override AspNetUsers ParseModel(MixCmsAccountContext _context = null, IDbContextTransaction _transaction = null) { if (MediaFile.FileStream != null) { @@ -138,8 +124,10 @@ public override MixCmsUser ParseModel(MixCmsContext _context = null, IDbContextT return base.ParseModel(_context, _transaction); } - public override void ExpandView(MixCmsContext _context = null, IDbContextTransaction _transaction = null) + public override void ExpandView(MixCmsAccountContext _context = null, IDbContextTransaction _transaction = null) { + UserRoles ??= UserRoleViewModel.Repository.GetModelListBy( + m => m.UserId == Id, _context, _transaction).Data; ResetPassword = new ResetPasswordViewModel(); } diff --git a/src/Mix.Cms.Lib/ViewModels/CommonViewModels.cs b/src/Mix.Cms.Lib/ViewModels/CommonViewModels.cs index e973a53bb..899bb3139 100644 --- a/src/Mix.Cms.Lib/ViewModels/CommonViewModels.cs +++ b/src/Mix.Cms.Lib/ViewModels/CommonViewModels.cs @@ -51,8 +51,8 @@ public class GlobalSettingsViewModel [JsonProperty("moduleTypes")] public List ModuleTypes { get; set; } - [JsonProperty("attributeSetTypes")] - public List AttributeSetTypes { get; set; } + [JsonProperty("mixDatabaseTypes")] + public List MixDatabaseTypes { get; set; } [JsonProperty("dataTypes")] public List DataTypes { get; set; } diff --git a/src/Mix.Cms.Lib/ViewModels/MixCultures/UpdateViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixCultures/UpdateViewModel.cs index a2fbf2f2d..e4c95702d 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixCultures/UpdateViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixCultures/UpdateViewModel.cs @@ -216,7 +216,7 @@ public override async Task> SaveSubModelsAsync(MixCultu // Clone Attribute Value from Default culture if (result.IsSucceed) { - var cloneResult = await CloneAttributeValuesAsync(parent, _context, _transaction); + var cloneResult = await CloneMixDatabaseDataValuesAsync(parent, _context, _transaction); ViewModelHelper.HandleResult(cloneResult, ref result); } // Clone Attribute Data from Default culture @@ -240,14 +240,14 @@ public async Task> CloneRelatedAttributeDatasAsync(MixC var result = new RepositoryResponse() { IsSucceed = true }; try { - var getPages = await DefaultModelRepository.Instance.GetModelListByAsync( + var getPages = await DefaultModelRepository.Instance.GetModelListByAsync( c => c.Specificulture == MixService.GetConfig(MixAppSettingKeywords.DefaultCulture), context, transaction); if (getPages.IsSucceed) { foreach (var p in getPages.Data) { - if (!context.MixRelatedAttributeData.Any(m => m.Id == p.Id && m.Specificulture == Specificulture)) + if (!context.MixDatabaseDataAssociation.Any(m => m.Id == p.Id && m.Specificulture == Specificulture)) { p.Specificulture = Specificulture; p.CreatedDateTime = DateTime.UtcNow; @@ -271,14 +271,14 @@ public async Task> CloneAttributeDatasAsync(MixCulture var result = new RepositoryResponse() { IsSucceed = true }; try { - var getPages = await DefaultModelRepository.Instance.GetModelListByAsync( + var getPages = await DefaultModelRepository.Instance.GetModelListByAsync( c => c.Specificulture == MixService.GetConfig(MixAppSettingKeywords.DefaultCulture), context, transaction); if (getPages.IsSucceed) { foreach (var p in getPages.Data) { - if (!context.MixAttributeSetData.Any(m => m.Id == p.Id && m.Specificulture == Specificulture)) + if (!context.MixDatabaseData.Any(m => m.Id == p.Id && m.Specificulture == Specificulture)) { p.Specificulture = Specificulture; p.CreatedDateTime = DateTime.UtcNow; @@ -297,19 +297,19 @@ public async Task> CloneAttributeDatasAsync(MixCulture return result; } - public async Task> CloneAttributeValuesAsync(MixCulture parent, MixCmsContext context, IDbContextTransaction transaction) + public async Task> CloneMixDatabaseDataValuesAsync(MixCulture parent, MixCmsContext context, IDbContextTransaction transaction) { var result = new RepositoryResponse() { IsSucceed = true }; try { - var getPages = await DefaultModelRepository.Instance.GetModelListByAsync( + var getPages = await DefaultModelRepository.Instance.GetModelListByAsync( c => c.Specificulture == MixService.GetConfig(MixAppSettingKeywords.DefaultCulture), context, transaction); if (getPages.IsSucceed) { foreach (var p in getPages.Data) { - if (!context.MixAttributeSetValue.Any(m => m.DataId == p.DataId && m.Specificulture == Specificulture)) + if (!context.MixDatabaseDataValue.Any(m => m.DataId == p.DataId && m.Specificulture == Specificulture)) { p.Id = Guid.NewGuid().ToString(); if (!string.IsNullOrEmpty(p.StringValue) && p.StringValue.Contains($"/{p.Specificulture}")) @@ -459,7 +459,7 @@ public async Task> ClonePostPostsAsync(MixCulture paren var result = new RepositoryResponse() { IsSucceed = true }; try { - var getPages = await DefaultModelRepository.Instance.GetModelListByAsync( + var getPages = await DefaultModelRepository.Instance.GetModelListByAsync( c => c.Specificulture == MixService.GetConfig(MixAppSettingKeywords.DefaultCulture), context, transaction); if (getPages.IsSucceed) @@ -772,13 +772,13 @@ public override async Task> RemoveRelatedModelsAsync(Up var aliases = await _context.MixUrlAlias.Where(c => c.Specificulture == Specificulture).ToListAsync(); aliases.ForEach(c => _context.Entry(c).State = Microsoft.EntityFrameworkCore.EntityState.Deleted); - var values = await _context.MixAttributeSetValue.Where(c => c.Specificulture == Specificulture).ToListAsync(); + var values = await _context.MixDatabaseDataValue.Where(c => c.Specificulture == Specificulture).ToListAsync(); values.ForEach(c => _context.Entry(c).State = Microsoft.EntityFrameworkCore.EntityState.Deleted); - var datas = await _context.MixAttributeSetData.Where(c => c.Specificulture == Specificulture).ToListAsync(); + var datas = await _context.MixDatabaseData.Where(c => c.Specificulture == Specificulture).ToListAsync(); datas.ForEach(c => _context.Entry(c).State = Microsoft.EntityFrameworkCore.EntityState.Deleted); - var relateddatas = await _context.MixRelatedAttributeData.Where(c => c.Specificulture == Specificulture).ToListAsync(); + var relateddatas = await _context.MixDatabaseDataAssociation.Where(c => c.Specificulture == Specificulture).ToListAsync(); relateddatas.ForEach(c => _context.Entry(c).State = Microsoft.EntityFrameworkCore.EntityState.Deleted); result.IsSucceed = (await _context.SaveChangesAsync() > 0); diff --git a/src/Mix.Cms.Lib/ViewModels/MixAttributeFields/DeleteViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixDatabaseColumns/DeleteViewModel.cs similarity index 78% rename from src/Mix.Cms.Lib/ViewModels/MixAttributeFields/DeleteViewModel.cs rename to src/Mix.Cms.Lib/ViewModels/MixDatabaseColumns/DeleteViewModel.cs index 6ea512081..b358e47b0 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixAttributeFields/DeleteViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixDatabaseColumns/DeleteViewModel.cs @@ -4,15 +4,16 @@ using Mix.Cms.Lib.Services; using Mix.Domain.Core.ViewModels; using Mix.Domain.Data.ViewModels; +using Mix.Services; using Newtonsoft.Json; using System; using System.Linq; using System.Threading.Tasks; -namespace Mix.Cms.Lib.ViewModels.MixAttributeFields +namespace Mix.Cms.Lib.ViewModels.MixDatabaseColumns { public class DeleteViewModel - : ViewModelBase + : ViewModelBase { #region Properties @@ -22,10 +23,10 @@ public class DeleteViewModel public int Id { get; set; } [JsonProperty("attributesetId")] - public int AttributeSetId { get; set; } + public int MixDatabaseId { get; set; } - [JsonProperty("attributeSetName")] - public string AttributeSetName { get; set; } + [JsonProperty("mixDatabaseName")] + public string MixDatabaseName { get; set; } [JsonProperty("referenceId")] public int? ReferenceId { get; set; } @@ -82,7 +83,7 @@ public DeleteViewModel() : base() { } - public DeleteViewModel(MixAttributeField model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) + public DeleteViewModel(MixDatabaseColumn model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) { } @@ -93,15 +94,15 @@ public DeleteViewModel(MixAttributeField model, MixCmsContext _context = null, I public override async Task> RemoveRelatedModelsAsync(DeleteViewModel view, MixCmsContext _context = null, IDbContextTransaction _transaction = null) { var result = new RepositoryResponse() { IsSucceed = true }; - var removeDataIds = _context.MixAttributeSetValue.Where(m => m.AttributeFieldId == Id).Select(m => m.DataId).ToList(); - var removeFieldValues = await MixAttributeSetValues.DeleteViewModel.Repository.RemoveListModelAsync(false, f => f.AttributeFieldId == Id + var removeDataIds = _context.MixDatabaseDataValue.Where(m => m.MixDatabaseColumnId == Id).Select(m => m.DataId).ToList(); + var removeFieldValues = await MixDatabaseDataValues.DeleteViewModel.Repository.RemoveListModelAsync(false, f => f.MixDatabaseColumnId == Id , _context, _transaction); ViewModelHelper.HandleResult(removeFieldValues, ref result); if (result.IsSucceed) { foreach (var item in removeDataIds) { - _ = MixService.RemoveCacheAsync(typeof(MixAttributeSetData), item); + _ = MixCacheService.RemoveCacheAsync(typeof(MixDatabaseData), item); } } return result; diff --git a/src/Mix.Cms.Lib/ViewModels/MixAttributeFields/FieldConfigurations.cs b/src/Mix.Cms.Lib/ViewModels/MixDatabaseColumns/FieldConfigurations.cs similarity index 93% rename from src/Mix.Cms.Lib/ViewModels/MixAttributeFields/FieldConfigurations.cs rename to src/Mix.Cms.Lib/ViewModels/MixDatabaseColumns/FieldConfigurations.cs index f7e34fee3..28c24efaf 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixAttributeFields/FieldConfigurations.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixDatabaseColumns/FieldConfigurations.cs @@ -2,7 +2,7 @@ using Newtonsoft.Json.Linq; using System.Linq; -namespace Mix.Cms.Lib.ViewModels.MixAttributeFields +namespace Mix.Cms.Lib.ViewModels.MixDatabaseColumns { public class FieldConfigurations { diff --git a/src/Mix.Cms.Lib/ViewModels/MixAttributeFields/ReadViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixDatabaseColumns/ReadViewModel.cs similarity index 86% rename from src/Mix.Cms.Lib/ViewModels/MixAttributeFields/ReadViewModel.cs rename to src/Mix.Cms.Lib/ViewModels/MixDatabaseColumns/ReadViewModel.cs index fc4fecede..88807b270 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixAttributeFields/ReadViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixDatabaseColumns/ReadViewModel.cs @@ -5,10 +5,10 @@ using Newtonsoft.Json; using System; -namespace Mix.Cms.Lib.ViewModels.MixAttributeFields +namespace Mix.Cms.Lib.ViewModels.MixDatabaseColumns { public class ReadViewModel - : ViewModelBase + : ViewModelBase { #region Properties @@ -18,10 +18,10 @@ public class ReadViewModel public int Id { get; set; } [JsonProperty("attributesetId")] - public int AttributeSetId { get; set; } + public int MixDatabaseId { get; set; } - [JsonProperty("attributeSetName")] - public string AttributeSetName { get; set; } + [JsonProperty("mixDatabaseName")] + public string MixDatabaseName { get; set; } [JsonProperty("referenceId")] public int? ReferenceId { get; set; } @@ -84,7 +84,7 @@ public ReadViewModel() : base() { } - public ReadViewModel(MixAttributeField model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) + public ReadViewModel(MixDatabaseColumn model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) { } diff --git a/src/Mix.Cms.Lib/ViewModels/MixAttributeFields/UpdateViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixDatabaseColumns/UpdateViewModel.cs similarity index 77% rename from src/Mix.Cms.Lib/ViewModels/MixAttributeFields/UpdateViewModel.cs rename to src/Mix.Cms.Lib/ViewModels/MixDatabaseColumns/UpdateViewModel.cs index 1a0ceebbf..d938487eb 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixAttributeFields/UpdateViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixDatabaseColumns/UpdateViewModel.cs @@ -2,15 +2,17 @@ using Mix.Cms.Lib.Enums; using Mix.Cms.Lib.Models.Cms; using Mix.Domain.Data.ViewModels; +using Mix.Services; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Linq; +using System.Threading.Tasks; -namespace Mix.Cms.Lib.ViewModels.MixAttributeFields +namespace Mix.Cms.Lib.ViewModels.MixDatabaseColumns { public class UpdateViewModel - : ViewModelBase + : ViewModelBase { #region Properties @@ -22,11 +24,11 @@ public class UpdateViewModel [JsonProperty("specificulture")] public string Specificulture { get; set; } - [JsonProperty("attributeSetId")] - public int AttributeSetId { get; set; } + [JsonProperty("mixDatabaseId")] + public int MixDatabaseId { get; set; } - [JsonProperty("attributeSetName")] - public string AttributeSetName { get; set; } + [JsonProperty("mixDatabaseName")] + public string MixDatabaseName { get; set; } [JsonProperty("configurations")] public string Configurations { get; set; } @@ -108,7 +110,7 @@ public UpdateViewModel() : base() { } - public UpdateViewModel(MixAttributeField model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) + public UpdateViewModel(MixDatabaseColumn model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) { } @@ -121,11 +123,11 @@ public override void Validate(MixCmsContext _context, IDbContextTransaction _tra base.Validate(_context, _transaction); if (IsValid) { - if (AttributeSetName != "sys_additional_field") + if (MixDatabaseName != "sys_additional_field") { // Check if there is field name in the same attribute set - IsValid = !_context.MixAttributeField.Any( - f => f.Id != Id && f.Name == Name && f.AttributeSetId == AttributeSetId); + IsValid = !_context.MixDatabaseColumn.Any( + f => f.Id != Id && f.Name == Name && f.MixDatabaseId == MixDatabaseId); if (!IsValid) { Errors.Add($"Field {Name} Existed"); @@ -134,7 +136,7 @@ public override void Validate(MixCmsContext _context, IDbContextTransaction _tra } } - public override MixAttributeField ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) + public override MixDatabaseColumn ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { if (Id == 0) { @@ -157,6 +159,15 @@ public override void ExpandView(MixCmsContext _context = null, IDbContextTransac : JObject.Parse(Configurations).ToObject(); } + public override Task RemoveCache(MixDatabaseColumn model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) + { + using (_context ??= new MixCmsContext()) + { + var relatedDatabaseId = _context.MixDatabase.Where(m => m.Id == MixDatabaseId).Select(m => m.Id); + MixCacheService.RemoveCacheAsync(typeof(MixDatabase), relatedDatabaseId.ToString()); + return base.RemoveCache(model, _context, _transaction); + } + } #endregion Overrides } } \ No newline at end of file diff --git a/src/Mix.Cms.Lib/ViewModels/MixRelatedAttributeDatas/DeleteViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDataAssociations/DeleteViewModel.cs similarity index 72% rename from src/Mix.Cms.Lib/ViewModels/MixRelatedAttributeDatas/DeleteViewModel.cs rename to src/Mix.Cms.Lib/ViewModels/MixDatabaseDataAssociations/DeleteViewModel.cs index 45d84e713..8c59e52ff 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixRelatedAttributeDatas/DeleteViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDataAssociations/DeleteViewModel.cs @@ -4,10 +4,10 @@ using Mix.Domain.Data.ViewModels; using System; -namespace Mix.Cms.Lib.ViewModels.MixRelatedAttributeDatas +namespace Mix.Cms.Lib.ViewModels.MixDatabaseDataAssociations { public class DeleteViewModel - : ViewModelBase + : ViewModelBase { #region Properties @@ -18,7 +18,7 @@ public class DeleteViewModel public string DataId { get; set; } public string ParentId { get; set; } public MixDatabaseParentType ParentType { get; set; } - public int AttributeSetId { get; set; } + public int MixDatabaseId { get; set; } public DateTime CreatedDateTime { get; set; } public string Status { get; set; } public string Description { get; set; } @@ -33,7 +33,7 @@ public DeleteViewModel() : base() { } - public DeleteViewModel(MixRelatedAttributeData model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) + public DeleteViewModel(MixDatabaseDataAssociation model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) { } @@ -41,7 +41,7 @@ public DeleteViewModel(MixRelatedAttributeData model, MixCmsContext _context = n #region Overrides - public override MixRelatedAttributeData ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) + public override MixDatabaseDataAssociation ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { if (CreatedDateTime == default(DateTime)) { diff --git a/src/Mix.Cms.Lib/ViewModels/MixRelatedAttributeDatas/FormViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDataAssociations/FormViewModel.cs similarity index 83% rename from src/Mix.Cms.Lib/ViewModels/MixRelatedAttributeDatas/FormViewModel.cs rename to src/Mix.Cms.Lib/ViewModels/MixDatabaseDataAssociations/FormViewModel.cs index 27875f692..47d1efd65 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixRelatedAttributeDatas/FormViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDataAssociations/FormViewModel.cs @@ -12,12 +12,12 @@ using System.Linq; using System.Threading.Tasks; -namespace Mix.Cms.Lib.ViewModels.MixRelatedAttributeDatas +namespace Mix.Cms.Lib.ViewModels.MixDatabaseDataAssociations { public class FormViewModel - : ViewModelBase + : ViewModelBase { - public FormViewModel(MixRelatedAttributeData model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) + public FormViewModel(MixDatabaseDataAssociation model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) { } @@ -54,11 +54,11 @@ public FormViewModel() : base() [JsonProperty("parentType")] public MixDatabaseParentType ParentType { get; set; } - [JsonProperty("attributeSetId")] - public int AttributeSetId { get; set; } + [JsonProperty("mixDatabaseId")] + public int MixDatabaseId { get; set; } - [JsonProperty("attributeSetName")] - public string AttributeSetName { get; set; } + [JsonProperty("mixDatabaseName")] + public string MixDatabaseName { get; set; } [JsonProperty("description")] public string Description { get; set; } @@ -85,13 +85,13 @@ public FormViewModel() : base() #region Views [JsonProperty("attributeData")] - public MixAttributeSetDatas.FormViewModel AttributeData { get; set; } + public MixDatabaseDatas.FormViewModel AttributeData { get; set; } #endregion Views #region overrides - public override MixRelatedAttributeData ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) + public override MixDatabaseDataAssociation ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { if (string.IsNullOrEmpty(Id)) { @@ -105,14 +105,14 @@ public override MixRelatedAttributeData ParseModel(MixCmsContext _context = null public override void ExpandView(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { - var getData = MixAttributeSetDatas.FormViewModel.Repository.GetSingleModel(p => p.Id == DataId && p.Specificulture == Specificulture + var getData = MixDatabaseDatas.FormViewModel.Repository.GetSingleModel(p => p.Id == DataId && p.Specificulture == Specificulture , _context: _context, _transaction: _transaction ); if (getData.IsSucceed) { AttributeData = getData.Data; } - AttributeSetName = _context.MixAttributeSet.FirstOrDefault(m => m.Id == AttributeSetId)?.Name; + MixDatabaseName = _context.MixDatabase.FirstOrDefault(m => m.Id == MixDatabaseId)?.Name; } public override async Task> SaveModelAsync(bool isSaveSubModels = false, MixCmsContext _context = null, IDbContextTransaction _transaction = null) diff --git a/src/Mix.Cms.Lib/ViewModels/MixRelatedAttributeDatas/Helper.cs b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDataAssociations/Helper.cs similarity index 69% rename from src/Mix.Cms.Lib/ViewModels/MixRelatedAttributeDatas/Helper.cs rename to src/Mix.Cms.Lib/ViewModels/MixDatabaseDataAssociations/Helper.cs index 526d902c9..17dacaf55 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixRelatedAttributeDatas/Helper.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDataAssociations/Helper.cs @@ -5,15 +5,15 @@ using System.Collections.Generic; using System.Threading.Tasks; -namespace Mix.Cms.Lib.ViewModels.MixRelatedAttributeDatas +namespace Mix.Cms.Lib.ViewModels.MixDatabaseDataAssociations { public class Helper { - public static async Task>> RemoveRelatedDataAsync( + public static async Task>> RemoveRelatedDataAsync( string parentId, MixDatabaseParentType parentType, string specificulture , MixCmsContext context, IDbContextTransaction transaction) { - var result = await MixRelatedAttributeDatas.DeleteViewModel.Repository.RemoveListModelAsync( + var result = await MixDatabaseDataAssociations.DeleteViewModel.Repository.RemoveListModelAsync( true , a => a.ParentId == parentId && a.ParentType == parentType && a.Specificulture == specificulture diff --git a/src/Mix.Cms.Lib/ViewModels/MixRelatedAttributeDatas/ImportViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDataAssociations/ImportViewModel.cs similarity index 80% rename from src/Mix.Cms.Lib/ViewModels/MixRelatedAttributeDatas/ImportViewModel.cs rename to src/Mix.Cms.Lib/ViewModels/MixDatabaseDataAssociations/ImportViewModel.cs index 4b2ed9495..68fe6e196 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixRelatedAttributeDatas/ImportViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDataAssociations/ImportViewModel.cs @@ -6,10 +6,10 @@ using System; using System.Collections.Generic; -namespace Mix.Cms.Lib.ViewModels.MixRelatedAttributeDatas +namespace Mix.Cms.Lib.ViewModels.MixDatabaseDataAssociations { public class ImportViewModel - : ViewModelBase + : ViewModelBase { #region Properties @@ -41,11 +41,11 @@ public class ImportViewModel [JsonProperty("parentType")] public MixDatabaseParentType ParentType { get; set; } - [JsonProperty("attributeSetId")] - public int AttributeSetId { get; set; } + [JsonProperty("mixDatabaseId")] + public int MixDatabaseId { get; set; } - [JsonProperty("attributeSetName")] - public string AttributeSetName { get; set; } + [JsonProperty("mixDatabaseName")] + public string MixDatabaseName { get; set; } [JsonProperty("description")] public string Description { get; set; } @@ -84,7 +84,7 @@ public ImportViewModel() : base() { } - public ImportViewModel(MixRelatedAttributeData model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) + public ImportViewModel(MixDatabaseDataAssociation model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) { } @@ -94,7 +94,7 @@ public ImportViewModel(MixRelatedAttributeData model, MixCmsContext _context = n public override void ExpandView(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { - //var getPost = MixAttributeSetDatas.ReadViewModel.Repository.GetSingleModel( + //var getPost = MixDatabaseDatas.ReadViewModel.Repository.GetSingleModel( // m => m.Id == Id && m.Specificulture == Specificulture // , _context: _context, _transaction: _transaction); //if (getPost.IsSucceed) diff --git a/src/Mix.Cms.Lib/ViewModels/MixRelatedAttributeDatas/NavigationViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDataAssociations/NavigationViewModel.cs similarity index 76% rename from src/Mix.Cms.Lib/ViewModels/MixRelatedAttributeDatas/NavigationViewModel.cs rename to src/Mix.Cms.Lib/ViewModels/MixDatabaseDataAssociations/NavigationViewModel.cs index 9e5cb55f0..94257c882 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixRelatedAttributeDatas/NavigationViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDataAssociations/NavigationViewModel.cs @@ -6,10 +6,10 @@ using System; using System.Collections.Generic; -namespace Mix.Cms.Lib.ViewModels.MixRelatedAttributeDatas +namespace Mix.Cms.Lib.ViewModels.MixDatabaseDataAssociations { public class NavigationViewModel - : ViewModelBase + : ViewModelBase { #region Model @@ -39,11 +39,11 @@ public class NavigationViewModel [JsonProperty("parentType")] public MixDatabaseParentType ParentType { get; set; } - [JsonProperty("attributeSetId")] - public int AttributeSetId { get; set; } + [JsonProperty("mixDatabaseId")] + public int MixDatabaseId { get; set; } - [JsonProperty("attributeSetName")] - public string AttributeSetName { get; set; } + [JsonProperty("mixDatabaseName")] + public string MixDatabaseName { get; set; } [JsonProperty("description")] public string Description { get; set; } @@ -73,11 +73,11 @@ public class NavigationViewModel public string ParentName { get; set; } [JsonProperty("data")] - public MixAttributeSetDatas.NavigationViewModel Data { get; set; } + public MixDatabaseDatas.NavigationViewModel Data { get; set; } #endregion Views - public NavigationViewModel(MixRelatedAttributeData model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) + public NavigationViewModel(MixDatabaseDataAssociation model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) { } @@ -90,7 +90,7 @@ public NavigationViewModel() : base() public override void ExpandView(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { - var getData = MixAttributeSetDatas.NavigationViewModel.Repository.GetSingleModel(p => p.Id == DataId && p.Specificulture == Specificulture + var getData = MixDatabaseDatas.NavigationViewModel.Repository.GetSingleModel(p => p.Id == DataId && p.Specificulture == Specificulture , _context: _context, _transaction: _transaction ); if (getData.IsSucceed) diff --git a/src/Mix.Cms.Lib/ViewModels/MixRelatedAttributeDatas/ReadMvcViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDataAssociations/ReadMvcViewModel.cs similarity index 75% rename from src/Mix.Cms.Lib/ViewModels/MixRelatedAttributeDatas/ReadMvcViewModel.cs rename to src/Mix.Cms.Lib/ViewModels/MixDatabaseDataAssociations/ReadMvcViewModel.cs index 6fa790a53..0c648fa62 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixRelatedAttributeDatas/ReadMvcViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDataAssociations/ReadMvcViewModel.cs @@ -6,10 +6,10 @@ using System; using System.Collections.Generic; -namespace Mix.Cms.Lib.ViewModels.MixRelatedAttributeDatas +namespace Mix.Cms.Lib.ViewModels.MixDatabaseDataAssociations { public class ReadMvcViewModel - : ViewModelBase + : ViewModelBase { #region Model @@ -39,11 +39,11 @@ public class ReadMvcViewModel [JsonProperty("parentType")] public MixDatabaseParentType ParentType { get; set; } - [JsonProperty("attributeSetId")] - public int AttributeSetId { get; set; } + [JsonProperty("mixDatabaseId")] + public int MixDatabaseId { get; set; } - [JsonProperty("attributeSetName")] - public string AttributeSetName { get; set; } + [JsonProperty("mixDatabaseName")] + public string MixDatabaseName { get; set; } [JsonProperty("description")] public string Description { get; set; } @@ -70,11 +70,11 @@ public class ReadMvcViewModel #region Views [JsonProperty("data")] - public MixAttributeSetDatas.ReadMvcViewModel Data { get; set; } + public MixDatabaseDatas.ReadMvcViewModel Data { get; set; } #endregion Views - public ReadMvcViewModel(MixRelatedAttributeData model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) + public ReadMvcViewModel(MixDatabaseDataAssociation model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) { } @@ -89,7 +89,7 @@ public override void ExpandView(MixCmsContext _context = null, IDbContextTransac { // Should not get Data from cache (if Data == null) because of multilevel data, // already handle cached data in attribute set data - var getData = MixAttributeSetDatas.ReadMvcViewModel.Repository.GetFirstModel(p => p.Id == DataId && p.Specificulture == Specificulture + var getData = MixDatabaseDatas.ReadMvcViewModel.Repository.GetFirstModel(p => p.Id == DataId && p.Specificulture == Specificulture , _context: _context, _transaction: _transaction ); if (getData.IsSucceed) @@ -98,7 +98,7 @@ public override void ExpandView(MixCmsContext _context = null, IDbContextTransac } else { - Data = new MixAttributeSetDatas.ReadMvcViewModel(); + Data = new MixDatabaseDatas.ReadMvcViewModel(); } } diff --git a/src/Mix.Cms.Lib/ViewModels/MixRelatedAttributeDatas/ReadViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDataAssociations/ReadViewModel.cs similarity index 80% rename from src/Mix.Cms.Lib/ViewModels/MixRelatedAttributeDatas/ReadViewModel.cs rename to src/Mix.Cms.Lib/ViewModels/MixDatabaseDataAssociations/ReadViewModel.cs index 29964d0f5..15da483ca 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixRelatedAttributeDatas/ReadViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDataAssociations/ReadViewModel.cs @@ -6,10 +6,10 @@ using System; using System.Collections.Generic; -namespace Mix.Cms.Lib.ViewModels.MixRelatedAttributeDatas +namespace Mix.Cms.Lib.ViewModels.MixDatabaseDataAssociations { public class ReadViewModel - : ViewModelBase + : ViewModelBase { #region Properties @@ -41,11 +41,11 @@ public class ReadViewModel [JsonProperty("parentType")] public MixDatabaseParentType ParentType { get; set; } - [JsonProperty("attributeSetId")] - public int AttributeSetId { get; set; } + [JsonProperty("mixDatabaseId")] + public int MixDatabaseId { get; set; } - [JsonProperty("attributeSetName")] - public string AttributeSetName { get; set; } + [JsonProperty("mixDatabaseName")] + public string MixDatabaseName { get; set; } [JsonProperty("description")] public string Description { get; set; } @@ -84,7 +84,7 @@ public ReadViewModel() : base() { } - public ReadViewModel(MixRelatedAttributeData model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) + public ReadViewModel(MixDatabaseDataAssociation model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) { } @@ -94,7 +94,7 @@ public ReadViewModel(MixRelatedAttributeData model, MixCmsContext _context = nul public override void ExpandView(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { - //var getPost = MixAttributeSetDatas.ReadViewModel.Repository.GetSingleModel( + //var getPost = MixDatabaseDatas.ReadViewModel.Repository.GetSingleModel( // m => m.Id == Id && m.Specificulture == Specificulture // , _context: _context, _transaction: _transaction); //if (getPost.IsSucceed) diff --git a/src/Mix.Cms.Lib/ViewModels/MixRelatedAttributeDatas/UpdateViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDataAssociations/UpdateViewModel.cs similarity index 79% rename from src/Mix.Cms.Lib/ViewModels/MixRelatedAttributeDatas/UpdateViewModel.cs rename to src/Mix.Cms.Lib/ViewModels/MixDatabaseDataAssociations/UpdateViewModel.cs index 4d24c75ee..2adf0ce50 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixRelatedAttributeDatas/UpdateViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDataAssociations/UpdateViewModel.cs @@ -9,12 +9,12 @@ using System.Collections.Generic; using System.Linq; -namespace Mix.Cms.Lib.ViewModels.MixRelatedAttributeDatas +namespace Mix.Cms.Lib.ViewModels.MixDatabaseDataAssociations { public class UpdateViewModel - : ViewModelBase + : ViewModelBase { - public UpdateViewModel(MixRelatedAttributeData model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) + public UpdateViewModel(MixDatabaseDataAssociation model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) { } @@ -51,11 +51,11 @@ public UpdateViewModel() : base() [JsonProperty("parentType")] public MixDatabaseParentType ParentType { get; set; } - [JsonProperty("attributeSetId")] - public int AttributeSetId { get; set; } + [JsonProperty("mixDatabaseId")] + public int MixDatabaseId { get; set; } - [JsonProperty("attributeSetName")] - public string AttributeSetName { get; set; } + [JsonProperty("mixDatabaseName")] + public string MixDatabaseName { get; set; } [JsonProperty("description")] public string Description { get; set; } @@ -86,13 +86,13 @@ public UpdateViewModel() : base() public string ParentName { get; set; } [JsonProperty("data")] - public MixAttributeSetDatas.UpdateViewModel Data { get; set; } + public MixDatabaseDatas.UpdateViewModel Data { get; set; } #endregion Views #region overrides - public override MixRelatedAttributeData ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) + public override MixDatabaseDataAssociation ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { if (string.IsNullOrEmpty(Id)) { @@ -110,14 +110,14 @@ public override void ExpandView(MixCmsContext _context = null, IDbContextTransac MixAppSettingKeywords.DefaultContentStatus)) : Status; } - var getData = MixAttributeSetDatas.UpdateViewModel.Repository.GetSingleModel(p => p.Id == DataId && p.Specificulture == Specificulture + var getData = MixDatabaseDatas.UpdateViewModel.Repository.GetSingleModel(p => p.Id == DataId && p.Specificulture == Specificulture , _context: _context, _transaction: _transaction ); if (getData.IsSucceed) { Data = getData.Data; } - AttributeSetName = _context.MixAttributeSet.FirstOrDefault(m => m.Id == AttributeSetId)?.Name; + MixDatabaseName = _context.MixDatabase.FirstOrDefault(m => m.Id == MixDatabaseId)?.Name; } //public override List GenerateRelatedData(MixCmsContext context, IDbContextTransaction transaction) diff --git a/src/Mix.Cms.Lib/ViewModels/MixAttributeSetDataValues/DeleteViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDataValues/DeleteViewModel.cs similarity index 81% rename from src/Mix.Cms.Lib/ViewModels/MixAttributeSetDataValues/DeleteViewModel.cs rename to src/Mix.Cms.Lib/ViewModels/MixDatabaseDataValues/DeleteViewModel.cs index 9c166295c..8963cea5c 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixAttributeSetDataValues/DeleteViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDataValues/DeleteViewModel.cs @@ -5,10 +5,10 @@ using System; using System.Collections.Generic; -namespace Mix.Cms.Lib.ViewModels.MixAttributeSetValues +namespace Mix.Cms.Lib.ViewModels.MixDatabaseDataValues { public class DeleteViewModel - : ViewModelBase + : ViewModelBase { #region Properties @@ -26,8 +26,8 @@ public class DeleteViewModel [JsonProperty("cultures")] public List Cultures { get; set; } - [JsonProperty("attributeFieldId")] - public int AttributeFieldId { get; set; } + [JsonProperty("mixDatabaseColumnId")] + public int MixDatabaseColumnId { get; set; } [JsonProperty("regex")] public string Regex { get; set; } @@ -38,11 +38,11 @@ public class DeleteViewModel [JsonProperty("status")] public string Status { get; set; } - [JsonProperty("attributeFieldName")] - public string AttributeFieldName { get; set; } + [JsonProperty("mixDatabaseColumnName")] + public string MixDatabaseColumnName { get; set; } - [JsonProperty("attributeSetName")] - public string AttributeSetName { get; set; } + [JsonProperty("mixDatabaseName")] + public string MixDatabaseName { get; set; } [JsonProperty("booleanValue")] public bool? BooleanValue { get; set; } @@ -85,7 +85,7 @@ public DeleteViewModel() : base() IsCache = false; } - public DeleteViewModel(MixAttributeSetValue model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) + public DeleteViewModel(MixDatabaseDataValue model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) { IsCache = false; } diff --git a/src/Mix.Cms.Lib/ViewModels/MixAttributeSetDataValues/Helper.cs b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDataValues/Helper.cs similarity index 76% rename from src/Mix.Cms.Lib/ViewModels/MixAttributeSetDataValues/Helper.cs rename to src/Mix.Cms.Lib/ViewModels/MixDatabaseDataValues/Helper.cs index 456557ed4..f6875c758 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixAttributeSetDataValues/Helper.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDataValues/Helper.cs @@ -12,21 +12,21 @@ using System.Linq.Expressions; using System.Threading.Tasks; -namespace Mix.Cms.Lib.ViewModels.MixAttributeSetDataValues +namespace Mix.Cms.Lib.ViewModels.MixDatabaseDataValues { public static class Helper { public static async Task>> FilterByOtherValueAsync( - string culture, string attributeSetName + string culture, string mixDatabaseName , string filterType, Dictionary queries , string responseName , MixCmsContext _context = null, IDbContextTransaction _transaction = null) - where TView : ViewModelBase + where TView : ViewModelBase { UnitOfWorkHelper.InitTransaction(_context, _transaction, out MixCmsContext context, out IDbContextTransaction transaction, out bool isRoot); try { - Expression> valPredicate = m => m.AttributeSetName == attributeSetName; + Expression> valPredicate = m => m.MixDatabaseName == mixDatabaseName; RepositoryResponse> result = new RepositoryResponse>() { IsSucceed = true, @@ -34,17 +34,17 @@ public static async Task>> FilterByOtherValueAsyn }; foreach (var fieldQuery in queries) { - Expression> pre = GetValueFilter(filterType, fieldQuery.Key, fieldQuery.Value); + Expression> pre = GetValueFilter(filterType, fieldQuery.Key, fieldQuery.Value); valPredicate = valPredicate.AndAlso(pre); } - var query = context.MixAttributeSetValue.Where(valPredicate).Select(m => m.DataId).Distinct(); + var query = context.MixDatabaseDataValue.Where(valPredicate).Select(m => m.DataId).Distinct(); var dataIds = query.ToList(); if (query != null) { - Expression> predicate = + Expression> predicate = m => dataIds.Any(id => m.DataId == id) && - m.AttributeFieldName == responseName; - result = await DefaultRepository.Instance.GetModelListByAsync( + m.MixDatabaseColumnName == responseName; + result = await DefaultRepository.Instance.GetModelListByAsync( predicate, context, transaction); } return result; @@ -63,16 +63,16 @@ public static async Task>> FilterByOtherValueAsyn } } - private static Expression> GetValueFilter(string filterType, string key, string value) + private static Expression> GetValueFilter(string filterType, string key, string value) { switch (filterType) { case "equal": - return m => m.AttributeFieldName == key + return m => m.MixDatabaseColumnName == key && (EF.Functions.Like(m.StringValue, $"{value}")); case "contain": - return m => m.AttributeFieldName == key && + return m => m.MixDatabaseColumnName == key && (EF.Functions.Like(m.StringValue, $"%{value}%")); } return null; diff --git a/src/Mix.Cms.Lib/ViewModels/MixAttributeSetDataValues/ImportViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDataValues/ImportViewModel.cs similarity index 79% rename from src/Mix.Cms.Lib/ViewModels/MixAttributeSetDataValues/ImportViewModel.cs rename to src/Mix.Cms.Lib/ViewModels/MixDatabaseDataValues/ImportViewModel.cs index 83462f731..0e871405f 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixAttributeSetDataValues/ImportViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDataValues/ImportViewModel.cs @@ -1,4 +1,5 @@ -using Microsoft.EntityFrameworkCore.Storage; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Storage; using Mix.Cms.Lib.Enums; using Mix.Cms.Lib.Models.Cms; using Mix.Domain.Data.ViewModels; @@ -7,10 +8,10 @@ using System.Linq; using System.Text.RegularExpressions; -namespace Mix.Cms.Lib.ViewModels.MixAttributeSetValues +namespace Mix.Cms.Lib.ViewModels.MixDatabaseDataValues { public class ImportViewModel - : ViewModelBase + : ViewModelBase { #region Properties @@ -22,8 +23,8 @@ public class ImportViewModel [JsonProperty("specificulture")] public string Specificulture { get; set; } - [JsonProperty("attributeFieldId")] - public int AttributeFieldId { get; set; } + [JsonProperty("mixDatabaseColumnId")] + public int MixDatabaseColumnId { get; set; } [JsonProperty("regex")] public string Regex { get; set; } @@ -31,11 +32,11 @@ public class ImportViewModel [JsonProperty("dataType")] public MixDataType DataType { get; set; } - [JsonProperty("attributeFieldName")] - public string AttributeFieldName { get; set; } + [JsonProperty("mixDatabaseColumnName")] + public string MixDatabaseColumnName { get; set; } - [JsonProperty("attributeSetName")] - public string AttributeSetName { get; set; } + [JsonProperty("mixDatabaseName")] + public string MixDatabaseName { get; set; } [JsonProperty("booleanValue")] public bool? BooleanValue { get; set; } @@ -87,7 +88,7 @@ public class ImportViewModel #region Views [JsonProperty("field")] - public Mix.Cms.Lib.ViewModels.MixAttributeFields.UpdateViewModel Field { get; set; } + public Mix.Cms.Lib.ViewModels.MixDatabaseColumns.UpdateViewModel Field { get; set; } #endregion Views @@ -100,7 +101,7 @@ public ImportViewModel() : base() //IsCache = false; } - public ImportViewModel(MixAttributeSetValue model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) + public ImportViewModel(MixDatabaseDataValue model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) { //IsCache = false; } @@ -109,7 +110,7 @@ public ImportViewModel(MixAttributeSetValue model, MixCmsContext _context = null #region Overrides - public override MixAttributeSetValue ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) + public override MixDatabaseDataValue ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { if (string.IsNullOrEmpty(Id)) { @@ -119,8 +120,8 @@ public override MixAttributeSetValue ParseModel(MixCmsContext _context = null, I Priority = Field?.Priority ?? Priority; DataType = Field?.DataType ?? DataType; - AttributeFieldName = Field?.Name; - AttributeFieldId = Field?.Id ?? 0; + MixDatabaseColumnName = Field?.Name; + MixDatabaseColumnId = Field?.Id ?? 0; if (string.IsNullOrEmpty(StringValue) && !string.IsNullOrEmpty(Field?.DefaultValue)) { ParseDefaultValue(Field.DefaultValue); @@ -161,22 +162,22 @@ private void ParseDefaultValue(string defaultValue) public override void ExpandView(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { - if (AttributeFieldId > 0) + if (MixDatabaseColumnId > 0) { - Field = Lib.ViewModels.MixAttributeFields.UpdateViewModel.Repository.GetSingleModel(f => f.Id == AttributeFieldId).Data; + Field = Lib.ViewModels.MixDatabaseColumns.UpdateViewModel.Repository.GetSingleModel(f => f.Id == MixDatabaseColumnId).Data; if (Field != null && DataType == MixDataType.Reference) { - AttributeSetName = _context.MixAttributeSet.FirstOrDefault(m => m.Id == Field.ReferenceId)?.Name; + MixDatabaseName = _context.MixDatabase.FirstOrDefault(m => m.Id == Field.ReferenceId)?.Name; } } else // additional field for page / post / module => id = 0 { - Field = new Lib.ViewModels.MixAttributeFields.UpdateViewModel() + Field = new Lib.ViewModels.MixDatabaseColumns.UpdateViewModel() { DataType = DataType, - Id = AttributeFieldId, - Title = AttributeFieldName, - Name = AttributeFieldName, + Id = MixDatabaseColumnId, + Title = MixDatabaseColumnName, + Name = MixDatabaseColumnName, Priority = Priority }; } @@ -193,8 +194,8 @@ public override void Validate(MixCmsContext _context, IDbContextTransaction _tra { if (Field.IsUnique) { - var exist = _context.MixAttributeSetValue.Any(d => d.Specificulture == Specificulture - && d.StringValue == StringValue && d.Id != Id && d.DataId != DataId); + var exist = _context.MixDatabaseDataValue.Any(d => d.Specificulture == Specificulture + && EF.Functions.Like(d.StringValue, StringValue) && d.Id != Id && d.DataId != DataId); if (exist) { IsValid = false; diff --git a/src/Mix.Cms.Lib/ViewModels/MixAttributeSetDataValues/NavigationViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDataValues/NavigationViewModel.cs similarity index 77% rename from src/Mix.Cms.Lib/ViewModels/MixAttributeSetDataValues/NavigationViewModel.cs rename to src/Mix.Cms.Lib/ViewModels/MixDatabaseDataValues/NavigationViewModel.cs index fa96d5fca..c75040a6d 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixAttributeSetDataValues/NavigationViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDataValues/NavigationViewModel.cs @@ -1,4 +1,5 @@ -using Microsoft.EntityFrameworkCore.Storage; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Storage; using Mix.Cms.Lib.Enums; using Mix.Cms.Lib.Models.Cms; using Mix.Domain.Data.ViewModels; @@ -7,10 +8,10 @@ using System.Collections.Generic; using System.Linq; -namespace Mix.Cms.Lib.ViewModels.MixAttributeSetValues +namespace Mix.Cms.Lib.ViewModels.MixDatabaseDataValues { public class NavigationViewModel - : ViewModelBase + : ViewModelBase { #region Properties @@ -22,8 +23,8 @@ public class NavigationViewModel [JsonProperty("specificulture")] public string Specificulture { get; set; } - [JsonProperty("attributeFieldId")] - public int AttributeFieldId { get; set; } + [JsonProperty("mixDatabaseColumnId")] + public int MixDatabaseColumnId { get; set; } [JsonProperty("regex")] public string Regex { get; set; } @@ -31,11 +32,11 @@ public class NavigationViewModel [JsonProperty("dataType")] public MixDataType DataType { get; set; } - [JsonProperty("attributeFieldName")] - public string AttributeFieldName { get; set; } + [JsonProperty("mixDatabaseColumnName")] + public string MixDatabaseColumnName { get; set; } - [JsonProperty("attributeSetName")] - public string AttributeSetName { get; set; } + [JsonProperty("mixDatabaseName")] + public string MixDatabaseName { get; set; } [JsonProperty("booleanValue")] public bool? BooleanValue { get; set; } @@ -87,10 +88,10 @@ public class NavigationViewModel #region Views [JsonProperty("field")] - public MixAttributeFields.ReadViewModel Field { get; set; } + public MixDatabaseColumns.ReadViewModel Field { get; set; } [JsonProperty("dataNavs")] - public List DataNavs { get; set; } + public List DataNavs { get; set; } #endregion Views @@ -104,7 +105,7 @@ public NavigationViewModel() : base() //Repository.IsCache = false; } - public NavigationViewModel(MixAttributeSetValue model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) + public NavigationViewModel(MixDatabaseDataValue model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) { //IsCache = false; //Repository.IsCache = false; @@ -118,14 +119,14 @@ public override void ExpandView(MixCmsContext _context = null, IDbContextTransac { if (DataType == MixDataType.Reference) { - DataNavs = MixRelatedAttributeDatas.NavigationViewModel.Repository.GetModelListBy(d => + DataNavs = MixDatabaseDataAssociations.NavigationViewModel.Repository.GetModelListBy(d => d.ParentId == DataId && d.ParentType == MixDatabaseParentType.Set && d.Specificulture == Specificulture , _context, _transaction).Data?.OrderBy(m => m.Priority).ToList(); } - Field = MixAttributeFields.ReadViewModel.Repository.GetSingleModel(f => f.Id == AttributeFieldId, _context, _transaction).Data; + Field = MixDatabaseColumns.ReadViewModel.Repository.GetSingleModel(f => f.Id == MixDatabaseColumnId, _context, _transaction).Data; } - public override MixAttributeSetValue ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) + public override MixDatabaseDataValue ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { if (string.IsNullOrEmpty(Id)) { @@ -145,8 +146,8 @@ public override void Validate(MixCmsContext _context, IDbContextTransaction _tra { if (Field.IsUnique) { - var exist = _context.MixAttributeSetValue.Any(d => d.Specificulture == Specificulture - && d.StringValue == StringValue && d.Id != Id && d.DataId != DataId); + var exist = _context.MixDatabaseDataValue.Any(d => d.Specificulture == Specificulture + && EF.Functions.Like(d.StringValue, StringValue) && d.Id != Id && d.DataId != DataId); if (exist) { IsValid = false; diff --git a/src/Mix.Cms.Lib/ViewModels/MixAttributeSetDataValues/ReadMvcViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDataValues/ReadMvcViewModel.cs similarity index 86% rename from src/Mix.Cms.Lib/ViewModels/MixAttributeSetDataValues/ReadMvcViewModel.cs rename to src/Mix.Cms.Lib/ViewModels/MixDatabaseDataValues/ReadMvcViewModel.cs index 55679dad0..b63907cde 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixAttributeSetDataValues/ReadMvcViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDataValues/ReadMvcViewModel.cs @@ -5,10 +5,10 @@ using Newtonsoft.Json; using System; -namespace Mix.Cms.Lib.ViewModels.MixAttributeSetValues +namespace Mix.Cms.Lib.ViewModels.MixDatabaseDataValues { public class ReadMvcViewModel - : ViewModelBase + : ViewModelBase { #region Properties @@ -20,8 +20,8 @@ public class ReadMvcViewModel [JsonProperty("specificulture")] public string Specificulture { get; set; } - [JsonProperty("attributeFieldId")] - public int AttributeFieldId { get; set; } + [JsonProperty("mixDatabaseColumnId")] + public int MixDatabaseColumnId { get; set; } [JsonProperty("regex")] public string Regex { get; set; } @@ -29,11 +29,11 @@ public class ReadMvcViewModel [JsonProperty("dataType")] public MixDataType DataType { get; set; } - [JsonProperty("attributeFieldName")] - public string AttributeFieldName { get; set; } + [JsonProperty("mixDatabaseColumnName")] + public string MixDatabaseColumnName { get; set; } - [JsonProperty("attributeSetName")] - public string AttributeSetName { get; set; } + [JsonProperty("mixDatabaseName")] + public string MixDatabaseName { get; set; } [JsonProperty("booleanValue")] public bool? BooleanValue { get; set; } @@ -98,7 +98,7 @@ public ReadMvcViewModel() : base() IsCache = false; } - public ReadMvcViewModel(MixAttributeSetValue model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) + public ReadMvcViewModel(MixDatabaseDataValue model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) { IsCache = false; } diff --git a/src/Mix.Cms.Lib/ViewModels/MixAttributeSetDataValues/ReadViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDataValues/ReadViewModel.cs similarity index 81% rename from src/Mix.Cms.Lib/ViewModels/MixAttributeSetDataValues/ReadViewModel.cs rename to src/Mix.Cms.Lib/ViewModels/MixDatabaseDataValues/ReadViewModel.cs index 278b6f255..a9ce55ba7 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixAttributeSetDataValues/ReadViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDataValues/ReadViewModel.cs @@ -5,10 +5,10 @@ using Newtonsoft.Json; using System; -namespace Mix.Cms.Lib.ViewModels.MixAttributeSetValues +namespace Mix.Cms.Lib.ViewModels.MixDatabaseDataValues { public class ReadViewModel - : ViewModelBase + : ViewModelBase { #region Properties @@ -20,8 +20,8 @@ public class ReadViewModel [JsonProperty("specificulture")] public string Specificulture { get; set; } - [JsonProperty("attributeFieldId")] - public int AttributeFieldId { get; set; } + [JsonProperty("mixDatabaseColumnId")] + public int MixDatabaseColumnId { get; set; } [JsonProperty("regex")] public string Regex { get; set; } @@ -29,11 +29,11 @@ public class ReadViewModel [JsonProperty("dataType")] public MixDataType DataType { get; set; } - [JsonProperty("attributeFieldName")] - public string AttributeFieldName { get; set; } + [JsonProperty("mixDatabaseColumnName")] + public string MixDatabaseColumnName { get; set; } - [JsonProperty("attributeSetName")] - public string AttributeSetName { get; set; } + [JsonProperty("mixDatabaseName")] + public string MixDatabaseName { get; set; } [JsonProperty("booleanValue")] public bool? BooleanValue { get; set; } @@ -85,7 +85,7 @@ public class ReadViewModel #region Views [JsonProperty("field")] - public MixAttributeFields.ReadViewModel Field { get; set; } + public MixDatabaseColumns.ReadViewModel Field { get; set; } #endregion Views @@ -98,7 +98,7 @@ public ReadViewModel() : base() IsCache = false; } - public ReadViewModel(MixAttributeSetValue model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) + public ReadViewModel(MixDatabaseDataValue model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) { IsCache = false; } diff --git a/src/Mix.Cms.Lib/ViewModels/MixAttributeSetDataValues/UpdateViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDataValues/UpdateViewModel.cs similarity index 82% rename from src/Mix.Cms.Lib/ViewModels/MixAttributeSetDataValues/UpdateViewModel.cs rename to src/Mix.Cms.Lib/ViewModels/MixDatabaseDataValues/UpdateViewModel.cs index b582fae81..6a7fc47cc 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixAttributeSetDataValues/UpdateViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDataValues/UpdateViewModel.cs @@ -10,10 +10,10 @@ using System.Linq; using System.Text.RegularExpressions; -namespace Mix.Cms.Lib.ViewModels.MixAttributeSetValues +namespace Mix.Cms.Lib.ViewModels.MixDatabaseDataValues { public class UpdateViewModel - : ViewModelBase + : ViewModelBase { #region Properties @@ -25,8 +25,8 @@ public class UpdateViewModel [JsonProperty("specificulture")] public string Specificulture { get; set; } - [JsonProperty("attributeFieldId")] - public int AttributeFieldId { get; set; } + [JsonProperty("mixDatabaseColumnId")] + public int MixDatabaseColumnId { get; set; } [JsonProperty("regex")] public string Regex { get; set; } @@ -34,11 +34,11 @@ public class UpdateViewModel [JsonProperty("dataType")] public MixDataType DataType { get; set; } - [JsonProperty("attributeFieldName")] - public string AttributeFieldName { get; set; } + [JsonProperty("mixDatabaseColumnName")] + public string MixDatabaseColumnName { get; set; } - [JsonProperty("attributeSetName")] - public string AttributeSetName { get; set; } + [JsonProperty("mixDatabaseName")] + public string MixDatabaseName { get; set; } [JsonProperty("booleanValue")] public bool? BooleanValue { get; set; } @@ -90,7 +90,7 @@ public class UpdateViewModel #region Views [JsonProperty("field")] - public MixAttributeFields.UpdateViewModel Field { get; set; } + public MixDatabaseColumns.UpdateViewModel Field { get; set; } #endregion Views @@ -103,7 +103,7 @@ public UpdateViewModel() : base() //IsCache = false; } - public UpdateViewModel(MixAttributeSetValue model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) + public UpdateViewModel(MixDatabaseDataValue model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) { //IsCache = false; } @@ -112,7 +112,7 @@ public UpdateViewModel(MixAttributeSetValue model, MixCmsContext _context = null #region Overrides - public override MixAttributeSetValue ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) + public override MixDatabaseDataValue ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { if (string.IsNullOrEmpty(Id)) { @@ -122,8 +122,8 @@ public override MixAttributeSetValue ParseModel(MixCmsContext _context = null, I Priority = Field?.Priority ?? Priority; DataType = Field?.DataType ?? DataType; - AttributeFieldName = Field?.Name; - AttributeFieldId = Field?.Id ?? 0; + MixDatabaseColumnName = Field?.Name; + MixDatabaseColumnId = Field?.Id ?? 0; if (string.IsNullOrEmpty(StringValue) && !string.IsNullOrEmpty(Field?.DefaultValue)) { ParseDefaultValue(Field.DefaultValue); @@ -170,23 +170,23 @@ public override void ExpandView(MixCmsContext _context = null, IDbContextTransac (MixAppSettingKeywords.DefaultContentStatus)) : Status; } - if (AttributeFieldId > 0) + if (MixDatabaseColumnId > 0) { - Field ??= MixAttributeFields.UpdateViewModel.Repository.GetSingleModel( - f => f.Id == AttributeFieldId + Field ??= MixDatabaseColumns.UpdateViewModel.Repository.GetSingleModel( + f => f.Id == MixDatabaseColumnId , _context, _transaction).Data; if (Field != null && DataType == MixDataType.Reference) { - AttributeSetName = _context.MixAttributeSet.FirstOrDefault(m => m.Id == Field.ReferenceId)?.Name; + MixDatabaseName = _context.MixDatabase.FirstOrDefault(m => m.Id == Field.ReferenceId)?.Name; } } else // additional field for page / post / module => id = 0 { - Field = new MixAttributeFields.UpdateViewModel() + Field = new MixDatabaseColumns.UpdateViewModel() { DataType = DataType, - Title = AttributeFieldName, - Name = AttributeFieldName, + Title = MixDatabaseColumnName, + Name = MixDatabaseColumnName, Priority = Priority }; } @@ -208,9 +208,9 @@ public override void Validate(MixCmsContext _context, IDbContextTransaction _tra { if (Field.IsUnique) { - var exist = _context.MixAttributeSetValue.Any(d => d.Specificulture == Specificulture - && d.AttributeSetName == AttributeSetName - && EF.Functions.Like(d.StringValue, $"{StringValue}") && d.Id != Id && d.DataId != DataId); + var exist = _context.MixDatabaseDataValue.Any(d => d.Specificulture == Specificulture + && d.MixDatabaseName == MixDatabaseName + && EF.Functions.Like(d.StringValue, StringValue) && d.Id != Id && d.DataId != DataId); if (exist) { IsValid = false; diff --git a/src/Mix.Cms.Lib/ViewModels/MixAttributeSetDatas/AdditionalViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDatas/AdditionalViewModel.cs similarity index 75% rename from src/Mix.Cms.Lib/ViewModels/MixAttributeSetDatas/AdditionalViewModel.cs rename to src/Mix.Cms.Lib/ViewModels/MixDatabaseDatas/AdditionalViewModel.cs index 680245f7d..863374ddb 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixAttributeSetDatas/AdditionalViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDatas/AdditionalViewModel.cs @@ -12,10 +12,10 @@ using System.Linq; using System.Threading.Tasks; -namespace Mix.Cms.Lib.ViewModels.MixAttributeSetDatas +namespace Mix.Cms.Lib.ViewModels.MixDatabaseDatas { public class AdditionalViewModel - : ViewModelBase + : ViewModelBase { #region Properties @@ -30,11 +30,11 @@ public class AdditionalViewModel [JsonProperty("cultures")] public List Cultures { get; set; } - [JsonProperty("attributeSetId")] - public int AttributeSetId { get; set; } + [JsonProperty("mixDatabaseId")] + public int MixDatabaseId { get; set; } - [JsonProperty("attributeSetName")] - public string AttributeSetName { get; set; } + [JsonProperty("mixDatabaseName")] + public string MixDatabaseName { get; set; } [JsonProperty("createdBy")] public string CreatedBy { get; set; } @@ -59,9 +59,10 @@ public class AdditionalViewModel #region Views [JsonProperty("detailsUrl")] - public string DetailsUrl { + public string DetailsUrl + { get => !string.IsNullOrEmpty(Id) && HasValue("seo_url") - ? $"/data/{Specificulture}/{AttributeSetName}/{Property("seo_url")}" + ? $"/data/{Specificulture}/{MixDatabaseName}/{Property("seo_url")}" : null; } @@ -75,16 +76,16 @@ public string DetailsUrl { public MixDatabaseParentType ParentType { get; set; } [JsonProperty("relatedData")] - public List RelatedData { get; set; } = new List(); + public List RelatedData { get; set; } = new List(); [JsonIgnore] - public List Values { get; set; } + public List Values { get; set; } [JsonProperty("fields")] - public List Fields { get; set; } + public List Fields { get; set; } [JsonIgnore] - public List RefData { get; set; } = new List(); + public List RefData { get; set; } = new List(); #endregion Views @@ -96,7 +97,7 @@ public AdditionalViewModel() : base() { } - public AdditionalViewModel(MixAttributeSetData model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) + public AdditionalViewModel(MixDatabaseData model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) { } @@ -106,56 +107,57 @@ public AdditionalViewModel(MixAttributeSetData model, MixCmsContext _context = n public override void ExpandView(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { + var database = MixDatabases.UpdateViewModel.Repository.GetSingleModel(m => m.Id == MixDatabaseId, _context, _transaction); + Fields = database.Data.Fields; if (Obj == null) { - var getValues = MixAttributeSetValues.UpdateViewModel + var getValues = MixDatabaseDataValues.UpdateViewModel .Repository.GetModelListBy(a => a.DataId == Id && a.Specificulture == Specificulture, _context, _transaction); var values = getValues.Data.Select(v => v.Model); - Fields = getValues.Data.Select(v => v.Field).ToList(); + Fields.AddRange( + getValues.Data + .Where(v => !Fields.Any(f => f.Id == v.Field.Id)) + .Select(v => v.Field) + .ToList()); var properties = values.Select(m => m.ToJProperty(_context, _transaction)); Obj = new JObject( new JProperty("id", Id), properties ); } - Fields ??= new List(); - var defaultFields = MixAttributeFields.UpdateViewModel.Repository.GetModelListBy( - f => f.AttributeSetId == AttributeSetId, _context, _transaction).Data; - Fields.AddRange( - defaultFields.Where(df => !Fields.Any(f => f.Name == df.Name))); } - public override MixAttributeSetData ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) + public override MixDatabaseData ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { if (string.IsNullOrEmpty(Id)) { Id = Guid.NewGuid().ToString(); CreatedDateTime = DateTime.UtcNow; - Priority = Repository.Count(m => m.AttributeSetName == AttributeSetName && m.Specificulture == Specificulture, _context, _transaction).Data + 1; + Priority = Repository.Count(m => m.MixDatabaseName == MixDatabaseName && m.Specificulture == Specificulture, _context, _transaction).Data + 1; } - if (string.IsNullOrEmpty(AttributeSetName)) + if (string.IsNullOrEmpty(MixDatabaseName)) { - AttributeSetName = _context.MixAttributeSet.First(m => m.Id == AttributeSetId)?.Name; + MixDatabaseName = _context.MixDatabase.First(m => m.Id == MixDatabaseId)?.Name; } - if (AttributeSetId == 0) + if (MixDatabaseId == 0) { - AttributeSetId = _context.MixAttributeSet.First(m => m.Name == AttributeSetName)?.Id ?? 0; + MixDatabaseId = _context.MixDatabase.First(m => m.Name == MixDatabaseName)?.Id ?? 0; } - Values = Values ?? MixAttributeSetValues.UpdateViewModel + Values = Values ?? MixDatabaseDataValues.UpdateViewModel .Repository.GetModelListBy(a => a.DataId == Id && a.Specificulture == Specificulture, _context, _transaction).Data.OrderBy(a => a.Priority).ToList(); - Fields = Fields ?? MixAttributeFields.UpdateViewModel.Repository.GetModelListBy(f => f.AttributeSetId == AttributeSetId, _context, _transaction).Data; + Fields = Fields ?? MixDatabaseColumns.UpdateViewModel.Repository.GetModelListBy(f => f.MixDatabaseId == MixDatabaseId, _context, _transaction).Data; foreach (var field in Fields.OrderBy(f => f.Priority)) { - var val = Values.FirstOrDefault(v => v.AttributeFieldId == field.Id); + var val = Values.FirstOrDefault(v => v.MixDatabaseColumnId == field.Id); if (val == null) { - val = new MixAttributeSetValues.UpdateViewModel( - new MixAttributeSetValue() + val = new MixDatabaseDataValues.UpdateViewModel( + new MixDatabaseDataValue() { - AttributeFieldId = field.Id, - AttributeFieldName = field.Name, + MixDatabaseColumnId = field.Id, + MixDatabaseColumnName = field.Name, } , _context, _transaction) { @@ -166,12 +168,12 @@ public override MixAttributeSetData ParseModel(MixCmsContext _context = null, ID Values.Add(val); } val.Priority = field.Priority; - val.AttributeSetName = AttributeSetName; - if (Obj[val.AttributeFieldName] != null) + val.MixDatabaseName = MixDatabaseName; + if (Obj[val.MixDatabaseColumnName] != null) { if (val.Field.DataType == MixDataType.Reference) { - var arr = Obj[val.AttributeFieldName].Value(); + var arr = Obj[val.MixDatabaseColumnName].Value(); if (arr != null) { foreach (JObject objData in arr) @@ -192,7 +194,7 @@ public override MixAttributeSetData ParseModel(MixCmsContext _context = null, ID RefData.Add(new AdditionalViewModel() { Specificulture = Specificulture, - AttributeSetId = field.ReferenceId.Value, + MixDatabaseId = field.ReferenceId.Value, Obj = objData["obj"].Value() }); } @@ -201,7 +203,7 @@ public override MixAttributeSetData ParseModel(MixCmsContext _context = null, ID } else { - val.ToModelValue(Obj[val.AttributeFieldName]); + val.ToModelValue(Obj[val.MixDatabaseColumnName], _context, _transaction); } } else @@ -223,17 +225,17 @@ public override async Task> SaveModelAsy var result = await base.SaveModelAsync(isSaveSubModels, context, transaction); if (result.IsSucceed && !string.IsNullOrEmpty(ParentId)) { - var getNav = MixRelatedAttributeDatas.UpdateViewModel.Repository.CheckIsExists( + var getNav = MixDatabaseDataAssociations.UpdateViewModel.Repository.CheckIsExists( m => m.DataId == Id && m.ParentId == ParentId && m.ParentType == ParentType && m.Specificulture == Specificulture , context, transaction); if (!getNav) { - var nav = new MixRelatedAttributeDatas.UpdateViewModel() + var nav = new MixDatabaseDataAssociations.UpdateViewModel() { DataId = Id, Specificulture = Specificulture, - AttributeSetId = AttributeSetId, - AttributeSetName = AttributeSetName, + MixDatabaseId = MixDatabaseId, + MixDatabaseName = MixDatabaseName, ParentType = ParentType, ParentId = ParentId, Status = MixContentStatus.Published @@ -268,7 +270,7 @@ public override async Task> SaveModelAsy } } - public override async Task> SaveSubModelsAsync(MixAttributeSetData parent, MixCmsContext _context, IDbContextTransaction _transaction) + public override async Task> SaveSubModelsAsync(MixDatabaseData parent, MixCmsContext _context, IDbContextTransaction _transaction) { var result = new RepositoryResponse() { IsSucceed = true }; @@ -300,23 +302,23 @@ public override async Task> SaveSubModelsAsync(MixAttri return result; } - private async Task> SaveFields(MixAttributeSetData parent, MixCmsContext context, IDbContextTransaction transaction) + private async Task> SaveFields(MixDatabaseData parent, MixCmsContext context, IDbContextTransaction transaction) { var result = new RepositoryResponse() { IsSucceed = true }; foreach (var field in Fields) { if (result.IsSucceed) { - if (field.AttributeSetName == "sys_additional_field") + if (field.MixDatabaseName == "sys_additional_field") { // Add field to additional_field set var saveField = await field.SaveModelAsync(false, context, transaction); - var val = Values.FirstOrDefault(m => m.AttributeFieldName == field.Name); + var val = Values.FirstOrDefault(m => m.MixDatabaseColumnName == field.Name); ViewModelHelper.HandleResult(saveField, ref result); if (result.IsSucceed) { - val.AttributeFieldId = saveField.Data.Id; - val.AttributeSetName = saveField.Data.AttributeSetName; + val.MixDatabaseColumnId = saveField.Data.Id; + val.MixDatabaseName = saveField.Data.MixDatabaseName; } } } @@ -328,14 +330,14 @@ private async Task> SaveFields(MixAttributeSetData pare return result; } - private async Task> SaveValues(MixAttributeSetData parent, MixCmsContext context, IDbContextTransaction transaction) + private async Task> SaveValues(MixDatabaseData parent, MixCmsContext context, IDbContextTransaction transaction) { var result = new RepositoryResponse() { IsSucceed = true }; foreach (var item in Values) { if (result.IsSucceed) { - if (Fields.Any(f => f.Id == item.AttributeFieldId)) + if (Fields.Any(f => f.Id == item.MixDatabaseColumnId)) { item.DataId = parent.Id; item.Specificulture = parent.Specificulture; @@ -358,7 +360,7 @@ private async Task> SaveValues(MixAttributeSetData pare return result; } - private async Task> SaveRefDataAsync(MixAttributeSetData parent, MixCmsContext context, IDbContextTransaction transaction) + private async Task> SaveRefDataAsync(MixDatabaseData parent, MixCmsContext context, IDbContextTransaction transaction) { var result = new RepositoryResponse() { IsSucceed = true }; foreach (var item in RefData) @@ -372,13 +374,13 @@ private async Task> SaveRefDataAsync(MixAttributeSetDat var saveRef = await item.SaveModelAsync(true, context, transaction); if (saveRef.IsSucceed) { - RelatedData.Add(new MixRelatedAttributeDatas.UpdateViewModel() + RelatedData.Add(new MixDatabaseDataAssociations.UpdateViewModel() { DataId = saveRef.Data.Id, ParentId = Id, ParentType = MixDatabaseParentType.Set, - AttributeSetId = saveRef.Data.AttributeSetId, - AttributeSetName = saveRef.Data.AttributeSetName, + MixDatabaseId = saveRef.Data.MixDatabaseId, + MixDatabaseName = saveRef.Data.MixDatabaseName, CreatedDateTime = DateTime.UtcNow, Specificulture = Specificulture }); @@ -393,7 +395,7 @@ private async Task> SaveRefDataAsync(MixAttributeSetDat return result; } - private async Task> SaveRelatedDataAsync(MixAttributeSetData parent, MixCmsContext context, IDbContextTransaction transaction) + private async Task> SaveRelatedDataAsync(MixDatabaseData parent, MixCmsContext context, IDbContextTransaction transaction) { var result = new RepositoryResponse() { IsSucceed = true }; @@ -404,8 +406,8 @@ private async Task> SaveRelatedDataAsync(MixAttributeSe // Current data is child data if (string.IsNullOrEmpty(item.Id)) { - item.AttributeSetId = parent.AttributeSetId; - item.AttributeSetName = parent.AttributeSetName; + item.MixDatabaseId = parent.MixDatabaseId; + item.MixDatabaseName = parent.MixDatabaseName; item.Id = parent.Id; } // Current data is parent data @@ -413,7 +415,7 @@ private async Task> SaveRelatedDataAsync(MixAttributeSe { item.ParentId = parent.Id; } - item.Priority = MixRelatedAttributeDatas.UpdateViewModel.Repository.Count( + item.Priority = MixDatabaseDataAssociations.UpdateViewModel.Repository.Count( m => m.ParentId == Id && m.Specificulture == Specificulture, context, transaction).Data + 1; item.Specificulture = Specificulture; item.CreatedDateTime = DateTime.UtcNow; @@ -435,13 +437,13 @@ private async Task> SaveRelatedDataAsync(MixAttributeSe #region Expands - public static async Task> SaveObjectAsync(JObject data, string attributeSetName) + public static async Task> SaveObjectAsync(JObject data, string mixDatabaseName) { var vm = new FormViewModel() { Id = data["id"]?.Value(), Specificulture = data["specificulture"]?.Value(), - AttributeSetName = attributeSetName, + MixDatabaseName = mixDatabaseName, Obj = data }; return await vm.SaveModelAsync(); diff --git a/src/Mix.Cms.Lib/ViewModels/MixAttributeSetDatas/DeleteViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDatas/DeleteViewModel.cs similarity index 72% rename from src/Mix.Cms.Lib/ViewModels/MixAttributeSetDatas/DeleteViewModel.cs rename to src/Mix.Cms.Lib/ViewModels/MixDatabaseDatas/DeleteViewModel.cs index 5ea572fb1..5c3146e89 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixAttributeSetDatas/DeleteViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDatas/DeleteViewModel.cs @@ -4,10 +4,10 @@ using Mix.Domain.Data.ViewModels; using Newtonsoft.Json; -namespace Mix.Cms.Lib.ViewModels.MixAttributeSetDatas +namespace Mix.Cms.Lib.ViewModels.MixDatabaseDatas { public class DeleteViewModel - : ViewModelBase + : ViewModelBase { #region Properties @@ -29,7 +29,7 @@ public DeleteViewModel() : base() { } - public DeleteViewModel(MixAttributeSetData model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) + public DeleteViewModel(MixDatabaseData model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) { } @@ -41,21 +41,21 @@ public override RepositoryResponse RemoveRelatedModels(DeleteViewModel vie { var result = new RepositoryResponse() { IsSucceed = true }; // Remove values - var removeValues = MixAttributeSetValues.DeleteViewModel.Repository.RemoveListModel(false, f => f.DataId == Id && f.Specificulture == Specificulture, _context, _transaction); + var removeValues = MixDatabaseDataValues.DeleteViewModel.Repository.RemoveListModel(false, f => f.DataId == Id && f.Specificulture == Specificulture, _context, _transaction); ViewModelHelper.HandleResult(removeValues, ref result); // remove related navs if (result.IsSucceed) { - var removeRelated = MixRelatedAttributeDatas.DeleteViewModel.Repository.RemoveListModel(true, d => (d.DataId == Id || d.ParentId == Id) && d.Specificulture == Specificulture); + var removeRelated = MixDatabaseDataAssociations.DeleteViewModel.Repository.RemoveListModel(true, d => (d.DataId == Id || d.ParentId == Id) && d.Specificulture == Specificulture); ViewModelHelper.HandleResult(removeRelated, ref result); } if (result.IsSucceed) { - var removeChildFields = MixAttributeSetValues.DeleteViewModel.Repository.RemoveListModel(false, f => (f.DataId == Id) && f.Specificulture == Specificulture, _context, _transaction); + var removeChildFields = MixDatabaseDataValues.DeleteViewModel.Repository.RemoveListModel(false, f => (f.DataId == Id) && f.Specificulture == Specificulture, _context, _transaction); ViewModelHelper.HandleResult(removeChildFields, ref result); - var removeChilds = MixAttributeSetDatas.DeleteViewModel.Repository.RemoveListModel(false, f => (f.Id == Id) && f.Specificulture == Specificulture, _context, _transaction); + var removeChilds = MixDatabaseDatas.DeleteViewModel.Repository.RemoveListModel(false, f => (f.Id == Id) && f.Specificulture == Specificulture, _context, _transaction); ViewModelHelper.HandleResult(removeChilds, ref result); } return result; @@ -65,13 +65,13 @@ public override async System.Threading.Tasks.Task> Remo { var result = new RepositoryResponse() { IsSucceed = true }; // Remove values - var removeFields = await MixAttributeSetValues.DeleteViewModel.Repository.RemoveListModelAsync(false, f => f.DataId == Id && f.Specificulture == Specificulture, _context, _transaction); + var removeFields = await MixDatabaseDataValues.DeleteViewModel.Repository.RemoveListModelAsync(false, f => f.DataId == Id && f.Specificulture == Specificulture, _context, _transaction); ViewModelHelper.HandleResult(removeFields, ref result); // remove related navs if (result.IsSucceed) { - var removeRelated = await MixRelatedAttributeDatas.DeleteViewModel.Repository.RemoveListModelAsync + var removeRelated = await MixDatabaseDataAssociations.DeleteViewModel.Repository.RemoveListModelAsync (true, d => (d.DataId == Id || d.ParentId == Id) && d.Specificulture == Specificulture , _context, _transaction); ViewModelHelper.HandleResult(removeRelated, ref result); @@ -79,10 +79,10 @@ public override async System.Threading.Tasks.Task> Remo if (result.IsSucceed) { - var removeChildFields = await MixAttributeSetValues.DeleteViewModel.Repository.RemoveListModelAsync( + var removeChildFields = await MixDatabaseDataValues.DeleteViewModel.Repository.RemoveListModelAsync( false, f => (f.DataId == Id) && f.Specificulture == Specificulture, _context, _transaction); ViewModelHelper.HandleResult(removeChildFields, ref result); - var removeChilds = await MixAttributeSetDatas.DeleteViewModel.Repository.RemoveListModelAsync( + var removeChilds = await MixDatabaseDatas.DeleteViewModel.Repository.RemoveListModelAsync( false, f => (f.Id == Id) && f.Specificulture == Specificulture, _context, _transaction); ViewModelHelper.HandleResult(removeChilds, ref result); } diff --git a/src/Mix.Cms.Lib/ViewModels/MixAttributeSetDatas/ExportViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDatas/ExportViewModel.cs similarity index 75% rename from src/Mix.Cms.Lib/ViewModels/MixAttributeSetDatas/ExportViewModel.cs rename to src/Mix.Cms.Lib/ViewModels/MixDatabaseDatas/ExportViewModel.cs index 14dfd5b0b..875884add 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixAttributeSetDatas/ExportViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDatas/ExportViewModel.cs @@ -10,10 +10,10 @@ using System.Collections.Generic; using System.Linq; -namespace Mix.Cms.Lib.ViewModels.MixAttributeSetDatas +namespace Mix.Cms.Lib.ViewModels.MixDatabaseDatas { public class ExportViewModel - : ViewModelBase + : ViewModelBase { #region Properties @@ -28,11 +28,11 @@ public class ExportViewModel [JsonProperty("cultures")] public List Cultures { get; set; } - [JsonProperty("attributeSetId")] - public int AttributeSetId { get; set; } + [JsonProperty("mixDatabaseId")] + public int MixDatabaseId { get; set; } - [JsonProperty("attributeSetName")] - public string AttributeSetName { get; set; } + [JsonProperty("mixDatabaseName")] + public string MixDatabaseName { get; set; } [JsonProperty("createdBy")] public string CreatedBy { get; set; } @@ -57,19 +57,19 @@ public class ExportViewModel #region Views [JsonIgnore] - public List Values { get; set; } + public List Values { get; set; } [JsonIgnore] - public List Fields { get; set; } + public List Fields { get; set; } //[JsonIgnore] - public List RefData { get; set; } = new List(); + public List RefData { get; set; } = new List(); [JsonProperty("data")] public JObject Data { get; set; } [JsonProperty("relatedData")] - public List RelatedData { get; set; } = new List(); + public List RelatedData { get; set; } = new List(); #endregion Views @@ -81,7 +81,7 @@ public ExportViewModel() : base() { } - public ExportViewModel(MixAttributeSetData model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) + public ExportViewModel(MixDatabaseData model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) { } @@ -91,7 +91,7 @@ public ExportViewModel(MixAttributeSetData model, MixCmsContext _context = null, public override void ExpandView(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { - var getValues = MixAttributeSetValues.UpdateViewModel + var getValues = MixDatabaseDataValues.UpdateViewModel .Repository.GetModelListBy(a => a.DataId == Id && a.Specificulture == Specificulture, _context, _transaction); if (getValues.IsSucceed) { @@ -100,31 +100,31 @@ public override void ExpandView(MixCmsContext _context = null, IDbContextTransac } } - public override MixAttributeSetData ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) + public override MixDatabaseData ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { if (string.IsNullOrEmpty(Id)) { Id = Guid.NewGuid().ToString(); CreatedDateTime = DateTime.UtcNow; - Priority = Repository.Count(m => m.AttributeSetName == AttributeSetName && m.Specificulture == Specificulture, _context, _transaction).Data + 1; + Priority = Repository.Count(m => m.MixDatabaseName == MixDatabaseName && m.Specificulture == Specificulture, _context, _transaction).Data + 1; } - Values = Values ?? MixAttributeSetValues.UpdateViewModel + Values = Values ?? MixDatabaseDataValues.UpdateViewModel .Repository.GetModelListBy(a => a.DataId == Id && a.Specificulture == Specificulture, _context, _transaction).Data.OrderBy(a => a.Priority).ToList(); - Fields = MixAttributeFields.UpdateViewModel.Repository.GetModelListBy(f => f.AttributeSetId == AttributeSetId, _context, _transaction).Data; - if (string.IsNullOrEmpty(AttributeSetName)) + Fields = MixDatabaseColumns.UpdateViewModel.Repository.GetModelListBy(f => f.MixDatabaseId == MixDatabaseId, _context, _transaction).Data; + if (string.IsNullOrEmpty(MixDatabaseName)) { - AttributeSetName = _context.MixAttributeSet.First(m => m.Id == AttributeSetId)?.Name; + MixDatabaseName = _context.MixDatabase.First(m => m.Id == MixDatabaseId)?.Name; } foreach (var field in Fields.OrderBy(f => f.Priority)) { - var val = Values.FirstOrDefault(v => v.AttributeFieldId == field.Id); + var val = Values.FirstOrDefault(v => v.MixDatabaseColumnId == field.Id); if (val == null) { - val = new MixAttributeSetValues.UpdateViewModel( - new MixAttributeSetValue() + val = new MixDatabaseDataValues.UpdateViewModel( + new MixDatabaseDataValue() { - AttributeFieldId = field.Id, - AttributeFieldName = field.Name, + MixDatabaseColumnId = field.Id, + MixDatabaseColumnName = field.Name, } , _context, _transaction) { @@ -135,12 +135,12 @@ public override MixAttributeSetData ParseModel(MixCmsContext _context = null, ID Values.Add(val); } val.Priority = field.Priority; - val.AttributeSetName = AttributeSetName; - if (Data[val.AttributeFieldName] != null) + val.MixDatabaseName = MixDatabaseName; + if (Data[val.MixDatabaseColumnName] != null) { if (val.Field.DataType == MixDataType.Reference) { - var arr = Data[val.AttributeFieldName].Value(); + var arr = Data[val.MixDatabaseColumnName].Value(); foreach (JObject objData in arr) { string id = objData["id"]?.Value(); @@ -159,7 +159,7 @@ public override MixAttributeSetData ParseModel(MixCmsContext _context = null, ID RefData.Add(new UpdateViewModel() { Specificulture = Specificulture, - AttributeSetId = field.ReferenceId.Value, + MixDatabaseId = field.ReferenceId.Value, Data = objData }); } @@ -167,7 +167,7 @@ public override MixAttributeSetData ParseModel(MixCmsContext _context = null, ID } else { - ParseModelValue(Data[val.AttributeFieldName], val); + ParseModelValue(Data[val.MixDatabaseColumnName], val); } } else @@ -183,31 +183,31 @@ public override MixAttributeSetData ParseModel(MixCmsContext _context = null, ID #region Expands - private JProperty ParseValue(MixAttributeSetValues.UpdateViewModel item) + private JProperty ParseValue(MixDatabaseDataValues.UpdateViewModel item) { switch (item.DataType) { case MixDataType.DateTime: - return new JProperty(item.AttributeFieldName, item.DateTimeValue); + return new JProperty(item.MixDatabaseColumnName, item.DateTimeValue); case MixDataType.Date: - return (new JProperty(item.AttributeFieldName, item.DateTimeValue)); + return (new JProperty(item.MixDatabaseColumnName, item.DateTimeValue)); case MixDataType.Time: - return (new JProperty(item.AttributeFieldName, item.DateTimeValue)); + return (new JProperty(item.MixDatabaseColumnName, item.DateTimeValue)); case MixDataType.Double: - return (new JProperty(item.AttributeFieldName, item.DoubleValue)); + return (new JProperty(item.MixDatabaseColumnName, item.DoubleValue)); case MixDataType.Boolean: - return (new JProperty(item.AttributeFieldName, item.BooleanValue)); + return (new JProperty(item.MixDatabaseColumnName, item.BooleanValue)); case MixDataType.Integer: - return (new JProperty(item.AttributeFieldName, item.IntegerValue)); + return (new JProperty(item.MixDatabaseColumnName, item.IntegerValue)); case MixDataType.Reference: //string url = $"/api/v1/odata/en-us/related-attribute-set-data/mobile/parent/set/{Id}/{item.Field.ReferenceId}"; - return (new JProperty(item.AttributeFieldName, new JArray())); + return (new JProperty(item.MixDatabaseColumnName, new JArray())); case MixDataType.Custom: case MixDataType.Duration: @@ -227,11 +227,11 @@ private JProperty ParseValue(MixAttributeSetValues.UpdateViewModel item) case MixDataType.VideoYoutube: case MixDataType.TuiEditor: default: - return (new JProperty(item.AttributeFieldName, item.StringValue)); + return (new JProperty(item.MixDatabaseColumnName, item.StringValue)); } } - private void ParseModelValue(JToken property, MixAttributeSetValues.UpdateViewModel item) + private void ParseModelValue(JToken property, MixDatabaseDataValues.UpdateViewModel item) { switch (item.Field.DataType) { @@ -324,7 +324,7 @@ private void ParseData() Data = new JObject(); foreach (var item in Values.OrderBy(v => v.Priority)) { - item.AttributeFieldName = item.Field.Name; + item.MixDatabaseColumnName = item.Field.Name; Data.Add(ParseValue(item)); } Data.Add(new JProperty("createdDateTime", CreatedDateTime)); diff --git a/src/Mix.Cms.Lib/ViewModels/MixAttributeSetDatas/FormViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDatas/FormViewModel.cs similarity index 72% rename from src/Mix.Cms.Lib/ViewModels/MixAttributeSetDatas/FormViewModel.cs rename to src/Mix.Cms.Lib/ViewModels/MixDatabaseDatas/FormViewModel.cs index a23b742e0..7218f8127 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixAttributeSetDatas/FormViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDatas/FormViewModel.cs @@ -14,10 +14,10 @@ using System.Linq; using System.Threading.Tasks; -namespace Mix.Cms.Lib.ViewModels.MixAttributeSetDatas +namespace Mix.Cms.Lib.ViewModels.MixDatabaseDatas { public class FormViewModel - : ViewModelBase + : ViewModelBase { #region Properties @@ -32,11 +32,11 @@ public class FormViewModel [JsonProperty("cultures")] public List Cultures { get; set; } - [JsonProperty("attributeSetId")] - public int AttributeSetId { get; set; } + [JsonProperty("mixDatabaseId")] + public int MixDatabaseId { get; set; } - [JsonProperty("attributeSetName")] - public string AttributeSetName { get; set; } + [JsonProperty("mixDatabaseName")] + public string MixDatabaseName { get; set; } [JsonProperty("createdBy")] public string CreatedBy { get; set; } @@ -61,9 +61,10 @@ public class FormViewModel #region Views [JsonProperty("detailsUrl")] - public string DetailsUrl { + public string DetailsUrl + { get => !string.IsNullOrEmpty(Id) && HasValue("seo_url") - ? $"/data/{Specificulture}/{AttributeSetName}/{Property("seo_url")}" + ? $"/data/{Specificulture}/{MixDatabaseName}/{Property("seo_url")}" : null; } @@ -77,16 +78,16 @@ public string DetailsUrl { public MixDatabaseParentType ParentType { get; set; } [JsonProperty("relatedData")] - public List RelatedData { get; set; } = new List(); + public List RelatedData { get; set; } = new List(); [JsonIgnore] - public List Values { get; set; } + public List Values { get; set; } [JsonProperty("fields")] - public List Fields { get; set; } + public List Fields { get; set; } [JsonIgnore] - public List RefData { get; set; } = new List(); + public List RefData { get; set; } = new List(); #endregion Views @@ -98,7 +99,7 @@ public FormViewModel() : base() { } - public FormViewModel(MixAttributeSetData model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) + public FormViewModel(MixDatabaseData model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) { } @@ -114,40 +115,40 @@ public override void ExpandView(MixCmsContext _context = null, IDbContextTransac } } - public override MixAttributeSetData ParseModel( + public override MixDatabaseData ParseModel( MixCmsContext _context = null, IDbContextTransaction _transaction = null) { if (string.IsNullOrEmpty(Id)) { Id = Guid.NewGuid().ToString(); CreatedDateTime = DateTime.UtcNow; - Priority = Repository.Count(m => m.AttributeSetName == AttributeSetName && m.Specificulture == Specificulture, _context, _transaction).Data + 1; + Priority = Repository.Count(m => m.MixDatabaseName == MixDatabaseName && m.Specificulture == Specificulture, _context, _transaction).Data + 1; } - if (string.IsNullOrEmpty(AttributeSetName)) + if (string.IsNullOrEmpty(MixDatabaseName)) { - AttributeSetName = _context.MixAttributeSet.First(m => m.Id == AttributeSetId)?.Name; + MixDatabaseName = _context.MixDatabase.First(m => m.Id == MixDatabaseId)?.Name; } - if (AttributeSetId == 0) + if (MixDatabaseId == 0) { - AttributeSetId = _context.MixAttributeSet.First(m => m.Name == AttributeSetName)?.Id ?? 0; + MixDatabaseId = _context.MixDatabase.First(m => m.Name == MixDatabaseName)?.Id ?? 0; } - Values ??= MixAttributeSetValues.UpdateViewModel + Values ??= MixDatabaseDataValues.UpdateViewModel .Repository.GetModelListBy(a => a.DataId == Id && a.Specificulture == Specificulture , _context, _transaction) .Data.OrderBy(a => a.Priority).ToList(); - Fields ??= MixAttributeFields.UpdateViewModel.Repository.GetModelListBy(f => f.AttributeSetId == AttributeSetId + Fields ??= MixDatabaseColumns.UpdateViewModel.Repository.GetModelListBy(f => f.MixDatabaseId == MixDatabaseId , _context, _transaction).Data; foreach (var field in Fields.OrderBy(f => f.Priority)) { - var val = Values.FirstOrDefault(v => v.AttributeFieldId == field.Id); + var val = Values.FirstOrDefault(v => v.MixDatabaseColumnId == field.Id); if (val == null) { - val = new MixAttributeSetValues.UpdateViewModel() + val = new MixDatabaseDataValues.UpdateViewModel() { - AttributeFieldId = field.Id, - AttributeFieldName = field.Name, + MixDatabaseColumnId = field.Id, + MixDatabaseColumnName = field.Name, StringValue = field.DefaultValue, Priority = field.Priority, Field = field, @@ -161,13 +162,14 @@ public override MixAttributeSetData ParseModel( val.LastModified = DateTime.UtcNow; } val.Status = Status; + val.Specificulture = Specificulture; val.Priority = field.Priority; - val.AttributeSetName = AttributeSetName; - if (Obj[val.AttributeFieldName] != null) + val.MixDatabaseName = MixDatabaseName; + if (Obj[val.MixDatabaseColumnName] != null) { if (val.Field.DataType == MixDataType.Reference) { - var arr = Obj[val.AttributeFieldName].Value(); + var arr = Obj[val.MixDatabaseColumnName].Value(); val.IntegerValue = val.Field.ReferenceId; val.StringValue = val.Field.ReferenceId.ToString(); if (arr != null) @@ -190,7 +192,7 @@ public override MixAttributeSetData ParseModel( RefData.Add(new FormViewModel() { Specificulture = Specificulture, - AttributeSetId = field.ReferenceId.Value, + MixDatabaseId = field.ReferenceId.Value, Obj = objData["obj"].Value() }); } @@ -199,35 +201,35 @@ public override MixAttributeSetData ParseModel( } else { - val.ToModelValue(Obj[val.AttributeFieldName]); + val.ToModelValue(Obj[val.MixDatabaseColumnName], _context, _transaction); } } } // Save Edm html - var getAttrSet = Mix.Cms.Lib.ViewModels.MixAttributeSets.ReadViewModel.Repository.GetSingleModel(m => m.Name == AttributeSetName, _context, _transaction); - var getEdm = Lib.ViewModels.MixTemplates.UpdateViewModel.GetTemplateByPath(getAttrSet.Data.EdmTemplate, Specificulture, _context, _transaction); - var edmField = Values.FirstOrDefault(f => f.AttributeFieldName == "edm"); - if (edmField != null && getEdm.IsSucceed && !string.IsNullOrEmpty(getEdm.Data.Content)) - { - string body = getEdm.Data.Content; - foreach (var prop in Obj.Properties()) - { - body = body.Replace($"[[{prop.Name}]]", Obj[prop.Name].Value()); - } - var edmFile = new FileViewModel() - { - Content = body, - Extension = MixFileExtensions.Html, - FileFolder = MixTemplateFolders.Edms, - Filename = $"{getAttrSet.Data.EdmSubject}-{Id}" - }; - if (MixFileRepository.Instance.SaveWebFile(edmFile)) - { - Obj["edm"] = edmFile.WebPath; - edmField.StringValue = edmFile.WebPath; - } - } + //var getAttrSet = Mix.Cms.Lib.ViewModels.MixDatabases.ReadViewModel.Repository.GetSingleModel(m => m.Name == MixDatabaseName, _context, _transaction); + //var getEdm = Lib.ViewModels.MixTemplates.UpdateViewModel.GetTemplateByPath(getAttrSet.Data.EdmTemplate, Specificulture, _context, _transaction); + //var edmField = Values.FirstOrDefault(f => f.MixDatabaseColumnName == "edm"); + //if (edmField != null && getEdm.IsSucceed && !string.IsNullOrEmpty(getEdm.Data.Content)) + //{ + // string body = getEdm.Data.Content; + // foreach (var prop in Obj.Properties()) + // { + // body = body.Replace($"[[{prop.Name}]]", Obj[prop.Name].Value()); + // } + // var edmFile = new FileViewModel() + // { + // Content = body, + // Extension = MixFileExtensions.Html, + // FileFolder = MixTemplateFolders.Edms, + // Filename = $"{getAttrSet.Data.EdmSubject}-{Id}" + // }; + // if (MixFileRepository.Instance.SaveWebFile(edmFile)) + // { + // Obj["edm"] = edmFile.WebPath; + // edmField.StringValue = edmFile.WebPath; + // } + //} //End save edm return base.ParseModel(_context, _transaction); ; @@ -245,17 +247,17 @@ public override async Task> SaveModelAsync( var result = await base.SaveModelAsync(isSaveSubModels, context, transaction); if (result.IsSucceed && !string.IsNullOrEmpty(ParentId)) { - var getNav = MixRelatedAttributeDatas.UpdateViewModel.Repository.CheckIsExists( + var getNav = MixDatabaseDataAssociations.UpdateViewModel.Repository.CheckIsExists( m => m.DataId == Id && m.ParentId == ParentId && m.ParentType == ParentType && m.Specificulture == Specificulture , context, transaction); if (!getNav) { - var nav = new MixRelatedAttributeDatas.UpdateViewModel() + var nav = new MixDatabaseDataAssociations.UpdateViewModel() { DataId = Id, Specificulture = Specificulture, - AttributeSetId = AttributeSetId, - AttributeSetName = AttributeSetName, + MixDatabaseId = MixDatabaseId, + MixDatabaseName = MixDatabaseName, ParentType = ParentType, ParentId = ParentId, Status = MixContentStatus.Published @@ -302,7 +304,7 @@ public override RepositoryResponse SaveModel(bool isSaveSubModels return result; } - public override async Task> SaveSubModelsAsync(MixAttributeSetData parent, MixCmsContext _context, IDbContextTransaction _transaction) + public override async Task> SaveSubModelsAsync(MixDatabaseData parent, MixCmsContext _context, IDbContextTransaction _transaction) { var result = new RepositoryResponse() { IsSucceed = true }; @@ -328,14 +330,14 @@ public override async Task> SaveSubModelsAsync(MixAttri return result; } - private async Task> SaveValues(MixAttributeSetData parent, MixCmsContext context, IDbContextTransaction transaction) + private async Task> SaveValues(MixDatabaseData parent, MixCmsContext context, IDbContextTransaction transaction) { var result = new RepositoryResponse() { IsSucceed = true }; foreach (var item in Values) { if (result.IsSucceed) { - if (Fields.Any(f => f.Id == item.AttributeFieldId)) + if (Fields.Any(f => f.Id == item.MixDatabaseColumnId)) { item.DataId = parent.Id; item.Specificulture = parent.Specificulture; @@ -358,7 +360,7 @@ private async Task> SaveValues(MixAttributeSetData pare return result; } - private async Task> SaveRefDataAsync(MixAttributeSetData parent, MixCmsContext context, IDbContextTransaction transaction) + private async Task> SaveRefDataAsync(MixDatabaseData parent, MixCmsContext context, IDbContextTransaction transaction) { var result = new RepositoryResponse() { IsSucceed = true }; foreach (var item in RefData) @@ -372,13 +374,13 @@ private async Task> SaveRefDataAsync(MixAttributeSetDat var saveRef = await item.SaveModelAsync(true, context, transaction); if (saveRef.IsSucceed) { - RelatedData.Add(new MixRelatedAttributeDatas.UpdateViewModel() + RelatedData.Add(new MixDatabaseDataAssociations.UpdateViewModel() { DataId = saveRef.Data.Id, ParentId = Id, ParentType = MixDatabaseParentType.Set, - AttributeSetId = saveRef.Data.AttributeSetId, - AttributeSetName = saveRef.Data.AttributeSetName, + MixDatabaseId = saveRef.Data.MixDatabaseId, + MixDatabaseName = saveRef.Data.MixDatabaseName, CreatedDateTime = DateTime.UtcNow, Specificulture = Specificulture }); @@ -399,13 +401,13 @@ private async Task> SaveRefDataAsync(MixAttributeSetDat #region Expands - public static async Task> SaveObjectAsync(JObject data, string attributeSetName) + public static async Task> SaveObjectAsync(JObject data, string mixDatabaseName) { var vm = new FormViewModel() { Id = data["id"]?.Value(), Specificulture = data["specificulture"]?.Value(), - AttributeSetName = attributeSetName, + MixDatabaseName = mixDatabaseName, Obj = data }; return await vm.SaveModelAsync(); diff --git a/src/Mix.Cms.Lib/ViewModels/MixAttributeSetDatas/Helper.cs b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDatas/Helper.cs similarity index 80% rename from src/Mix.Cms.Lib/ViewModels/MixAttributeSetDatas/Helper.cs rename to src/Mix.Cms.Lib/ViewModels/MixDatabaseDatas/Helper.cs index 157de03d1..232ebd71d 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixAttributeSetDatas/Helper.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDatas/Helper.cs @@ -22,27 +22,27 @@ using System.Linq.Expressions; using System.Threading.Tasks; -namespace Mix.Cms.Lib.ViewModels.MixAttributeSetDatas +namespace Mix.Cms.Lib.ViewModels.MixDatabaseDatas { public static class Helper { public static async Task> ImportData( - string culture, Lib.ViewModels.MixAttributeSets.ReadViewModel attributeSet, IFormFile file) + string culture, Lib.ViewModels.MixDatabases.ReadViewModel mixDatabase, IFormFile file) { var result = new RepositoryResponse() { IsSucceed = true }; UnitOfWorkHelper.InitTransaction(null, null, out MixCmsContext context, out IDbContextTransaction transaction, out bool isRoot); try { - List data = LoadFileData(culture, attributeSet, file); + List data = LoadFileData(culture, mixDatabase, file); - var fields = MixAttributeFields.UpdateViewModel.Repository.GetModelListBy(f => f.AttributeSetId == attributeSet.Id, context, transaction).Data; + var fields = MixDatabaseColumns.UpdateViewModel.Repository.GetModelListBy(f => f.MixDatabaseId == mixDatabase.Id, context, transaction).Data; foreach (var item in data) { if (result.IsSucceed) { var isCreateNew = string.IsNullOrEmpty(item.Id); item.Fields = fields; - item.AttributeSetName = attributeSet.Name; + item.MixDatabaseName = mixDatabase.Name; item.Status = MixService.GetEnumConfig(MixAppSettingKeywords.DefaultContentStatus); var saveResult = await item.SaveModelAsync(true, context, transaction); ViewModelHelper.HandleResult(saveResult, ref result); @@ -104,18 +104,18 @@ public static async Task> LoadAdditional UnitOfWorkHelper.InitTransaction(_context, _transaction, out MixCmsContext context, out IDbContextTransaction transaction, out bool isRoot); try { - var dataId = (await context.MixRelatedAttributeData.FirstOrDefaultAsync( - m => m.AttributeSetName == databaseName && m.ParentType == parentType && m.ParentId == parentId && m.Specificulture == culture))?.DataId; + var dataId = (await context.MixDatabaseDataAssociation.FirstOrDefaultAsync( + m => m.MixDatabaseName == databaseName && m.ParentType == parentType && m.ParentId == parentId && m.Specificulture == culture))?.DataId; if (!string.IsNullOrEmpty(dataId)) { - return await AdditionalViewModel.Repository.GetSingleModelAsync( + return await AdditionalViewModel.Repository.GetFirstModelAsync( m => m.Id == dataId && m.Specificulture == culture , context, transaction); } else { // Init default data - var getAttrSet = await Lib.ViewModels.MixAttributeSets.UpdateViewModel.Repository.GetSingleModelAsync( + var getAttrSet = await Lib.ViewModels.MixDatabases.UpdateViewModel.Repository.GetSingleModelAsync( m => m.Name == databaseName , context, transaction); if (getAttrSet.IsSucceed) @@ -123,8 +123,8 @@ public static async Task> LoadAdditional AdditionalViewModel result = new AdditionalViewModel() { Specificulture = culture, - AttributeSetId = getAttrSet.Data.Id, - AttributeSetName = getAttrSet.Data.Name, + MixDatabaseId = getAttrSet.Data.Id, + MixDatabaseName = getAttrSet.Data.Name, Status = MixContentStatus.Published, Fields = getAttrSet.Data.Fields, ParentType = parentType, @@ -165,8 +165,8 @@ public static RepositoryResponse LoadAdditionalData( UnitOfWorkHelper.InitTransaction(_context, _transaction, out MixCmsContext context, out IDbContextTransaction transaction, out bool isRoot); try { - var dataId = context.MixRelatedAttributeData.FirstOrDefault( - m => m.AttributeSetName == databaseName && m.ParentType == parentType && m.ParentId == parentId && m.Specificulture == culture)?.DataId; + var dataId = context.MixDatabaseDataAssociation.FirstOrDefault( + m => m.MixDatabaseName == databaseName && m.ParentType == parentType && m.ParentId == parentId && m.Specificulture == culture)?.DataId; if (!string.IsNullOrEmpty(dataId)) { return AdditionalViewModel.Repository.GetSingleModel( @@ -176,7 +176,7 @@ public static RepositoryResponse LoadAdditionalData( else { // Init default data - var getAttrSet = MixAttributeSets.UpdateViewModel.Repository.GetSingleModel( + var getAttrSet = MixDatabases.UpdateViewModel.Repository.GetSingleModel( m => m.Name == databaseName , context, transaction); if (getAttrSet.IsSucceed) @@ -184,8 +184,8 @@ public static RepositoryResponse LoadAdditionalData( AdditionalViewModel result = new AdditionalViewModel() { Specificulture = culture, - AttributeSetId = getAttrSet.Data.Id, - AttributeSetName = getAttrSet.Data.Name, + MixDatabaseId = getAttrSet.Data.Id, + MixDatabaseName = getAttrSet.Data.Name, Status = MixContentStatus.Published, Fields = getAttrSet.Data.Fields, ParentType = parentType, @@ -216,7 +216,7 @@ public static RepositoryResponse LoadAdditionalData( } private static List LoadFileData( - string culture, Lib.ViewModels.MixAttributeSets.ReadViewModel attributeSet, IFormFile file) + string culture, Lib.ViewModels.MixDatabases.ReadViewModel mixDatabase, IFormFile file) { //create a list to hold all the values List excelData = new List(); @@ -242,8 +242,8 @@ private static List LoadFileData( ImportViewModel data = new ImportViewModel() { Id = obj["id"]?.ToString(), - AttributeSetId = attributeSet.Id, - AttributeSetName = attributeSet.Name, + MixDatabaseId = mixDatabase.Id, + MixDatabaseName = mixDatabase.Name, Specificulture = culture, Obj = obj }; @@ -254,17 +254,17 @@ private static List LoadFileData( } } - public static async Task>> FilterByKeywordAsync(string culture, string attributeSetName + public static async Task>> FilterByKeywordAsync(string culture, string mixDatabaseName , RequestPaging request, string keyword , Dictionary queryDictionary = null , MixCmsContext _context = null, IDbContextTransaction _transaction = null) - where TView : ViewModelBase + where TView : ViewModelBase { UnitOfWorkHelper.InitTransaction(_context, _transaction, out MixCmsContext context, out IDbContextTransaction transaction, out bool isRoot); try { - Expression> attrPredicate = - m => m.Specificulture == culture && m.AttributeSetName == attributeSetName + Expression> attrPredicate = + m => m.Specificulture == culture && m.MixDatabaseName == mixDatabaseName && (!request.FromDate.HasValue || (m.CreatedDateTime >= request.FromDate.Value) ) @@ -272,7 +272,7 @@ public static async Task>> FilterByKey || (m.CreatedDateTime <= request.ToDate.Value) ) ; - Expression> valPredicate = null; + Expression> valPredicate = null; RepositoryResponse> result = new RepositoryResponse>() { IsSucceed = true, @@ -284,20 +284,20 @@ public static async Task>> FilterByKey { foreach (var q in queryDictionary) { - if (!string.IsNullOrEmpty(q.Key) && q.Key != "attributeSetId" && q.Key != "attributeSetName" && q.Key != "filterType" && !string.IsNullOrEmpty(q.Value)) + if (!string.IsNullOrEmpty(q.Key) && q.Key != "mixDatabaseId" && q.Key != "mixDatabaseName" && q.Key != "filterType" && !string.IsNullOrEmpty(q.Value)) { if (!string.IsNullOrEmpty(filterType.Value) && filterType.Value == "equal") { - Expression> pre = m => - m.AttributeFieldName == q.Key && m.StringValue == (q.Value.ToString()); + Expression> pre = m => + m.MixDatabaseColumnName == q.Key && m.StringValue == (q.Value.ToString()); valPredicate = valPredicate == null ? pre : valPredicate = valPredicate.AndAlso(pre); } else { - Expression> pre = - m => m.AttributeFieldName == q.Key && + Expression> pre = + m => m.MixDatabaseColumnName == q.Key && (EF.Functions.Like(m.StringValue, $"%{q.Value}%")); valPredicate = valPredicate == null ? pre @@ -313,16 +313,16 @@ public static async Task>> FilterByKey // Loop queries string => predicate if (!string.IsNullOrEmpty(keyword)) { - Expression> pre = m => m.AttributeSetName == attributeSetName && m.Specificulture == culture && m.StringValue.Contains(keyword); + Expression> pre = m => m.MixDatabaseName == mixDatabaseName && m.Specificulture == culture && m.StringValue.Contains(keyword); attrPredicate = attrPredicate.AndAlso(pre); } - var query = context.MixAttributeSetValue.Where(attrPredicate).Select(m => m.DataId).Distinct(); + var query = context.MixDatabaseDataValue.Where(attrPredicate).Select(m => m.DataId).Distinct(); var dataIds = query.ToList(); if (query != null) { - Expression> predicate = m => dataIds.Any(id => m.Id == id); - result = await DefaultRepository.Instance.GetModelListByAsync( + Expression> predicate = m => dataIds.Any(id => m.Id == id); + result = await DefaultRepository.Instance.GetModelListByAsync( predicate, request.OrderBy, request.Direction, request.PageSize, request.PageIndex, null, null, context, transaction); } return result; @@ -341,19 +341,19 @@ public static async Task>> FilterByKey } } - public static async Task>> FilterByKeywordAsync(HttpRequest request, string culture = null, string attributeSetName = null, MixCmsContext _context = null, IDbContextTransaction _transaction = null) - where TView : ViewModelBase + public static async Task>> FilterByKeywordAsync(HttpRequest request, string culture = null, string mixDatabaseName = null, MixCmsContext _context = null, IDbContextTransaction _transaction = null) + where TView : ViewModelBase { UnitOfWorkHelper.InitTransaction(_context, _transaction, out MixCmsContext context, out IDbContextTransaction transaction, out bool isRoot); try { culture = culture ?? MixService.GetConfig("DefaultCulture"); var queryDictionary = request.Query.ToList(); - attributeSetName = attributeSetName ?? request.Query["attributeSetName"].ToString(); + mixDatabaseName = mixDatabaseName ?? request.Query["mixDatabaseName"].ToString().Trim(); var keyword = request.Query["keyword"].ToString(); var filterType = request.Query["filterType"].ToString(); var orderBy = request.Query["orderBy"].ToString(); - int.TryParse(request.Query["attributeSetId"], out int attributeSetId); + int.TryParse(request.Query["mixDatabaseId"], out int mixDatabaseId); bool isDirection = Enum.TryParse(request.Query["direction"], out Heart.Enums.MixHeartEnums.DisplayDirection direction); int.TryParse(request.Query["pageIndex"], out int pageIndex); var isPageSize = int.TryParse(request.Query["pageSize"], out int pageSize); @@ -361,18 +361,18 @@ public static async Task>> FilterByKey bool isToDate = DateTime.TryParse(request.Query["toDate"], out DateTime toDate); bool isStatus = Enum.TryParse(request.Query["status"], out MixContentStatus status); var tasks = new List>>(); - var getfields = await MixAttributeFields.ReadViewModel.Repository.GetModelListByAsync( - m => m.AttributeSetId == attributeSetId || m.AttributeSetName == attributeSetName, context, transaction); - var fields = getfields.IsSucceed ? getfields.Data : new List(); + var getfields = await MixDatabaseColumns.ReadViewModel.Repository.GetModelListByAsync( + m => m.MixDatabaseId == mixDatabaseId || m.MixDatabaseName == mixDatabaseName, context, transaction); + var fields = getfields.IsSucceed ? getfields.Data : new List(); var fieldQueries = !string.IsNullOrEmpty(request.Query["query"]) ? JObject.Parse(request.Query["query"]) : new JObject(); // Data predicate - Expression> predicate = m => m.Specificulture == culture - && (m.AttributeSetName == attributeSetName); + Expression> predicate = m => m.Specificulture == culture + && (m.MixDatabaseName == mixDatabaseName); // val predicate - Expression> attrPredicate = m => m.Specificulture == culture - && (m.AttributeSetName == attributeSetName); + Expression> attrPredicate = m => m.Specificulture == culture + && (m.MixDatabaseName == mixDatabaseName); RepositoryResponse> result = new RepositoryResponse>() { @@ -386,10 +386,10 @@ public static async Task>> FilterByKey // filter by all fields if have keyword if (!string.IsNullOrEmpty(keyword)) { - Expression> pre = null; + Expression> pre = null; foreach (var field in fields) { - Expression> keywordPredicate = m => m.AttributeFieldName == field.Name; + Expression> keywordPredicate = m => m.MixDatabaseColumnName == field.Name; keywordPredicate = keywordPredicate.AndAlsoIf(filterType == "equal", m => m.StringValue == keyword); keywordPredicate = keywordPredicate.AndAlsoIf(filterType == "contain", m => EF.Functions.Like(m.StringValue, $"%{keyword}%")); @@ -403,10 +403,10 @@ public static async Task>> FilterByKey if (fieldQueries != null && fieldQueries.Properties().Count() > 0) // filter by specific field name { var valPredicate = GetFilterValueByFields(fields, fieldQueries, filterType); - attrPredicate.AndAlsoIf(valPredicate != null, valPredicate); + attrPredicate = attrPredicate.AndAlsoIf(valPredicate != null, valPredicate); } - var query = context.MixAttributeSetValue.Where(attrPredicate).Select(m => m.DataId).Distinct(); + var query = context.MixDatabaseDataValue.Where(attrPredicate).Select(m => m.DataId).Distinct(); var dataIds = query.ToList(); predicate = predicate.AndAlsoIf(query != null, m => dataIds.Any(id => m.Id == id)); @@ -414,12 +414,12 @@ public static async Task>> FilterByKey else { predicate = m => m.Specificulture == culture - && (m.AttributeSetId == attributeSetId || m.AttributeSetName == attributeSetName) + && (m.MixDatabaseId == mixDatabaseId || m.MixDatabaseName == mixDatabaseName) && (!isStatus || (m.Status == status)) && (!isFromDate || (m.CreatedDateTime >= fromDate)) && (!isToDate || (m.CreatedDateTime <= toDate)); } - result = await DefaultRepository.Instance.GetModelListByAsync( + result = await DefaultRepository.Instance.GetModelListByAsync( predicate, orderBy, direction, isPageSize ? pageSize : default, isPageSize ? pageIndex : 0, null, null, context, transaction); return result; } @@ -437,9 +437,9 @@ public static async Task>> FilterByKey } } - private static Expression> GetFilterValueByFields(List fields, JObject fieldQueries, string filterType) + private static Expression> GetFilterValueByFields(List fields, JObject fieldQueries, string filterType) { - Expression> valPredicate = null; + Expression> valPredicate = null; foreach (var q in fieldQueries) { if (fields.Any(f => f.Name == q.Key)) @@ -447,7 +447,7 @@ private static Expression> GetFilterValueByFiel string value = q.Value.ToString(); if (!string.IsNullOrEmpty(value)) { - Expression> pre = m => m.AttributeFieldName == q.Key; + Expression> pre = m => m.MixDatabaseColumnName == q.Key; pre = pre.AndAlsoIf(filterType == "equal", m => m.StringValue == (q.Value.ToString())); pre = pre.AndAlsoIf(filterType == "contain", m => EF.Functions.Like(m.StringValue, $"%{q.Value}%")); @@ -460,16 +460,16 @@ private static Expression> GetFilterValueByFiel return valPredicate; } - public static async Task>> FilterByKeywordAsync(string culture, string attributeSetName + public static async Task>> FilterByKeywordAsync(string culture, string mixDatabaseName , string filterType, string fieldName, string keyword , MixCmsContext _context = null, IDbContextTransaction _transaction = null) - where TView : ViewModelBase + where TView : ViewModelBase { UnitOfWorkHelper.InitTransaction(_context, _transaction, out MixCmsContext context, out IDbContextTransaction transaction, out bool isRoot); try { - Expression> attrPredicate = m => m.Specificulture == culture && m.AttributeSetName == attributeSetName; - Expression> valPredicate = null; + Expression> attrPredicate = m => m.Specificulture == culture && m.MixDatabaseName == mixDatabaseName; + Expression> valPredicate = null; RepositoryResponse> result = new RepositoryResponse>() { IsSucceed = true, @@ -477,7 +477,7 @@ public static async Task>> FilterByKeywordAsync> pre = m => m.AttributeFieldName == fieldName && m.StringValue == keyword; + Expression> pre = m => m.MixDatabaseColumnName == fieldName && EF.Functions.Like(m.StringValue, keyword); valPredicate = valPredicate == null ? pre @@ -485,7 +485,7 @@ public static async Task>> FilterByKeywordAsync> pre = m => m.AttributeFieldName == fieldName && m.StringValue.Contains(keyword); + Expression> pre = m => m.MixDatabaseColumnName == fieldName && m.StringValue.Contains(keyword); valPredicate = valPredicate == null ? pre : valPredicate = valPredicate.AndAlso(pre); @@ -495,12 +495,12 @@ public static async Task>> FilterByKeywordAsync m.DataId).Distinct(); + var query = context.MixDatabaseDataValue.Where(attrPredicate).Select(m => m.DataId).Distinct(); var dataIds = query.ToList(); if (query != null) { - Expression> predicate = m => m.Specificulture == culture && dataIds.Any(id => m.Id == id); - result = await DefaultRepository.Instance.GetModelListByAsync( + Expression> predicate = m => m.Specificulture == culture && dataIds.Any(id => m.Id == id); + result = await DefaultRepository.Instance.GetModelListByAsync( predicate, context, transaction); } return result; @@ -520,29 +520,29 @@ public static async Task>> FilterByKeywordAsync>> GetAttributeDataByParent( - string culture, string attributeSetName, + string culture, string mixDatabaseName, string parentId, MixDatabaseParentType parentType, string orderBy, Heart.Enums.MixHeartEnums.DisplayDirection direction, int? pageSize, int? pageIndex, MixCmsContext _context = null, IDbContextTransaction _transaction = null) - where TView : ViewModelBase + where TView : ViewModelBase { UnitOfWorkHelper.InitTransaction(_context, _transaction, out MixCmsContext context, out IDbContextTransaction transaction, out bool isRoot); try { var tasks = new List>>(); - Expression> predicate = m => m.Specificulture == culture - && (m.AttributeSetName == attributeSetName) + Expression> predicate = m => m.Specificulture == culture + && (m.MixDatabaseName == mixDatabaseName) && (m.Status == MixContentStatus.Published) && (string.IsNullOrEmpty(parentId) || (m.ParentId == parentId && m.ParentType == parentType) ); ; - var query = context.MixRelatedAttributeData.Where(predicate).Select(m => m.DataId).Distinct(); + var query = context.MixDatabaseDataAssociation.Where(predicate).Select(m => m.DataId).Distinct(); var dataIds = query.ToList(); - Expression> pre = m => dataIds.Any(id => m.Id == id); - return await DefaultRepository.Instance.GetModelListByAsync( + Expression> pre = m => dataIds.Any(id => m.Id == id); + return await DefaultRepository.Instance.GetModelListByAsync( pre, orderBy, direction, pageSize, pageIndex, null, null, context, transaction); } catch (Exception ex) @@ -647,9 +647,9 @@ public static JObject ParseData(string dataId, string culture, MixCmsContext _co UnitOfWorkHelper.InitTransaction( _context, _transaction, out MixCmsContext context, out IDbContextTransaction transaction, out bool isRoot); - var values = context.MixAttributeSetValue.Where( + var values = context.MixDatabaseDataValue.Where( m => m.DataId == dataId && m.Specificulture == culture - && !string.IsNullOrEmpty(m.AttributeFieldName)); + && !string.IsNullOrEmpty(m.MixDatabaseColumnName)); var properties = values.Select(m => m.ToJProperty(_context, _transaction)); var obj = new JObject( new JProperty("id", dataId), @@ -665,19 +665,19 @@ public static JObject ParseData(string dataId, string culture, MixCmsContext _co return obj; } - public static void CleanCache(this MixAttributeSetData data, MixCmsContext context) + public static void CleanCache(this MixDatabaseData data, MixCmsContext context) { var tasks = new List(); // Get Parent Ids - var relatedModels = context.MixRelatedAttributeData.Where( + var relatedModels = context.MixDatabaseDataAssociation.Where( p => p.DataId == data.Id && p.Specificulture == data.Specificulture) .Select(m => new { navId = m.Id, parentId = m.ParentId }); foreach (var model in relatedModels) { var parentKey = $"_{model.parentId}_{data.Specificulture}"; var navKey = $"_{model.navId}_{data.Specificulture}"; - tasks.Add(MixService.RemoveCacheAsync(typeof(MixAttributeSetData), parentKey)); - tasks.Add(MixService.RemoveCacheAsync(typeof(MixRelatedAttributeData), navKey)); + tasks.Add(MixCacheService.RemoveCacheAsync(typeof(MixDatabaseData), parentKey)); + tasks.Add(MixCacheService.RemoveCacheAsync(typeof(MixDatabaseDataAssociation), navKey)); } Task.WhenAll(tasks); } diff --git a/src/Mix.Cms.Lib/ViewModels/MixAttributeSetDatas/ImportViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDatas/ImportViewModel.cs similarity index 78% rename from src/Mix.Cms.Lib/ViewModels/MixAttributeSetDatas/ImportViewModel.cs rename to src/Mix.Cms.Lib/ViewModels/MixDatabaseDatas/ImportViewModel.cs index 1e56fe68c..1a02a1f1b 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixAttributeSetDatas/ImportViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDatas/ImportViewModel.cs @@ -12,10 +12,10 @@ using System.Linq; using System.Threading.Tasks; -namespace Mix.Cms.Lib.ViewModels.MixAttributeSetDatas +namespace Mix.Cms.Lib.ViewModels.MixDatabaseDatas { public class ImportViewModel - : ViewModelBase + : ViewModelBase { #region Properties @@ -30,11 +30,11 @@ public class ImportViewModel [JsonProperty("cultures")] public List Cultures { get; set; } - [JsonProperty("attributeSetId")] - public int AttributeSetId { get; set; } + [JsonProperty("mixDatabaseId")] + public int MixDatabaseId { get; set; } - [JsonProperty("attributeSetName")] - public string AttributeSetName { get; set; } + [JsonProperty("mixDatabaseName")] + public string MixDatabaseName { get; set; } [JsonProperty("createdBy")] public string CreatedBy { get; set; } @@ -68,16 +68,16 @@ public class ImportViewModel public MixDatabaseParentType ParentType { get; set; } [JsonProperty("relatedData")] - public List RelatedData { get; set; } = new List(); + public List RelatedData { get; set; } = new List(); [JsonIgnore] - public List Values { get; set; } + public List Values { get; set; } [JsonProperty("fields")] - public List Fields { get; set; } + public List Fields { get; set; } [JsonIgnore] - public List RefData { get; set; } = new List(); + public List RefData { get; set; } = new List(); #endregion Views @@ -89,7 +89,7 @@ public ImportViewModel() : base() { } - public ImportViewModel(MixAttributeSetData model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) + public ImportViewModel(MixDatabaseData model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) { } @@ -105,42 +105,42 @@ public override void ExpandView(MixCmsContext _context = null, IDbContextTransac } } - public override MixAttributeSetData ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) + public override MixDatabaseData ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { if (string.IsNullOrEmpty(Id)) { Id = Guid.NewGuid().ToString(); CreatedDateTime = DateTime.UtcNow; - Priority = Repository.Count(m => m.AttributeSetName == AttributeSetName && m.Specificulture == Specificulture, _context, _transaction).Data + 1; + Priority = Repository.Count(m => m.MixDatabaseName == MixDatabaseName && m.Specificulture == Specificulture, _context, _transaction).Data + 1; } - if (string.IsNullOrEmpty(AttributeSetName)) + if (string.IsNullOrEmpty(MixDatabaseName)) { - AttributeSetName = _context.MixAttributeSet.First(m => m.Id == AttributeSetId)?.Name; + MixDatabaseName = _context.MixDatabase.First(m => m.Id == MixDatabaseId)?.Name; } - if (AttributeSetId == 0) + if (MixDatabaseId == 0) { - AttributeSetId = _context.MixAttributeSet.First(m => m.Name == AttributeSetName)?.Id ?? 0; + MixDatabaseId = _context.MixDatabase.First(m => m.Name == MixDatabaseName)?.Id ?? 0; } - Values ??= MixAttributeSetValues.UpdateViewModel + Values ??= MixDatabaseDataValues.UpdateViewModel .Repository.GetModelListBy(a => a.DataId == Id && a.Specificulture == Specificulture , _context, _transaction) .Data.OrderBy(a => a.Priority).ToList(); - Fields ??= MixAttributeFields.UpdateViewModel.Repository.GetModelListBy( - f => f.AttributeSetId == AttributeSetId, + Fields ??= MixDatabaseColumns.UpdateViewModel.Repository.GetModelListBy( + f => f.MixDatabaseId == MixDatabaseId, _context, _transaction).Data; foreach (var field in Fields.OrderBy(f => f.Priority)) { - var val = Values.FirstOrDefault(v => v.AttributeFieldId == field.Id); + var val = Values.FirstOrDefault(v => v.MixDatabaseColumnId == field.Id); if (val == null) { - val = new MixAttributeSetValues.UpdateViewModel( - new MixAttributeSetValue() + val = new MixDatabaseDataValues.UpdateViewModel( + new MixDatabaseDataValue() { - AttributeFieldId = field.Id, - AttributeFieldName = field.Name, + MixDatabaseColumnId = field.Id, + MixDatabaseColumnName = field.Name, } , _context, _transaction) { @@ -157,12 +157,12 @@ public override MixAttributeSetData ParseModel(MixCmsContext _context = null, ID val.CreatedBy = CreatedBy; val.Status = Status; val.Priority = field.Priority; - val.AttributeSetName = AttributeSetName; - if (Obj[val.AttributeFieldName] != null) + val.MixDatabaseName = MixDatabaseName; + if (Obj[val.MixDatabaseColumnName] != null) { if (val.Field.DataType == MixDataType.Reference) { - var arr = Obj[val.AttributeFieldName].Value(); + var arr = Obj[val.MixDatabaseColumnName].Value(); if (arr != null) { foreach (JObject objData in arr) @@ -185,7 +185,7 @@ public override MixAttributeSetData ParseModel(MixCmsContext _context = null, ID RefData.Add(new ImportViewModel() { Specificulture = Specificulture, - AttributeSetId = field.ReferenceId.Value, + MixDatabaseId = field.ReferenceId.Value, Obj = objData["obj"].Value() }); } @@ -194,7 +194,7 @@ public override MixAttributeSetData ParseModel(MixCmsContext _context = null, ID } else { - val.ToModelValue(Obj[val.AttributeFieldName]); + val.ToModelValue(Obj[val.MixDatabaseColumnName], _context, _transaction); } } else @@ -216,17 +216,17 @@ public override async Task> SaveModelAsync(b var result = await base.SaveModelAsync(isSaveSubModels, context, transaction); if (result.IsSucceed && !string.IsNullOrEmpty(ParentId)) { - var getNav = MixRelatedAttributeDatas.UpdateViewModel.Repository.CheckIsExists( + var getNav = MixDatabaseDataAssociations.UpdateViewModel.Repository.CheckIsExists( m => m.DataId == Id && m.ParentId == ParentId && m.ParentType == ParentType && m.Specificulture == Specificulture , context, transaction); if (!getNav) { - var nav = new MixRelatedAttributeDatas.UpdateViewModel() + var nav = new MixDatabaseDataAssociations.UpdateViewModel() { DataId = Id, Specificulture = Specificulture, - AttributeSetId = AttributeSetId, - AttributeSetName = AttributeSetName, + MixDatabaseId = MixDatabaseId, + MixDatabaseName = MixDatabaseName, ParentType = ParentType, ParentId = ParentId, Status = MixContentStatus.Published @@ -272,7 +272,7 @@ public override RepositoryResponse SaveModel(bool isSaveSubMode return result; } - public override async Task> SaveSubModelsAsync(MixAttributeSetData parent, MixCmsContext _context, IDbContextTransaction _transaction) + public override async Task> SaveSubModelsAsync(MixDatabaseData parent, MixCmsContext _context, IDbContextTransaction _transaction) { var result = new RepositoryResponse() { IsSucceed = true }; @@ -298,14 +298,14 @@ public override async Task> SaveSubModelsAsync(MixAttri return result; } - private async Task> SaveValues(MixAttributeSetData parent, MixCmsContext context, IDbContextTransaction transaction) + private async Task> SaveValues(MixDatabaseData parent, MixCmsContext context, IDbContextTransaction transaction) { var result = new RepositoryResponse() { IsSucceed = true }; foreach (var item in Values) { if (result.IsSucceed) { - if (Fields.Any(f => f.Id == item.AttributeFieldId)) + if (Fields.Any(f => f.Id == item.MixDatabaseColumnId)) { item.DataId = parent.Id; item.Specificulture = parent.Specificulture; @@ -328,7 +328,7 @@ private async Task> SaveValues(MixAttributeSetData pare return result; } - private async Task> SaveRefDataAsync(MixAttributeSetData parent, MixCmsContext context, IDbContextTransaction transaction) + private async Task> SaveRefDataAsync(MixDatabaseData parent, MixCmsContext context, IDbContextTransaction transaction) { var result = new RepositoryResponse() { IsSucceed = true }; foreach (var item in RefData) @@ -342,13 +342,13 @@ private async Task> SaveRefDataAsync(MixAttributeSetDat var saveRef = await item.SaveModelAsync(true, context, transaction); if (saveRef.IsSucceed) { - RelatedData.Add(new MixRelatedAttributeDatas.UpdateViewModel() + RelatedData.Add(new MixDatabaseDataAssociations.UpdateViewModel() { DataId = saveRef.Data.Id, ParentId = Id, ParentType = MixDatabaseParentType.Set, - AttributeSetId = saveRef.Data.AttributeSetId, - AttributeSetName = saveRef.Data.AttributeSetName, + MixDatabaseId = saveRef.Data.MixDatabaseId, + MixDatabaseName = saveRef.Data.MixDatabaseName, CreatedDateTime = DateTime.UtcNow, Specificulture = Specificulture }); @@ -369,13 +369,13 @@ private async Task> SaveRefDataAsync(MixAttributeSetDat #region Expands - public static async Task> SaveObjectAsync(JObject data, string attributeSetName) + public static async Task> SaveObjectAsync(JObject data, string mixDatabaseName) { var vm = new ImportViewModel() { Id = data["id"]?.Value(), Specificulture = data["specificulture"]?.Value(), - AttributeSetName = attributeSetName, + MixDatabaseName = mixDatabaseName, Obj = data }; return await vm.SaveModelAsync(); diff --git a/src/Mix.Cms.Lib/ViewModels/MixAttributeSetDatas/NavigationViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDatas/NavigationViewModel.cs similarity index 78% rename from src/Mix.Cms.Lib/ViewModels/MixAttributeSetDatas/NavigationViewModel.cs rename to src/Mix.Cms.Lib/ViewModels/MixDatabaseDatas/NavigationViewModel.cs index 9f8748543..e3b221c6a 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixAttributeSetDatas/NavigationViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDatas/NavigationViewModel.cs @@ -13,10 +13,10 @@ using System.Linq; using System.Threading.Tasks; -namespace Mix.Cms.Lib.ViewModels.MixAttributeSetDatas +namespace Mix.Cms.Lib.ViewModels.MixDatabaseDatas { public class NavigationViewModel - : ViewModelBase + : ViewModelBase { #region Properties @@ -31,11 +31,11 @@ public class NavigationViewModel [JsonProperty("cultures")] public List Cultures { get; set; } - [JsonProperty("attributeSetId")] - public int AttributeSetId { get; set; } + [JsonProperty("mixDatabaseId")] + public int MixDatabaseId { get; set; } - [JsonProperty("attributeSetName")] - public string AttributeSetName { get; set; } + [JsonProperty("mixDatabaseName")] + public string MixDatabaseName { get; set; } [JsonProperty("createdBy")] public string CreatedBy { get; set; } @@ -59,17 +59,19 @@ public class NavigationViewModel #region Views - public List Values { get; set; } + public List Values { get; set; } - public List Fields { get; set; } + public List Fields { get; set; } [JsonProperty("data")] public JObject Obj { get; set; } [JsonProperty("nav")] - public MixNavigation Nav { - get { - if (AttributeSetName == MixConstants.AttributeSetName.NAVIGATION && Obj != null) + public MixNavigation Nav + { + get + { + if (MixDatabaseName == MixConstants.MixDatabaseName.NAVIGATION && Obj != null) { return Obj.ToObject(); } @@ -87,7 +89,7 @@ public NavigationViewModel() : base() { } - public NavigationViewModel(MixAttributeSetData model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) + public NavigationViewModel(MixDatabaseData model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) { } @@ -105,7 +107,7 @@ public override void ExpandView(MixCmsContext _context = null, IDbContextTransac Obj = Helper.ParseData(Id, Specificulture, context, transaction); } - Obj.LoadAllReferenceData(Id, AttributeSetId, Specificulture, context, transaction); + Obj.LoadAllReferenceData(Id, MixDatabaseId, Specificulture, context, transaction); if (isRoot) { @@ -116,7 +118,7 @@ public override void ExpandView(MixCmsContext _context = null, IDbContextTransac #region Async - public override async Task> SaveSubModelsAsync(MixAttributeSetData parent, MixCmsContext _context, IDbContextTransaction _transaction) + public override async Task> SaveSubModelsAsync(MixDatabaseData parent, MixCmsContext _context, IDbContextTransaction _transaction) { var result = new RepositoryResponse() { IsSucceed = true }; if (result.IsSucceed) @@ -125,7 +127,7 @@ public override async Task> SaveSubModelsAsync(MixAttri { if (result.IsSucceed) { - if (Fields.Any(f => f.Id == item.AttributeFieldId)) + if (Fields.Any(f => f.Id == item.MixDatabaseColumnId)) { item.Priority = item.Field.Priority; item.DataId = parent.Id; diff --git a/src/Mix.Cms.Lib/ViewModels/MixAttributeSetDatas/ReadMvcViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDatas/ReadMvcViewModel.cs similarity index 79% rename from src/Mix.Cms.Lib/ViewModels/MixAttributeSetDatas/ReadMvcViewModel.cs rename to src/Mix.Cms.Lib/ViewModels/MixDatabaseDatas/ReadMvcViewModel.cs index 08d046ee3..542c10188 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixAttributeSetDatas/ReadMvcViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDatas/ReadMvcViewModel.cs @@ -2,6 +2,7 @@ using Mix.Cms.Lib.Constants; using Mix.Cms.Lib.Enums; using Mix.Cms.Lib.Extensions; +using Mix.Cms.Lib.Helpers; using Mix.Cms.Lib.Models.Cms; using Mix.Cms.Lib.Services; using Mix.Common.Helper; @@ -11,10 +12,10 @@ using System; using System.Collections.Generic; -namespace Mix.Cms.Lib.ViewModels.MixAttributeSetDatas +namespace Mix.Cms.Lib.ViewModels.MixDatabaseDatas { public class ReadMvcViewModel - : ViewModelBase + : ViewModelBase { #region Properties @@ -29,11 +30,11 @@ public class ReadMvcViewModel [JsonProperty("cultures")] public List Cultures { get; set; } - [JsonProperty("attributeSetId")] - public int AttributeSetId { get; set; } + [JsonProperty("mixDatabaseId")] + public int MixDatabaseId { get; set; } - [JsonProperty("attributeSetName")] - public string AttributeSetName { get; set; } + [JsonProperty("mixDatabaseName")] + public string MixDatabaseName { get; set; } [JsonProperty("createdBy")] public string CreatedBy { get; set; } @@ -58,20 +59,22 @@ public class ReadMvcViewModel #region Views [JsonProperty("values")] - public List Values { get; set; } + public List Values { get; set; } [JsonProperty("obj")] public JObject Obj { get; set; } [JsonProperty("previewUrl")] - public string PreviewUrl { + public string PreviewUrl + { get => !string.IsNullOrEmpty(Id) && HasValue("seo_url") - ? $"{MixService.GetConfig(MixAppSettingKeywords.Domain)}/data/{Specificulture}/{AttributeSetName}/{Property("seo_url")}" + ? $"{MixService.GetConfig(MixAppSettingKeywords.Domain)}/data/{Specificulture}/{MixDatabaseName}/{Property("seo_url")}" : null; } [JsonProperty("detailApiUrl")] - public string DetailApiUrl { + public string DetailApiUrl + { get => !string.IsNullOrEmpty(Id) ? $"{MixService.GetConfig(MixAppSettingKeywords.Domain)}/api/v1/rest/{Specificulture}/attribute-set-data/mvc/{Id}" : null; @@ -90,7 +93,7 @@ public ReadMvcViewModel() : base() { } - public ReadMvcViewModel(MixAttributeSetData model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) + public ReadMvcViewModel(MixDatabaseData model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) { } @@ -109,7 +112,7 @@ public override void ExpandView(MixCmsContext _context = null, IDbContextTransac Obj = Helper.ParseData(Id, Specificulture, context, transaction); } - Obj.LoadAllReferenceData(Id, AttributeSetId, Specificulture, context, transaction); + Obj.LoadAllReferenceData(Id, MixDatabaseId, Specificulture, context, transaction); if (isRoot) { diff --git a/src/Mix.Cms.Lib/ViewModels/MixAttributeSetDatas/ReadViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDatas/ReadViewModel.cs similarity index 68% rename from src/Mix.Cms.Lib/ViewModels/MixAttributeSetDatas/ReadViewModel.cs rename to src/Mix.Cms.Lib/ViewModels/MixDatabaseDatas/ReadViewModel.cs index 394ebd3a0..0b6e0dfd3 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixAttributeSetDatas/ReadViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDatas/ReadViewModel.cs @@ -7,10 +7,10 @@ using System.Collections.Generic; using System.Linq; -namespace Mix.Cms.Lib.ViewModels.MixAttributeSetDatas +namespace Mix.Cms.Lib.ViewModels.MixDatabaseDatas { public class ReadViewModel - : ViewModelBase + : ViewModelBase { #region Properties @@ -25,11 +25,11 @@ public class ReadViewModel [JsonProperty("cultures")] public List Cultures { get; set; } - [JsonProperty("attributeSetId")] - public int AttributeSetId { get; set; } + [JsonProperty("mixDatabaseId")] + public int MixDatabaseId { get; set; } - [JsonProperty("attributeSetName")] - public string AttributeSetName { get; set; } + [JsonProperty("mixDatabaseName")] + public string MixDatabaseName { get; set; } [JsonProperty("createdBy")] public string CreatedBy { get; set; } @@ -54,10 +54,10 @@ public class ReadViewModel #region Views [JsonProperty("values")] - public List Values { get; set; } + public List Values { get; set; } [JsonProperty("fields")] - public List Fields { get; set; } + public List Fields { get; set; } #endregion Views @@ -69,7 +69,7 @@ public ReadViewModel() : base() { } - public ReadViewModel(MixAttributeSetData model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) + public ReadViewModel(MixDatabaseData model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) { } @@ -79,7 +79,7 @@ public ReadViewModel(MixAttributeSetData model, MixCmsContext _context = null, I public override void ExpandView(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { - var getValues = MixAttributeSetValues.ReadViewModel + var getValues = MixDatabaseDataValues.ReadViewModel .Repository.GetModelListBy(a => a.DataId == Id && a.Specificulture == Specificulture, _context, _transaction); if (getValues.IsSucceed) { @@ -90,24 +90,24 @@ public override void ExpandView(MixCmsContext _context = null, IDbContextTransac Console.WriteLine(getValues.Exception); } - Fields = MixAttributeFields.ReadViewModel.Repository.GetModelListBy(f => f.AttributeSetId == AttributeSetId, _context, _transaction).Data; + Fields = MixDatabaseColumns.ReadViewModel.Repository.GetModelListBy(f => f.MixDatabaseId == MixDatabaseId, _context, _transaction).Data; foreach (var field in Fields.OrderBy(f => f.Priority)) { - var val = Values.FirstOrDefault(v => v.AttributeFieldId == field.Id); + var val = Values.FirstOrDefault(v => v.MixDatabaseColumnId == field.Id); if (val == null) { - val = new MixAttributeSetValues.ReadViewModel( - new MixAttributeSetValue() { AttributeFieldId = field.Id } + val = new MixDatabaseDataValues.ReadViewModel( + new MixDatabaseDataValue() { MixDatabaseColumnId = field.Id } , _context, _transaction) { Field = field, - AttributeFieldName = field.Name, + MixDatabaseColumnName = field.Name, StringValue = field.DefaultValue, Priority = field.Priority }; Values.Add(val); } - val.AttributeSetName = AttributeSetName; + val.MixDatabaseName = MixDatabaseName; val.Priority = field.Priority; val.Field = field; }; diff --git a/src/Mix.Cms.Lib/ViewModels/MixAttributeSetDatas/UpdateViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDatas/UpdateViewModel.cs similarity index 71% rename from src/Mix.Cms.Lib/ViewModels/MixAttributeSetDatas/UpdateViewModel.cs rename to src/Mix.Cms.Lib/ViewModels/MixDatabaseDatas/UpdateViewModel.cs index 7eb67738b..0081df081 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixAttributeSetDatas/UpdateViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixDatabaseDatas/UpdateViewModel.cs @@ -13,10 +13,10 @@ using System.Linq; using System.Threading.Tasks; -namespace Mix.Cms.Lib.ViewModels.MixAttributeSetDatas +namespace Mix.Cms.Lib.ViewModels.MixDatabaseDatas { public class UpdateViewModel - : ViewModelBase + : ViewModelBase { #region Properties @@ -31,11 +31,11 @@ public class UpdateViewModel [JsonProperty("cultures")] public List Cultures { get; set; } - [JsonProperty("attributeSetId")] - public int AttributeSetId { get; set; } + [JsonProperty("mixDatabaseId")] + public int MixDatabaseId { get; set; } - [JsonProperty("attributeSetName")] - public string AttributeSetName { get; set; } + [JsonProperty("mixDatabaseName")] + public string MixDatabaseName { get; set; } [JsonProperty("createdBy")] public string CreatedBy { get; set; } @@ -60,16 +60,16 @@ public class UpdateViewModel #region Views [JsonProperty("relatedData")] - public List RelatedData { get; set; } = new List(); + public List RelatedData { get; set; } = new List(); [JsonProperty("values")] - public List Values { get; set; } + public List Values { get; set; } [JsonProperty("fields")] - public List Fields { get; set; } + public List Fields { get; set; } [JsonProperty("dataNavs")] - public List DataNavs { get; set; } + public List DataNavs { get; set; } [JsonProperty("data")] public JObject Data { get; set; } @@ -90,7 +90,7 @@ public UpdateViewModel() : base() { } - public UpdateViewModel(MixAttributeSetData model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) + public UpdateViewModel(MixDatabaseData model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) { } @@ -105,24 +105,24 @@ public override void ExpandView(MixCmsContext _context = null, IDbContextTransac Status = Status == default ? MixService.GetEnumConfig(MixAppSettingKeywords.DefaultContentStatus) : Status; } // Related Datas - DataNavs = MixRelatedAttributeDatas.UpdateViewModel.Repository.GetModelListBy( + DataNavs = MixDatabaseDataAssociations.UpdateViewModel.Repository.GetModelListBy( n => n.ParentId == Id && n.ParentType == MixDatabaseParentType.Set && n.Specificulture == Specificulture, _context, _transaction).Data; - Values = MixAttributeSetValues.UpdateViewModel + Values = MixDatabaseDataValues.UpdateViewModel .Repository.GetModelListBy(a => a.DataId == Id && a.Specificulture == Specificulture, _context, _transaction).Data.OrderBy(a => a.Priority).ToList(); - Fields = MixAttributeFields.UpdateViewModel.Repository.GetModelListBy(f => (f.AttributeSetId == AttributeSetId || f.AttributeSetName == AttributeSetName), _context, _transaction).Data; + Fields = MixDatabaseColumns.UpdateViewModel.Repository.GetModelListBy(f => (f.MixDatabaseId == MixDatabaseId || f.MixDatabaseName == MixDatabaseName), _context, _transaction).Data; foreach (var field in Fields.OrderBy(f => f.Priority)) { - var val = Values.FirstOrDefault(v => v.AttributeFieldId == field.Id); + var val = Values.FirstOrDefault(v => v.MixDatabaseColumnId == field.Id); if (val == null) { - val = new MixAttributeSetValues.UpdateViewModel( - new MixAttributeSetValue() { AttributeFieldId = field.Id } + val = new MixDatabaseDataValues.UpdateViewModel( + new MixDatabaseDataValue() { MixDatabaseColumnId = field.Id } , _context, _transaction) { Field = field, - AttributeFieldName = field.Name, + MixDatabaseColumnName = field.Name, StringValue = field.DefaultValue, Priority = field.Priority }; @@ -130,27 +130,27 @@ public override void ExpandView(MixCmsContext _context = null, IDbContextTransac } val.CreatedBy = CreatedBy; val.ModifiedBy = ModifiedBy; - val.AttributeSetName = AttributeSetName; + val.MixDatabaseName = MixDatabaseName; val.Priority = field.Priority; val.Field = field; val.DataType = val.Field.DataType; - val.AttributeFieldName = val.AttributeFieldName ?? val.Field?.Name; + val.MixDatabaseColumnName = val.MixDatabaseColumnName ?? val.Field?.Name; } } - public override MixAttributeSetData ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) + public override MixDatabaseData ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { if (string.IsNullOrEmpty(Id)) { Id = Guid.NewGuid().ToString(); CreatedDateTime = DateTime.UtcNow; - if (AttributeSetId == 0 && !string.IsNullOrEmpty(AttributeSetName)) + if (MixDatabaseId == 0 && !string.IsNullOrEmpty(MixDatabaseName)) { - AttributeSetId = MixAttributeSets.ReadViewModel.Repository.GetSingleModel(m => m.Name == AttributeSetName, _context, _transaction).Data?.Id ?? 0; + MixDatabaseId = MixDatabases.ReadViewModel.Repository.GetSingleModel(m => m.Name == MixDatabaseName, _context, _transaction).Data?.Id ?? 0; } - else if (AttributeSetId > 0 && string.IsNullOrEmpty(AttributeSetName)) + else if (MixDatabaseId > 0 && string.IsNullOrEmpty(MixDatabaseName)) { - AttributeSetName = MixAttributeSets.ReadViewModel.Repository.GetSingleModel(m => m.Name == AttributeSetName, _context, _transaction).Data?.Name; + MixDatabaseName = MixDatabases.ReadViewModel.Repository.GetSingleModel(m => m.Name == MixDatabaseName, _context, _transaction).Data?.Name; } } return base.ParseModel(_context, _transaction); @@ -165,12 +165,12 @@ public override async Task> SaveModelAsync(b // if save current data success and there is related parent data if (result.IsSucceed && !string.IsNullOrEmpty(ParentId)) { - MixRelatedAttributeDatas.UpdateViewModel nav = new MixRelatedAttributeDatas.UpdateViewModel() + MixDatabaseDataAssociations.UpdateViewModel nav = new MixDatabaseDataAssociations.UpdateViewModel() { DataId = result.Data.Id, Specificulture = Specificulture, - AttributeSetId = result.Data.AttributeSetId, - AttributeSetName = result.Data.AttributeSetName, + MixDatabaseId = result.Data.MixDatabaseId, + MixDatabaseName = result.Data.MixDatabaseName, ParentId = ParentId, ParentType = ParentType }; @@ -195,13 +195,13 @@ public override async Task> SaveModelAsync(b } } - public override async Task> SaveSubModelsAsync(MixAttributeSetData parent, MixCmsContext _context, IDbContextTransaction _transaction) + public override async Task> SaveSubModelsAsync(MixDatabaseData parent, MixCmsContext _context, IDbContextTransaction _transaction) { var result = new RepositoryResponse() { IsSucceed = true }; if (result.IsSucceed) { // TODO: Double check logic code - var additionalSet = _context.MixAttributeSet.FirstOrDefault(m => m.Name == "sys_additional_field"); + var additionalSet = _context.MixDatabase.FirstOrDefault(m => m.Name == "sys_additional_field"); foreach (var item in Values) { if (item.DataId != parent.Id) @@ -213,15 +213,15 @@ public override async Task> SaveSubModelsAsync(MixAttri if (additionalSet != null && item.Field != null && item.Field.Id == 0) { // Add field to additional_field set - item.Field.AttributeSetId = additionalSet.Id; - item.Field.AttributeSetName = additionalSet.Name; + item.Field.MixDatabaseId = additionalSet.Id; + item.Field.MixDatabaseName = additionalSet.Name; var saveField = await item.Field.SaveModelAsync(false, _context, _transaction); ViewModelHelper.HandleResult(saveField, ref result); } if (result.IsSucceed) { - item.AttributeFieldId = item.Field?.Id ?? item.AttributeFieldId; - item.AttributeFieldName = item.Field?.Name ?? item.AttributeFieldName; + item.MixDatabaseColumnId = item.Field?.Id ?? item.MixDatabaseColumnId; + item.MixDatabaseColumnName = item.Field?.Name ?? item.MixDatabaseColumnName; item.Priority = item.Field?.Priority ?? item.Priority; item.DataId = parent.Id; item.Specificulture = parent.Specificulture; @@ -239,7 +239,7 @@ public override async Task> SaveSubModelsAsync(MixAttri return result; } - public override RepositoryResponse SaveSubModels(MixAttributeSetData parent, MixCmsContext _context, IDbContextTransaction _transaction) + public override RepositoryResponse SaveSubModels(MixDatabaseData parent, MixCmsContext _context, IDbContextTransaction _transaction) { var result = new RepositoryResponse() { IsSucceed = true }; if (result.IsSucceed) @@ -248,7 +248,7 @@ public override RepositoryResponse SaveSubModels(MixAttributeSetData paren { if (result.IsSucceed) { - item.Field = Fields.Find(f => f.Name == item.AttributeFieldName); + item.Field = Fields.Find(f => f.Name == item.MixDatabaseColumnName); item.Priority = item.Field?.Priority ?? item.Priority; item.DataId = parent.Id; item.Specificulture = parent.Specificulture; @@ -268,7 +268,7 @@ public override RepositoryResponse SaveSubModels(MixAttributeSetData paren #region Expand - private async Task> SaveRelatedDataAsync(MixAttributeSetData parent, MixCmsContext context, IDbContextTransaction transaction) + private async Task> SaveRelatedDataAsync(MixDatabaseData parent, MixCmsContext context, IDbContextTransaction transaction) { var result = new RepositoryResponse() { IsSucceed = true }; @@ -278,12 +278,12 @@ private async Task> SaveRelatedDataAsync(MixAttributeSe { if (string.IsNullOrEmpty(item.ParentId) && item.ParentType == MixDatabaseParentType.Set) { - var set = context.MixAttributeSet.First(s => s.Name == item.ParentName); + var set = context.MixDatabase.First(s => s.Name == item.ParentName); item.ParentId = set.Id.ToString(); } item.Specificulture = Specificulture; - item.AttributeSetId = parent.AttributeSetId; - item.AttributeSetName = parent.AttributeSetName; + item.MixDatabaseId = parent.MixDatabaseId; + item.MixDatabaseName = parent.MixDatabaseName; item.Id = parent.Id; item.CreatedDateTime = DateTime.UtcNow; var saveResult = await item.SaveModelAsync(true, context, transaction); @@ -298,31 +298,31 @@ private async Task> SaveRelatedDataAsync(MixAttributeSe return result; } - private JProperty ParseValue(MixAttributeSetValues.UpdateViewModel item) + private JProperty ParseValue(MixDatabaseDataValues.UpdateViewModel item) { switch (item.DataType) { case MixDataType.DateTime: - return new JProperty(item.AttributeFieldName, item.DateTimeValue); + return new JProperty(item.MixDatabaseColumnName, item.DateTimeValue); case MixDataType.Date: - return (new JProperty(item.AttributeFieldName, item.DateTimeValue)); + return (new JProperty(item.MixDatabaseColumnName, item.DateTimeValue)); case MixDataType.Time: - return (new JProperty(item.AttributeFieldName, item.DateTimeValue)); + return (new JProperty(item.MixDatabaseColumnName, item.DateTimeValue)); case MixDataType.Double: - return (new JProperty(item.AttributeFieldName, item.DoubleValue)); + return (new JProperty(item.MixDatabaseColumnName, item.DoubleValue)); case MixDataType.Boolean: - return (new JProperty(item.AttributeFieldName, item.BooleanValue)); + return (new JProperty(item.MixDatabaseColumnName, item.BooleanValue)); case MixDataType.Integer: - return (new JProperty(item.AttributeFieldName, item.IntegerValue)); + return (new JProperty(item.MixDatabaseColumnName, item.IntegerValue)); case MixDataType.Reference: //string url = $"/api/v1/odata/en-us/related-attribute-set-data/mobile/parent/set/{Id}/{item.Field.ReferenceId}"; - return (new JProperty(item.AttributeFieldName, new JArray())); + return (new JProperty(item.MixDatabaseColumnName, new JArray())); case MixDataType.Custom: case MixDataType.Duration: @@ -342,7 +342,7 @@ private JProperty ParseValue(MixAttributeSetValues.UpdateViewModel item) case MixDataType.VideoYoutube: case MixDataType.TuiEditor: default: - return (new JProperty(item.AttributeFieldName, item.StringValue)); + return (new JProperty(item.MixDatabaseColumnName, item.StringValue)); } } diff --git a/src/Mix.Cms.Lib/ViewModels/MixAttributeSets/DeleteViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixDatabases/DeleteViewModel.cs similarity index 56% rename from src/Mix.Cms.Lib/ViewModels/MixAttributeSets/DeleteViewModel.cs rename to src/Mix.Cms.Lib/ViewModels/MixDatabases/DeleteViewModel.cs index ef034adec..44c31ee99 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixAttributeSets/DeleteViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixDatabases/DeleteViewModel.cs @@ -5,10 +5,10 @@ using Mix.Domain.Data.ViewModels; using Newtonsoft.Json; -namespace Mix.Cms.Lib.ViewModels.MixAttributeSets +namespace Mix.Cms.Lib.ViewModels.MixDatabases { public class DeleteViewModel - : ViewModelBase + : ViewModelBase { #region Properties @@ -30,7 +30,7 @@ public DeleteViewModel() : base() { } - public DeleteViewModel(MixAttributeSet model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) + public DeleteViewModel(MixDatabase model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) { } @@ -41,11 +41,11 @@ public DeleteViewModel(MixAttributeSet model, MixCmsContext _context = null, IDb public override RepositoryResponse RemoveRelatedModels(DeleteViewModel view, MixCmsContext _context = null, IDbContextTransaction _transaction = null) { var result = new RepositoryResponse() { IsSucceed = true }; - var removeData = MixAttributeSetDatas.DeleteViewModel.Repository.RemoveListModel(false, f => f.AttributeSetId == Id, _context, _transaction); + var removeData = MixDatabaseDatas.DeleteViewModel.Repository.RemoveListModel(false, f => f.MixDatabaseId == Id, _context, _transaction); ViewModelHelper.HandleResult(removeData, ref result); if (result.IsSucceed) { - var removeFields = MixAttributeFields.DeleteViewModel.Repository.RemoveListModel(false, f => f.AttributeSetId == Id, _context, _transaction); + var removeFields = MixDatabaseColumns.DeleteViewModel.Repository.RemoveListModel(false, f => f.MixDatabaseId == Id, _context, _transaction); ViewModelHelper.HandleResult(removeFields, ref result); } return result; @@ -54,22 +54,14 @@ public override RepositoryResponse RemoveRelatedModels(DeleteViewModel vie public override async System.Threading.Tasks.Task> RemoveRelatedModelsAsync(DeleteViewModel view, MixCmsContext _context = null, IDbContextTransaction _transaction = null) { var result = new RepositoryResponse() { IsSucceed = true }; - var removeData = await MixAttributeSetDatas.DeleteViewModel.Repository.RemoveListModelAsync(false, f => f.AttributeSetId == Id, _context, _transaction); + var removeData = await MixDatabaseDatas.DeleteViewModel.Repository.RemoveListModelAsync(false, f => f.MixDatabaseId == Id, _context, _transaction); ViewModelHelper.HandleResult(removeData, ref result); if (result.IsSucceed) { - var removeFields = await MixAttributeFields.DeleteViewModel.Repository.RemoveListModelAsync( - false, f => f.AttributeSetId == Id || f.ReferenceId == Id, _context, _transaction); + var removeFields = await MixDatabaseColumns.DeleteViewModel.Repository.RemoveListModelAsync( + false, f => f.MixDatabaseId == Id || f.ReferenceId == Id, _context, _transaction); ViewModelHelper.HandleResult(removeFields, ref result); } - if (result.IsSucceed) - { - var removeRelated = await MixRelatedAttributeSets.DeleteViewModel.Repository.RemoveListModelAsync(false, - f => f.Id == Id || (f.AttributeSetId == Id && f.ParentType == MixDatabaseType.Service) - , _context, _transaction); - ViewModelHelper.HandleResult(removeRelated, ref result); - } - return result; } diff --git a/src/Mix.Cms.Lib/ViewModels/MixAttributeSets/Helper.cs b/src/Mix.Cms.Lib/ViewModels/MixDatabases/Helper.cs similarity index 97% rename from src/Mix.Cms.Lib/ViewModels/MixAttributeSets/Helper.cs rename to src/Mix.Cms.Lib/ViewModels/MixDatabases/Helper.cs index b5531460b..8a41bd84e 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixAttributeSets/Helper.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixDatabases/Helper.cs @@ -1,4 +1,4 @@ -namespace Mix.Cms.Lib.ViewModels.MixAttributeSets +namespace Mix.Cms.Lib.ViewModels.MixDatabases { public class Helper { diff --git a/src/Mix.Cms.Lib/ViewModels/MixAttributeSets/ImportViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixDatabases/ImportViewModel.cs similarity index 75% rename from src/Mix.Cms.Lib/ViewModels/MixAttributeSets/ImportViewModel.cs rename to src/Mix.Cms.Lib/ViewModels/MixDatabases/ImportViewModel.cs index d9f23c717..610140503 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixAttributeSets/ImportViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixDatabases/ImportViewModel.cs @@ -9,10 +9,10 @@ using System.Linq; using System.Threading.Tasks; -namespace Mix.Cms.Lib.ViewModels.MixAttributeSets +namespace Mix.Cms.Lib.ViewModels.MixDatabases { public class ImportViewModel - : ViewModelBase + : ViewModelBase { #region Properties @@ -74,11 +74,11 @@ public class ImportViewModel #region Views [JsonProperty("fields")] - public List Fields { get; set; } + public List Fields { get; set; } [JsonIgnore] [JsonProperty("data")] - public List Data { get; set; } + public List Data { get; set; } [JsonProperty("isExportData")] public bool IsExportData { get; set; } @@ -93,7 +93,7 @@ public ImportViewModel() : base() { } - public ImportViewModel(MixAttributeSet model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) + public ImportViewModel(MixDatabase model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) { } @@ -103,11 +103,11 @@ public ImportViewModel(MixAttributeSet model, MixCmsContext _context = null, IDb public override void ExpandView(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { - //Fields = MixAttributeFields.UpdateViewModel.Repository.GetModelListBy(a => a.AttributeSetId == Id, _context, _transaction).Data?.OrderBy(a => a.Priority).ToList(); - //Data = MixAttributeSetDatas.UpdateViewModel.Repository.GetModelListBy(a => a.AttributeSetId == Id, _context, _transaction).Data?.OrderBy(a => a.Priority).ToList(); + //Fields = MixDatabaseColumns.UpdateViewModel.Repository.GetModelListBy(a => a.MixDatabaseId == Id, _context, _transaction).Data?.OrderBy(a => a.Priority).ToList(); + //Data = MixDatabaseDatas.UpdateViewModel.Repository.GetModelListBy(a => a.MixDatabaseId == Id, _context, _transaction).Data?.OrderBy(a => a.Priority).ToList(); } - public override MixAttributeSet ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) + public override MixDatabase ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { if (Id == 0) { @@ -122,7 +122,7 @@ public override void Validate(MixCmsContext _context, IDbContextTransaction _tra base.Validate(_context, _transaction); if (IsValid) { - if (_context.MixAttributeSet.Any(s => s.Name == Name && s.Id != Id)) + if (_context.MixDatabase.Any(s => s.Name == Name && s.Id != Id)) { IsValid = false; Errors.Add($"{Name} is Existed"); @@ -130,7 +130,7 @@ public override void Validate(MixCmsContext _context, IDbContextTransaction _tra } } - public override async Task> SaveSubModelsAsync(MixAttributeSet parent, MixCmsContext _context, IDbContextTransaction _transaction) + public override async Task> SaveSubModelsAsync(MixDatabase parent, MixCmsContext _context, IDbContextTransaction _transaction) { var result = new RepositoryResponse() { IsSucceed = true }; if (result.IsSucceed) @@ -139,8 +139,8 @@ public override async Task> SaveSubModelsAsync(MixAttri { if (result.IsSucceed) { - item.AttributeSetName = parent.Name; - item.AttributeSetId = parent.Id; + item.MixDatabaseName = parent.Name; + item.MixDatabaseId = parent.Id; var saveResult = await item.SaveModelAsync(false, _context, _transaction); ViewModelHelper.HandleResult(saveResult, ref result); } @@ -153,7 +153,7 @@ public override async Task> SaveSubModelsAsync(MixAttri return result; } - public override RepositoryResponse SaveSubModels(MixAttributeSet parent, MixCmsContext _context, IDbContextTransaction _transaction) + public override RepositoryResponse SaveSubModels(MixDatabase parent, MixCmsContext _context, IDbContextTransaction _transaction) { var result = new RepositoryResponse() { IsSucceed = true }; if (result.IsSucceed) @@ -162,8 +162,8 @@ public override RepositoryResponse SaveSubModels(MixAttributeSet parent, M { if (result.IsSucceed) { - item.AttributeSetName = parent.Name; - item.AttributeSetId = parent.Id; + item.MixDatabaseName = parent.Name; + item.MixDatabaseId = parent.Id; var saveResult = item.SaveModel(false, _context, _transaction); ViewModelHelper.HandleResult(saveResult, ref result); } diff --git a/src/Mix.Cms.Lib/ViewModels/MixAttributeSets/ReadMvcViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixDatabases/ReadMvcViewModel.cs similarity index 80% rename from src/Mix.Cms.Lib/ViewModels/MixAttributeSets/ReadMvcViewModel.cs rename to src/Mix.Cms.Lib/ViewModels/MixDatabases/ReadMvcViewModel.cs index 74729634c..ff62da85d 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixAttributeSets/ReadMvcViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixDatabases/ReadMvcViewModel.cs @@ -10,10 +10,10 @@ using System.Collections.Generic; using System.Linq; -namespace Mix.Cms.Lib.ViewModels.MixAttributeSets +namespace Mix.Cms.Lib.ViewModels.MixDatabases { public class ReadMvcViewModel - : ViewModelBase + : ViewModelBase { #region Properties @@ -74,10 +74,10 @@ public class ReadMvcViewModel #region Views - public PaginationModel Data { get; set; } + public PaginationModel Data { get; set; } [JsonProperty("fields")] - public List Fields { get; set; } + public List Fields { get; set; } #endregion Views @@ -89,7 +89,7 @@ public ReadMvcViewModel() : base() { } - public ReadMvcViewModel(MixAttributeSet model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) + public ReadMvcViewModel(MixDatabase model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) { } @@ -99,8 +99,8 @@ public ReadMvcViewModel(MixAttributeSet model, MixCmsContext _context = null, ID public override void ExpandView(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { - Fields = Fields ?? MixAttributeFields.UpdateViewModel - .Repository.GetModelListBy(a => a.AttributeSetId == Id, _context, _transaction).Data?.OrderBy(a => a.Priority).ToList(); + Fields = Fields ?? MixDatabaseColumns.UpdateViewModel + .Repository.GetModelListBy(a => a.MixDatabaseId == Id, _context, _transaction).Data?.OrderBy(a => a.Priority).ToList(); } #endregion Overrides @@ -110,7 +110,7 @@ public override void ExpandView(MixCmsContext _context = null, IDbContextTransac public void LoadData(string parentId, MixDatabaseParentType parentType, string specificulture, int? pageSize = null, int? pageIndex = 0 , MixCmsContext _context = null, IDbContextTransaction _transaction = null) { - var getData = MixRelatedAttributeDatas.ReadMvcViewModel.Repository + var getData = MixDatabaseDataAssociations.ReadMvcViewModel.Repository .GetModelListBy( m => m.ParentId == parentId && m.ParentType == parentType && m.Specificulture == specificulture , MixService.GetConfig(MixAppSettingKeywords.OrderBy), 0 diff --git a/src/Mix.Cms.Lib/ViewModels/MixAttributeSets/ReadViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixDatabases/ReadViewModel.cs similarity index 81% rename from src/Mix.Cms.Lib/ViewModels/MixAttributeSets/ReadViewModel.cs rename to src/Mix.Cms.Lib/ViewModels/MixDatabases/ReadViewModel.cs index b995a4a3c..5669f5772 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixAttributeSets/ReadViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixDatabases/ReadViewModel.cs @@ -6,10 +6,10 @@ using System; using System.Collections.Generic; -namespace Mix.Cms.Lib.ViewModels.MixAttributeSets +namespace Mix.Cms.Lib.ViewModels.MixDatabases { public class ReadViewModel - : ViewModelBase + : ViewModelBase { #region Properties @@ -70,7 +70,7 @@ public class ReadViewModel #region Views - public List Fields { get; set; } + public List Fields { get; set; } #endregion Views @@ -82,7 +82,7 @@ public ReadViewModel() : base() { } - public ReadViewModel(MixAttributeSet model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) + public ReadViewModel(MixDatabase model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) { } @@ -92,7 +92,7 @@ public ReadViewModel(MixAttributeSet model, MixCmsContext _context = null, IDbCo public override void ExpandView(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { - Fields = MixAttributeFields.ReadViewModel.Repository.GetModelListBy(f => f.AttributeSetId == Id, _context, _transaction).Data; + Fields = MixDatabaseColumns.ReadViewModel.Repository.GetModelListBy(f => f.MixDatabaseId == Id, _context, _transaction).Data; } #endregion Overrides diff --git a/src/Mix.Cms.Lib/ViewModels/MixAttributeSets/UpdateViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixDatabases/UpdateViewModel.cs similarity index 77% rename from src/Mix.Cms.Lib/ViewModels/MixAttributeSets/UpdateViewModel.cs rename to src/Mix.Cms.Lib/ViewModels/MixDatabases/UpdateViewModel.cs index 6ced30ed8..cebf69d38 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixAttributeSets/UpdateViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixDatabases/UpdateViewModel.cs @@ -9,10 +9,10 @@ using System.Linq; using System.Threading.Tasks; -namespace Mix.Cms.Lib.ViewModels.MixAttributeSets +namespace Mix.Cms.Lib.ViewModels.MixDatabases { public class UpdateViewModel - : ViewModelBase + : ViewModelBase { #region Properties @@ -77,7 +77,7 @@ public class UpdateViewModel public string Specificulture { get; set; } [JsonProperty("fields")] - public List Fields { get; set; } + public List Fields { get; set; } [JsonProperty("formView")] public MixTemplates.UpdateViewModel FormView { get; set; } @@ -95,7 +95,7 @@ public UpdateViewModel() : base() { } - public UpdateViewModel(MixAttributeSet model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) + public UpdateViewModel(MixDatabase model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) { } @@ -107,19 +107,19 @@ public override void ExpandView(MixCmsContext _context = null, IDbContextTransac { if (Id > 0) { - Fields ??= MixAttributeFields.UpdateViewModel - .Repository.GetModelListBy(a => a.AttributeSetId == Id, _context, _transaction).Data?.OrderBy(a => a.Priority).ToList() - ?? new List(); + Fields ??= MixDatabaseColumns.UpdateViewModel + .Repository.GetModelListBy(a => a.MixDatabaseId == Id, _context, _transaction).Data?.OrderBy(a => a.Priority).ToList() + ?? new List(); //FormView = MixTemplates.UpdateViewModel.GetTemplateByPath(FormTemplate, Specificulture, _context, _transaction).Data; //EdmView = MixTemplates.UpdateViewModel.GetTemplateByPath(EdmTemplate, Specificulture, _context, _transaction).Data; } else { - Fields = new List(); + Fields = new List(); } } - public override MixAttributeSet ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) + public override MixDatabase ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { if (Id == 0) { @@ -136,7 +136,7 @@ public override void Validate(MixCmsContext _context, IDbContextTransaction _tra base.Validate(_context, _transaction); if (IsValid) { - if (_context.MixAttributeSet.Any(s => s.Name == Name && s.Id != Id)) + if (_context.MixDatabase.Any(s => s.Name == Name && s.Id != Id)) { IsValid = false; Errors.Add($"{Name} is Existed"); @@ -144,7 +144,7 @@ public override void Validate(MixCmsContext _context, IDbContextTransaction _tra } } - public override async Task> SaveSubModelsAsync(MixAttributeSet parent, MixCmsContext _context, IDbContextTransaction _transaction) + public override async Task> SaveSubModelsAsync(MixDatabase parent, MixCmsContext _context, IDbContextTransaction _transaction) { var result = new RepositoryResponse() { IsSucceed = true }; if (result.IsSucceed) @@ -153,8 +153,8 @@ public override async Task> SaveSubModelsAsync(MixAttri { if (result.IsSucceed) { - item.AttributeSetId = parent.Id; - item.AttributeSetName = parent.Name; + item.MixDatabaseId = parent.Id; + item.MixDatabaseName = parent.Name; var saveResult = await item.SaveModelAsync(false, _context, _transaction); ViewModelHelper.HandleResult(saveResult, ref result); } @@ -167,7 +167,7 @@ public override async Task> SaveSubModelsAsync(MixAttri return result; } - public override RepositoryResponse SaveSubModels(MixAttributeSet parent, MixCmsContext _context, IDbContextTransaction _transaction) + public override RepositoryResponse SaveSubModels(MixDatabase parent, MixCmsContext _context, IDbContextTransaction _transaction) { var result = new RepositoryResponse() { IsSucceed = true }; if (result.IsSucceed) @@ -176,8 +176,8 @@ public override RepositoryResponse SaveSubModels(MixAttributeSet parent, M { if (result.IsSucceed) { - item.AttributeSetName = parent.Name; - item.AttributeSetId = parent.Id; + item.MixDatabaseName = parent.Name; + item.MixDatabaseId = parent.Id; var saveResult = item.SaveModel(false, _context, _transaction); ViewModelHelper.HandleResult(saveResult, ref result); } @@ -193,21 +193,21 @@ public override RepositoryResponse SaveSubModels(MixAttributeSet parent, M //public override List GenerateRelatedData(MixCmsContext context, IDbContextTransaction transaction) //{ // var tasks = new List(); - // var attrDatas = context.MixAttributeSetData.Where(m => m.AttributeSetId == Id); - // var attrFields = context.MixAttributeField.Where(m => m.AttributeSetId == Id); + // var attrDatas = context.MixDatabaseData.Where(m => m.MixDatabaseId == Id); + // var attrFields = context.MixDatabaseColumn.Where(m => m.MixDatabaseId == Id); // foreach (var item in attrDatas) // { // tasks.Add(Task.Run(() => // { - // MixAttributeSetDatas.UpdateViewModel.Repository.RemoveCache(item, context, transaction); + // MixDatabaseDatas.UpdateViewModel.Repository.RemoveCache(item, context, transaction); // })); // } // foreach (var item in attrFields) // { // tasks.Add(Task.Run(() => // { - // MixAttributeFields.UpdateViewModel.Repository.RemoveCache(item, context, transaction); + // MixDatabaseColumns.UpdateViewModel.Repository.RemoveCache(item, context, transaction); // })); // } // return tasks; diff --git a/src/Mix.Cms.Lib/ViewModels/MixModules/ImportViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixModules/ImportViewModel.cs index 2f6115045..e63ecf24c 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixModules/ImportViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixModules/ImportViewModel.cs @@ -102,7 +102,7 @@ public class ImportViewModel : ViewModelBase m.Specificulture == Specificulture && m.ParentType == type && m.ParentId == id, context, transaction); if (getRelatedData.IsSucceed) diff --git a/src/Mix.Cms.Lib/ViewModels/MixModules/ReadMvcViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixModules/ReadMvcViewModel.cs index 1cc2bbe14..2cf714965 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixModules/ReadMvcViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixModules/ReadMvcViewModel.cs @@ -1,6 +1,7 @@ using Microsoft.EntityFrameworkCore.Storage; using Mix.Cms.Lib.Constants; using Mix.Cms.Lib.Enums; +using Mix.Cms.Lib.Helpers; using Mix.Cms.Lib.Models.Cms; using Mix.Cms.Lib.Services; using Mix.Common.Helper; @@ -93,8 +94,10 @@ public class ReadMvcViewModel public string DetailsUrl { get; set; } [JsonProperty("imageUrl")] - public string ImageUrl { - get { + public string ImageUrl + { + get + { if (!string.IsNullOrEmpty(Image) && (Image.IndexOf("http") == -1) && Image[0] != '/') { return $"{Domain}/{Image}"; @@ -107,8 +110,10 @@ public string ImageUrl { } [JsonProperty("thumbnailUrl")] - public string ThumbnailUrl { - get { + public string ThumbnailUrl + { + get + { if (Thumbnail != null && Thumbnail.IndexOf("http") == -1 && Thumbnail[0] != '/') { return $"{Domain}/{Thumbnail}"; @@ -121,7 +126,8 @@ public string ThumbnailUrl { } [JsonProperty("columns")] - public List Columns { + public List Columns + { get { return Fields == null ? null : JsonConvert.DeserializeObject>(Fields); } set { Fields = JsonConvert.SerializeObject(value); } } @@ -141,24 +147,30 @@ public List Columns { [JsonProperty("posts")] public PaginationModel Posts { get; set; } = new PaginationModel(); - public string TemplatePath { - get { + public string TemplatePath + { + get + { return $"/{MixFolders.TemplatesFolder}/" + $"{MixService.GetConfig(MixAppSettingKeywords.ThemeFolder, Specificulture) ?? "Default"}/" + $"{Template}"; } } - public string FormTemplatePath { - get { + public string FormTemplatePath + { + get + { return $"/{MixFolders.TemplatesFolder}/" + $"{MixService.GetConfig(MixAppSettingKeywords.ThemeFolder, Specificulture) ?? "Default"}/" + $"{FormTemplate}"; } } - public string EdmTemplatePath { - get { + public string EdmTemplatePath + { + get + { return $"/{MixFolders.TemplatesFolder}/" + $"{MixService.GetConfig(MixAppSettingKeywords.ThemeFolder, Specificulture) ?? "Default"}/" + $"{EdmTemplate}"; @@ -166,7 +178,7 @@ public string EdmTemplatePath { } [JsonProperty("attributeData")] - public MixRelatedAttributeDatas.ReadMvcViewModel AttributeData { get; set; } + public MixDatabaseDataAssociations.ReadMvcViewModel AttributeData { get; set; } #endregion Views @@ -205,11 +217,11 @@ public override void ExpandView(MixCmsContext _context = null, IDbContextTransac private void LoadAttributes(MixCmsContext _context, IDbContextTransaction _transaction) { - var getAttrs = MixAttributeSets.UpdateViewModel.Repository.GetSingleModel(m => m.Name == MixConstants.AttributeSetName.ADDITIONAL_FIELD_MODULE, _context, _transaction); + var getAttrs = MixDatabases.UpdateViewModel.Repository.GetSingleModel(m => m.Name == MixConstants.MixDatabaseName.ADDITIONAL_FIELD_MODULE, _context, _transaction); if (getAttrs.IsSucceed) { - AttributeData = MixRelatedAttributeDatas.ReadMvcViewModel.Repository.GetFirstModel( - a => a.ParentId == Id.ToString() && a.Specificulture == Specificulture && a.AttributeSetId == getAttrs.Data.Id + AttributeData = MixDatabaseDataAssociations.ReadMvcViewModel.Repository.GetFirstModel( + a => a.ParentId == Id.ToString() && a.Specificulture == Specificulture && a.MixDatabaseId == getAttrs.Data.Id , _context, _transaction).Data; } } diff --git a/src/Mix.Cms.Lib/ViewModels/MixModules/UpdateViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixModules/UpdateViewModel.cs index 2bb7674c5..101e4f45a 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixModules/UpdateViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixModules/UpdateViewModel.cs @@ -90,8 +90,10 @@ public class UpdateViewModel : ViewModelBase(MixAppSettingKeywords.Domain); } } [JsonProperty("imageUrl")] - public string ImageUrl { - get { + public string ImageUrl + { + get + { if (!string.IsNullOrEmpty(Image) && (Image.IndexOf("http") == -1) && Image[0] != '/') { return $"{Domain}/{Image}"; @@ -104,8 +106,10 @@ public string ImageUrl { } [JsonProperty("thumbnailUrl")] - public string ThumbnailUrl { - get { + public string ThumbnailUrl + { + get + { if (Thumbnail != null && Thumbnail.IndexOf("http") == -1 && Thumbnail[0] != '/') { return $"{Domain}/{Thumbnail}"; @@ -129,8 +133,10 @@ public string ThumbnailUrl { public List Templates { get; set; }// Post Templates [JsonIgnore] - public string TemplateFolderType { - get { + public string TemplateFolderType + { + get + { return MixTemplateFolders.Modules; } } @@ -139,8 +145,10 @@ public string TemplateFolderType { public MixTemplates.UpdateViewModel View { get; set; } [JsonIgnore] - public int ActivedTheme { - get { + public int ActivedTheme + { + get + { return MixService.GetConfig(MixAppSettingKeywords.ThemeId, Specificulture); } } @@ -149,8 +157,10 @@ public int ActivedTheme { public string ThemeFolderType { get { return MixTemplateFolders.Modules.ToString(); } } [JsonProperty("templateFolder")] - public string TemplateFolder { - get { + public string TemplateFolder + { + get + { return $"{MixFolders.TemplatesFolder}/" + $"{MixService.GetConfig(MixAppSettingKeywords.ThemeName, Specificulture)}/" + $"{ThemeFolderType}"; @@ -165,8 +175,10 @@ public string TemplateFolder { public List Forms { get; set; }// Post Forms [JsonIgnore] - public string FormFolderType { - get { + public string FormFolderType + { + get + { return MixTemplateFolders.Forms.ToString(); } } @@ -175,8 +187,10 @@ public string FormFolderType { public MixTemplates.UpdateViewModel FormView { get; set; } [JsonProperty("formFolder")] - public string FormFolder { - get { + public string FormFolder + { + get + { return $"{MixFolders.TemplatesFolder}/" + $"{MixService.GetConfig(MixAppSettingKeywords.ThemeName, Specificulture)}/" + $"{MixTemplateFolders.Forms}"; @@ -191,8 +205,10 @@ public string FormFolder { public List Edms { get; set; }// Post Edms [JsonIgnore] - public string EdmFolderType { - get { + public string EdmFolderType + { + get + { return MixTemplateFolders.Edms.ToString(); } } @@ -201,8 +217,10 @@ public string EdmFolderType { public MixTemplates.UpdateViewModel EdmView { get; set; } [JsonProperty("edmFolder")] - public string EdmFolder { - get { + public string EdmFolder + { + get + { return $"{MixFolders.TemplatesFolder}/" + $"{MixService.GetConfig(MixAppSettingKeywords.ThemeName, Specificulture)}/" + $"{MixTemplateFolders.Edms}"; @@ -222,10 +240,10 @@ public string EdmFolder { public List UrlAliases { get; set; } [JsonProperty("sysCategories")] - public List SysCategories { get; set; } + public List SysCategories { get; set; } [JsonProperty("sysTags")] - public List SysTags { get; set; } + public List SysTags { get; set; } #endregion Views @@ -308,33 +326,20 @@ public override void ExpandView(MixCmsContext _context = null, IDbContextTransac t => t.Theme.Id == ActivedTheme && t.FolderType == this.TemplateFolderType, _context, _transaction).Data; var templateName = Template?.Substring(Template.LastIndexOf('/') + 1) ?? MixConstants.DefaultTemplate.Module; this.View = Templates.FirstOrDefault(t => !string.IsNullOrEmpty(templateName) && templateName.Equals($"{t.FileName}{t.Extension}")); - if (this.View == null) - { - this.View = Templates.FirstOrDefault(t => MixConstants.DefaultTemplate.Module.Equals($"{t.FileName}{t.Extension}")); - } - this.Template = $"{View?.FileFolder}/{View?.FileName}{View.Extension}"; + this.View ??= Templates.FirstOrDefault(); + this.Template = $"{View?.FileFolder}/{View?.FileName}{View?.Extension}"; this.Forms = MixTemplates.UpdateViewModel.Repository.GetModelListBy( t => t.Theme.Id == ActivedTheme && t.FolderType == this.FormFolderType , _context, _transaction).Data; this.FormView = MixTemplates.UpdateViewModel.GetTemplateByPath(FormTemplate, Specificulture, MixTemplateFolders.Forms, _context, _transaction); - this.FormTemplate = $"{FormView?.FileFolder}/{FormView?.FileName}{View.Extension}"; + this.FormTemplate = $"{FormView?.FileFolder}/{FormView?.FileName}{View?.Extension}"; this.Edms = MixTemplates.UpdateViewModel.Repository.GetModelListBy( t => t.Theme.Id == ActivedTheme && t.FolderType == this.EdmFolderType , _context, _transaction).Data; this.EdmView = MixTemplates.UpdateViewModel.GetTemplateByPath(EdmTemplate, Specificulture, MixTemplateFolders.Edms, _context, _transaction); - this.EdmTemplate = $"{EdmView?.FileFolder}/{EdmView?.FileName}{View.Extension}"; - - // TODO: Verified why use below code - //if (SetAttributeId.HasValue) - //{ - // AttributeSet = MixAttributeSets.UpdateViewModel.Repository.GetSingleModel(s => s.Id == SetAttributeId.Value).Data; - //} - //else - //{ - // AttributeSet = new MixAttributeSets.UpdateViewModel(); - //} + this.EdmTemplate = $"{EdmView?.FileFolder}/{EdmView?.FileName}{View?.Extension}"; } #region Async @@ -384,27 +389,27 @@ public static async Task> SaveByModuleName(string cu if (getModule.IsSucceed) { // Get Attribute set - var getAttrSet = await Lib.ViewModels.MixAttributeSets.ReadViewModel.Repository.GetSingleModelAsync(m => m.Name == formName, context, transaction); + var getAttrSet = await Lib.ViewModels.MixDatabases.ReadViewModel.Repository.GetSingleModelAsync(m => m.Name == formName, context, transaction); if (getAttrSet.IsSucceed) { // Save attr data + navigation - MixAttributeSetDatas.UpdateViewModel data = new MixAttributeSetDatas.UpdateViewModel() + MixDatabaseDatas.UpdateViewModel data = new MixDatabaseDatas.UpdateViewModel() { Id = dataId, CreatedBy = createdBy, - AttributeSetId = getAttrSet.Data.Id, - AttributeSetName = getAttrSet.Data.Name, + MixDatabaseId = getAttrSet.Data.Id, + MixDatabaseName = getAttrSet.Data.Name, Specificulture = culture, Data = obj }; // Create navigation module - attr data - var getNavigation = await MixRelatedAttributeDatas.ReadViewModel.Repository.GetSingleModelAsync( + var getNavigation = await MixDatabaseDataAssociations.ReadViewModel.Repository.GetSingleModelAsync( m => m.ParentId == getModule.Data.Id.ToString() && m.ParentType == MixDatabaseParentType.Module && m.Specificulture == culture , context, transaction); if (!getNavigation.IsSucceed) { - data.RelatedData.Add(new MixRelatedAttributeDatas.UpdateViewModel() + data.RelatedData.Add(new MixDatabaseDataAssociations.UpdateViewModel() { ParentId = getModule.Data.Id.ToString(), Specificulture = culture, diff --git a/src/Mix.Cms.Lib/ViewModels/MixPages/DeleteViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixPages/DeleteViewModel.cs index 1700e4266..08b624c4e 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixPages/DeleteViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixPages/DeleteViewModel.cs @@ -204,16 +204,16 @@ public string TemplateFolder { public List UrlAliases { get; set; } [JsonProperty("attributes")] - public MixAttributeSets.UpdateViewModel Attributes { get; set; } + public MixDatabases.UpdateViewModel Attributes { get; set; } [JsonProperty("attributeData")] - public MixRelatedAttributeDatas.UpdateViewModel AttributeData { get; set; } + public MixDatabaseDataAssociations.UpdateViewModel AttributeData { get; set; } [JsonProperty("sysCategories")] - public List SysCategories { get; set; } + public List SysCategories { get; set; } [JsonProperty("sysTags")] - public List SysTags { get; set; } + public List SysTags { get; set; } #endregion Views @@ -243,7 +243,7 @@ public override async Task> RemoveRelatedModelsAsync(De var navModls = _context.MixPageModule.Where(m => m.PageId == Id && m.Specificulture == Specificulture); await navModls.ForEachAsync(m => _context.Entry(m).State = EntityState.Deleted); await _context.SaveChangesAsync(); - var removeRelatedData = await MixRelatedAttributeDatas.Helper.RemoveRelatedDataAsync( + var removeRelatedData = await MixDatabaseDataAssociations.Helper.RemoveRelatedDataAsync( Id.ToString(), MixDatabaseParentType.Page , Specificulture , _context, _transaction); diff --git a/src/Mix.Cms.Lib/ViewModels/MixPages/ImportViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixPages/ImportViewModel.cs index 8699f27fc..f06be9175 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixPages/ImportViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixPages/ImportViewModel.cs @@ -118,7 +118,7 @@ public class ImportViewModel public string ThemeName { get; set; } = "default"; [JsonProperty("relatedData")] - public MixRelatedAttributeDatas.ImportViewModel RelatedData { get; set; } + public MixDatabaseDataAssociations.ImportViewModel RelatedData { get; set; } #endregion Views @@ -177,7 +177,7 @@ public override void ExpandView(MixCmsContext _context = null, IDbContextTransac private void GetAdditionalData(string id, MixDatabaseParentType type, MixCmsContext context, IDbContextTransaction transaction) { - var getRelatedData = MixRelatedAttributeDatas.ImportViewModel.Repository.GetFirstModel( + var getRelatedData = MixDatabaseDataAssociations.ImportViewModel.Repository.GetFirstModel( m => m.Specificulture == Specificulture && m.ParentType == type && m.ParentId == id, context, transaction); if (getRelatedData.IsSucceed) diff --git a/src/Mix.Cms.Lib/ViewModels/MixPages/ReadMvcViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixPages/ReadMvcViewModel.cs index 05612143f..48f9999e7 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixPages/ReadMvcViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixPages/ReadMvcViewModel.cs @@ -1,6 +1,7 @@ using Microsoft.EntityFrameworkCore.Storage; using Mix.Cms.Lib.Constants; using Mix.Cms.Lib.Enums; +using Mix.Cms.Lib.Helpers; using Mix.Cms.Lib.Interfaces; using Mix.Cms.Lib.Models.Cms; using Mix.Cms.Lib.Services; @@ -19,7 +20,7 @@ namespace Mix.Cms.Lib.ViewModels.MixPages { [GeneratedController("api/v1/rest/{culture}/mix-page/mvc")] - public class ReadMvcViewModel : ViewModelBase, MvcViewModel + public class ReadMvcViewModel : ViewModelBase, IMvcViewModel { #region Properties @@ -123,8 +124,10 @@ public class ReadMvcViewModel : ViewModelBase(MixAppSettingKeywords.Domain); } } [JsonProperty("imageUrl")] - public string ImageUrl { - get { + public string ImageUrl + { + get + { if (!string.IsNullOrEmpty(Image) && (Image.IndexOf("http") == -1) && Image[0] != '/') { return $"{Domain}/{Image}"; @@ -137,8 +140,10 @@ public string ImageUrl { } [JsonProperty("thumbnailUrl")] - public string ThumbnailUrl { - get { + public string ThumbnailUrl + { + get + { if (Thumbnail != null && Thumbnail.IndexOf("http") == -1 && Thumbnail[0] != '/') { return $"{Domain}/{Thumbnail}"; @@ -159,14 +164,19 @@ public string ThumbnailUrl { [JsonProperty("modules")] public List Modules { get; set; } = new List(); // Get All Module - public string TemplatePath { - get { + public string TemplatePath + { + get + { return $"/{MixFolders.TemplatesFolder}/{MixService.GetConfig(MixAppSettingKeywords.ThemeFolder, Specificulture)}/{Template}"; } } [JsonProperty("attributeData")] - public MixRelatedAttributeDatas.ReadMvcViewModel AttributeData { get; set; } + public MixDatabaseDataAssociations.ReadMvcViewModel AttributeData { get; set; } + + [JsonProperty("bodyClass")] + public string BodyClass => CssClass; #endregion Views @@ -405,11 +415,11 @@ private void GetSubPosts(MixCmsContext _context = null, IDbContextTransaction _t private void LoadAttributes(MixCmsContext _context, IDbContextTransaction _transaction) { - var getAttrs = MixAttributeSets.UpdateViewModel.Repository.GetSingleModel(m => m.Name == MixConstants.AttributeSetName.ADDITIONAL_FIELD_PAGE, _context, _transaction); + var getAttrs = MixDatabases.UpdateViewModel.Repository.GetSingleModel(m => m.Name == MixConstants.MixDatabaseName.ADDITIONAL_FIELD_PAGE, _context, _transaction); if (getAttrs.IsSucceed) { - AttributeData = MixRelatedAttributeDatas.ReadMvcViewModel.Repository.GetFirstModel( - a => a.ParentId == Id.ToString() && a.Specificulture == Specificulture && a.AttributeSetId == getAttrs.Data.Id + AttributeData = MixDatabaseDataAssociations.ReadMvcViewModel.Repository.GetFirstModel( + a => a.ParentId == Id.ToString() && a.Specificulture == Specificulture && a.MixDatabaseId == getAttrs.Data.Id , _context, _transaction).Data; } } diff --git a/src/Mix.Cms.Lib/ViewModels/MixPages/UpdateViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixPages/UpdateViewModel.cs index b4e4a1375..ce713c249 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixPages/UpdateViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixPages/UpdateViewModel.cs @@ -201,10 +201,10 @@ public string TemplateFolder { public List UrlAliases { get; set; } [JsonProperty("sysCategories")] - public List SysCategories { get; set; } + public List SysCategories { get; set; } [JsonProperty("sysTags")] - public List SysTags { get; set; } + public List SysTags { get; set; } #endregion Views @@ -272,8 +272,6 @@ public override void ExpandView(MixCmsContext _context = null, IDbContextTransac this.Layout = $"{Master?.FileFolder}/{Master?.FileName}{Master?.Extension}"; this.ModuleNavs = GetModuleNavs(_context, _transaction); - //this.ParentNavs = GetParentNavs(_context, _transaction); - //this.ChildNavs = GetChildNavs(_context, _transaction); this.UrlAliases = GetAliases(_context, _transaction); } diff --git a/src/Mix.Cms.Lib/ViewModels/MixPostPosts/ReadViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixPostPosts/ReadViewModel.cs index 45bc41880..cb844fc36 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixPostPosts/ReadViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixPostPosts/ReadViewModel.cs @@ -8,7 +8,7 @@ namespace Mix.Cms.Lib.ViewModels.MixPostPosts { public class ReadViewModel - : ViewModelBase + : ViewModelBase { #region Properties @@ -69,7 +69,7 @@ public ReadViewModel() : base() { } - public ReadViewModel(MixRelatedPost model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) + public ReadViewModel(MixPostAssociation model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) { } @@ -88,7 +88,7 @@ public override void ExpandView(MixCmsContext _context = null, IDbContextTransac } } - public override MixRelatedPost ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) + public override MixPostAssociation ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { if (Id == 0) { diff --git a/src/Mix.Cms.Lib/ViewModels/MixPosts/CreateViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixPosts/CreateViewModel.cs index 95bd48ac4..df93d832d 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixPosts/CreateViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixPosts/CreateViewModel.cs @@ -2,6 +2,7 @@ using Microsoft.EntityFrameworkCore.Storage; using Mix.Cms.Lib.Constants; using Mix.Cms.Lib.Enums; +using Mix.Cms.Lib.Helpers; using Mix.Cms.Lib.Models.Cms; using Mix.Cms.Lib.Services; using Mix.Cms.Lib.ViewModels.MixCultures; @@ -146,22 +147,28 @@ public class CreateViewModel public List Templates { get; set; }// Post Templates [JsonIgnore] - public int ActivedTheme { - get { + public int ActivedTheme + { + get + { return MixService.GetConfig(MixAppSettingKeywords.ThemeId, Specificulture); } } [JsonIgnore] - public string TemplateFolderType { - get { + public string TemplateFolderType + { + get + { return MixTemplateFolders.Posts; } } [JsonProperty("templateFolder")] - public string TemplateFolder { - get { + public string TemplateFolder + { + get + { return $"{MixFolders.TemplatesFolder}/" + $"{MixService.GetConfig(MixAppSettingKeywords.ThemeName, Specificulture)}/" + $"{MixTemplateFolders.Posts}"; @@ -171,8 +178,10 @@ public string TemplateFolder { #endregion Template [JsonProperty("imageUrl")] - public string ImageUrl { - get { + public string ImageUrl + { + get + { if (!string.IsNullOrEmpty(Image) && (Image.IndexOf("http") == -1) && Image[0] != '/') { return $"{Domain}/{Image}"; @@ -185,8 +194,10 @@ public string ImageUrl { } [JsonProperty("thumbnailUrl")] - public string ThumbnailUrl { - get { + public string ThumbnailUrl + { + get + { if (Thumbnail != null && Thumbnail.IndexOf("http") == -1 && Thumbnail[0] != '/') { return $"{Domain}/{Thumbnail}"; @@ -366,7 +377,7 @@ MixPost parent if (result.IsSucceed) { // Save Attribute Set Values - result = await SaveAttributeSetDataAsync(parent.Id, _context, _transaction); + result = await SaveMixDatabaseDataAsync(parent.Id, _context, _transaction); } return result; @@ -517,10 +528,10 @@ private async Task> SaveUrlAliasAsync(int parentId, Mix return result; } - private Task> SaveAttributeSetDataAsync(int parentId, MixCmsContext _context, IDbContextTransaction _transaction) + private Task> SaveMixDatabaseDataAsync(int parentId, MixCmsContext _context, IDbContextTransaction _transaction) { var result = new RepositoryResponse() { IsSucceed = true }; - //foreach (var nav in AttributeSetNavs) + //foreach (var nav in MixDatabaseNavs) //{ // nav.PostId = parentId; // nav.Specificulture = Specificulture; @@ -539,11 +550,11 @@ private Task> SaveAttributeSetDataAsync(int parentId, M // //// Remove Post Attribute Data // //if (result.IsSucceed) // //{ - // // var data = await _context.MixPostAttributeData.Where(n => n.PostId == Id && n.AttributeSetId == nav.AttributeSetId + // // var data = await _context.MixPostAttributeData.Where(n => n.PostId == Id && n.MixDatabaseId == nav.MixDatabaseId // // && n.Specificulture == Specificulture).ToListAsync(); // // foreach (var item in data) // // { - // // var values = await _context.MixPostAttributeValue.Where(n => + // // var values = await _context.MixPostMixDatabaseDataValue.Where(n => // // n.DataId == item.Id && n.PostId == Id // // && n.Specificulture == Specificulture).ToListAsync(); // // foreach (var val in values) diff --git a/src/Mix.Cms.Lib/ViewModels/MixPosts/DeleteViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixPosts/DeleteViewModel.cs index e11966a2c..a5ec1b23c 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixPosts/DeleteViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixPosts/DeleteViewModel.cs @@ -132,7 +132,7 @@ public override async Task> RemoveRelatedModelsAsync(De if (result.IsSucceed) { - var navs = await _context.MixRelatedAttributeData.Where(n => n.ParentId == Id.ToString() && n.ParentType == MixDatabaseParentType.Post && n.Specificulture == Specificulture).ToListAsync(); + var navs = await _context.MixDatabaseDataAssociation.Where(n => n.ParentId == Id.ToString() && n.ParentType == MixDatabaseParentType.Post && n.Specificulture == Specificulture).ToListAsync(); foreach (var item in navs) { _context.Entry(item).State = Microsoft.EntityFrameworkCore.EntityState.Deleted; @@ -140,7 +140,7 @@ public override async Task> RemoveRelatedModelsAsync(De } await _context.SaveChangesAsync(); - var removeRelatedData = await MixRelatedAttributeDatas.Helper.RemoveRelatedDataAsync( + var removeRelatedData = await MixDatabaseDataAssociations.Helper.RemoveRelatedDataAsync( Id.ToString(), MixDatabaseParentType.Post , Specificulture , _context, _transaction); diff --git a/src/Mix.Cms.Lib/ViewModels/MixPosts/Helper.cs b/src/Mix.Cms.Lib/ViewModels/MixPosts/Helper.cs index f991f19d8..a9e868d7b 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixPosts/Helper.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixPosts/Helper.cs @@ -56,10 +56,10 @@ public static async Task>> GetModelist } }; // Get Tag - var getVal = await MixAttributeSetValues.ReadViewModel.Repository.GetSingleModelAsync( + var getVal = await MixDatabaseDataValues.ReadViewModel.Repository.GetSingleModelAsync( m => m.Specificulture == culture && m.Status == MixContentStatus.Published - && m.AttributeSetName == metaName - && m.AttributeFieldName == "title" && m.StringValue == metaValue + && m.MixDatabaseName == metaName + && m.MixDatabaseColumnName == "title" && EF.Functions.Like(m.StringValue, metaValue) , context, transaction); if (getVal.IsSucceed) { @@ -73,7 +73,7 @@ public static async Task>> GetModelist _context: context, _transaction: transaction); //var query = context.MixRelatedAttributeData.Where(m=> m.Specificulture == culture - // && m.Id == getVal.Data.DataId && m.ParentId == parentId && m.ParentType == (int) MixEnums.MixAttributeSetDataType.Post) + // && m.Id == getVal.Data.DataId && m.ParentId == parentId && m.ParentType == (int) MixEnums.MixDatabaseDataType.Post) // .Select(m => m.ParentId).Distinct().ToList(); } return result; @@ -115,7 +115,7 @@ string valueId } }; // Get Tag - var getVal = await MixAttributeSetValues.ReadViewModel.Repository.GetSingleModelAsync( + var getVal = await MixDatabaseDataValues.ReadViewModel.Repository.GetSingleModelAsync( m => m.Specificulture == culture && m.Status == MixContentStatus.Published && m.Id == valueId @@ -132,7 +132,7 @@ string valueId _context: context, _transaction: transaction); //var query = context.MixRelatedAttributeData.Where(m=> m.Specificulture == culture - // && m.Id == getVal.Data.DataId && m.ParentId == parentId && m.ParentType == (int) MixEnums.MixAttributeSetDataType.Post) + // && m.Id == getVal.Data.DataId && m.ParentId == parentId && m.ParentType == (int) MixEnums.MixDatabaseDataType.Post) // .Select(m => m.ParentId).Distinct().ToList(); } return result; @@ -174,14 +174,14 @@ List valueIds } }; // Get Data - Expression> predicate = m => m.Specificulture == culture + Expression> predicate = m => m.Specificulture == culture && m.Status == MixContentStatus.Published; foreach (var item in valueIds) { - Expression> pre = m => m.Id == item; + Expression> pre = m => m.Id == item; predicate = predicate.AndAlso(pre); } - var getVal = await MixAttributeSetValues.ReadViewModel.Repository.GetModelListByAsync(predicate, context, transaction); + var getVal = await MixDatabaseDataValues.ReadViewModel.Repository.GetModelListByAsync(predicate, context, transaction); if (getVal.IsSucceed) { var dataIds = getVal.Data.Select(m => m.DataId).Distinct(); @@ -198,7 +198,7 @@ List valueIds _transaction: transaction); } //var query = context.MixRelatedAttributeData.Where(m=> m.Specificulture == culture - // && m.Id == getVal.Data.DataId && m.ParentId == parentId && m.ParentType == (int) MixEnums.MixAttributeSetDataType.Post) + // && m.Id == getVal.Data.DataId && m.ParentId == parentId && m.ParentType == (int) MixEnums.MixDatabaseDataType.Post) // .Select(m => m.ParentId).Distinct().ToList(); } return result; @@ -270,7 +270,7 @@ string dataId try { culture = culture ?? MixService.GetConfig("DefaultCulture"); - var getRelatedData = await MixRelatedAttributeDatas.ReadViewModel.Repository.GetModelListByAsync( + var getRelatedData = await MixDatabaseDataAssociations.ReadViewModel.Repository.GetModelListByAsync( m => m.Specificulture == culture && m.DataId == dataId && m.ParentType == MixDatabaseParentType.Post , orderByPropertyName = "CreatedDateTime", direction, pageSize, pageIndex @@ -334,14 +334,14 @@ List dataIds { culture = culture ?? MixService.GetConfig("DefaultCulture"); var result = new RepositoryResponse>(); - Expression> predicate = m => m.Specificulture == culture && dataIds.Contains(m.DataId) + Expression> predicate = m => m.Specificulture == culture && dataIds.Contains(m.DataId) && m.ParentType == MixDatabaseParentType.Post; foreach (var id in dataIds) { - Expression> pre = m => m.DataId == id; + Expression> pre = m => m.DataId == id; predicate = predicate.AndAlso(pre); } - var getRelatedData = await MixRelatedAttributeDatas.ReadViewModel.Repository.GetModelListByAsync( + var getRelatedData = await MixDatabaseDataAssociations.ReadViewModel.Repository.GetModelListByAsync( predicate , orderByPropertyName = "CreatedDateTime", direction, pageSize, pageIndex , _context: context, _transaction: transaction @@ -425,9 +425,9 @@ string keyword if (!typeof(MixPost).GetProperties().Any(p => p.Name.ToLower() == orderByPropertyName.ToLower())) { var postIds = context.MixPost.Where(postPredicate).Select(p => p.Id); - var orderedPostIds = context.MixRelatedAttributeData.Where( + var orderedPostIds = context.MixDatabaseDataAssociation.Where( m => m.Specificulture == culture && postIds.Any(p => p.ToString() == m.ParentId)) - .Join(context.MixAttributeSetValue, r => r.DataId, v => v.DataId, (r, v) => new { r, v }) + .Join(context.MixDatabaseDataValue, r => r.DataId, v => v.DataId, (r, v) => new { r, v }) .OrderBy(rv => rv.v.StringValue) .Select(rv => rv.r.ParentId); postPredicate = p => orderedPostIds.Distinct().Any(o => o == p.Id.ToString() && p.Specificulture == culture); @@ -479,11 +479,11 @@ private static Expression> SearchPostByPageIdsPredicate(List private static Expression> SearchPostByDataIdsPredicate(List dataIds, string culture, MixCmsContext context) { Expression> postPredicate = null; - Expression> predicate = null; + Expression> predicate = null; foreach (var id in dataIds) { // Get list related post ids by data id - Expression> pre = + Expression> pre = m => m.Specificulture == culture && m.ParentType == MixDatabaseParentType.Post && m.DataId == id; @@ -493,7 +493,7 @@ private static Expression> SearchPostByDataIdsPredicate(List if (predicate != null) { - var postIds = context.MixRelatedAttributeData + var postIds = context.MixDatabaseDataAssociation .Where(predicate) .Select(m => m.ParentId).Distinct(); postPredicate = p => postIds.Any(m => p.Id.ToString() == m); @@ -525,13 +525,13 @@ public static async Task>> SearchPostB }; var tasks = new List>>(); // Get Value - var dataIds = await context.MixAttributeSetValue.Where( - m => m.AttributeSetName == MixConstants.AttributeSetName.ADDITIONAL_FIELD_POST && m.Specificulture == culture - && m.StringValue == value && m.AttributeFieldName == fieldName) + var dataIds = await context.MixDatabaseDataValue.Where( + m => m.MixDatabaseName == MixConstants.MixDatabaseName.ADDITIONAL_FIELD_POST && m.Specificulture == culture + && EF.Functions.Like(m.StringValue, value) && m.MixDatabaseColumnName == fieldName) .Select(m => m.DataId)?.ToListAsync(); if (dataIds != null && dataIds.Count > 0) { - var getRelatedData = await MixRelatedAttributeDatas.ReadViewModel.Repository.GetModelListByAsync( + var getRelatedData = await MixDatabaseDataAssociations.ReadViewModel.Repository.GetModelListByAsync( m => dataIds.Contains(m.DataId) , orderByPropertyName, direction, pageSize, pageIndex , _context: context, _transaction: transaction diff --git a/src/Mix.Cms.Lib/ViewModels/MixPosts/ImportViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixPosts/ImportViewModel.cs index e0f4b5ffa..0811e31f3 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixPosts/ImportViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixPosts/ImportViewModel.cs @@ -117,22 +117,22 @@ public class ImportViewModel public JArray ListTag { get; set; } = new JArray(); [JsonProperty("attributes")] - public MixAttributeSets.ImportViewModel Attributes { get; set; } + public MixDatabases.ImportViewModel Attributes { get; set; } [JsonProperty("attributeData")] - public MixRelatedAttributeDatas.UpdateViewModel AttributeData { get; set; } + public MixDatabaseDataAssociations.UpdateViewModel AttributeData { get; set; } [JsonProperty("sysCategories")] - public List SysCategories { get; set; } + public List SysCategories { get; set; } [JsonProperty("sysTags")] - public List SysTags { get; set; } + public List SysTags { get; set; } [JsonProperty("urlAliases")] public List UrlAliases { get; set; } [JsonProperty("relatedData")] - public MixRelatedAttributeDatas.ImportViewModel RelatedData { get; set; } + public MixDatabaseDataAssociations.ImportViewModel RelatedData { get; set; } #endregion Views @@ -159,7 +159,7 @@ public override void ExpandView(MixCmsContext _context = null, IDbContextTransac private void GetAdditionalData(string id, MixDatabaseParentType type, MixCmsContext context, IDbContextTransaction transaction) { - var getRelatedData = MixRelatedAttributeDatas.ImportViewModel.Repository.GetFirstModel( + var getRelatedData = MixDatabaseDataAssociations.ImportViewModel.Repository.GetFirstModel( m => m.Specificulture == Specificulture && m.ParentType == type && m.ParentId == id, context, transaction); if (getRelatedData.IsSucceed) diff --git a/src/Mix.Cms.Lib/ViewModels/MixPosts/ReadListItemViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixPosts/ReadListItemViewModel.cs index fd9afbf8a..6537b046f 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixPosts/ReadListItemViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixPosts/ReadListItemViewModel.cs @@ -95,13 +95,13 @@ public class ReadListItemViewModel #region Views [JsonProperty("attributeData")] - public MixRelatedAttributeDatas.ReadMvcViewModel AttributeData { get; set; } + public MixDatabaseDataAssociations.ReadMvcViewModel AttributeData { get; set; } [JsonProperty("sysTags")] - public List SysTags { get; set; } = new List(); + public List SysTags { get; set; } = new List(); [JsonProperty("sysCategories")] - public List SysCategories { get; set; } = new List(); + public List SysCategories { get; set; } = new List(); [JsonProperty("listTag")] public List ListTag { get => SysTags.Select(t => t.AttributeData.Property("title")).Distinct().ToList(); } @@ -116,8 +116,10 @@ public class ReadListItemViewModel public string Domain { get { return MixService.GetConfig(MixAppSettingKeywords.Domain); } } [JsonProperty("imageUrl")] - public string ImageUrl { - get { + public string ImageUrl + { + get + { if (!string.IsNullOrEmpty(Image) && (Image.IndexOf("http") == -1) && Image[0] != '/') { return $"{Domain}/{Image}"; @@ -130,8 +132,10 @@ public string ImageUrl { } [JsonProperty("thumbnailUrl")] - public string ThumbnailUrl { - get { + public string ThumbnailUrl + { + get + { if (Thumbnail != null && Thumbnail.IndexOf("http") == -1 && Thumbnail[0] != '/') { return $"{Domain}/{Thumbnail}"; @@ -184,23 +188,23 @@ private void LoadPages(MixCmsContext context, IDbContextTransaction transaction) private void LoadAttributes(MixCmsContext _context, IDbContextTransaction _transaction) { - string type = Type ?? MixConstants.AttributeSetName.ADDITIONAL_FIELD_POST; - var getAttrs = MixAttributeSets.UpdateViewModel.Repository.GetSingleModel( + string type = Type ?? MixConstants.MixDatabaseName.ADDITIONAL_FIELD_POST; + var getAttrs = MixDatabases.UpdateViewModel.Repository.GetSingleModel( m => m.Name == type, _context, _transaction); if (getAttrs.IsSucceed) { - AttributeData = MixRelatedAttributeDatas.ReadMvcViewModel.Repository.GetFirstModel( + AttributeData = MixDatabaseDataAssociations.ReadMvcViewModel.Repository.GetFirstModel( a => a.ParentId == Id.ToString() && a.Specificulture == Specificulture - && a.AttributeSetId == getAttrs.Data.Id + && a.MixDatabaseId == getAttrs.Data.Id , _context, _transaction).Data; } } private void LoadTags(MixCmsContext context, IDbContextTransaction transaction) { - var getTags = MixRelatedAttributeDatas.FormViewModel.Repository.GetModelListBy(m => m.Specificulture == Specificulture + var getTags = MixDatabaseDataAssociations.FormViewModel.Repository.GetModelListBy(m => m.Specificulture == Specificulture && m.ParentId == Id.ToString() && m.ParentType == MixDatabaseParentType.Post - && m.AttributeSetName == MixConstants.AttributeSetName.SYSTEM_TAG, context, transaction); + && m.MixDatabaseName == MixConstants.MixDatabaseName.SYSTEM_TAG, context, transaction); if (getTags.IsSucceed) { SysTags = getTags.Data; @@ -209,9 +213,9 @@ private void LoadTags(MixCmsContext context, IDbContextTransaction transaction) private void LoadCategories(MixCmsContext context, IDbContextTransaction transaction) { - var getData = MixRelatedAttributeDatas.FormViewModel.Repository.GetModelListBy(m => m.Specificulture == Specificulture + var getData = MixDatabaseDataAssociations.FormViewModel.Repository.GetModelListBy(m => m.Specificulture == Specificulture && m.ParentId == Id.ToString() && m.ParentType == MixDatabaseParentType.Post - && m.AttributeSetName == MixConstants.AttributeSetName.SYSTEM_CATEGORY, context, transaction); + && m.MixDatabaseName == MixConstants.MixDatabaseName.SYSTEM_CATEGORY, context, transaction); if (getData.IsSucceed) { SysCategories = getData.Data; diff --git a/src/Mix.Cms.Lib/ViewModels/MixPosts/ReadMvcViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixPosts/ReadMvcViewModel.cs index b08924702..b5cb49f7d 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixPosts/ReadMvcViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixPosts/ReadMvcViewModel.cs @@ -1,6 +1,7 @@ using Microsoft.EntityFrameworkCore.Storage; using Mix.Cms.Lib.Constants; using Mix.Cms.Lib.Enums; +using Mix.Cms.Lib.Helpers; using Mix.Cms.Lib.Interfaces; using Mix.Cms.Lib.Models.Cms; using Mix.Cms.Lib.Services; @@ -14,7 +15,7 @@ namespace Mix.Cms.Lib.ViewModels.MixPosts { public class ReadMvcViewModel - : ViewModelBase, MvcViewModel + : ViewModelBase, IMvcViewModel { #region Properties @@ -119,8 +120,10 @@ public class ReadMvcViewModel public string Domain { get { return MixService.GetConfig(MixAppSettingKeywords.Domain); } } [JsonProperty("imageUrl")] - public string ImageUrl { - get { + public string ImageUrl + { + get + { if (!string.IsNullOrEmpty(Image) && (Image.IndexOf("http") == -1) && Image[0] != '/') { return $"{Domain}/{Image}"; @@ -133,8 +136,10 @@ public string ImageUrl { } [JsonProperty("thumbnailUrl")] - public string ThumbnailUrl { - get { + public string ThumbnailUrl + { + get + { if (Thumbnail != null && Thumbnail.IndexOf("http") == -1 && Thumbnail[0] != '/') { return $"{Domain}/{Thumbnail}"; @@ -147,8 +152,10 @@ public string ThumbnailUrl { } [JsonProperty("templatePath")] - public string TemplatePath { - get { + public string TemplatePath + { + get + { return $"/{ MixFolders.TemplatesFolder}/{MixService.GetConfig(MixAppSettingKeywords.ThemeFolder, Specificulture) ?? "Default"}/{Template}"; } } @@ -165,17 +172,17 @@ public string TemplatePath { [JsonProperty("postNavs")] public List PostNavs { get; set; } - [JsonProperty("attributeSets")] - public List AttributeSets { get; set; } = new List(); + [JsonProperty("Databases")] + public List Databases { get; set; } = new List(); [JsonProperty("attributeData")] - public MixRelatedAttributeDatas.ReadMvcViewModel AttributeData { get; set; } + public MixDatabaseDataAssociations.ReadMvcViewModel AttributeData { get; set; } [JsonProperty("sysTags")] - public List SysTags { get; set; } = new List(); + public List SysTags { get; set; } = new List(); [JsonProperty("sysCategories")] - public List SysCategories { get; set; } = new List(); + public List SysCategories { get; set; } = new List(); [JsonProperty("listTag")] public List ListTag { get => SysTags.Select(t => t.AttributeData.Property("title")).Distinct().ToList(); } @@ -192,6 +199,9 @@ public string TemplatePath { [JsonProperty("author")] public JObject Author { get; set; } + [JsonProperty("bodyClass")] + public string BodyClass => Property("body_class"); + #endregion Views #endregion Properties @@ -250,7 +260,7 @@ private void LoadAuthor(MixCmsContext context, IDbContextTransaction transaction { if (!string.IsNullOrEmpty(CreatedBy)) { - var getAuthor = MixAttributeSetDatas.Helper.LoadAdditionalData(MixDatabaseParentType.User, CreatedBy, MixDatabaseNames.SYSTEM_USER_DATA + var getAuthor = MixDatabaseDatas.Helper.LoadAdditionalData(MixDatabaseParentType.User, CreatedBy, MixDatabaseNames.SYSTEM_USER_DATA , Specificulture, context, transaction); if (getAuthor.IsSucceed) { @@ -261,10 +271,10 @@ private void LoadAuthor(MixCmsContext context, IDbContextTransaction transaction private void LoadTags(MixCmsContext context, IDbContextTransaction transaction) { - var getTags = MixRelatedAttributeDatas.FormViewModel.Repository.GetModelListBy( + var getTags = MixDatabaseDataAssociations.FormViewModel.Repository.GetModelListBy( m => m.Specificulture == Specificulture && m.Status == MixContentStatus.Published && m.ParentId == Id.ToString() && m.ParentType == MixDatabaseParentType.Post - && m.AttributeSetName == MixConstants.AttributeSetName.SYSTEM_TAG, context, transaction); + && m.MixDatabaseName == MixConstants.MixDatabaseName.SYSTEM_TAG, context, transaction); if (getTags.IsSucceed) { SysTags = getTags.Data; @@ -273,9 +283,9 @@ private void LoadTags(MixCmsContext context, IDbContextTransaction transaction) private void LoadCategories(MixCmsContext context, IDbContextTransaction transaction) { - var getData = MixRelatedAttributeDatas.FormViewModel.Repository.GetModelListBy(m => m.Specificulture == Specificulture + var getData = MixDatabaseDataAssociations.FormViewModel.Repository.GetModelListBy(m => m.Specificulture == Specificulture && m.ParentId == Id.ToString() && m.ParentType == MixDatabaseParentType.Post - && m.AttributeSetName == MixConstants.AttributeSetName.SYSTEM_CATEGORY, context, transaction); + && m.MixDatabaseName == MixConstants.MixDatabaseName.SYSTEM_CATEGORY, context, transaction); if (getData.IsSucceed) { SysCategories = getData.Data; @@ -297,13 +307,13 @@ private void LoadPages(MixCmsContext _context, IDbContextTransaction _transactio /// The transaction. private void LoadAttributes(MixCmsContext _context, IDbContextTransaction _transaction) { - Type = string.IsNullOrEmpty(Type) ? MixConstants.AttributeSetName.ADDITIONAL_FIELD_POST : Type; - var getAttrs = MixAttributeSets.UpdateViewModel.Repository.GetSingleModel(m => m.Name == Type, _context, _transaction); + Type = string.IsNullOrEmpty(Type) ? MixConstants.MixDatabaseName.ADDITIONAL_FIELD_POST : Type; + var getAttrs = MixDatabases.UpdateViewModel.Repository.GetSingleModel(m => m.Name == Type, _context, _transaction); if (getAttrs.IsSucceed) { - AttributeData = MixRelatedAttributeDatas.ReadMvcViewModel.Repository.GetFirstModel( - a => a.ParentId == Id.ToString() && a.Specificulture == Specificulture && a.AttributeSetId == getAttrs.Data.Id - , _context, _transaction).Data ?? new MixRelatedAttributeDatas.ReadMvcViewModel(); + AttributeData = MixDatabaseDataAssociations.ReadMvcViewModel.Repository.GetFirstModel( + a => a.ParentId == Id.ToString() && a.Specificulture == Specificulture && a.MixDatabaseId == getAttrs.Data.Id + , _context, _transaction).Data ?? new MixDatabaseDataAssociations.ReadMvcViewModel(); } } @@ -331,10 +341,10 @@ public MixModules.ReadMvcViewModel GetModule(string name) /// Gets the attribute set. /// The name. - /// MixAttributeSets.ReadMvcViewModel - public MixAttributeSets.ReadViewModel GetAttributeSet(string name) + /// Databases.ReadMvcViewModel + public MixDatabases.ReadViewModel GetMixDatabase(string name) { - return AttributeSets.FirstOrDefault(m => m.Name == name); + return Databases.FirstOrDefault(m => m.Name == name); } #endregion Expands diff --git a/src/Mix.Cms.Lib/ViewModels/MixPosts/ReadViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixPosts/ReadViewModel.cs index 4216a394a..1684b1a15 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixPosts/ReadViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixPosts/ReadViewModel.cs @@ -115,8 +115,10 @@ public class ReadViewModel public string Domain { get { return MixService.GetConfig(MixAppSettingKeywords.Domain); } } [JsonProperty("imageUrl")] - public string ImageUrl { - get { + public string ImageUrl + { + get + { if (!string.IsNullOrEmpty(Image) && (Image.IndexOf("http") == -1) && Image[0] != '/') { return $"{Domain}/{Image}"; @@ -129,8 +131,10 @@ public string ImageUrl { } [JsonProperty("thumbnailUrl")] - public string ThumbnailUrl { - get { + public string ThumbnailUrl + { + get + { if (Thumbnail != null && Thumbnail.IndexOf("http") == -1 && Thumbnail[0] != '/') { return $"{Domain}/{Thumbnail}"; @@ -149,13 +153,13 @@ public string ThumbnailUrl { public List Properties { get; set; } [JsonProperty("attributeData")] - public MixRelatedAttributeDatas.ReadMvcViewModel AttributeData { get; set; } + public MixDatabaseDataAssociations.ReadMvcViewModel AttributeData { get; set; } [JsonProperty("sysTags")] - public List SysTags { get; set; } = new List(); + public List SysTags { get; set; } = new List(); [JsonProperty("sysCategories")] - public List SysCategories { get; set; } = new List(); + public List SysCategories { get; set; } = new List(); [JsonProperty("listTag")] public List ListTag { get => SysTags.Select(t => t.AttributeData.Property("title")).Distinct().ToList(); } @@ -360,10 +364,10 @@ public override void ExpandView(MixCmsContext _context = null, IDbContextTransac private void LoadTags(MixCmsContext context, IDbContextTransaction transaction) { - var getTags = MixRelatedAttributeDatas.FormViewModel.Repository.GetModelListBy( + var getTags = MixDatabaseDataAssociations.FormViewModel.Repository.GetModelListBy( m => m.Specificulture == Specificulture && m.Status == MixContentStatus.Published && m.ParentId == Id.ToString() && m.ParentType == MixDatabaseParentType.Post - && m.AttributeSetName == MixConstants.AttributeSetName.SYSTEM_TAG, context, transaction); + && m.MixDatabaseName == MixConstants.MixDatabaseName.SYSTEM_TAG, context, transaction); if (getTags.IsSucceed) { SysTags = getTags.Data; @@ -372,9 +376,9 @@ private void LoadTags(MixCmsContext context, IDbContextTransaction transaction) private void LoadCategories(MixCmsContext context, IDbContextTransaction transaction) { - var getData = MixRelatedAttributeDatas.FormViewModel.Repository.GetModelListBy(m => m.Specificulture == Specificulture + var getData = MixDatabaseDataAssociations.FormViewModel.Repository.GetModelListBy(m => m.Specificulture == Specificulture && m.ParentId == Id.ToString() && m.ParentType == MixDatabaseParentType.Post - && m.AttributeSetName == MixConstants.AttributeSetName.SYSTEM_CATEGORY, context, transaction); + && m.MixDatabaseName == MixConstants.MixDatabaseName.SYSTEM_CATEGORY, context, transaction); if (getData.IsSucceed) { SysCategories = getData.Data; @@ -390,11 +394,11 @@ private void LoadCategories(MixCmsContext context, IDbContextTransaction transac /// The transaction. private void LoadAttributes(MixCmsContext _context, IDbContextTransaction _transaction) { - var getAttrs = MixAttributeSets.UpdateViewModel.Repository.GetSingleModel(m => m.Name == MixConstants.AttributeSetName.ADDITIONAL_FIELD_POST, _context, _transaction); + var getAttrs = MixDatabases.UpdateViewModel.Repository.GetSingleModel(m => m.Name == MixConstants.MixDatabaseName.ADDITIONAL_FIELD_POST, _context, _transaction); if (getAttrs.IsSucceed) { - AttributeData = MixRelatedAttributeDatas.ReadMvcViewModel.Repository.GetFirstModel( - a => a.ParentId == Id.ToString() && a.Specificulture == Specificulture && a.AttributeSetId == getAttrs.Data.Id + AttributeData = MixDatabaseDataAssociations.ReadMvcViewModel.Repository.GetFirstModel( + a => a.ParentId == Id.ToString() && a.Specificulture == Specificulture && a.MixDatabaseId == getAttrs.Data.Id , _context, _transaction).Data; } } diff --git a/src/Mix.Cms.Lib/ViewModels/MixPosts/Readme.md b/src/Mix.Cms.Lib/ViewModels/MixPosts/Readme.md index 5132def6f..8c5ef8fbc 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixPosts/Readme.md +++ b/src/Mix.Cms.Lib/ViewModels/MixPosts/Readme.md @@ -4,5 +4,5 @@ ex: Model.Property("[propName]"); ### GetModule ex: Model.GetModule("[moduleSetName]"); -### GetAttributeSet -ex: Model.GetAttributeSet("[attrSetName]"); \ No newline at end of file +### GetMixDatabase +ex: Model.GetMixDatabase("[attrSetName]"); \ No newline at end of file diff --git a/src/Mix.Cms.Lib/ViewModels/MixPosts/SyncViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixPosts/SyncViewModel.cs index bc89b1afc..ea60a445b 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixPosts/SyncViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixPosts/SyncViewModel.cs @@ -1,6 +1,7 @@ using Microsoft.EntityFrameworkCore.Storage; using Mix.Cms.Lib.Constants; using Mix.Cms.Lib.Enums; +using Mix.Cms.Lib.Helpers; using Mix.Cms.Lib.Models.Cms; using Mix.Cms.Lib.Services; using Mix.Cms.Lib.ViewModels.MixCultures; diff --git a/src/Mix.Cms.Lib/ViewModels/MixPosts/UpdateViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixPosts/UpdateViewModel.cs index 51774917c..210c5ea81 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixPosts/UpdateViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixPosts/UpdateViewModel.cs @@ -2,6 +2,7 @@ using Microsoft.EntityFrameworkCore.Storage; using Mix.Cms.Lib.Constants; using Mix.Cms.Lib.Enums; +using Mix.Cms.Lib.Helpers; using Mix.Cms.Lib.Models.Cms; using Mix.Cms.Lib.Services; using Mix.Cms.Lib.ViewModels.MixCultures; @@ -144,10 +145,10 @@ public class UpdateViewModel public FileStreamViewModel ThumbnailFileStream { get; set; } [JsonProperty("sysCategories")] - public List SysCategories { get; set; } + public List SysCategories { get; set; } [JsonProperty("sysTags")] - public List SysTags { get; set; } + public List SysTags { get; set; } #region Template @@ -158,22 +159,28 @@ public class UpdateViewModel public List Templates { get; set; }// Post Templates [JsonIgnore] - public int ActivedTheme { - get { + public int ActivedTheme + { + get + { return MixService.GetConfig(MixAppSettingKeywords.ThemeId, Specificulture); } } [JsonIgnore] - public string TemplateFolderType { - get { + public string TemplateFolderType + { + get + { return MixTemplateFolders.Posts; } } [JsonProperty("templateFolder")] - public string TemplateFolder { - get { + public string TemplateFolder + { + get + { return $"{MixFolders.TemplatesFolder}/" + $"{MixService.GetConfig(MixAppSettingKeywords.ThemeName, Specificulture)}/" + $"{MixTemplateFolders.Posts}"; @@ -183,8 +190,10 @@ public string TemplateFolder { #endregion Template [JsonProperty("imageUrl")] - public string ImageUrl { - get { + public string ImageUrl + { + get + { if (!string.IsNullOrEmpty(Image) && (Image.IndexOf("http") == -1) && Image[0] != '/') { return $"{Domain}/{Image}"; @@ -197,8 +206,10 @@ public string ImageUrl { } [JsonProperty("thumbnailUrl")] - public string ThumbnailUrl { - get { + public string ThumbnailUrl + { + get + { if (Thumbnail != null && Thumbnail.IndexOf("http") == -1 && Thumbnail[0] != '/') { return $"{Domain}/{Thumbnail}"; @@ -242,7 +253,7 @@ public UpdateViewModel(MixPost model, MixCmsContext _context = null, IDbContextT public override void ExpandView(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { - Type = string.IsNullOrEmpty(Type) ? MixConstants.AttributeSetName.ADDITIONAL_FIELD_POST : Type; + Type = string.IsNullOrEmpty(Type) ? MixConstants.MixDatabaseName.ADDITIONAL_FIELD_POST : Type; Cultures = LoadCultures(Specificulture, _context, _transaction); UrlAliases = GetAliases(_context, _transaction); @@ -1138,17 +1149,17 @@ private List LoadCultures(string initCulture = null, MixCmsCon private void LoadAttributes(MixCmsContext _context, IDbContextTransaction _transaction) { - var getCategories = MixRelatedAttributeDatas.FormViewModel.Repository.GetModelListBy(m => m.Specificulture == Specificulture + var getCategories = MixDatabaseDataAssociations.FormViewModel.Repository.GetModelListBy(m => m.Specificulture == Specificulture && m.ParentId == Id.ToString() && m.ParentType == MixDatabaseParentType.Post - && m.AttributeSetName == MixConstants.AttributeSetName.SYSTEM_CATEGORY, _context, _transaction); + && m.MixDatabaseName == MixConstants.MixDatabaseName.SYSTEM_CATEGORY, _context, _transaction); if (getCategories.IsSucceed) { SysCategories = getCategories.Data; } - var getTags = MixRelatedAttributeDatas.FormViewModel.Repository.GetModelListBy(m => m.Specificulture == Specificulture + var getTags = MixDatabaseDataAssociations.FormViewModel.Repository.GetModelListBy(m => m.Specificulture == Specificulture && m.ParentId == Id.ToString() && m.ParentType == MixDatabaseParentType.Post - && m.AttributeSetName == MixConstants.AttributeSetName.SYSTEM_TAG, _context, _transaction); + && m.MixDatabaseName == MixConstants.MixDatabaseName.SYSTEM_TAG, _context, _transaction); if (getTags.IsSucceed) { SysTags = getTags.Data; diff --git a/src/Mix.Cms.Lib/ViewModels/MixRelatedAttributeSets/DeleteViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixRelatedAttributeSets/DeleteViewModel.cs deleted file mode 100644 index f56a19ea0..000000000 --- a/src/Mix.Cms.Lib/ViewModels/MixRelatedAttributeSets/DeleteViewModel.cs +++ /dev/null @@ -1,54 +0,0 @@ -using Microsoft.EntityFrameworkCore.Storage; -using Mix.Cms.Lib.Enums; -using Mix.Cms.Lib.Models.Cms; -using Mix.Domain.Data.ViewModels; -using System; - -namespace Mix.Cms.Lib.ViewModels.MixRelatedAttributeSets -{ - public class DeleteViewModel - : ViewModelBase - { - #region Properties - - #region Models - - public int Id { get; set; } - public int AttributeSetId { get; set; } - public int ParentId { get; set; } - public MixDatabaseParentType ParentType { get; set; } - public DateTime CreatedDateTime { get; set; } - public string Status { get; set; } - public string Description { get; set; } - public string Image { get; set; } - - #endregion Models - - #endregion Properties - - #region Contructors - - public DeleteViewModel() : base() - { - } - - public DeleteViewModel(MixRelatedAttributeSet model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) - { - } - - #endregion Contructors - - #region Overrides - - public override MixRelatedAttributeSet ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) - { - if (CreatedDateTime == default(DateTime)) - { - CreatedDateTime = DateTime.UtcNow; - } - return base.ParseModel(_context, _transaction); - } - - #endregion Overrides - } -} \ No newline at end of file diff --git a/src/Mix.Cms.Lib/ViewModels/MixRelatedAttributeSets/ReadMvcViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixRelatedAttributeSets/ReadMvcViewModel.cs deleted file mode 100644 index b9431c195..000000000 --- a/src/Mix.Cms.Lib/ViewModels/MixRelatedAttributeSets/ReadMvcViewModel.cs +++ /dev/null @@ -1,87 +0,0 @@ -using Microsoft.EntityFrameworkCore.Storage; -using Mix.Cms.Lib.Enums; -using Mix.Cms.Lib.Models.Cms; -using Mix.Domain.Data.ViewModels; -using Newtonsoft.Json; -using System; - -namespace Mix.Cms.Lib.ViewModels.MixRelatedAttributeSets -{ - public class ReadMvcViewModel - : ViewModelBase - { - public ReadMvcViewModel(MixRelatedAttributeSet model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) - : base(model, _context, _transaction) - { - } - - public ReadMvcViewModel() : base() - { - } - - #region Properties - - #region Models - - [JsonProperty("id")] - public int Id { get; set; } - - [JsonProperty("attributeSetid")] - public int AttributeSetId { get; set; } - - [JsonProperty("parentId")] - public int ParentId { get; set; } - - [JsonProperty("parentType")] - public MixDatabaseParentType ParentType { get; set; } - - [JsonProperty("description")] - public string Description { get; set; } - - [JsonProperty("image")] - public string Image { get; set; } - - [JsonProperty("createdBy")] - public string CreatedBy { get; set; } - - [JsonProperty("createdDateTime")] - public DateTime CreatedDateTime { get; set; } - - [JsonProperty("modifiedBy")] - public string ModifiedBy { get; set; } - - [JsonProperty("lastModified")] - public DateTime? LastModified { get; set; } - - [JsonProperty("priority")] - public int Priority { get; set; } - - [JsonProperty("status")] - public MixContentStatus Status { get; set; } - - #endregion Models - - #region Views - - public MixAttributeSets.ReadMvcViewModel AttributeSet { get; set; } - - #endregion Views - - #endregion Properties - - #region overrides - - public override void ExpandView(MixCmsContext _context = null, IDbContextTransaction _transaction = null) - { - var getData = MixAttributeSets.ReadMvcViewModel.Repository.GetSingleModel(p => p.Id == Id - , _context: _context, _transaction: _transaction - ); - if (getData.IsSucceed) - { - AttributeSet = getData.Data; - } - } - - #endregion overrides - } -} \ No newline at end of file diff --git a/src/Mix.Cms.Lib/ViewModels/MixRelatedAttributeSets/ReadViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixRelatedAttributeSets/ReadViewModel.cs deleted file mode 100644 index c01928ac1..000000000 --- a/src/Mix.Cms.Lib/ViewModels/MixRelatedAttributeSets/ReadViewModel.cs +++ /dev/null @@ -1,106 +0,0 @@ -using Microsoft.EntityFrameworkCore.Storage; -using Mix.Cms.Lib.Enums; -using Mix.Cms.Lib.Models.Cms; -using Mix.Domain.Data.ViewModels; -using Newtonsoft.Json; -using System; - -namespace Mix.Cms.Lib.ViewModels.MixRelatedAttributeSets -{ - public class ReadViewModel - : ViewModelBase - { - #region Properties - - #region Models - - [JsonProperty("id")] - public int Id { get; set; } - - [JsonProperty("specificulture")] - public string Specificulture { get; set; } - - [JsonProperty("attributeSetId")] - public int AttributeSetId { get; set; } - - [JsonProperty("parentId")] - public int ParentId { get; set; } - - [JsonProperty("parentType")] - public MixDatabaseParentType ParentType { get; set; } - - [JsonProperty("description")] - public string Description { get; set; } - - [JsonProperty("image")] - public string Image { get; set; } - - [JsonProperty("createdBy")] - public string CreatedBy { get; set; } - - [JsonProperty("createdDateTime")] - public DateTime CreatedDateTime { get; set; } - - [JsonProperty("modifiedBy")] - public string ModifiedBy { get; set; } - - [JsonProperty("lastModified")] - public DateTime? LastModified { get; set; } - - [JsonProperty("priority")] - public int Priority { get; set; } - - [JsonProperty("status")] - public MixContentStatus Status { get; set; } - - #endregion Models - - #region Views - - [JsonProperty("isActived")] - public bool IsActived { get; set; } - - [JsonProperty("relatedAttributeSet")] - public MixAttributeSets.ReadViewModel RelatedAttributeSet { get; set; } - - #endregion Views - - #endregion Properties - - #region Contructors - - public ReadViewModel() : base() - { - } - - public ReadViewModel(MixRelatedAttributeSet model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) - { - } - - #endregion Contructors - - #region Overrides - - public override void ExpandView(MixCmsContext _context = null, IDbContextTransaction _transaction = null) - { - var getPost = MixAttributeSets.ReadViewModel.Repository.GetSingleModel( - m => m.Id == Id - , _context: _context, _transaction: _transaction); - if (getPost.IsSucceed) - { - this.RelatedAttributeSet = getPost.Data; - } - } - - public override MixRelatedAttributeSet ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) - { - if (CreatedDateTime == default(DateTime)) - { - CreatedDateTime = DateTime.UtcNow; - } - return base.ParseModel(_context, _transaction); - } - - #endregion Overrides - } -} \ No newline at end of file diff --git a/src/Mix.Cms.Lib/ViewModels/MixRelatedAttributeSets/UpdateViewModel.cs b/src/Mix.Cms.Lib/ViewModels/MixRelatedAttributeSets/UpdateViewModel.cs deleted file mode 100644 index d4ecbd4d2..000000000 --- a/src/Mix.Cms.Lib/ViewModels/MixRelatedAttributeSets/UpdateViewModel.cs +++ /dev/null @@ -1,100 +0,0 @@ -using Microsoft.EntityFrameworkCore.Storage; -using Mix.Cms.Lib.Enums; -using Mix.Cms.Lib.Models.Cms; -using Mix.Domain.Data.ViewModels; -using Newtonsoft.Json; -using System; - -namespace Mix.Cms.Lib.ViewModels.MixRelatedAttributeSets -{ - public class UpdateViewModel - : ViewModelBase - { - #region Properties - - #region Models - - [JsonProperty("id")] - public int Id { get; set; } - - [JsonProperty("specificulture")] - public string Specificulture { get; set; } - - [JsonProperty("attributeSetId")] - public int AttributeSetId { get; set; } - - [JsonProperty("parentId")] - public int ParentId { get; set; } - - [JsonProperty("parentType")] - public MixDatabaseParentType ParentType { get; set; } - - [JsonProperty("description")] - public string Description { get; set; } - - [JsonProperty("image")] - public string Image { get; set; } - - [JsonProperty("createdBy")] - public string CreatedBy { get; set; } - - [JsonProperty("createdDateTime")] - public DateTime CreatedDateTime { get; set; } - - [JsonProperty("modifiedBy")] - public string ModifiedBy { get; set; } - - [JsonProperty("lastModified")] - public DateTime? LastModified { get; set; } - - [JsonProperty("priority")] - public int Priority { get; set; } - - [JsonProperty("status")] - public MixContentStatus Status { get; set; } - - #endregion Models - - #region Views - - public MixAttributeSets.UpdateViewModel Data { get; set; } - - #endregion Views - - #endregion Properties - - public UpdateViewModel(MixRelatedAttributeSet model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) - : base(model, _context, _transaction) - { - } - - public UpdateViewModel() : base() - { - } - - #region overrides - - public override MixRelatedAttributeSet ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) - { - if (Id == 0) - { - Id = Repository.Max(m => m.Id, _context, _transaction).Data + 1; - CreatedDateTime = DateTime.UtcNow; - } - return base.ParseModel(_context, _transaction); - } - - public override void ExpandView(MixCmsContext _context = null, IDbContextTransaction _transaction = null) - { - var getData = MixAttributeSets.UpdateViewModel.Repository.GetSingleModel(p => p.Id == AttributeSetId - , _context: _context, _transaction: _transaction - ); - if (getData.IsSucceed) - { - Data = getData.Data; - } - } - - #endregion overrides - } -} \ No newline at end of file diff --git a/src/Mix.Cms.Lib/ViewModels/MixThemes/Helper.cs b/src/Mix.Cms.Lib/ViewModels/MixThemes/Helper.cs index 02b0e8b22..51dd9caa0 100644 --- a/src/Mix.Cms.Lib/ViewModels/MixThemes/Helper.cs +++ b/src/Mix.Cms.Lib/ViewModels/MixThemes/Helper.cs @@ -125,7 +125,7 @@ public static async Task> InitTheme(string mod MixService.SetConfig("InitStatus", 3); MixService.SetConfig("IsInit", false); MixService.SaveSettings(); - _ = Mix.Services.CacheService.RemoveCacheAsync(); + _ = Mix.Services.MixCacheService.RemoveCacheAsync(); MixService.Reload(); } return result; diff --git a/src/Mix.Cms.Lib/ViewModels/SiteStructureViewModel.cs b/src/Mix.Cms.Lib/ViewModels/SiteStructureViewModel.cs index 0df18f062..8103b2d0b 100644 --- a/src/Mix.Cms.Lib/ViewModels/SiteStructureViewModel.cs +++ b/src/Mix.Cms.Lib/ViewModels/SiteStructureViewModel.cs @@ -22,8 +22,8 @@ public class SiteStructureViewModel [JsonProperty("modules")] public List Modules { get; set; } - [JsonProperty("attributeSets")] - public List AttributeSets { get; set; } + [JsonProperty("mixDatabases")] + public List MixDatabases { get; set; } [JsonProperty("configurations")] public List Configurations { get; set; } @@ -32,7 +32,7 @@ public class SiteStructureViewModel public List Languages { get; set; } [JsonProperty("relatedData")] - public List RelatedData { get; set; } = new List(); + public List RelatedData { get; set; } = new List(); [JsonProperty("pagePostNavs")] public List PagePostNavs { get; set; } = new List(); @@ -49,8 +49,8 @@ public class SiteStructureViewModel [JsonProperty("moduleDatas")] public List ModuleDatas { get; set; } = new List(); - [JsonProperty("attributeSetDatas")] - public List AttributeSetDatas { get; set; } = new List(); + [JsonProperty("mixDatabaseDatas")] + public List MixDatabaseDatas { get; set; } = new List(); [JsonProperty("specificulture")] public string Specificulture { get; set; } @@ -66,7 +66,7 @@ public async Task InitAsync(string culture) { Pages = (await MixPages.ImportViewModel.Repository.GetModelListByAsync(p => p.Specificulture == culture)).Data; Modules = (await MixModules.ImportViewModel.Repository.GetModelListByAsync(p => p.Specificulture == culture)).Data; - AttributeSets = (await MixAttributeSets.ImportViewModel.Repository.GetModelListAsync()).Data; + MixDatabases = (await ViewModels.MixDatabases.ImportViewModel.Repository.GetModelListAsync()).Data; } #region Export @@ -84,7 +84,7 @@ public RepositoryResponse ExportSelectedItemsAsync() ExportPages(context, transaction); ExportModules(context, transaction); - ExportAttributeSetsAsync(context, transaction); + ExportMixDatabasesAsync(context, transaction); ExportDatas(context, transaction); return result; } @@ -108,29 +108,29 @@ public RepositoryResponse ExportSelectedItemsAsync() private void ExportDatas(MixCmsContext context, IDbContextTransaction transaction) { - ExportAttributeSetData(context, transaction); + ExportMixDatabaseData(context, transaction); ExportRelatedDatas(context, transaction); } - private void ExportAttributeSetsAsync(MixCmsContext context, IDbContextTransaction transaction) + private void ExportMixDatabasesAsync(MixCmsContext context, IDbContextTransaction transaction) { - foreach (var item in AttributeSets) + foreach (var item in MixDatabases) { - item.Fields = MixAttributeFields.UpdateViewModel.Repository.GetModelListBy(a => a.AttributeSetId == item.Id, context, transaction).Data?.OrderBy(a => a.Priority).ToList(); + item.Fields = MixDatabaseColumns.UpdateViewModel.Repository.GetModelListBy(a => a.MixDatabaseId == item.Id, context, transaction).Data?.OrderBy(a => a.Priority).ToList(); // Filter list reference field => Add to Export Data if not exist var refFields = item.Fields.Where(f => f.DataType == MixDataType.Reference); foreach (var field in refFields) { - var refSet = AttributeSets.FirstOrDefault(m => m.Name == field.AttributeSetName); + var refSet = MixDatabases.FirstOrDefault(m => m.Name == field.MixDatabaseName); if (refSet == null) { - var getSet = MixAttributeSets.ImportViewModel.Repository.GetSingleModel(m => m.Name == field.AttributeSetName, context, transaction); + var getSet = ViewModels.MixDatabases.ImportViewModel.Repository.GetSingleModel(m => m.Name == field.MixDatabaseName, context, transaction); if (getSet.IsSucceed) { refSet = getSet.Data; refSet.IsExportData = refSet.IsExportData || item.IsExportData; - AttributeSets.Add(refSet); + MixDatabases.Add(refSet); } } else @@ -236,7 +236,7 @@ private void ExportAdditionalData(string id, MixDatabaseParentType type, MixCmsC { if (!RelatedData.Any(m => m.ParentId == id && m.ParentType == type)) { - var getRelatedData = MixRelatedAttributeDatas.ImportViewModel.Repository.GetSingleModel( + var getRelatedData = MixDatabaseDataAssociations.ImportViewModel.Repository.GetSingleModel( m => m.Specificulture == Specificulture && m.ParentType == type && m.ParentId == id, context, transaction); if (getRelatedData.IsSucceed) @@ -246,20 +246,20 @@ private void ExportAdditionalData(string id, MixDatabaseParentType type, MixCmsC } } - private void ExportAttributeSetData(MixCmsContext context, IDbContextTransaction transaction) + private void ExportMixDatabaseData(MixCmsContext context, IDbContextTransaction transaction) { - AttributeSetDatas = new List(); - // Load AttributeSet data - foreach (var item in AttributeSets) + MixDatabaseDatas = new List(); + // Load MixDatabase data + foreach (var item in MixDatabases) { if (item.IsExportData) { - var getData = MixAttributeSetDatas.ImportViewModel.Repository.GetModelListBy( - a => a.Specificulture == Specificulture && a.AttributeSetId == item.Id, context, transaction) + var getData = ViewModels.MixDatabaseDatas.ImportViewModel.Repository.GetModelListBy( + a => a.Specificulture == Specificulture && a.MixDatabaseId == item.Id, context, transaction) .Data?.OrderBy(a => a.Priority).ToList(); if (getData != null) { - AttributeSetDatas.AddRange(getData); + MixDatabaseDatas.AddRange(getData); } } } @@ -269,13 +269,13 @@ private void ExportAttributeSetData(MixCmsContext context, IDbContextTransaction RelatedData.AddRange(Modules.Where(p => p.RelatedData != null).Select(p => p.RelatedData)); foreach (var item in RelatedData) { - if (!AttributeSetDatas.Any(m => m.Id == item.Id)) + if (!MixDatabaseDatas.Any(m => m.Id == item.Id)) { - var getData = MixAttributeSetDatas.ImportViewModel.Repository.GetSingleModel( + var getData = ViewModels.MixDatabaseDatas.ImportViewModel.Repository.GetSingleModel( m => m.Id == item.Id, context, transaction); if (getData.IsSucceed) { - AttributeSetDatas.Add(getData.Data); + MixDatabaseDatas.Add(getData.Data); } } } @@ -283,16 +283,16 @@ private void ExportAttributeSetData(MixCmsContext context, IDbContextTransaction private void ExportRelatedDatas(MixCmsContext context, IDbContextTransaction transaction) { - foreach (var item in AttributeSetDatas) + foreach (var item in MixDatabaseDatas) { - var getDataResult = MixRelatedAttributeDatas.ImportViewModel.Repository + var getDataResult = MixDatabaseDataAssociations.ImportViewModel.Repository .GetModelListBy(m => m.ParentId == item.Id && m.Specificulture == item.Specificulture , context, transaction); if (getDataResult.IsSucceed && getDataResult.Data.Count > 0) { var data = getDataResult.Data.Where(m => - AttributeSetDatas.Any(d => d.Id == m.DataId) + MixDatabaseDatas.Any(d => d.Id == m.DataId) && !RelatedData.Any(r => r.ParentId == item.Id && r.DataId == m.DataId)) .ToList(); RelatedData.AddRange(data); @@ -310,7 +310,7 @@ private void ExportRelatedDatas(MixCmsContext context, IDbContextTransaction tra private Dictionary dicPostIds = new Dictionary(); private Dictionary dicPageIds = new Dictionary(); private Dictionary dicFieldIds = new Dictionary(); - private Dictionary dicAttributeSetIds = new Dictionary(); + private Dictionary dicMixDatabaseIds = new Dictionary(); public async Task> ImportAsync(string destCulture, MixCmsContext _context = null, IDbContextTransaction _transaction = null) @@ -344,13 +344,13 @@ public async Task> ImportAsync(string destCulture, { result = await ImportPostsAsync(destCulture, context, transaction); } - if (result.IsSucceed && AttributeSets != null && AttributeSets.Count > 0) + if (result.IsSucceed && MixDatabases != null && MixDatabases.Count > 0) { - result = await ImportAttributeSetsAsync(context, transaction); + result = await ImportMixDatabasesAsync(context, transaction); } - if (result.IsSucceed && AttributeSetDatas.Count > 0) + if (result.IsSucceed && MixDatabaseDatas.Count > 0) { - result = await ImportAttributeSetDatas(destCulture, context, transaction); + result = await ImportMixDatabaseDatas(destCulture, context, transaction); } if (result.IsSucceed && RelatedData.Count > 0) { @@ -448,33 +448,33 @@ private async Task> ImportPostsAsync(string destCulture return result; } - private async Task> ImportAttributeSetsAsync(MixCmsContext context, IDbContextTransaction transaction) + private async Task> ImportMixDatabasesAsync(MixCmsContext context, IDbContextTransaction transaction) { var result = new RepositoryResponse() { IsSucceed = true }; - if (AttributeSets != null) + if (MixDatabases != null) { - var startId = MixAttributeSets.ImportViewModel.Repository.Max(m => m.Id, context, transaction).Data; - var startFieldId = MixAttributeFields.UpdateViewModel.Repository.Max(m => m.Id, context, transaction).Data; - var attributeFields = new List(); - foreach (var set in AttributeSets) + var startId = ViewModels.MixDatabases.ImportViewModel.Repository.Max(m => m.Id, context, transaction).Data; + var startFieldId = MixDatabaseColumns.UpdateViewModel.Repository.Max(m => m.Id, context, transaction).Data; + var mixDatabaseColumns = new List(); + foreach (var set in MixDatabases) { set.CreatedBy = CreatedBy; if (result.IsSucceed) { - if (!context.MixAttributeSet.Any(m => m.Name == set.Name)) + if (!context.MixDatabase.Any(m => m.Name == set.Name)) { startId++; set.Id = startId; set.CreatedDateTime = DateTime.UtcNow; - attributeFields.AddRange(set.Fields - .Where(m => !attributeFields.Any(n => n.Id == m.Id)) + mixDatabaseColumns.AddRange(set.Fields + .Where(m => !mixDatabaseColumns.Any(n => n.Id == m.Id)) .ToList()); var saveResult = await set.SaveModelAsync(false, context, transaction); ViewModelHelper.HandleResult(saveResult, ref result); } - if (!dicAttributeSetIds.Any(m => m.Key == set.Id)) + if (!dicMixDatabaseIds.Any(m => m.Key == set.Id)) { - dicAttributeSetIds.Add(set.Id, startId); + dicMixDatabaseIds.Add(set.Id, startId); } } else @@ -485,16 +485,16 @@ private async Task> ImportAttributeSetsAsync(MixCmsCont // save fields if (result.IsSucceed) { - foreach (var field in attributeFields) + foreach (var field in mixDatabaseColumns) { if (result.IsSucceed) { field.CreatedBy = CreatedBy; - var setId = dicAttributeSetIds.FirstOrDefault(m => m.Key == field.AttributeSetId); - field.AttributeSetId = setId.Value; + var setId = dicMixDatabaseIds.FirstOrDefault(m => m.Key == field.MixDatabaseId); + field.MixDatabaseId = setId.Value; if (field.ReferenceId != null) { - var refId = dicAttributeSetIds.FirstOrDefault(m => m.Key == field.ReferenceId); + var refId = dicMixDatabaseIds.FirstOrDefault(m => m.Key == field.ReferenceId); field.ReferenceId = refId.Value; } if (dicFieldIds.ContainsKey(field.Id)) @@ -695,36 +695,36 @@ private async Task> ImportPagesAsync(string destCulture return result; } - private async Task> ImportAttributeSetDatas(string destCulture, MixCmsContext context, IDbContextTransaction transaction) + private async Task> ImportMixDatabaseDatas(string destCulture, MixCmsContext context, IDbContextTransaction transaction) { var result = new RepositoryResponse() { IsSucceed = true }; - foreach (var item in AttributeSetDatas) + foreach (var item in MixDatabaseDatas) { item.CreatedBy = CreatedBy; if (result.IsSucceed) { item.CreatedBy = CreatedBy; - if (!context.MixAttributeSetData.Any(m => m.Id == item.Id && m.Specificulture == item.Specificulture)) + if (!context.MixDatabaseData.Any(m => m.Id == item.Id && m.Specificulture == item.Specificulture)) { item.Specificulture = destCulture; item.CreatedDateTime = DateTime.UtcNow; // update new Id if not system attribute - if (item.AttributeSetName.IndexOf("sys_") != 0 && dicAttributeSetIds.ContainsKey(item.AttributeSetId)) + if (item.MixDatabaseName.IndexOf("sys_") != 0 && dicMixDatabaseIds.ContainsKey(item.MixDatabaseId)) { - item.AttributeSetId = dicAttributeSetIds[item.AttributeSetId]; + item.MixDatabaseId = dicMixDatabaseIds[item.MixDatabaseId]; } - item.Fields = item.Fields ?? MixAttributeFields.UpdateViewModel.Repository.GetModelListBy( - m => m.AttributeSetId == item.AttributeSetId, context, transaction).Data; + item.Fields = item.Fields ?? MixDatabaseColumns.UpdateViewModel.Repository.GetModelListBy( + m => m.MixDatabaseId == item.MixDatabaseId, context, transaction).Data; foreach (var field in item.Fields) { field.Specificulture = destCulture; - var newSet = AttributeSets.FirstOrDefault(m => m.Name == field.AttributeSetName); + var newSet = MixDatabases.FirstOrDefault(m => m.Name == field.MixDatabaseName); var newField = newSet?.Fields.FirstOrDefault(m => m.Name == field.Name); if (newField != null) { field.Id = newField.Id; - field.AttributeSetId = newSet.Id; - field.AttributeSetName = newSet.Name; + field.MixDatabaseId = newSet.Id; + field.MixDatabaseName = newSet.Name; field.CreatedDateTime = DateTime.UtcNow; } } @@ -742,7 +742,7 @@ private async Task> ImportAttributeSetDatas(string dest private async Task> ImportRelatedDatas(string desCulture, MixCmsContext context, IDbContextTransaction transaction) { - var result = await ImportRelatedAttributeSetDatas(desCulture, context, transaction); + var result = await ImportRelatedMixDatabaseDatas(desCulture, context, transaction); if (result.IsSucceed) { result = await ImportPagePostNavs(desCulture, context, transaction); @@ -850,7 +850,7 @@ private async Task> ImportModuleDatas(string desCulture return result; } - private async Task> ImportRelatedAttributeSetDatas(string desCulture, MixCmsContext context, IDbContextTransaction transaction) + private async Task> ImportRelatedMixDatabaseDatas(string desCulture, MixCmsContext context, IDbContextTransaction transaction) { var result = new RepositoryResponse() { IsSucceed = true }; foreach (var item in RelatedData) @@ -861,7 +861,7 @@ private async Task> ImportRelatedAttributeSetDatas(stri switch (item.ParentType) { case MixDatabaseParentType.Set: - item.AttributeSetId = dicAttributeSetIds[item.AttributeSetId]; + item.MixDatabaseId = dicMixDatabaseIds[item.MixDatabaseId]; break; case MixDatabaseParentType.Post: diff --git a/src/Mix.Cms.Lib/default.appsettings.json b/src/Mix.Cms.Lib/default.appsettings.json new file mode 100644 index 000000000..e9b69f36c --- /dev/null +++ b/src/Mix.Cms.Lib/default.appsettings.json @@ -0,0 +1,140 @@ +{ + "ConnectionStrings": { + "MixAccountConnection": null, + "MixCmsConnection": null, + "MixMessengerConnection": null + }, + "MixConfigurations": { + "IsCache": true, + "MixCacheFolder": "MixContent/cache", + "JsonDataFolder": "MixContent/data", + "MixLogsFolder": "MixContent/logs" + }, + "Authentication": { + "ClockSkew": 20, + "CookieExpiration": 20, + "RefreshTokenExpiration": 120, + "ValidateIssuer": false, + "ValidateAudience": false, + "ValidateLifetime": true, + "ValidateIssuerSigningKey": true, + "TokenType": "Bearer", + "Audience": "mix-core", + "SecretKey": "mixcore-secret-key", + "Issuer": "mix-core", + "Issuers": "mix-core", + "Audiences": "mix-core", + "AllowedIps": "" + }, + "IpSecuritySettings": { + "IsRetrictIp": true, + "AllowedPortalIps": [], + "AllowedIps": [], + "ExceptIps": [] + }, + "Cloudflare": { + "ApiToken": "", + "ApiKey": { + "GlobalKey": "", + "OriginKey": "" + } + }, + "Translator": {}, + "LocalSettings": { + "en-us": { + "ContactAddress": "", + "ContactEmail": "", + "ContactPhone": "", + "Facebook": "", + "FacebookAppId": "", + "Favicon": "", + "LanguageVersion": "1", + "Logo": "", + "SettingVersion": "1", + "Theme": "Default", + "ThemeId": "1" + } + }, + "GlobalSettings": { + "IsInit": true, + "InitStatus": 0, + "IsMaintenance": false, + "IsRewrite": true, + "IsHttps": false, + "IsCache": true, + "IsRegistration": true, + "MaxPageSize": 100, + "ImageSize": 2000, + "DefaultAvatar": "/mix-app/assets/img/user.png", + "DefaultCulture": "en-us", + "DefaultTemplate": "_Blank", + "DefaultTemplateContent": "
", + "DefaultTheme": "Default_Blank", + "DefaultContentStatus": "Published", + "DefaultBlankTemplateFolder": "Themes/Default_Blank", + "DefaultTemplateFolder": "Themes/Default", + "DefaultTemplateLayout": "_Layout", + "DefaultPostAttr": "[]", + "OrderBy": "Priority", + "OrderDirection": "0", + "Language": "en-us", + "UploadFolder": "Content/Uploads", + "ThemeId": "1", + "Domain": "", + "TemplateExtension": ".cshtml", + "TagPageSize": "20", + "SearchPageSize": "20", + "IsEncryptApi": true, + "LastUpdateConfiguration": null, + "DatabaseProvider": "MSSQL", + "AllowedHosts": [], + "Smtp": { + "Server": "", + "Port": 587, + "SSL": true, + "User": "", + "Password": "", + "From": "support@mixcore.org", + "FromName": "mix-core" + }, + "PortalThemeSettings": { + "primaryColorHue": 90, + "primaryColorSaturation": 35, + "primaryColorBrightness": 50, + "bgColor": "#fbfbfb", + "textColor": "#404040", + "primaryColor": "#47c5d1", + "bgColorHover": "#d1e0de", + "borderColor": "#d1e0de", + "borderColorHover": "#e0e4e7", + "linkColor": "#47c5d1", + "linkColorHover": "#404040", + "linkColorActive": "#404040", + "textColorHover": "#008b8b", + "fontFamily": "", + "fontSizeH1": "16", + "fontSize": "12" + } + }, + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Information" + } + }, + "JWTSettings": { + "SecretKey": "sw-cms-secret-key", + "Issuer": "sw-cms", + "Audience": "sw-client" + }, + "Language": "en-us", + "EPPlus": { + "ExcelPackage": { + "LicenseContext": "NonCommercial" //The license context used + } + }, + "Quartz": { + "quartz.scheduler.instanceName": "Mixcore Cms Scheduler" + } +} diff --git a/src/Mix.Cms.Service.SignalR/Hubs/ServiceHub.cs b/src/Mix.Cms.Service.SignalR/Hubs/ServiceHub.cs index 88dff359c..6360ac80a 100644 --- a/src/Mix.Cms.Service.SignalR/Hubs/ServiceHub.cs +++ b/src/Mix.Cms.Service.SignalR/Hubs/ServiceHub.cs @@ -57,10 +57,10 @@ public Task HandleRequest(string data) private async Task SaveData(HubRequest request) { - var data = new Lib.ViewModels.MixAttributeSetDatas.FormViewModel() + var data = new Lib.ViewModels.MixDatabaseDatas.FormViewModel() { Specificulture = request.Specificulture, - AttributeSetName = request.Room, + MixDatabaseName = request.Room, Obj = request.Data, CreatedBy = request.Uid }; @@ -87,8 +87,8 @@ private async Task JoinGroup(HubRequest request) // Announce User Connected to Group and list available users await SendToCaller(getAvailableUsers.Data, Constants.Enums.MessageReponseKey.ConnectSuccess); } - var getPreviousMsgs = Mix.Cms.Service.SignalR.ViewModels.MixAttributeSetDatas.ReadViewModel.Repository.GetModelListBy( - m => m.AttributeSetName == request.Room && m.Specificulture == request.Specificulture + var getPreviousMsgs = Mix.Cms.Service.SignalR.ViewModels.MixDatabaseDatas.ReadViewModel.Repository.GetModelListBy( + m => m.MixDatabaseName == request.Room && m.Specificulture == request.Specificulture , "CreatedDateTime", Heart.Enums.MixHeartEnums.DisplayDirection.Desc, 10, 0); // Get previous messages if (getPreviousMsgs.IsSucceed) @@ -109,9 +109,9 @@ private async Task JoinGroup(HubRequest request) private async Task GetGroupMembersAsync(HubRequest request) { - Expression> predicate = m => m.Specificulture == request.Specificulture - && m.AttributeSetName == Constants.HubMessages.HubMemberName && m.AttributeFieldName == request.Room; - var data = await Lib.ViewModels.MixAttributeSetDatas.Helper.FilterByKeywordAsync( + Expression> predicate = m => m.Specificulture == request.Specificulture + && m.MixDatabaseName == Constants.HubMessages.HubMemberName && m.MixDatabaseColumnName == request.Room; + var data = await Lib.ViewModels.MixDatabaseDatas.Helper.FilterByKeywordAsync( request.Specificulture, request.Room, null, null); return data; } diff --git a/src/Mix.Cms.Service.SignalR/Mix.Cms.Service.SignalR.csproj b/src/Mix.Cms.Service.SignalR/Mix.Cms.Service.SignalR.csproj index 741a08afb..a9ca33f9c 100644 --- a/src/Mix.Cms.Service.SignalR/Mix.Cms.Service.SignalR.csproj +++ b/src/Mix.Cms.Service.SignalR/Mix.Cms.Service.SignalR.csproj @@ -16,8 +16,8 @@ - - + + diff --git a/src/Mix.Cms.Service.SignalR/Models/HubRequest.cs b/src/Mix.Cms.Service.SignalR/Models/HubRequest.cs index 4db31db91..d31b34a0b 100644 --- a/src/Mix.Cms.Service.SignalR/Models/HubRequest.cs +++ b/src/Mix.Cms.Service.SignalR/Models/HubRequest.cs @@ -18,7 +18,7 @@ public class HubRequest public string To { get; set; } [JsonProperty("attributeSetName")] - public string AttributeSetName { get; set; } + public string MixDatabaseName { get; set; } [JsonProperty("action")] public string Action { get; set; } diff --git a/src/Mix.Cms.Service.SignalR/ViewModels/MixAttributeSetDatas/FormViewModel.cs b/src/Mix.Cms.Service.SignalR/ViewModels/MixAttributeSetDatas/FormViewModel.cs index 640e9a570..26b17c6d7 100644 --- a/src/Mix.Cms.Service.SignalR/ViewModels/MixAttributeSetDatas/FormViewModel.cs +++ b/src/Mix.Cms.Service.SignalR/ViewModels/MixAttributeSetDatas/FormViewModel.cs @@ -12,10 +12,10 @@ using System.Linq; using System.Threading.Tasks; -namespace Mix.Cms.Service.SignalR.ViewModels.MixAttributeSetDatas +namespace Mix.Cms.Service.SignalR.ViewModels.MixDatabaseDatas { public class FormViewModel - : ViewModelBase + : ViewModelBase { #region Properties @@ -31,10 +31,10 @@ public class FormViewModel public int Priority { get; set; } [JsonProperty("attributeSetId")] - public int AttributeSetId { get; set; } + public int MixDatabaseId { get; set; } [JsonProperty("attributeSetName")] - public string AttributeSetName { get; set; } + public string MixDatabaseName { get; set; } [JsonProperty("createdDateTime")] public DateTime CreatedDateTime { get; set; } @@ -54,16 +54,16 @@ public class FormViewModel [JsonProperty("relatedData")] [JsonIgnore] - public List RelatedData { get; set; } = new List(); + public List RelatedData { get; set; } = new List(); [JsonIgnore] - public List Values { get; set; } + public List Values { get; set; } [JsonIgnore] - public List Fields { get; set; } + public List Fields { get; set; } [JsonIgnore] - public List RefData { get; set; } = new List(); + public List RefData { get; set; } = new List(); #endregion Views @@ -75,7 +75,7 @@ public FormViewModel() : base() { } - public FormViewModel(MixAttributeSetData model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) + public FormViewModel(MixDatabaseData model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) { } @@ -85,22 +85,22 @@ public FormViewModel(MixAttributeSetData model, MixCmsContext _context = null, I public override void ExpandView(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { - var getValues = Lib.ViewModels.MixAttributeSetValues.UpdateViewModel + var getValues = Lib.ViewModels.MixDatabaseDataValues.UpdateViewModel .Repository.GetModelListBy(a => a.DataId == Id && a.Specificulture == Specificulture, _context, _transaction); if (getValues.IsSucceed) { - Fields = Lib.ViewModels.MixAttributeFields.UpdateViewModel.Repository.GetModelListBy(f => f.AttributeSetId == AttributeSetId, _context, _transaction).Data; + Fields = Lib.ViewModels.MixDatabaseColumns.UpdateViewModel.Repository.GetModelListBy(f => f.MixDatabaseId == MixDatabaseId, _context, _transaction).Data; Values = getValues.Data.OrderBy(a => a.Priority).ToList(); foreach (var field in Fields.OrderBy(f => f.Priority)) { - var val = Values.FirstOrDefault(v => v.AttributeFieldId == field.Id); + var val = Values.FirstOrDefault(v => v.MixDatabaseColumnId == field.Id); if (val == null) { - val = new Lib.ViewModels.MixAttributeSetValues.UpdateViewModel( - new MixAttributeSetValue() + val = new Lib.ViewModels.MixDatabaseDataValues.UpdateViewModel( + new MixDatabaseDataValue() { - AttributeFieldId = field.Id, - AttributeFieldName = field.Name, + MixDatabaseColumnId = field.Id, + MixDatabaseColumnName = field.Name, } , _context, _transaction) { @@ -109,44 +109,44 @@ public override void ExpandView(MixCmsContext _context = null, IDbContextTransac Values.Add(val); } val.Priority = field.Priority; - val.AttributeSetName = AttributeSetName; + val.MixDatabaseName = MixDatabaseName; } ParseData(); } } - public override MixAttributeSetData ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) + public override MixDatabaseData ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { if (string.IsNullOrEmpty(Id)) { Id = Guid.NewGuid().ToString(); CreatedDateTime = DateTime.UtcNow; - Priority = Repository.Count(m => m.AttributeSetName == AttributeSetName && m.Specificulture == Specificulture, _context, _transaction).Data + 1; + Priority = Repository.Count(m => m.MixDatabaseName == MixDatabaseName && m.Specificulture == Specificulture, _context, _transaction).Data + 1; } - if (string.IsNullOrEmpty(AttributeSetName)) + if (string.IsNullOrEmpty(MixDatabaseName)) { - AttributeSetName = _context.MixAttributeSet.First(m => m.Id == AttributeSetId)?.Name; + MixDatabaseName = _context.MixDatabase.First(m => m.Id == MixDatabaseId)?.Name; } - if (AttributeSetId == 0) + if (MixDatabaseId == 0) { - AttributeSetId = _context.MixAttributeSet.First(m => m.Name == AttributeSetName)?.Id ?? 0; + MixDatabaseId = _context.MixDatabase.First(m => m.Name == MixDatabaseName)?.Id ?? 0; } - Values = Values ?? Lib.ViewModels.MixAttributeSetValues.UpdateViewModel + Values = Values ?? Lib.ViewModels.MixDatabaseDataValues.UpdateViewModel .Repository.GetModelListBy(a => a.DataId == Id && a.Specificulture == Specificulture, _context, _transaction).Data.OrderBy(a => a.Priority).ToList(); - Fields = Lib.ViewModels.MixAttributeFields.UpdateViewModel.Repository.GetModelListBy(f => f.AttributeSetId == AttributeSetId, _context, _transaction).Data; + Fields = Lib.ViewModels.MixDatabaseColumns.UpdateViewModel.Repository.GetModelListBy(f => f.MixDatabaseId == MixDatabaseId, _context, _transaction).Data; foreach (var field in Fields.OrderBy(f => f.Priority)) { - var val = Values.FirstOrDefault(v => v.AttributeFieldId == field.Id); + var val = Values.FirstOrDefault(v => v.MixDatabaseColumnId == field.Id); if (val == null) { - val = new Lib.ViewModels.MixAttributeSetValues.UpdateViewModel( - new MixAttributeSetValue() + val = new Lib.ViewModels.MixDatabaseDataValues.UpdateViewModel( + new MixDatabaseDataValue() { - AttributeFieldId = field.Id, - AttributeFieldName = field.Name, + MixDatabaseColumnId = field.Id, + MixDatabaseColumnName = field.Name, } , _context, _transaction) { @@ -157,12 +157,12 @@ public override MixAttributeSetData ParseModel(MixCmsContext _context = null, ID Values.Add(val); } val.Priority = field.Priority; - val.AttributeSetName = AttributeSetName; - if (Data[val.AttributeFieldName] != null) + val.MixDatabaseName = MixDatabaseName; + if (Data[val.MixDatabaseColumnName] != null) { if (val.Field.DataType == MixDataType.Reference) { - var arr = Data[val.AttributeFieldName].Value(); + var arr = Data[val.MixDatabaseColumnName].Value(); if (arr != null) { foreach (JObject objData in arr) @@ -183,7 +183,7 @@ public override MixAttributeSetData ParseModel(MixCmsContext _context = null, ID RefData.Add(new FormViewModel() { Specificulture = Specificulture, - AttributeSetId = field.ReferenceId.Value, + MixDatabaseId = field.ReferenceId.Value, Data = objData }); } @@ -192,7 +192,7 @@ public override MixAttributeSetData ParseModel(MixCmsContext _context = null, ID } else { - ParseModelValue(Data[val.AttributeFieldName], val); + ParseModelValue(Data[val.MixDatabaseColumnName], val); } } else @@ -202,9 +202,9 @@ public override MixAttributeSetData ParseModel(MixCmsContext _context = null, ID } // Save Edm html - var getAttrSet = Mix.Cms.Lib.ViewModels.MixAttributeSets.ReadViewModel.Repository.GetSingleModel(m => m.Name == AttributeSetName, _context, _transaction); + var getAttrSet = Mix.Cms.Lib.ViewModels.MixDatabases.ReadViewModel.Repository.GetSingleModel(m => m.Name == MixDatabaseName, _context, _transaction); var getEdm = Lib.ViewModels.MixTemplates.UpdateViewModel.GetTemplateByPath(getAttrSet.Data.EdmTemplate, Specificulture); - var edmField = Values.FirstOrDefault(f => f.AttributeFieldName == "edm"); + var edmField = Values.FirstOrDefault(f => f.MixDatabaseColumnName == "edm"); if (edmField != null && getEdm.IsSucceed && !string.IsNullOrEmpty(getEdm.Data.Content)) { string body = getEdm.Data.Content; @@ -251,7 +251,7 @@ public override RepositoryResponse SaveModel(bool isSaveSubModels return result; } - public override async Task> SaveSubModelsAsync(MixAttributeSetData parent, MixCmsContext _context, IDbContextTransaction _transaction) + public override async Task> SaveSubModelsAsync(MixDatabaseData parent, MixCmsContext _context, IDbContextTransaction _transaction) { var result = new RepositoryResponse() { IsSucceed = true }; @@ -277,14 +277,14 @@ public override async Task> SaveSubModelsAsync(MixAttri return result; } - private async Task> SaveValues(MixAttributeSetData parent, MixCmsContext context, IDbContextTransaction transaction) + private async Task> SaveValues(MixDatabaseData parent, MixCmsContext context, IDbContextTransaction transaction) { var result = new RepositoryResponse() { IsSucceed = true }; foreach (var item in Values) { if (result.IsSucceed) { - if (Fields.Any(f => f.Id == item.AttributeFieldId)) + if (Fields.Any(f => f.Id == item.MixDatabaseColumnId)) { item.Priority = item.Field.Priority; item.DataId = parent.Id; @@ -306,7 +306,7 @@ private async Task> SaveValues(MixAttributeSetData pare return result; } - private async Task> SaveRefDataAsync(MixAttributeSetData parent, MixCmsContext context, IDbContextTransaction transaction) + private async Task> SaveRefDataAsync(MixDatabaseData parent, MixCmsContext context, IDbContextTransaction transaction) { var result = new RepositoryResponse() { IsSucceed = true }; foreach (var item in RefData) @@ -317,13 +317,13 @@ private async Task> SaveRefDataAsync(MixAttributeSetDat var saveRef = await item.SaveModelAsync(true, context, transaction); if (saveRef.IsSucceed) { - RelatedData.Add(new Lib.ViewModels.MixRelatedAttributeDatas.UpdateViewModel() + RelatedData.Add(new Lib.ViewModels.MixDatabaseDataAssociations.UpdateViewModel() { Id = saveRef.Data.Id, ParentId = Id, ParentType = MixDatabaseParentType.Set, - AttributeSetId = saveRef.Data.AttributeSetId, - AttributeSetName = saveRef.Data.AttributeSetName, + MixDatabaseId = saveRef.Data.MixDatabaseId, + MixDatabaseName = saveRef.Data.MixDatabaseName, CreatedDateTime = DateTime.UtcNow, Specificulture = Specificulture }); @@ -338,7 +338,7 @@ private async Task> SaveRefDataAsync(MixAttributeSetDat return result; } - private async Task> SaveRelatedDataAsync(MixAttributeSetData parent, MixCmsContext context, IDbContextTransaction transaction) + private async Task> SaveRelatedDataAsync(MixDatabaseData parent, MixCmsContext context, IDbContextTransaction transaction) { var result = new RepositoryResponse() { IsSucceed = true }; @@ -349,8 +349,8 @@ private async Task> SaveRelatedDataAsync(MixAttributeSe // Current data is child data if (string.IsNullOrEmpty(item.Id)) { - item.AttributeSetId = parent.AttributeSetId; - item.AttributeSetName = parent.AttributeSetName; + item.MixDatabaseId = parent.MixDatabaseId; + item.MixDatabaseName = parent.MixDatabaseName; item.Id = parent.Id; } // Current data is parent data @@ -358,7 +358,7 @@ private async Task> SaveRelatedDataAsync(MixAttributeSe { item.ParentId = parent.Id; } - item.Priority = Lib.ViewModels.MixRelatedAttributeDatas.UpdateViewModel.Repository.Count( + item.Priority = Lib.ViewModels.MixDatabaseDataAssociations.UpdateViewModel.Repository.Count( m => m.ParentId == Id && m.Specificulture == Specificulture, context, transaction).Data + 1; item.Specificulture = Specificulture; item.CreatedDateTime = DateTime.UtcNow; @@ -380,31 +380,31 @@ private async Task> SaveRelatedDataAsync(MixAttributeSe #region Expands - private JProperty ParseValue(Lib.ViewModels.MixAttributeSetValues.UpdateViewModel item) + private JProperty ParseValue(Lib.ViewModels.MixDatabaseDataValues.UpdateViewModel item) { switch (item.DataType) { case MixDataType.DateTime: - return new JProperty(item.AttributeFieldName, item.DateTimeValue); + return new JProperty(item.MixDatabaseColumnName, item.DateTimeValue); case MixDataType.Date: - return (new JProperty(item.AttributeFieldName, item.DateTimeValue)); + return (new JProperty(item.MixDatabaseColumnName, item.DateTimeValue)); case MixDataType.Time: - return (new JProperty(item.AttributeFieldName, item.DateTimeValue)); + return (new JProperty(item.MixDatabaseColumnName, item.DateTimeValue)); case MixDataType.Double: - return (new JProperty(item.AttributeFieldName, item.DoubleValue)); + return (new JProperty(item.MixDatabaseColumnName, item.DoubleValue)); case MixDataType.Boolean: - return (new JProperty(item.AttributeFieldName, item.BooleanValue)); + return (new JProperty(item.MixDatabaseColumnName, item.BooleanValue)); case MixDataType.Integer: - return (new JProperty(item.AttributeFieldName, item.IntegerValue)); + return (new JProperty(item.MixDatabaseColumnName, item.IntegerValue)); case MixDataType.Reference: //string url = $"/api/v1/odata/en-us/related-attribute-set-data/mobile/parent/set/{Id}/{item.Field.ReferenceId}"; - return (new JProperty(item.AttributeFieldName, new JArray())); + return (new JProperty(item.MixDatabaseColumnName, new JArray())); case MixDataType.Custom: case MixDataType.Duration: @@ -424,11 +424,11 @@ private JProperty ParseValue(Lib.ViewModels.MixAttributeSetValues.UpdateViewMode case MixDataType.VideoYoutube: case MixDataType.TuiEditor: default: - return (new JProperty(item.AttributeFieldName, item.StringValue)); + return (new JProperty(item.MixDatabaseColumnName, item.StringValue)); } } - private void ParseModelValue(JToken property, Lib.ViewModels.MixAttributeSetValues.UpdateViewModel item) + private void ParseModelValue(JToken property, Lib.ViewModels.MixDatabaseDataValues.UpdateViewModel item) { switch (item.Field.DataType) { @@ -486,7 +486,7 @@ private void ParseModelValue(JToken property, Lib.ViewModels.MixAttributeSetValu if (saveMedia.IsSucceed) { item.StringValue = saveMedia.Data.FullPath; - Data[item.AttributeFieldName] = item.StringValue; + Data[item.MixDatabaseColumnName] = item.StringValue; } } else @@ -517,7 +517,7 @@ private void ParseModelValue(JToken property, Lib.ViewModels.MixAttributeSetValu } } - public override async Task GenerateCache(MixAttributeSetData model, FormViewModel view, MixCmsContext _context = null, IDbContextTransaction _transaction = null) + public override async Task GenerateCache(MixDatabaseData model, FormViewModel view, MixCmsContext _context = null, IDbContextTransaction _transaction = null) { ParseData(); await base.GenerateCache(model, view, _context, _transaction).ConfigureAwait(false); @@ -528,7 +528,7 @@ private void ParseData() Data = new JObject(); foreach (var item in Values.OrderBy(v => v.Priority)) { - item.AttributeFieldName = item.Field.Name; + item.MixDatabaseColumnName = item.Field.Name; Data.Add(ParseValue(item)); } } diff --git a/src/Mix.Cms.Service.SignalR/ViewModels/MixAttributeSetDatas/ReadViewModel.cs b/src/Mix.Cms.Service.SignalR/ViewModels/MixAttributeSetDatas/ReadViewModel.cs index 2be281414..9b93e9725 100644 --- a/src/Mix.Cms.Service.SignalR/ViewModels/MixAttributeSetDatas/ReadViewModel.cs +++ b/src/Mix.Cms.Service.SignalR/ViewModels/MixAttributeSetDatas/ReadViewModel.cs @@ -9,10 +9,10 @@ using System.Collections.Generic; using System.Linq; -namespace Mix.Cms.Service.SignalR.ViewModels.MixAttributeSetDatas +namespace Mix.Cms.Service.SignalR.ViewModels.MixDatabaseDatas { public class ReadViewModel - : ViewModelBase + : ViewModelBase { #region Properties @@ -28,10 +28,10 @@ public class ReadViewModel public int Priority { get; set; } [JsonProperty("attributeSetId")] - public int AttributeSetId { get; set; } + public int MixDatabaseId { get; set; } [JsonProperty("attributeSetName")] - public string AttributeSetName { get; set; } + public string MixDatabaseName { get; set; } [JsonProperty("createdDateTime")] public DateTime CreatedDateTime { get; set; } @@ -54,16 +54,16 @@ public class ReadViewModel [JsonProperty("relatedData")] [JsonIgnore] - public List RelatedData { get; set; } = new List(); + public List RelatedData { get; set; } = new List(); [JsonIgnore] - public List Values { get; set; } + public List Values { get; set; } [JsonIgnore] - public List Fields { get; set; } + public List Fields { get; set; } [JsonIgnore] - public List RefData { get; set; } = new List(); + public List RefData { get; set; } = new List(); #endregion Views @@ -75,7 +75,7 @@ public ReadViewModel() : base() { } - public ReadViewModel(MixAttributeSetData model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) + public ReadViewModel(MixDatabaseData model, MixCmsContext _context = null, IDbContextTransaction _transaction = null) : base(model, _context, _transaction) { } @@ -85,7 +85,7 @@ public ReadViewModel(MixAttributeSetData model, MixCmsContext _context = null, I public override void ExpandView(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { - var getValues = Lib.ViewModels.MixAttributeSetValues.UpdateViewModel + var getValues = Lib.ViewModels.MixDatabaseDataValues.UpdateViewModel .Repository.GetModelListBy(a => a.DataId == Id && a.Specificulture == Specificulture, _context, _transaction); if (getValues.IsSucceed) { @@ -110,17 +110,17 @@ public override void ExpandView(MixCmsContext _context = null, IDbContextTransac private void ParseValueData(MixCmsContext _context, IDbContextTransaction _transaction) { - Fields = Lib.ViewModels.MixAttributeFields.UpdateViewModel.Repository.GetModelListBy(f => f.AttributeSetId == AttributeSetId, _context, _transaction).Data; + Fields = Lib.ViewModels.MixDatabaseColumns.UpdateViewModel.Repository.GetModelListBy(f => f.MixDatabaseId == MixDatabaseId, _context, _transaction).Data; foreach (var field in Fields.OrderBy(f => f.Priority)) { - var val = Values.FirstOrDefault(v => v.AttributeFieldId == field.Id); + var val = Values.FirstOrDefault(v => v.MixDatabaseColumnId == field.Id); if (val == null) { - val = new Lib.ViewModels.MixAttributeSetValues.UpdateViewModel( - new MixAttributeSetValue() + val = new Lib.ViewModels.MixDatabaseDataValues.UpdateViewModel( + new MixDatabaseDataValue() { - AttributeFieldId = field.Id, - AttributeFieldName = field.Name, + MixDatabaseColumnId = field.Id, + MixDatabaseColumnName = field.Name, } , _context, _transaction) { @@ -129,37 +129,37 @@ private void ParseValueData(MixCmsContext _context, IDbContextTransaction _trans Values.Add(val); } val.Priority = field.Priority; - val.AttributeSetName = AttributeSetName; + val.MixDatabaseName = MixDatabaseName; } ParseData(); } - private JProperty ParseValue(Lib.ViewModels.MixAttributeSetValues.UpdateViewModel item) + private JProperty ParseValue(Lib.ViewModels.MixDatabaseDataValues.UpdateViewModel item) { switch (item.DataType) { case MixDataType.DateTime: - return new JProperty(item.AttributeFieldName, item.DateTimeValue); + return new JProperty(item.MixDatabaseColumnName, item.DateTimeValue); case MixDataType.Date: - return (new JProperty(item.AttributeFieldName, item.DateTimeValue)); + return (new JProperty(item.MixDatabaseColumnName, item.DateTimeValue)); case MixDataType.Time: - return (new JProperty(item.AttributeFieldName, item.DateTimeValue)); + return (new JProperty(item.MixDatabaseColumnName, item.DateTimeValue)); case MixDataType.Double: - return (new JProperty(item.AttributeFieldName, item.DoubleValue)); + return (new JProperty(item.MixDatabaseColumnName, item.DoubleValue)); case MixDataType.Boolean: - return (new JProperty(item.AttributeFieldName, item.BooleanValue)); + return (new JProperty(item.MixDatabaseColumnName, item.BooleanValue)); case MixDataType.Integer: - return (new JProperty(item.AttributeFieldName, item.IntegerValue)); + return (new JProperty(item.MixDatabaseColumnName, item.IntegerValue)); case MixDataType.Reference: //string url = $"/api/v1/odata/en-us/related-attribute-set-data/mobile/parent/set/{Id}/{item.Field.ReferenceId}"; - return (new JProperty(item.AttributeFieldName, new JArray())); + return (new JProperty(item.MixDatabaseColumnName, new JArray())); case MixDataType.Custom: case MixDataType.Duration: @@ -179,7 +179,7 @@ private JProperty ParseValue(Lib.ViewModels.MixAttributeSetValues.UpdateViewMode case MixDataType.VideoYoutube: case MixDataType.TuiEditor: default: - return (new JProperty(item.AttributeFieldName, item.StringValue)); + return (new JProperty(item.MixDatabaseColumnName, item.StringValue)); } } @@ -188,7 +188,7 @@ private void ParseData() Data = new JObject(); foreach (var item in Values.OrderBy(v => v.Priority)) { - item.AttributeFieldName = item.Field.Name; + item.MixDatabaseColumnName = item.Field.Name; Data.Add(ParseValue(item)); } } diff --git a/src/Mix.Cms.Web/Controllers/BaseController.cs b/src/Mix.Cms.Web/Controllers/BaseController.cs index 4b4fc1c92..f81927309 100644 --- a/src/Mix.Cms.Web/Controllers/BaseController.cs +++ b/src/Mix.Cms.Web/Controllers/BaseController.cs @@ -5,6 +5,7 @@ using Mix.Cms.Lib; using Mix.Cms.Lib.Constants; using Mix.Cms.Lib.Enums; +using Mix.Cms.Lib.Helpers; using Mix.Cms.Lib.Models.Cms; using Mix.Cms.Lib.Services; using Mix.Domain.Core.ViewModels; @@ -170,7 +171,7 @@ protected async Task AliasAsync(string seoName) } } - protected async System.Threading.Tasks.Task Page(string seoName) + protected async System.Threading.Tasks.Task Page(string seoName, string keyword = null) { // Home Page int maxPageSize = MixService.GetConfig("MaxPageSize"); @@ -178,7 +179,10 @@ protected async System.Threading.Tasks.Task Page(string seoName) int orderDirection = MixService.GetConfig("OrderDirection"); int.TryParse(Request.Query["page"], out int page); int.TryParse(Request.Query["pageSize"], out int pageSize); - + if (keyword is not null) + { + ViewData["keyword"] = keyword; + } RepositoryResponse getPage = null; Expression> predicate; @@ -214,7 +218,8 @@ protected async System.Threading.Tasks.Task Page(string seoName) ViewData["Description"] = getPage.Data.SeoDescription; ViewData["Keywords"] = getPage.Data.SeoKeywords; ViewData["Image"] = getPage.Data.ImageUrl; - ViewData["PageClass"] = getPage.Data.CssClass; + ViewData["BodyClass"] = getPage.Data.CssClass; + ViewData["ViewMode"] = MixMvcViewMode.Page; getPage.LastUpdateConfiguration = MixService.GetConfig("LastUpdateConfiguration"); return View(getPage.Data); } @@ -259,8 +264,11 @@ protected async System.Threading.Tasks.Task Page(int pageId) ViewData["Description"] = getPage.Data.SeoDescription; ViewData["Keywords"] = getPage.Data.SeoKeywords; ViewData["Image"] = getPage.Data.ImageUrl; - ViewData["PageClass"] = getPage.Data.CssClass; ViewData["Layout"] = getPage.Data.Layout ?? "Masters/_Layout"; + ViewData["BodyClass"] = getPage.Data.CssClass; + ViewData["ViewMode"] = MixMvcViewMode.Page; + + ViewBag.viewMode = MixMvcViewMode.Page; getPage.LastUpdateConfiguration = MixService.GetConfig("LastUpdateConfiguration"); return View(getPage.Data); } @@ -287,6 +295,10 @@ protected async System.Threading.Tasks.Task Post(int id) ViewData["Description"] = getPost.Data.SeoDescription; ViewData["Keywords"] = getPost.Data.SeoKeywords; ViewData["Image"] = getPost.Data.ImageUrl; + ViewData["BodyClass"] = getPost.Data.BodyClass; + ViewData["ViewMode"] = MixMvcViewMode.Post; + + ViewBag.viewMode = MixMvcViewMode.Post; getPost.LastUpdateConfiguration = MixService.GetConfig("LastUpdateConfiguration"); return View(getPost.Data); } @@ -298,7 +310,7 @@ protected async System.Threading.Tasks.Task Post(int id) protected async System.Threading.Tasks.Task Data(string attributeSetName, string seoName) { - var getData = await Lib.ViewModels.MixAttributeSetDatas.Helper.FilterByKeywordAsync( + var getData = await Lib.ViewModels.MixDatabaseDatas.Helper.FilterByKeywordAsync( culture, attributeSetName, "equal", "seo_url", seoName); if (getData.IsSucceed && getData.Data.Count > 0) diff --git a/src/Mix.Cms.Web/Controllers/HomeController.cs b/src/Mix.Cms.Web/Controllers/HomeController.cs index b646867d0..03f37aded 100644 --- a/src/Mix.Cms.Web/Controllers/HomeController.cs +++ b/src/Mix.Cms.Web/Controllers/HomeController.cs @@ -41,8 +41,9 @@ protected override void ValidateRequest() [HttpGet] [Route("")] [Route("{seoName}")] - [Route("{culture}/{seoName}")] - public async Task Index(string seoName) + [Route("{seoName}/{keyword}")] + [Route("{culture}/{seoName}/{keyword}")] + public async Task Index(string seoName, string keyword) { if (isValid) { @@ -83,10 +84,11 @@ public async Task Index(string seoName) } else { - HandleSeoName(ref seoName); + HandleSeoName(ref seoName, ref keyword); } } ViewData["Layout"] = "Masters/_Layout"; + ViewData["keyword"] = keyword; return await AliasAsync(seoName); } else @@ -95,7 +97,7 @@ public async Task Index(string seoName) } } - private void HandleSeoName(ref string seoName) + private void HandleSeoName(ref string seoName, ref string keyword) { // Check url is end with '/' or '?' // Ex: en-us/page-name/ => seoName = en-us/page-name @@ -124,7 +126,8 @@ private void HandleSeoName(ref string seoName) if (MixService.Instance.CheckValidCulture(seoName)) { culture = seoName; - seoName = string.Empty; + seoName = keyword; + keyword = string.Empty; } } diff --git a/src/Mix.Cms.Web/Controllers/PageController.cs b/src/Mix.Cms.Web/Controllers/PageController.cs index 7a2b6c88c..de94edc82 100644 --- a/src/Mix.Cms.Web/Controllers/PageController.cs +++ b/src/Mix.Cms.Web/Controllers/PageController.cs @@ -35,12 +35,14 @@ protected override void ValidateRequest() #region Routes [Route("page/{seoName}")] + [Route("page/{seoName}/{keyword}")] [Route("{culture}/page/{seoName}")] - public async Task Index(string culture, string seoName) + [Route("{culture}/page/{seoName}/{keyword}")] + public async Task Index(string culture, string seoName, string keyword) { if (isValid) { - return await Page(seoName); + return await Page(seoName, keyword); } else { diff --git a/src/Mix.Cms.Web/IISUrlRewrite.xml b/src/Mix.Cms.Web/IISUrlRewrite.xml index ab76e48b8..850adc97b 100644 --- a/src/Mix.Cms.Web/IISUrlRewrite.xml +++ b/src/Mix.Cms.Web/IISUrlRewrite.xml @@ -6,26 +6,26 @@ - + - + - + - - + + - \ No newline at end of file diff --git a/src/Mix.Cms.Web/MixContent/data/configurations.json b/src/Mix.Cms.Web/MixContent/data/configurations.json index 0e2d05c0b..427281961 100644 --- a/src/Mix.Cms.Web/MixContent/data/configurations.json +++ b/src/Mix.Cms.Web/MixContent/data/configurations.json @@ -1,15 +1,5 @@ { "data": [ - { - "keyword": "MixcoreVersion", - "scope": "System", - "category": "Version", - "value": "1.0.0", - "dataType": "Text", - "description": "Mixcore CMS Version", - "priority": 0, - "status": "Published" - }, { "keyword": "SiteName", "scope": "Site", diff --git a/src/Mix.Cms.Web/MixContent/data/portal-menus.json b/src/Mix.Cms.Web/MixContent/data/portal-menus.json index 197bdf11a..90c5feb60 100644 --- a/src/Mix.Cms.Web/MixContent/data/portal-menus.json +++ b/src/Mix.Cms.Web/MixContent/data/portal-menus.json @@ -14,12 +14,11 @@ { "title": "Create New", "icon": "mi mi-Add", - "path": "/portal/attribute-set-data/create?attributeSetId=2&attributeSetName=sys_navigation&attributeSetTitle=Navigation&dataId=default" - + "path": "/portal/mix-database-data/create?mixDatabaseId=2&mixDatabaseName=sys_navigation&mixDatabaseTitle=Navigation&dataId=default" }, { - "path": "/portal/attribute-set-data/list?attributeSetId=2&attributeSetName=sys_navigation&attributeSetTitle=Navigation", - + "path": "/portal/mix-database-data/list?mixDatabaseId=2&mixDatabaseName=sys_navigation&mixDatabaseTitle=Navigation", + "title": "List", "icon": "mi mi-List" } @@ -102,10 +101,10 @@ { "title": "Create New", "icon": "mi mi-Add", - "path": "/portal/attribute-set/create" + "path": "/portal/mix-database/create" }, { - "path": "/portal/attribute-set/list", + "path": "/portal/mix-database/list", "title": "List", "icon": "mi mi-List" } @@ -119,10 +118,10 @@ { "title": "Create New", "icon": "mi mi-Add", - "path": "/portal/attribute-set-data/create?attributeSetId=7&attributeSetName=sys_category&attributeSetTitle=Category&dataId=default" + "path": "/portal/mix-database-data/create?mixDatabaseId=7&mixDatabaseName=sys_category&mixDatabaseTitle=Category&dataId=default" }, { - "path": "/portal/attribute-set-data/list?attributeSetId=7&attributeSetName=sys_category&attributeSetTitle=Category&dataId=default", + "path": "/portal/mix-database-data/list?mixDatabaseId=7&mixDatabaseName=sys_category&mixDatabaseTitle=Category&dataId=default", "title": "List", "icon": "mi mi-List" } @@ -136,10 +135,10 @@ { "title": "Create New", "icon": "mi mi-Add", - "path": "/portal/attribute-set-data/create?attributeSetId=8&attributeSetName=sys_tag&attributeSetTitle=Tag&dataId=default" + "path": "/portal/mix-database-data/create?mixDatabaseId=8&mixDatabaseName=sys_tag&mixDatabaseTitle=Tag&dataId=default" }, { - "path": "/portal/attribute-set-data/list?attributeSetId=8&attributeSetName=sys_tag&attributeSetTitle=Tag&dataId=default", + "path": "/portal/mix-database-data/list?mixDatabaseId=8&mixDatabaseName=sys_tag&mixDatabaseTitle=Tag&dataId=default", "title": "List", "icon": "mi mi-List" } @@ -658,22 +657,22 @@ ] }, { - "cate": "attribute set", + "cate": "Mix Database", "items": [ { - "path": "/portal/attribute-set/create", - "templatePath": "/mix-app/views/app-portal/pages/attribute-set/details.html", - "controller": "AttributeSetController" + "path": "/portal/mix-database/create", + "templatePath": "/mix-app/views/app-portal/pages/mix-database/details.html", + "controller": "MixDatabaseController" }, { - "path": "/portal/attribute-set/list", - "templatePath": "/mix-app/views/app-portal/pages/attribute-set/list.html", - "controller": "AttributeSetController" + "path": "/portal/mix-database/list", + "templatePath": "/mix-app/views/app-portal/pages/mix-database/list.html", + "controller": "MixDatabaseController" }, { - "path": "/portal/attribute-set/details/:id", - "templatePath": "/mix-app/views/app-portal/pages/attribute-set/details.html", - "controller": "AttributeSetController" + "path": "/portal/mix-database/details/:id", + "templatePath": "/mix-app/views/app-portal/pages/mix-database/details.html", + "controller": "MixDatabaseController" } ] }, @@ -748,22 +747,22 @@ ] }, { - "cate": "attribute set data", + "cate": "mix database data", "items": [ { - "path": "/portal/attribute-set-data/create", - "templatePath": "/mix-app/views/app-portal/pages/attribute-set-data/details.html", - "controller": "MixAttributeSetDataController" + "path": "/portal/mix-database-data/create", + "templatePath": "/mix-app/views/app-portal/pages/mix-database-data/details.html", + "controller": "MixDatabaseDataController" }, { - "path": "/portal/attribute-set-data/list", - "templatePath": "/mix-app/views/app-portal/pages/attribute-set-data/list.html", - "controller": "MixAttributeSetDataController" + "path": "/portal/mix-database-data/list", + "templatePath": "/mix-app/views/app-portal/pages/mix-database-data/list.html", + "controller": "MixDatabaseDataController" }, { - "path": "/portal/attribute-set-data/details", - "templatePath": "/mix-app/views/app-portal/pages/attribute-set-data/details.html", - "controller": "MixAttributeSetDataController" + "path": "/portal/mix-database-data/details", + "templatePath": "/mix-app/views/app-portal/pages/mix-database-data/details.html", + "controller": "MixDatabaseDataController" } ] }, diff --git a/src/Mix.Cms.Web/Mix.Cms.Web.csproj b/src/Mix.Cms.Web/Mixcore.csproj similarity index 91% rename from src/Mix.Cms.Web/Mix.Cms.Web.csproj rename to src/Mix.Cms.Web/Mixcore.csproj index 97d427e9b..de1275552 100644 --- a/src/Mix.Cms.Web/Mix.Cms.Web.csproj +++ b/src/Mix.Cms.Web/Mixcore.csproj @@ -10,20 +10,26 @@ en true favicon.ico + 1.0.1 + mixcore + + + + diff --git a/src/Mix.Cms.Web/Startup.cs b/src/Mix.Cms.Web/Startup.cs index 132eb5276..44432ec51 100644 --- a/src/Mix.Cms.Web/Startup.cs +++ b/src/Mix.Cms.Web/Startup.cs @@ -76,7 +76,7 @@ public void ConfigureServices(IServiceCollection services) services.AddMixScheduler(Configuration); /* Mix: End Inject Services */ - _ = VerifyInitDataAsync(services); + VerifyInitData(services); services.AddMixAuthorize(Configuration); /* End Additional Config for Mixcore Cms */ @@ -93,7 +93,7 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env) } else { - app.UseExceptionHandler("/Home/Error"); + app.UseExceptionHandler("/404"); // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); } @@ -106,7 +106,6 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env) context.Database.Migrate(); } } - app.UseCors(MixcoreAllowSpecificOrigins); var provider = new FileExtensionContentTypeProvider(); @@ -143,27 +142,27 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env) } // Mix: Check custom cms config - private async Task VerifyInitDataAsync(IServiceCollection services) + private void VerifyInitData(IServiceCollection services) { // Mix: Migrate db if already inited if (!MixService.GetConfig("IsInit")) { - using (var ctx = new MixCmsContext()) + using (var ctx = MixService.GetDbContext()) { ctx.Database.Migrate(); var transaction = ctx.Database.BeginTransaction(); var sysDatabasesFile = MixFileRepository.Instance.GetFile("sys_databases", MixFileExtensions.Json, $"{MixFolders.JsonDataFolder}"); - var sysDatabases = JObject.Parse(sysDatabasesFile.Content)["data"].ToObject>(); + var sysDatabases = JObject.Parse(sysDatabasesFile.Content)["data"].ToObject>(); foreach (var db in sysDatabases) { - if (!ctx.MixAttributeSet.Any(m => m.Name == db.Name)) + if (!ctx.MixDatabase.Any(m => m.Name == db.Name)) { - await db.SaveModelAsync(true, ctx, transaction); + db.SaveModel(true, ctx, transaction); } } - await transaction.CommitAsync(); - await transaction.DisposeAsync(); + transaction.Commit(); + transaction.Dispose(); } } diff --git a/src/Mix.Cms.Web/Views/Data/Index.cshtml b/src/Mix.Cms.Web/Views/Data/Index.cshtml index a93922bf4..a0ed7d4a1 100644 --- a/src/Mix.Cms.Web/Views/Data/Index.cshtml +++ b/src/Mix.Cms.Web/Views/Data/Index.cshtml @@ -1,4 +1,4 @@ -@model Mix.Cms.Lib.ViewModels.MixAttributeSetDatas.ReadMvcViewModel +@model Mix.Cms.Lib.ViewModels.MixDatabaseDatas.ReadMvcViewModel @{ string master = MixService.GetConfig(MixAppSettingKeywords.ThemeName, ViewBag.culture); string templateFolder = MixCmsHelper.GetTemplateFolder(ViewBag.culture); diff --git a/src/Mix.Cms.Web/Views/Home/Index.cshtml b/src/Mix.Cms.Web/Views/Home/Index.cshtml index 009ea8414..b170b514a 100644 --- a/src/Mix.Cms.Web/Views/Home/Index.cshtml +++ b/src/Mix.Cms.Web/Views/Home/Index.cshtml @@ -1,6 +1,6 @@ @using Mix.Cms.Lib; @using Mix.Cms.Lib.Services; -@model Mix.Cms.Lib.Interfaces.MvcViewModel +@model Mix.Cms.Lib.Interfaces.IMvcViewModel @{ var assetFolder = MixCmsHelper.GetAssetFolder(ViewBag.culture); string master = MixService.GetConfig(MixAppSettingKeywords.ThemeName, ViewBag.culture); @@ -9,9 +9,9 @@ var masterTemplate = await MixCmsHelper.GetTemplateByPath(master, layout); Layout = $"{templateFolder}/{layout}"; var p = MixCmsHelper.GetPostlistByMeta(Context, ViewBag.culture as string - , MixConstants.AttributeSetName.SYSTEM_TAG); + , MixConstants.MixDatabaseName.SYSTEM_TAG); var posts = Mix.Cms.Lib.ViewModels.MixPosts.Helper.GetModelistByMeta( - MixConstants.AttributeSetName.SYSTEM_TAG, Context.Request.Query["tag"], + MixConstants.MixDatabaseName.SYSTEM_TAG, Context.Request.Query["tag"], ViewBag.culture as string, "CreatedDateTime", Mix.Heart.Enums.MixHeartEnums.DisplayDirection.Desc, 10, 0); } diff --git a/src/Mix.Cms.Web/Views/Shared/_LayoutPortal_Angular.cshtml b/src/Mix.Cms.Web/Views/Shared/_LayoutPortal_Angular.cshtml index d33f2c77e..dec73a565 100644 --- a/src/Mix.Cms.Web/Views/Shared/_LayoutPortal_Angular.cshtml +++ b/src/Mix.Cms.Web/Views/Shared/_LayoutPortal_Angular.cshtml @@ -13,7 +13,7 @@ + href="@(MixService.GetConfig("Favicon", ViewBag.culture) ?? "/mix-app/css/portal/img/mixcore-logo-green.svg")"> diff --git a/src/Mix.Cms.Web/Views/_ViewImports.cshtml b/src/Mix.Cms.Web/Views/_ViewImports.cshtml index f5e52eb54..e8a182897 100644 --- a/src/Mix.Cms.Web/Views/_ViewImports.cshtml +++ b/src/Mix.Cms.Web/Views/_ViewImports.cshtml @@ -1,4 +1,4 @@ - @using Mix.Cms +@using Mix.Cms @using Mix.Identity.Models @using Mix.Identity.Models.AccountViewModels @using Mix.Identity.Models.ManageViewModels @@ -9,15 +9,20 @@ @using Mix.Domain.Core.ViewModels @using Mix.Cms.Lib.ViewModels @using Mix.Cms.Lib +@using Mix.Cms.Lib.Helpers @using Mix.Cms.Web.Models @using Mix.Cms.Lib.Services @using Mix.Cms.Lib.Enums; +@using Mix.Heart.Enums; @using Mix.Cms.Lib.Constants; @using Newtonsoft.Json.Linq; +@using System.Security.Claims; +@using Mix.Cms.Lib.Models.Common +@using Mix.Cms.Lib.Interfaces + @using MixModules = Mix.Cms.Lib.ViewModels.MixModules @using MixPosts = Mix.Cms.Lib.ViewModels.MixPosts @using MixPages = Mix.Cms.Lib.ViewModels.MixPages -@using MixDatas = Mix.Cms.Lib.ViewModels.MixAttributeSetDatas -@using MixCmsHelper = Mix.Cms.Lib.MixCmsHelper -@using MixService = Mix.Cms.Lib.Services.MixService +@using MixDatas = Mix.Cms.Lib.ViewModels.MixDatabaseDatas + @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers diff --git a/src/Mix.Cms.Web/default.appsettings.json b/src/Mix.Cms.Web/default.appsettings.json index e9b69f36c..672df173e 100644 --- a/src/Mix.Cms.Web/default.appsettings.json +++ b/src/Mix.Cms.Web/default.appsettings.json @@ -6,6 +6,7 @@ }, "MixConfigurations": { "IsCache": true, + "MixCacheMode": "Json", "MixCacheFolder": "MixContent/cache", "JsonDataFolder": "MixContent/data", "MixLogsFolder": "MixContent/logs" diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/css/app-client.min.css b/src/Mix.Cms.Web/wwwroot/mix-app/css/app-client.min.css index 3df544b7f..d66faf910 100644 --- a/src/Mix.Cms.Web/wwwroot/mix-app/css/app-client.min.css +++ b/src/Mix.Cms.Web/wwwroot/mix-app/css/app-client.min.css @@ -1 +1 @@ -/* Sun Feb 14 2021 18:37:16 GMT+0700 (Indochina Time) */.haiyen-loader,.video{width:100%;height:100%}#modal-shopping-cart .modal-title{margin-top:0}#modal-shopping-cart .cart-item{margin:10px 0}#modal-shopping-cart .modal-dialog{max-width:unset;margin:20px}#modal-shopping-cart{color:#5c4b43;z-index:1060}#modal-shopping-cart .modal-footer button{margin:0 10px}*{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}@-moz-keyframes rotation{from{-moz-transform:rotate(0);-moz-transform-origin:85% 90%}to{-moz-transform:rotate(359deg);-moz-transform-origin:85% 90%}}@-webkit-keyframes rotation{from{-webkit-transform:rotate(0);-webkit-transform-origin:85% 90%}to{-webkit-transform:rotate(359deg);-webkit-transform-origin:85% 90%}}[class*=" icon-"].loading-indicator{float:left;display:none;font-size:24px;margin:7px;color:#EC173A}[class*=" icon-"].loading-indicator.on{display:block;-webkit-animation:rotation 1.5s infinite linear;-moz-animation:rotation 1.5s infinite linear}.browser-warning,.user .icon-phone-4{display:none}.user-list{padding:9px 0}.user:hover .icon-phone-4{display:inline-block}.user a{position:relative;overflow:hidden}.user .username{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;padding-right:16px}.user .helper{position:absolute;right:10px;top:5px}.actions{display:none}[data-mode=incall] .actions,[data-mode=calling] .actions{display:block}.actions .hangup{width:100%}.actions .status{text-align:center;margin-bottom:20px}.video{border:2px solid #000}.cool-background{background:linear-gradient(135deg,#ECEDDC 25%,transparent 25%) -50px 0,linear-gradient(225deg,#ECEDDC 25%,transparent 25%) -50px 0,linear-gradient(315deg,#ECEDDC 25%,transparent 25%),linear-gradient(45deg,#ECEDDC 25%,transparent 25%);background-size:100px 100px;background-color:#EC173A}.alertify-cover{background:rgba(0,0,0,.8)}.haiyen-loader{position:fixed;left:0;top:0;z-index:999999;background:rgba(255,255,255,.78)}.haiyen-loader .spinner{width:55px;height:70px;position:absolute;top:50%;left:50%;margin-top:-70px;margin-left:-65px}.haiyen-loader .spinner>div{background-color:red;height:100%;width:6px;margin-right:5px;display:inline-block;-webkit-animation:sk-stretchdelay 1.2s infinite ease-in-out;animation:sk-stretchdelay 1.2s infinite ease-in-out}.haiyen-loader .spinner .rect2{-webkit-animation-delay:-1.1s;animation-delay:-1.1s}.haiyen-loader .spinner .rect3{-webkit-animation-delay:-1s;animation-delay:-1s}.haiyen-loader .spinner .rect4{-webkit-animation-delay:-.9s;animation-delay:-.9s}.haiyen-loader .spinner .rect5{-webkit-animation-delay:-.8s;animation-delay:-.8s}@-webkit-keyframes sk-stretchdelay{0%,100%,40%{-webkit-transform:scaleY(.4)}20%{-webkit-transform:scaleY(1)}}@keyframes sk-stretchdelay{0%,100%,40%{transform:scaleY(.4);-webkit-transform:scaleY(.4)}20%{transform:scaleY(1);-webkit-transform:scaleY(1)}}.package-wrapper h2{margin-top:20px}.tbl-package span{margin-left:0;font-size:inherit}.tbl-package .sum-th{background-color:#fff}.tbl-package .sum-th span{color:#333}.tbl-package td,.tbl-package th{height:21px;padding:2px 14px;font-size:20px}.tbl-package-slot th{height:0;padding:0 14px;font-size:20px}.tbl-package td{height:21px;text-align:center}.tbl-package .no-border-top{border-top:none}.tbl-package .no-border-bottom{border-bottom:none}.btn-minus,.btn-plus{width:50px;height:20px;font-weight:700;font-size:1em;line-height:10px;border:1px solid #fff;border-radius:15px;color:#fff;margin-right:5px}.btn-dark,.btn-minus-dark{border:1px solid #333}.btn-minus-dark,.btn-plus{color:#333;background-color:#fff}.btn-dark{color:#fff;background-color:#333}.tbl-package-mobile{font-size:medium}.tbl-package-mobile td,.tbl-package-mobile th{height:21px;padding:5px;font-size:medium}.tbl-package-mobile th{height:0}.tbl-package-mobile .btn-minus,.tbl-package-mobile .btn-plus{width:40px;height:16px;font-weight:700;font-size:1em;line-height:5px}.tbl-final{width:100%}.tbl-final .gift-title{padding:5px 10px;background-color:#ddd;color:#000}.tbl-final .gift-quantity{padding:5px 10px;background-color:#000;color:#fff} \ No newline at end of file +/* Wed Feb 24 2021 09:23:11 GMT+0700 (Indochina Time) */.haiyen-loader,.video{width:100%;height:100%}#modal-shopping-cart .modal-title{margin-top:0}#modal-shopping-cart .cart-item{margin:10px 0}#modal-shopping-cart .modal-dialog{max-width:unset;margin:20px}#modal-shopping-cart{color:#5c4b43;z-index:1060}#modal-shopping-cart .modal-footer button{margin:0 10px}*{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}@-moz-keyframes rotation{from{-moz-transform:rotate(0);-moz-transform-origin:85% 90%}to{-moz-transform:rotate(359deg);-moz-transform-origin:85% 90%}}@-webkit-keyframes rotation{from{-webkit-transform:rotate(0);-webkit-transform-origin:85% 90%}to{-webkit-transform:rotate(359deg);-webkit-transform-origin:85% 90%}}[class*=" icon-"].loading-indicator{float:left;display:none;font-size:24px;margin:7px;color:#EC173A}[class*=" icon-"].loading-indicator.on{display:block;-webkit-animation:rotation 1.5s infinite linear;-moz-animation:rotation 1.5s infinite linear}.browser-warning,.user .icon-phone-4{display:none}.user-list{padding:9px 0}.user:hover .icon-phone-4{display:inline-block}.user a{position:relative;overflow:hidden}.user .username{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;padding-right:16px}.user .helper{position:absolute;right:10px;top:5px}.actions{display:none}[data-mode=incall] .actions,[data-mode=calling] .actions{display:block}.actions .hangup{width:100%}.actions .status{text-align:center;margin-bottom:20px}.video{border:2px solid #000}.cool-background{background:linear-gradient(135deg,#ECEDDC 25%,transparent 25%) -50px 0,linear-gradient(225deg,#ECEDDC 25%,transparent 25%) -50px 0,linear-gradient(315deg,#ECEDDC 25%,transparent 25%),linear-gradient(45deg,#ECEDDC 25%,transparent 25%);background-size:100px 100px;background-color:#EC173A}.alertify-cover{background:rgba(0,0,0,.8)}.haiyen-loader{position:fixed;left:0;top:0;z-index:999999;background:rgba(255,255,255,.78)}.haiyen-loader .spinner{width:55px;height:70px;position:absolute;top:50%;left:50%;margin-top:-70px;margin-left:-65px}.haiyen-loader .spinner>div{background-color:red;height:100%;width:6px;margin-right:5px;display:inline-block;-webkit-animation:sk-stretchdelay 1.2s infinite ease-in-out;animation:sk-stretchdelay 1.2s infinite ease-in-out}.haiyen-loader .spinner .rect2{-webkit-animation-delay:-1.1s;animation-delay:-1.1s}.haiyen-loader .spinner .rect3{-webkit-animation-delay:-1s;animation-delay:-1s}.haiyen-loader .spinner .rect4{-webkit-animation-delay:-.9s;animation-delay:-.9s}.haiyen-loader .spinner .rect5{-webkit-animation-delay:-.8s;animation-delay:-.8s}@-webkit-keyframes sk-stretchdelay{0%,100%,40%{-webkit-transform:scaleY(.4)}20%{-webkit-transform:scaleY(1)}}@keyframes sk-stretchdelay{0%,100%,40%{transform:scaleY(.4);-webkit-transform:scaleY(.4)}20%{transform:scaleY(1);-webkit-transform:scaleY(1)}}.package-wrapper h2{margin-top:20px}.tbl-package span{margin-left:0;font-size:inherit}.tbl-package .sum-th{background-color:#fff}.tbl-package .sum-th span{color:#333}.tbl-package td,.tbl-package th{height:21px;padding:2px 14px;font-size:20px}.tbl-package-slot th{height:0;padding:0 14px;font-size:20px}.tbl-package td{height:21px;text-align:center}.tbl-package .no-border-top{border-top:none}.tbl-package .no-border-bottom{border-bottom:none}.btn-minus,.btn-plus{width:50px;height:20px;font-weight:700;font-size:1em;line-height:10px;border:1px solid #fff;border-radius:15px;color:#fff;margin-right:5px}.btn-dark,.btn-minus-dark{border:1px solid #333}.btn-minus-dark,.btn-plus{color:#333;background-color:#fff}.btn-dark{color:#fff;background-color:#333}.tbl-package-mobile{font-size:medium}.tbl-package-mobile td,.tbl-package-mobile th{height:21px;padding:5px;font-size:medium}.tbl-package-mobile th{height:0}.tbl-package-mobile .btn-minus,.tbl-package-mobile .btn-plus{width:40px;height:16px;font-weight:700;font-size:1em;line-height:5px}.tbl-final{width:100%}.tbl-final .gift-title{padding:5px 10px;background-color:#ddd;color:#000}.tbl-final .gift-quantity{padding:5px 10px;background-color:#000;color:#fff} \ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/css/app-init.min.css b/src/Mix.Cms.Web/wwwroot/mix-app/css/app-init.min.css index a002ae287..3f8a53dd6 100644 --- a/src/Mix.Cms.Web/wwwroot/mix-app/css/app-init.min.css +++ b/src/Mix.Cms.Web/wwwroot/mix-app/css/app-init.min.css @@ -1 +1 @@ -/* Sun Feb 14 2021 18:37:16 GMT+0700 (Indochina Time) */.left-coloumn{padding:2rem}.bg-register-image{transition:background-image .2s ease-in-out;background-image:url(../mix-app/mix-app/assets/img/bgs/right-bg.png)}.input-site-name{background:0 0;border:none;border-bottom:1px solid #000;outline:0;box-shadow:none;display:inline;width:200px;border-radius:0;padding:0}input.country-select{-webkit-appearance:none;-moz-appearance:none;appearance:none}.label-country-select{position:relative}.label-country-select:after{content:"\f107";font-family:FontAwesome;font-size:16px;right:4px;padding:0 0 2px;position:absolute;pointer-events:none}.hr-text:before,.label-country-select:before,.round label:after{content:""}.label-country-select:before{right:4px;top:0;width:16px;height:16px;background:#fff;position:absolute;pointer-events:none;display:block}@media only screen and (min-width:1200px){.card-header-nav-pills{margin-bottom:20px}}.content{width:100%;display:flex;align-items:center;flex-direction:column;background:0 0}.content>div{min-width:400px}.website-configuration{position:relative;margin-top:6%}.label-using{font-size:1.9rem}.bg-register-image{background-position:bottom;background-repeat:no-repeat;background-size:cover}.intruction-labels{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left}.country-select{background:0 0!important}.round{position:relative}.round label{background-color:#fff;border:1px solid #ccc;border-radius:50%;cursor:pointer;height:40px;left:0;position:absolute;top:0;width:40px}.round label:after{border:2px solid #fff;border-top:none;border-right:none;height:9px;left:11px;opacity:0;position:absolute;top:12px;transform:rotate(-45deg);width:17px}body .credit,body .options .option.active .label{bottom:20px;left:20px}.round input[type=checkbox]{visibility:hidden}.round input[type=checkbox]:checked+label{background-color:#66bb6a;border-color:#66bb6a}.round input[type=checkbox]:checked+label:after{opacity:1}body.app-init{display:flex;flex-direction:row;justify-content:center;align-items:center;overflow:hidden;height:100vh}@media only screen and (max-width:600px){.left-coloumn{padding:1rem}body.app-init{display:unset;flex-direction:unset;justify-content:unset;align-items:unset;overflow:scroll}.container.init-pages{padding-top:4%}}body .credit{position:absolute;color:#000}body .options{display:flex;flex-direction:row;align-items:stretch;overflow:hidden;min-width:100%;max-width:100%;height:400px}body .options .option{position:relative;overflow:hidden;min-width:60px;margin:10px 5px;background:var(--optionBackground,var(--defaultBackground,#e6e9ed));background-size:auto 120%;background-position:center;cursor:pointer;transition:.5s cubic-bezier(.05,.61,.41,.95)}body .options .option .label,body .options .option .shadow{position:absolute;transition:.5s cubic-bezier(.05,.61,.41,.95)}body .options .option:nth-child(1){--defaultBackground:#ed5565}body .options .option:nth-child(2){--defaultBackground:#fc6e51}body .options .option:nth-child(3){--defaultBackground:#ffce54}body .options .option:nth-child(4){--defaultBackground:#2ecc71}body .options .option:nth-child(5){--defaultBackground:#5d9cec}body .options .option:nth-child(6){--defaultBackground:#ac92ec}body .options .option.active{flex-grow:10000;-webkit-transform:scale(1);transform:scale(1);max-width:600px;margin:0 5px;border-radius:40px;background-size:auto 100%}body .options .option.active .shadow{box-shadow:inset 0 -120px 120px -120px #000,inset 0 -120px 120px -100px #000}body .options .option.active .label .info>div{left:0;opacity:1}body .options .option:not(.active){flex-grow:1;border-radius:30px}body .options .option:not(.active) .shadow{bottom:-40px;box-shadow:inset 0 -120px 0 -120px #000,inset 0 -120px 0 -100px #000}body .options .option:not(.active) .label{bottom:10px;left:10px}body .options .option:not(.active) .label .info>div{left:20px;opacity:0}body .options .option .shadow{bottom:0;left:0;right:0;height:400px;cursor:pointer}body .options .option .label{display:flex;right:0;height:40px}body .options .option .label .icon{display:flex;flex-direction:row;justify-content:center;align-items:center;min-width:40px;max-width:40px;height:40px;border-radius:100%;background-color:#fff;color:var(--defaultBackground)}body .options .option .label .info{display:flex;flex-direction:column;justify-content:center;margin-left:35px;color:#fff}body .options .option .label .info>div{position:relative;transition:.5s cubic-bezier(.05,.61,.41,.95),opacity .5s ease-out}body .options .option .label .info .main{font-weight:700;font-size:1.2rem}body .options .option .label .info .sub{transition-delay:.1s}.hr-text{line-height:1em;position:relative;outline:0;border:0;color:#000;text-align:center;height:1.5em;opacity:.5}.hr-text:before{background:linear-gradient(to right,transparent,#818078,transparent);position:absolute;left:0;top:50%;width:100%;height:1px}.hr-text:after{content:attr(data-content);position:relative;display:inline-block;padding:0 .5em;line-height:1.5em;color:#212529;background-color:#fcfcfa}body::after,body::before{content:"";top:0;left:0;bottom:0;right:0;position:fixed;z-index:-1}#inputState{cursor:pointer}body{display:grid;background-color:#000;height:100%}body::before{background:url(/mix-app/img/background.jpg) right top no-repeat fixed #000;opacity:.8;background-size:cover}body::after{background:right top no-repeat fixed #000;opacity:.5;background-size:cover;filter:blur(8px);-webkit-filter:blur(8px)}hr{border:none!important}.container{grid-template-columns:40px 50px auto 50px 40px;grid-template-rows:25% 100px auto}.form-init{width:100%;max-width:530px;padding:15px;margin:auto} \ No newline at end of file +/* Wed Feb 24 2021 09:23:11 GMT+0700 (Indochina Time) */.left-coloumn{padding:2rem}.bg-register-image{transition:background-image .2s ease-in-out;background-image:url(../mix-app/mix-app/assets/img/bgs/right-bg.png)}.input-site-name{background:0 0;border:none;border-bottom:1px solid #000;outline:0;box-shadow:none;display:inline;width:200px;border-radius:0;padding:0}input.country-select{-webkit-appearance:none;-moz-appearance:none;appearance:none}.label-country-select{position:relative}.label-country-select:after{content:"\f107";font-family:FontAwesome;font-size:16px;right:4px;padding:0 0 2px;position:absolute;pointer-events:none}.hr-text:before,.label-country-select:before,.round label:after{content:""}.label-country-select:before{right:4px;top:0;width:16px;height:16px;background:#fff;position:absolute;pointer-events:none;display:block}@media only screen and (min-width:1200px){.card-header-nav-pills{margin-bottom:20px}}.content{width:100%;display:flex;align-items:center;flex-direction:column;background:0 0}.content>div{min-width:400px}.website-configuration{position:relative;margin-top:6%}.label-using{font-size:1.9rem}.bg-register-image{background-position:bottom;background-repeat:no-repeat;background-size:cover}.intruction-labels{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left}.country-select{background:0 0!important}.round{position:relative}.round label{background-color:#fff;border:1px solid #ccc;border-radius:50%;cursor:pointer;height:40px;left:0;position:absolute;top:0;width:40px}.round label:after{border:2px solid #fff;border-top:none;border-right:none;height:9px;left:11px;opacity:0;position:absolute;top:12px;transform:rotate(-45deg);width:17px}body .credit,body .options .option.active .label{bottom:20px;left:20px}.round input[type=checkbox]{visibility:hidden}.round input[type=checkbox]:checked+label{background-color:#66bb6a;border-color:#66bb6a}.round input[type=checkbox]:checked+label:after{opacity:1}body.app-init{display:flex;flex-direction:row;justify-content:center;align-items:center;overflow:hidden;height:100vh}@media only screen and (max-width:600px){.left-coloumn{padding:1rem}body.app-init{display:unset;flex-direction:unset;justify-content:unset;align-items:unset;overflow:scroll}.container.init-pages{padding-top:4%}}body .credit{position:absolute;color:#000}body .options{display:flex;flex-direction:row;align-items:stretch;overflow:hidden;min-width:100%;max-width:100%;height:400px}body .options .option{position:relative;overflow:hidden;min-width:60px;margin:10px 5px;background:var(--optionBackground,var(--defaultBackground,#e6e9ed));background-size:auto 120%;background-position:center;cursor:pointer;transition:.5s cubic-bezier(.05,.61,.41,.95)}body .options .option .label,body .options .option .shadow{position:absolute;right:0;transition:.5s cubic-bezier(.05,.61,.41,.95)}body .options .option:nth-child(1){--defaultBackground:#ed5565}body .options .option:nth-child(2){--defaultBackground:#fc6e51}body .options .option:nth-child(3){--defaultBackground:#ffce54}body .options .option:nth-child(4){--defaultBackground:#2ecc71}body .options .option:nth-child(5){--defaultBackground:#5d9cec}body .options .option:nth-child(6){--defaultBackground:#ac92ec}body .options .option.active{flex-grow:10000;-webkit-transform:scale(1);transform:scale(1);max-width:600px;margin:0 5px;border-radius:40px;background-size:auto 100%}body .options .option.active .shadow{box-shadow:inset 0 -120px 120px -120px #000,inset 0 -120px 120px -100px #000}body .options .option.active .label .info>div{left:0;opacity:1}body .options .option:not(.active){flex-grow:1;border-radius:30px}body .options .option:not(.active) .shadow{bottom:-40px;box-shadow:inset 0 -120px 0 -120px #000,inset 0 -120px 0 -100px #000}body .options .option:not(.active) .label{bottom:10px;left:10px}body .options .option:not(.active) .label .info>div{left:20px;opacity:0}body .options .option .shadow{bottom:0;left:0;height:400px;cursor:pointer}body .options .option .label{display:flex;height:40px}body .options .option .label .icon{display:flex;flex-direction:row;justify-content:center;align-items:center;min-width:40px;max-width:40px;height:40px;border-radius:100%;background-color:#fff;color:var(--defaultBackground)}body .options .option .label .info{display:flex;flex-direction:column;justify-content:center;margin-left:35px;color:#fff}body .options .option .label .info>div{position:relative;transition:.5s cubic-bezier(.05,.61,.41,.95),opacity .5s ease-out}body .options .option .label .info .main{font-weight:700;font-size:1.2rem}body .options .option .label .info .sub{transition-delay:.1s}.hr-text{line-height:1em;position:relative;outline:0;border:0;color:#000;text-align:center;height:1.5em;opacity:.5}.hr-text:before{background:linear-gradient(to right,transparent,#818078,transparent);position:absolute;left:0;top:50%;width:100%;height:1px}.hr-text:after{content:attr(data-content);position:relative;display:inline-block;padding:0 .5em;line-height:1.5em;color:#212529;background-color:#fcfcfa}body::after,body::before{content:"";top:0;left:0;bottom:0;right:0;position:fixed;z-index:-1}#inputState{cursor:pointer}body{display:grid;background-color:#000;height:100%}body::before{background:url(/mix-app/img/background.jpg) right top no-repeat fixed #000;opacity:.8;background-size:cover}body::after{background:right top no-repeat fixed #000;opacity:.5;background-size:cover;filter:blur(8px);-webkit-filter:blur(8px)}hr{border:none!important}.container{grid-template-columns:40px 50px auto 50px 40px;grid-template-rows:25% 100px auto}.form-init{width:100%;max-width:530px;padding:15px;margin:auto} \ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/css/app-vendor-scss.min.css b/src/Mix.Cms.Web/wwwroot/mix-app/css/app-vendor-scss.min.css index bc6636550..f91cc9beb 100644 --- a/src/Mix.Cms.Web/wwwroot/mix-app/css/app-vendor-scss.min.css +++ b/src/Mix.Cms.Web/wwwroot/mix-app/css/app-vendor-scss.min.css @@ -1,4 +1,4 @@ -/* Sun Feb 14 2021 18:36:58 GMT+0700 (Indochina Time) */mix-module-data-table .data-table .header { +/* Wed Feb 24 2021 09:22:56 GMT+0700 (Indochina Time) */mix-module-data-table .data-table .header { padding: 5px; color: #495057; background-color: hsla(var(--primary-color-hue, 211), 100%, 50%, 0.075); diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/css/app-vendor.min.css b/src/Mix.Cms.Web/wwwroot/mix-app/css/app-vendor.min.css index 38f0040d4..0abc7f52f 100644 --- a/src/Mix.Cms.Web/wwwroot/mix-app/css/app-vendor.min.css +++ b/src/Mix.Cms.Web/wwwroot/mix-app/css/app-vendor.min.css @@ -1,10 +1,10 @@ -/* Sun Feb 14 2021 18:36:58 GMT+0700 (Indochina Time) */@charset "UTF-8";#return-to-top{position:fixed;bottom:20px;right:20px;background:#000;background:rgba(0,0,0,.7);width:50px;height:50px;text-decoration:none;-webkit-border-radius:35px;-moz-border-radius:35px;border-radius:35px;display:none;-webkit-transition:all .3s linear;-moz-transition:all .3s ease;-ms-transition:all .3s ease;-o-transition:all .3s ease;transition:all .3s ease;z-index:9}#return-to-top:hover{background:rgba(0,0,0,.9)}#return-to-top i{color:#fff;margin:0;position:relative;left:4px;top:0;font-size:30px;-webkit-transition:all .3s ease;-moz-transition:all .3s ease;-ms-transition:all .3s ease;-o-transition:all .3s ease;transition:all .3s ease}#return-to-top:hover i{color:#fff;top:5px}@media (min-width:992px){.language-switcher{display:inline;position:absolute;right:150px;bottom:15px}.language-switcher.portal{bottom:0}.language-switcher .dropdown-menu{right:0}}@media screen and (max-width:991px){.language-switcher{display:inline;position:absolute;left:20px}.language-switcher .dropdown-menu{left:0}}.language-switcher .dropdown-menu{width:250px;overflow:hidden!important}.navbar-collapse .dropdown-menu .dropdown-item{color:#444}.dialogdemoThemeInheritance .container{text-align:center}#modal-files-search .modal-body img{height:50px}.data-table .header{padding:10px;font-weight:700;background:#d3d3d3}.mix-loader-container{top:0;left:0;width:100%;height:100%;position:fixed;background-color:#21252987;opacity:.97;z-index:9999;display:flex;justify-content:center;align-items:center}.mix-loader-container .spinner{margin:100px auto;width:40px;height:40px;position:relative;text-align:center;-webkit-animation:sk-rotate 2s infinite linear;animation:sk-rotate 2s infinite linear}.mix-loader-container .dot1,.mix-loader-container .dot2{width:60%;height:60%;display:inline-block;position:absolute;top:0;background-color:#fff;border-radius:100%;-webkit-animation:sk-bounce 2s infinite ease-in-out;animation:sk-bounce 2s infinite ease-in-out}.mix-loader-container .dot2{top:auto;bottom:0;-webkit-animation-delay:-1s;animation-delay:-1s}@-webkit-keyframes sk-rotate{100%{-webkit-transform:rotate(360deg)}}@keyframes sk-rotate{100%{transform:rotate(360deg);-webkit-transform:rotate(360deg)}}@-webkit-keyframes sk-bounce{0%,100%{-webkit-transform:scale(0)}50%{-webkit-transform:scale(1)}}@keyframes sk-bounce{0%,100%{transform:scale(0);-webkit-transform:scale(0)}50%{transform:scale(1);-webkit-transform:scale(1)}}.lds-ellipsis{display:inline-block;position:relative;width:80px;height:80px}.lds-ellipsis div{position:absolute;top:33px;width:13px;height:13px;border-radius:50%;background:#fff;animation-timing-function:cubic-bezier(0,1,1,0)}.lds-ellipsis div:nth-child(1){left:8px;animation:lds-ellipsis1 .6s infinite}.lds-ellipsis div:nth-child(2){left:8px;animation:lds-ellipsis2 .6s infinite}.lds-ellipsis div:nth-child(3){left:32px;animation:lds-ellipsis2 .6s infinite}.lds-ellipsis div:nth-child(4){left:56px;animation:lds-ellipsis3 .6s infinite}@keyframes lds-ellipsis1{0%{transform:scale(0)}100%{transform:scale(1)}}@keyframes lds-ellipsis3{0%{transform:scale(1)}100%{transform:scale(0)}}@keyframes lds-ellipsis2{0%{transform:translate(0,0)}100%{transform:translate(24px,0)}}#dlg-preview-popup .modal-body .img{max-width:100%;display:block;margin:0 auto}.snowflake{display:block;position:absolute;-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0);-webkit-user-select:none;-moz-user-select:none;user-select:none;background-image:-webkit-radial-gradient(center,circle farthest-corner,rgba(255,255,255,1) 40%,rgba(255,255,255,0) 100%);background-image:-moz-radial-gradient(center,circle farthest-corner,rgba(255,255,255,1) 40%,rgba(255,255,255,0) 100%);background-image:-ms-radial-gradient(center,circle farthest-corner,rgba(255,255,255,1) 40%,rgba(255,255,255,0) 100%);background-image:radial-gradient(center,circle farthest-corner,rgba(255,255,255,1) 40%,rgba(255,255,255,0) 100%)}#snow{position:fixed;width:100%;height:100%}.star-rating{margin:0;padding:0;display:inline-block}.star-rating .star{padding:1px;color:#ddd;font-size:12px;text-shadow:.05em .05em #aaa;list-style-type:none;display:inline-block;cursor:pointer}.star-rating .star.filled{color:#fd0}.star-rating.readonly .star.filled{color:#666}.youtube{background-color:#000;margin-bottom:30px;position:relative;padding-top:56.25%;overflow:hidden;cursor:pointer}.youtube img{width:100%;top:-16.82%;left:0;opacity:.7}.youtube .play-button{width:90px;height:60px;background-color:#333;box-shadow:0 0 30px rgba(0,0,0,.6);z-index:1;opacity:.8;border-radius:6px}tags-input[disabled] .tags,tags-input[disabled] .tags .input{background-color:#eee}.youtube .play-button:before{content:"";border-style:solid;border-width:15px 0 15px 26px;border-color:transparent transparent transparent #fff}.youtube .play-button,.youtube img{cursor:pointer}.youtube .play-button,.youtube .play-button:before,.youtube iframe,.youtube img{position:absolute}.youtube .play-button,.youtube .play-button:before{top:50%;left:50%;transform:translate3d(-50%,-50%,0)}.youtube iframe{height:100%;width:100%;top:0;left:0}tags-input{box-shadow:none;border:none;padding:0;min-height:34px}tags-input .tags{border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-moz-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}tags-input .tags .tag-item.selected{color:#fff;border:1px solid #d43f3a}tags-input .tags .tag-item .remove-button:hover{text-decoration:none}tags-input .tags.focused{border:1px solid #66afe9}tags-input .autocomplete{border-radius:4px}tags-input.ng-invalid .tags{border-color:#843534}.input-group tags-input{padding:0;display:table-cell}.input-group tags-input:not(:first-child) .tags{border-top-left-radius:0;border-bottom-left-radius:0}.input-group tags-input:not(:last-child) .tags{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-lg tags-input:first-child .tags{border-top-left-radius:6px;border-bottom-left-radius:6px}.input-group-lg tags-input:last-child .tags{border-top-right-radius:6px;border-bottom-right-radius:6px}.input-group-sm tags-input:first-child .tags{border-top-left-radius:3px;border-bottom-left-radius:3px}.input-group-sm tags-input:last-child .tags{border-top-right-radius:3px;border-bottom-right-radius:3px}.input-group-lg tags-input,tags-input.ti-input-lg{min-height:46px}.input-group-lg tags-input .tags,tags-input.ti-input-lg .tags{border-radius:6px}.input-group-lg tags-input .tags .tag-item,tags-input.ti-input-lg .tags .tag-item{height:38px;line-height:37px;font-size:18px;border-radius:6px}.input-group-lg tags-input .tags .tag-item .remove-button,tags-input.ti-input-lg .tags .tag-item .remove-button{font-size:20px}.input-group-lg tags-input .tags .input,tags-input.ti-input-lg .tags .input{height:38px;font-size:18px}.input-group-sm tags-input,tags-input.ti-input-sm{min-height:30px}.input-group-sm tags-input .tags,tags-input.ti-input-sm .tags{border-radius:3px}.input-group-sm tags-input .tags .tag-item,tags-input.ti-input-sm .tags .tag-item{height:22px;line-height:21px;font-size:12px;border-radius:3px}.input-group-sm tags-input .tags .tag-item .remove-button,tags-input.ti-input-sm .tags .tag-item .remove-button{font-size:16px}.input-group-sm tags-input .tags .input,tags-input.ti-input-sm .tags .input{height:22px;font-size:12px}.has-feedback tags-input .tags{padding-right:30px}.has-success tags-input .tags{border-color:#3c763d}.has-success tags-input .tags.focused{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-error tags-input .tags{border-color:#a94442}.has-error tags-input .tags.focused{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-warning tags-input .tags{border-color:#8a6d3b}.has-warning tags-input .tags.focused{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}tags-input{display:block}tags-input *,tags-input :after,tags-input :before{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}tags-input .host{margin:5px 0;position:relative;height:100%}tags-input .host:active{outline:0}tags-input .tags{-moz-appearance:textfield;-webkit-appearance:textfield;padding:1px;overflow:hidden;word-wrap:break-word;cursor:text;background-color:#fff;border:1px solid #a9a9a9;box-shadow:1px 1px 1px 0 #d3d3d3 inset;height:100%}tags-input .tags.focused{outline:0;-webkit-box-shadow:0 0 3px 1px rgba(5,139,242,.6);-moz-box-shadow:0 0 3px 1px rgba(5,139,242,.6);box-shadow:0 0 3px 1px rgba(5,139,242,.6)}tags-input .tags .tag-list{margin:0;padding:0;list-style-type:none}tags-input .tags .tag-item{color:#fff;margin:2px;padding:0 5px;display:inline-block;float:left;font:14px "Helvetica Neue",Helvetica,Arial,sans-serif;height:26px;line-height:25px;border:1px solid #acacac;border-radius:3px;background:-webkit-linear-gradient(top,#f0f9ff 0,#cbebff 47%,#a1dbff 100%);background:linear-gradient(to bottom,#f0f9ff 0,#cbebff 47%,#a1dbff 100%)}tags-input .tags .tag-item.selected{background:-webkit-linear-gradient(top,#febbbb 0,#fe9090 45%,#ff5c5c 100%);background:linear-gradient(to bottom,#febbbb 0,#fe9090 45%,#ff5c5c 100%)}tags-input .tags .tag-item .remove-button{margin:0 0 0 5px;padding:0;border:none;background:0 0;cursor:pointer;vertical-align:middle;font:700 16px Arial,sans-serif;color:#585858}.CodeMirror-gutter-elt,tags-input[disabled] .tags,tags-input[disabled] .tags .input,tags-input[disabled] .tags .tag-item .remove-button{cursor:default}tags-input .tags .input.invalid-tag,tags-input .tags .tag-item .remove-button:active{color:red}tags-input .tags .input{border:0;outline:0;margin:2px;padding:0 0 0 5px;float:left;height:26px;font:14px "Helvetica Neue",Helvetica,Arial,sans-serif}tags-input .tags .input::-ms-clear{display:none}tags-input.ng-invalid .tags{-webkit-box-shadow:0 0 3px 1px rgba(255,0,0,.6);-moz-box-shadow:0 0 3px 1px rgba(255,0,0,.6);box-shadow:0 0 3px 1px rgba(255,0,0,.6)}tags-input[disabled] .host:focus{outline:0}tags-input[disabled] .tags .tag-item{opacity:.65;background:-webkit-linear-gradient(top,#f0f9ff 0,rgba(203,235,255,.75) 47%,rgba(161,219,255,.62) 100%);background:linear-gradient(to bottom,#f0f9ff 0,rgba(203,235,255,.75) 47%,rgba(161,219,255,.62) 100%)}tags-input[disabled] .tags .tag-item .remove-button:active{color:#585858}tags-input .autocomplete{margin-top:5px;position:absolute;padding:5px 0;z-index:999;width:100%;background-color:#fff;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}tags-input .autocomplete .suggestion-list{margin:0;padding:0;list-style-type:none;max-height:280px;overflow-y:auto;position:relative}tags-input .autocomplete .suggestion-item{padding:5px 10px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font:16px "Helvetica Neue",Helvetica,Arial,sans-serif;color:#000;background-color:#fff}tags-input .autocomplete .suggestion-item.selected,tags-input .autocomplete .suggestion-item.selected em{color:#fff;background-color:#0097cf}tags-input .autocomplete .suggestion-item em{font:normal 700 16px "Helvetica Neue",Helvetica,Arial,sans-serif;color:#000;background-color:#fff}.portal-menus ul[dnd-list],.portal-menus ul[dnd-list]>li{position:relative}.portal-menus ul[dnd-list]{min-height:42px;padding-left:0}.portal-menus ul[dnd-list] .dndDraggingSource{display:none}.portal-menus ul[dnd-list] .dndPlaceholder{display:block;background-color:#ddd;padding:10px 15px;min-height:42px}.portal-menus ul[dnd-list] li{background-color:#fff;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;display:block;margin-bottom:-1px;position:relative;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.portal-menus ul[dnd-list] li dnd-nodrag{display:block;padding:10px 15px}.portal-menus .handle{cursor:move}body,html{height:100%}.btn,.btn-link{cursor:pointer}.display-4{font-size:2rem!important}div[dnd-list],ul[dnd-list]{min-height:42px;padding-left:0}div[dnd-list] .dndDraggingSource,ul[dnd-list] .dndDraggingSource{display:none}div[dnd-list] .dndPlaceholder,ul[dnd-list] .dndPlaceholder{background-color:#ddd;display:block;min-height:42px}div[dnd-list] .dnd-item,ul[dnd-list] li{background-color:#fff;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;display:block;padding:10px 15px;margin-bottom:-1px}div[dnd-list] .dnd-item.selected,ul[dnd-list] li.selected{background-color:#dff0d8;color:#3c763d}.attr-set-value-item:last-child{border-bottom:0!important}.md-avatar{vertical-align:middle;width:50px;height:50px}.mix-tree-view .container{padding-right:0;padding-left:25px}.mix-tree-view .dropdown-menu{z-index:99999}.mix-tree-view .item{padding-bottom:2px;border-left:1px #eee solid}.mix-tree-view .item-fields{padding:12px 8px 0 26px}.sw-search{margin-right:0!important;margin-left:0!important}.sw-sidebar a{color:var(--text-color,#212529)}.ActiveUsers.is-increasing{-webkit-animation:a 3s;animation:a 3s}.ActiveUsers.is-decreasing{-webkit-animation:b 3s;animation:b 3s}@-webkit-keyframes a{10%{background-color:#ebffeb;border-color:rgba(0,128,0,.5);color:green}}@keyframes a{10%{background-color:#ebffeb;border-color:rgba(0,128,0,.5);color:green}}@-webkit-keyframes b{10%{background-color:#ffebeb;border-color:rgba(255,0,0,.5);color:red}}@keyframes b{10%{background-color:#ffebeb;border-color:rgba(255,0,0,.5);color:red}}.Chartjs{font-size:.85em}.Chartjs-figure{height:250px}.Chartjs-legend{list-style:none;margin:0;padding:1em 0 0;text-align:center}.Chartjs-legend>li{display:inline-block;padding:.25em .5em}.Chartjs-legend>li>i{display:inline-block;height:1em;margin-right:.5em;vertical-align:-.1em;width:1em}@media (min-width:570px){.Chartjs-figure{margin-right:1.5em}}.custom-image{max-width:30vw}.bootstrap-tagsinput,.cr-slider,.img-container>img,.img-preview>img,.trumbowyg-editor embed,.trumbowyg-editor img,.trumbowyg-editor object,.trumbowyg-editor video,.tui-editor-contents img,body .options{max-width:100%}.mix-sel-icons .dropdown-menu{left:-90px!important}.mix-sel-icons .dropdown-menu.show{max-height:250px;overflow:scroll}.mix-sel-icons .list-icon{max-height:150px;overflow-y:scroll;overflow-x:hidden}#modal-posts img{height:30px}.monaco-editor-full{position:fixed!important;left:0;top:0;width:100%;z-index:2222}.monaco-editor-full .monaco-editor-btn-group-full{z-index:2223;position:fixed;top:15px;right:25px}.simpleDemo ul[dnd-list]{min-height:42px;padding-left:0}.simpleDemo ul[dnd-list] .dndDraggingSource{display:none}.simpleDemo ul[dnd-list] .dndPlaceholder{background-color:#ddd;display:block;min-height:42px}.simpleDemo ul[dnd-list] li{background-color:#fff;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;display:block;padding:10px 15px;margin-bottom:-1px}.simpleDemo ul[dnd-list] li.selected{background-color:#dff0d8;color:#3c763d}@media(min-width:576px){.jumbotron{padding:2rem 1rem!important}}.alert.position-sticky{bottom:10px}.left-coloumn{padding:2rem}.bg-register-image{transition:background-image .2s ease-in-out;background-image:url(../mix-app/mix-app/assets/img/bgs/right-bg.png)}.input-site-name{background:0 0;border:none;border-bottom:1px solid #000;outline:0;box-shadow:none;display:inline;width:200px;border-radius:0;padding:0}input.country-select{-webkit-appearance:none;-moz-appearance:none;appearance:none}.label-country-select{position:relative}.label-country-select:after{content:"\f107";font-family:FontAwesome;font-size:16px;right:4px;padding:0 0 2px;position:absolute;pointer-events:none}.hr-text:before,.label-country-select:before,.round label:after{content:""}.label-country-select:before{right:4px;top:0;width:16px;height:16px;background:#fff;position:absolute;pointer-events:none;display:block}@media only screen and (min-width:1200px){.card-header-nav-pills{margin-bottom:20px}}.content{width:100%;display:flex;align-items:center;flex-direction:column;background:0 0}.content>div{min-width:400px}.website-configuration{position:relative;margin-top:6%}.label-using{font-size:1.9rem}.bg-register-image{background-position:bottom;background-repeat:no-repeat;background-size:cover}.intruction-labels{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left}.country-select{background:0 0!important}.round{position:relative}.round label{background-color:#fff;border:1px solid #ccc;border-radius:50%;cursor:pointer;height:40px;left:0;position:absolute;top:0;width:40px}.round label:after{border:2px solid #fff;border-top:none;border-right:none;height:9px;left:11px;opacity:0;position:absolute;top:12px;transform:rotate(-45deg);width:17px}body .credit,body .options .option.active .label{bottom:20px;left:20px}.round input[type=checkbox]{visibility:hidden}.round input[type=checkbox]:checked+label{background-color:#66bb6a;border-color:#66bb6a}.round input[type=checkbox]:checked+label:after{opacity:1}body.app-init{display:flex;flex-direction:row;justify-content:center;align-items:center;overflow:hidden;height:100vh}@media only screen and (max-width:600px){.left-coloumn{padding:1rem}body.app-init{display:unset;flex-direction:unset;justify-content:unset;align-items:unset;overflow:scroll}.container.init-pages{padding-top:4%}}body .credit{position:absolute;color:#000}body .options{display:flex;flex-direction:row;align-items:stretch;overflow:hidden;min-width:100%;height:400px}body .options .option{position:relative;overflow:hidden;min-width:60px;margin:10px 5px;background:var(--optionBackground,var(--defaultBackground,#e6e9ed));background-size:auto 120%;background-position:center;cursor:pointer;transition:.5s cubic-bezier(.05,.61,.41,.95)}body .options .option .label,body .options .option .shadow{position:absolute;right:0;transition:.5s cubic-bezier(.05,.61,.41,.95)}body .options .option:nth-child(1){--defaultBackground:#ed5565}body .options .option:nth-child(2){--defaultBackground:#fc6e51}body .options .option:nth-child(3){--defaultBackground:#ffce54}body .options .option:nth-child(4){--defaultBackground:#2ecc71}body .options .option:nth-child(5){--defaultBackground:#5d9cec}body .options .option:nth-child(6){--defaultBackground:#ac92ec}body .options .option.active{flex-grow:10000;-webkit-transform:scale(1);transform:scale(1);max-width:600px;margin:0 5px;border-radius:40px;background-size:auto 100%}body .options .option.active .shadow{box-shadow:inset 0 -120px 120px -120px #000,inset 0 -120px 120px -100px #000}body .options .option.active .label .info>div{left:0;opacity:1}body .options .option:not(.active){flex-grow:1;border-radius:30px}body .options .option:not(.active) .shadow{bottom:-40px;box-shadow:inset 0 -120px 0 -120px #000,inset 0 -120px 0 -100px #000}body .options .option:not(.active) .label{bottom:10px;left:10px}body .options .option:not(.active) .label .info>div{left:20px;opacity:0}body .options .option .shadow{bottom:0;left:0;height:400px;cursor:pointer}body .options .option .label{display:flex;height:40px}body .options .option .label .icon{display:flex;flex-direction:row;justify-content:center;align-items:center;min-width:40px;max-width:40px;height:40px;border-radius:100%;background-color:#fff;color:var(--defaultBackground)}body .options .option .label .info{display:flex;flex-direction:column;justify-content:center;margin-left:35px;color:#fff}.CodeMirror,.ace_punctuation.ace_block.ace_razor,.ace_punctuation.ace_short.ace_razor,.hr-text{color:#000}body .options .option .label .info>div{position:relative;transition:.5s cubic-bezier(.05,.61,.41,.95),opacity .5s ease-out}body .options .option .label .info .main{font-weight:700;font-size:1.2rem}body .options .option .label .info .sub{transition-delay:.1s}.hr-text{line-height:1em;position:relative;outline:0;border:0;text-align:center;height:1.5em;opacity:.5}.hr-text:before{background:linear-gradient(to right,transparent,#818078,transparent);position:absolute;left:0;top:50%;width:100%;height:1px}.hr-text:after{content:attr(data-content);position:relative;display:inline-block;padding:0 .5em;line-height:1.5em;color:#212529;background-color:#fcfcfa}body::after,body::before{content:"";top:0;left:0;position:fixed;z-index:-1;bottom:0;right:0}#inputState{cursor:pointer}body{display:grid;background-color:#000;height:100%}body::before{background:url(/mix-app/img/background.jpg) right top no-repeat fixed #000;opacity:.8;background-size:cover}body::after{background:right top no-repeat fixed #000;opacity:.5;background-size:cover;filter:blur(8px);-webkit-filter:blur(8px)}hr{border:none!important}.container{grid-template-columns:40px 50px auto 50px 40px;grid-template-rows:25% 100px auto}.form-init{width:100%;max-width:530px;padding:15px;margin:auto}mix-module-data-table .data-table .header{padding:5px;color:#495057;background-color:hsla(var(--primary-color-hue,211),100%,50%,.075);border-color:#dee2e6;font-weight:400;font-size:small}mix-module-data-table .preview-container{max-height:4em;overflow:hidden}upload-croppie .cr-boundary{overflow:hidden}main-side-bar-dynamic .sw-sidebar .sw-toc-item{position:relative}main-side-bar-dynamic .sw-sidebar .sw-toc-item .sw-toc-link .sw-toc-link{padding-left:0}main-side-bar-dynamic .sw-sidebar .sw-toc-item .btn-group{right:20px;opacity:1}main-side-bar-dynamic .sw-sidebar ul{padding-left:15px}main-side-bar-dynamic .sw-sidebar .sw-toc-sub-link .btn-group{padding:2px 0}@media (min-width:992px){#modal-content-filter .modal-lg,#modal-content-filter .modal-xl{max-width:80vw}}.trumbowyg-dropdown-emoji{width:265px;padding:7px 0 7px 5px;height:200px;overflow-y:scroll;overflow-x:hidden}.trumbowyg-dropdown-emoji svg{display:none!important}.trumbowyg-dropdown-emoji button{display:block;position:relative;float:left;height:26px;width:26px;padding:0;margin:2px;line-height:24px;text-align:center}.trumbowyg-dropdown-emoji button:focus::after,.trumbowyg-dropdown-emoji button:hover::after{display:block;position:absolute;top:-5px;left:-5px;height:27px;width:27px;background:inherit;box-shadow:#000 0 0 2px;z-index:10;background-color:transparent}.flag-icon,.flag-icon-background{background-size:contain;background-position:50%}.trumbowyg .emoji{width:22px;height:22px;display:inline-block}.trumbowyg-highlight-mb-3{margin:15px 10px}.trumbowyg-highlight-mb-3 .trumbowyg-highlight-form-control{width:100%;border:1px solid #DEDEDE;font-size:14px;padding:7px}.trumbowyg-highlight-mb-3 .trumbowyg-highlight-form-control.code{height:200px}.trumbowyg-editor table{width:100%}.trumbowyg-editor table td{border:1px dotted #e7eaec;padding:8px}.trumbowyg-dropdown-table table{margin:10px;display:inline-block}.trumbowyg-dropdown-table table td{display:inline-block;height:20px;width:20px;margin:1px;padding:0;background-color:#fff;box-shadow:0 0 0 1px #cecece inset}.trumbowyg-dropdown-table table td.active{background-color:#00b393;box-shadow:none;cursor:pointer}.img-container,.img-preview{background-color:#f7f7f7;text-align:center;width:100%}.img-container{margin-bottom:1rem;max-height:497px;min-height:200px}@media (min-width:768px){.img-container{min-height:497px}}.docs-preview{margin-right:-1rem}.img-preview{float:left;margin-bottom:.5rem;margin-right:.5rem;overflow:hidden}.preview-lg{height:9rem;width:16rem}.preview-md{height:4.5rem;width:8rem}.preview-sm{height:2.25rem;width:4rem}.preview-xs{height:1.125rem;margin-right:0;width:2rem}.docs-data>.input-group{margin-bottom:.5rem}.docs-data>.input-group>label{justify-content:center;min-width:5rem}.docs-data>.input-group>span{justify-content:center;min-width:3rem}.docs-buttons>.btn,.docs-buttons>.btn-group,.docs-buttons>.form-control{margin-bottom:.5rem;margin-right:.25rem}.docs-toggles>.btn,.docs-toggles>.btn-group,.docs-toggles>.dropdown{margin-bottom:.5rem}.custom-file-val{position:absolute;bottom:0}.sw-content{width:100%!important}input[type=date]::-webkit-inner-spin-button{display:none}.ace_razor{background-color:#ff0}@media screen and (max-width:580px){.hide-on-mb{display:none}}#modal-files img{height:30px}#modal-files img.preview{width:100%;height:auto}@media screen and (min-width:580px){.hide-on-desktop{display:none}}.bootstrap-tagsinput,.cm-tab,.cr-rotate-controls i:before,.flag-icon,.now-ui-icons{display:inline-block}@media screen and (max-width:991px){.navbar .navbar-nav{min-height:unset}}@font-face{font-family:'Nucleo Outline';src:url(../fonts/nucleo-outline.eot);src:url(../fonts/nucleo-outline.eot) format("embedded-opentype"),url(../fonts/nucleo-outline.woff2) format("woff2"),url(../fonts/nucleo-outline.woff) format("woff"),url(../fonts/nucleo-outline.ttf) format("truetype"),url(../fonts/nucleo-outline.svg) format("svg");font-weight:400;font-style:normal}.now-ui-icons{font:normal normal normal 14px/1 'Nucleo Outline';font-size:inherit;speak:none;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.now-ui-icons.circle{padding:.33333333em;vertical-align:-16%;background-color:#eee;border-radius:50%}.nc-icon-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.nc-icon-ul>li{position:relative}.nc-icon-ul>li>.now-ui-icons{position:absolute;left:-1.57142857em;top:.14285714em;text-align:center}.nc-icon-ul>li>.now-ui-icons.circle{top:-.19047619em;left:-1.9047619em}.now-ui-icons.spin{-webkit-animation:nc-icon-spin 2s infinite linear;-moz-animation:nc-icon-spin 2s infinite linear;animation:nc-icon-spin 2s infinite linear}@-webkit-keyframes nc-icon-spin{0%{-webkit-transform:rotate(0)}100%{-webkit-transform:rotate(360deg)}}@-moz-keyframes nc-icon-spin{0%{-moz-transform:rotate(0)}100%{-moz-transform:rotate(360deg)}}@keyframes nc-icon-spin{0%{-webkit-transform:rotate(0);-moz-transform:rotate(0);-ms-transform:rotate(0);-o-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}.now-ui-icons.ui-1_check:before{content:"\ea22"}.now-ui-icons.ui-1_email-85:before{content:"\ea2a"}.now-ui-icons.arrows-1_cloud-download-93:before{content:"\ea21"}.now-ui-icons.arrows-1_cloud-upload-94:before{content:"\ea24"}.now-ui-icons.arrows-1_minimal-down:before{content:"\ea39"}.now-ui-icons.arrows-1_minimal-left:before{content:"\ea3a"}.now-ui-icons.arrows-1_minimal-right:before{content:"\ea3b"}.now-ui-icons.arrows-1_minimal-up:before{content:"\ea3c"}.now-ui-icons.arrows-1_refresh-69:before{content:"\ea44"}.now-ui-icons.arrows-1_share-66:before{content:"\ea4c"}.now-ui-icons.business_badge:before{content:"\ea09"}.now-ui-icons.business_bank:before{content:"\ea0a"}.now-ui-icons.business_briefcase-24:before{content:"\ea13"}.now-ui-icons.business_bulb-63:before{content:"\ea15"}.now-ui-icons.business_chart-bar-32:before{content:"\ea1e"}.now-ui-icons.business_chart-pie-36:before{content:"\ea1f"}.now-ui-icons.business_globe:before{content:"\ea2f"}.now-ui-icons.business_money-coins:before{content:"\ea40"}.now-ui-icons.clothes_tie-bow:before{content:"\ea5b"}.now-ui-icons.design_vector:before{content:"\ea61"}.now-ui-icons.design_app:before{content:"\ea08"}.now-ui-icons.design_bullet-list-67:before{content:"\ea14"}.now-ui-icons.design_image:before{content:"\ea33"}.now-ui-icons.design_palette:before{content:"\ea41"}.now-ui-icons.design_scissors:before{content:"\ea4a"}.now-ui-icons.design-2_html5:before{content:"\ea32"}.now-ui-icons.design-2_ruler-pencil:before{content:"\ea48"}.now-ui-icons.emoticons_satisfied:before{content:"\ea49"}.now-ui-icons.files_box:before{content:"\ea12"}.now-ui-icons.files_paper:before{content:"\ea43"}.now-ui-icons.files_single-copy-04:before{content:"\ea52"}.now-ui-icons.health_ambulance:before{content:"\ea07"}.now-ui-icons.loader_gear:before{content:"\ea4e"}.now-ui-icons.loader_refresh:before{content:"\ea44"}.now-ui-icons.location_bookmark:before{content:"\ea10"}.now-ui-icons.location_compass-05:before{content:"\ea25"}.now-ui-icons.location_map-big:before{content:"\ea3d"}.now-ui-icons.location_pin:before{content:"\ea47"}.now-ui-icons.location_world:before{content:"\ea63"}.now-ui-icons.media-1_album:before{content:"\ea02"}.now-ui-icons.media-1_button-pause:before{content:"\ea16"}.now-ui-icons.media-1_button-play:before{content:"\ea18"}.now-ui-icons.media-1_button-power:before{content:"\ea19"}.now-ui-icons.media-1_camera-compact:before{content:"\ea1c"}.now-ui-icons.media-2_note-03:before{content:"\ea3f"}.now-ui-icons.media-2_sound-wave:before{content:"\ea57"}.now-ui-icons.objects_diamond:before{content:"\ea29"}.now-ui-icons.objects_globe:before{content:"\ea2f"}.now-ui-icons.objects_key-25:before{content:"\ea38"}.now-ui-icons.objects_planet:before{content:"\ea46"}.now-ui-icons.objects_spaceship:before{content:"\ea55"}.now-ui-icons.objects_support-17:before{content:"\ea56"}.now-ui-icons.objects_umbrella-13:before{content:"\ea5f"}.now-ui-icons.education_agenda-bookmark:before{content:"\ea01"}.now-ui-icons.education_atom:before{content:"\ea0c"}.now-ui-icons.education_glasses:before{content:"\ea2d"}.now-ui-icons.education_hat:before{content:"\ea30"}.now-ui-icons.education_paper:before{content:"\ea42"}.now-ui-icons.shopping_bag-16:before{content:"\ea0d"}.now-ui-icons.shopping_basket:before{content:"\ea0b"}.now-ui-icons.shopping_box:before{content:"\ea11"}.now-ui-icons.shopping_cart-simple:before{content:"\ea1d"}.now-ui-icons.shopping_credit-card:before{content:"\ea28"}.now-ui-icons.shopping_delivery-fast:before{content:"\ea27"}.now-ui-icons.shopping_shop:before{content:"\ea50"}.now-ui-icons.shopping_tag-content:before{content:"\ea59"}.now-ui-icons.sport_trophy:before{content:"\ea5d"}.now-ui-icons.sport_user-run:before{content:"\ea60"}.now-ui-icons.tech_controller-modern:before{content:"\ea26"}.now-ui-icons.tech_headphones:before{content:"\ea31"}.now-ui-icons.tech_laptop:before{content:"\ea36"}.now-ui-icons.tech_mobile:before{content:"\ea3e"}.now-ui-icons.tech_tablet:before{content:"\ea58"}.now-ui-icons.tech_tv:before{content:"\ea5e"}.now-ui-icons.tech_watch-time:before{content:"\ea62"}.now-ui-icons.text_align-center:before{content:"\ea05"}.now-ui-icons.text_align-left:before{content:"\ea06"}.now-ui-icons.text_bold:before{content:"\ea0e"}.now-ui-icons.text_caps-small:before{content:"\ea1b"}.now-ui-icons.gestures_tap-01:before{content:"\ea5a"}.now-ui-icons.transportation_air-baloon:before{content:"\ea03"}.now-ui-icons.transportation_bus-front-12:before{content:"\ea17"}.now-ui-icons.travel_info:before{content:"\ea04"}.now-ui-icons.travel_istanbul:before{content:"\ea34"}.now-ui-icons.ui-1_bell-53:before{content:"\ea0f"}.now-ui-icons.ui-1_calendar-60:before{content:"\ea1a"}.now-ui-icons.ui-1_lock-circle-open:before{content:"\ea35"}.now-ui-icons.ui-1_send:before{content:"\ea4d"}.now-ui-icons.ui-1_settings-gear-63:before{content:"\ea4e"}.now-ui-icons.ui-1_simple-add:before{content:"\ea4f"}.now-ui-icons.ui-1_simple-delete:before{content:"\ea54"}.now-ui-icons.ui-1_simple-remove:before{content:"\ea53"}.now-ui-icons.ui-1_zoom-bold:before{content:"\ea64"}.now-ui-icons.ui-2_chat-round:before{content:"\ea20"}.now-ui-icons.ui-2_favourite-28:before{content:"\ea2b"}.now-ui-icons.ui-2_like:before{content:"\ea37"}.now-ui-icons.ui-2_settings-90:before{content:"\ea4b"}.now-ui-icons.ui-2_time-alarm:before{content:"\ea5c"}.now-ui-icons.users_circle-08:before{content:"\ea23"}.now-ui-icons.users_single-02:before{content:"\ea51"}.flag-icon-background{background-repeat:no-repeat}.flag-icon{background-repeat:no-repeat;position:relative;width:1.33333333em;line-height:1em}.flag-icon:before{content:"\00a0"}.flag-icon.flag-icon-squared{width:1em}.flag-icon-ad{background-image:url(../flags/4x3/ad.svg)}.flag-icon-ad.flag-icon-squared{background-image:url(../flags/1x1/ad.svg)}.flag-icon-ae{background-image:url(../flags/4x3/ae.svg)}.flag-icon-ae.flag-icon-squared{background-image:url(../flags/1x1/ae.svg)}.flag-icon-af{background-image:url(../flags/4x3/af.svg)}.flag-icon-af.flag-icon-squared{background-image:url(../flags/1x1/af.svg)}.flag-icon-ag{background-image:url(../flags/4x3/ag.svg)}.flag-icon-ag.flag-icon-squared{background-image:url(../flags/1x1/ag.svg)}.flag-icon-ai{background-image:url(../flags/4x3/ai.svg)}.flag-icon-ai.flag-icon-squared{background-image:url(../flags/1x1/ai.svg)}.flag-icon-al{background-image:url(../flags/4x3/al.svg)}.flag-icon-al.flag-icon-squared{background-image:url(../flags/1x1/al.svg)}.flag-icon-am{background-image:url(../flags/4x3/am.svg)}.flag-icon-am.flag-icon-squared{background-image:url(../flags/1x1/am.svg)}.flag-icon-ao{background-image:url(../flags/4x3/ao.svg)}.flag-icon-ao.flag-icon-squared{background-image:url(../flags/1x1/ao.svg)}.flag-icon-aq{background-image:url(../flags/4x3/aq.svg)}.flag-icon-aq.flag-icon-squared{background-image:url(../flags/1x1/aq.svg)}.flag-icon-ar{background-image:url(../flags/4x3/ar.svg)}.flag-icon-ar.flag-icon-squared{background-image:url(../flags/1x1/ar.svg)}.flag-icon-as{background-image:url(../flags/4x3/as.svg)}.flag-icon-as.flag-icon-squared{background-image:url(../flags/1x1/as.svg)}.flag-icon-at{background-image:url(../flags/4x3/at.svg)}.flag-icon-at.flag-icon-squared{background-image:url(../flags/1x1/at.svg)}.flag-icon-au{background-image:url(../flags/4x3/au.svg)}.flag-icon-au.flag-icon-squared{background-image:url(../flags/1x1/au.svg)}.flag-icon-aw{background-image:url(../flags/4x3/aw.svg)}.flag-icon-aw.flag-icon-squared{background-image:url(../flags/1x1/aw.svg)}.flag-icon-ax{background-image:url(../flags/4x3/ax.svg)}.flag-icon-ax.flag-icon-squared{background-image:url(../flags/1x1/ax.svg)}.flag-icon-az{background-image:url(../flags/4x3/az.svg)}.flag-icon-az.flag-icon-squared{background-image:url(../flags/1x1/az.svg)}.flag-icon-ba{background-image:url(../flags/4x3/ba.svg)}.flag-icon-ba.flag-icon-squared{background-image:url(../flags/1x1/ba.svg)}.flag-icon-bb{background-image:url(../flags/4x3/bb.svg)}.flag-icon-bb.flag-icon-squared{background-image:url(../flags/1x1/bb.svg)}.flag-icon-bd{background-image:url(../flags/4x3/bd.svg)}.flag-icon-bd.flag-icon-squared{background-image:url(../flags/1x1/bd.svg)}.flag-icon-be{background-image:url(../flags/4x3/be.svg)}.flag-icon-be.flag-icon-squared{background-image:url(../flags/1x1/be.svg)}.flag-icon-bf{background-image:url(../flags/4x3/bf.svg)}.flag-icon-bf.flag-icon-squared{background-image:url(../flags/1x1/bf.svg)}.flag-icon-bg{background-image:url(../flags/4x3/bg.svg)}.flag-icon-bg.flag-icon-squared{background-image:url(../flags/1x1/bg.svg)}.flag-icon-bh{background-image:url(../flags/4x3/bh.svg)}.flag-icon-bh.flag-icon-squared{background-image:url(../flags/1x1/bh.svg)}.flag-icon-bi{background-image:url(../flags/4x3/bi.svg)}.flag-icon-bi.flag-icon-squared{background-image:url(../flags/1x1/bi.svg)}.flag-icon-bj{background-image:url(../flags/4x3/bj.svg)}.flag-icon-bj.flag-icon-squared{background-image:url(../flags/1x1/bj.svg)}.flag-icon-bl{background-image:url(../flags/4x3/bl.svg)}.flag-icon-bl.flag-icon-squared{background-image:url(../flags/1x1/bl.svg)}.flag-icon-bm{background-image:url(../flags/4x3/bm.svg)}.flag-icon-bm.flag-icon-squared{background-image:url(../flags/1x1/bm.svg)}.flag-icon-bn{background-image:url(../flags/4x3/bn.svg)}.flag-icon-bn.flag-icon-squared{background-image:url(../flags/1x1/bn.svg)}.flag-icon-bo{background-image:url(../flags/4x3/bo.svg)}.flag-icon-bo.flag-icon-squared{background-image:url(../flags/1x1/bo.svg)}.flag-icon-bq{background-image:url(../flags/4x3/bq.svg)}.flag-icon-bq.flag-icon-squared{background-image:url(../flags/1x1/bq.svg)}.flag-icon-br{background-image:url(../flags/4x3/br.svg)}.flag-icon-br.flag-icon-squared{background-image:url(../flags/1x1/br.svg)}.flag-icon-bs{background-image:url(../flags/4x3/bs.svg)}.flag-icon-bs.flag-icon-squared{background-image:url(../flags/1x1/bs.svg)}.flag-icon-bt{background-image:url(../flags/4x3/bt.svg)}.flag-icon-bt.flag-icon-squared{background-image:url(../flags/1x1/bt.svg)}.flag-icon-bv{background-image:url(../flags/4x3/bv.svg)}.flag-icon-bv.flag-icon-squared{background-image:url(../flags/1x1/bv.svg)}.flag-icon-bw{background-image:url(../flags/4x3/bw.svg)}.flag-icon-bw.flag-icon-squared{background-image:url(../flags/1x1/bw.svg)}.flag-icon-by{background-image:url(../flags/4x3/by.svg)}.flag-icon-by.flag-icon-squared{background-image:url(../flags/1x1/by.svg)}.flag-icon-bz{background-image:url(../flags/4x3/bz.svg)}.flag-icon-bz.flag-icon-squared{background-image:url(../flags/1x1/bz.svg)}.flag-icon-ca{background-image:url(../flags/4x3/ca.svg)}.flag-icon-ca.flag-icon-squared{background-image:url(../flags/1x1/ca.svg)}.flag-icon-cc{background-image:url(../flags/4x3/cc.svg)}.flag-icon-cc.flag-icon-squared{background-image:url(../flags/1x1/cc.svg)}.flag-icon-cd{background-image:url(../flags/4x3/cd.svg)}.flag-icon-cd.flag-icon-squared{background-image:url(../flags/1x1/cd.svg)}.flag-icon-cf{background-image:url(../flags/4x3/cf.svg)}.flag-icon-cf.flag-icon-squared{background-image:url(../flags/1x1/cf.svg)}.flag-icon-cg{background-image:url(../flags/4x3/cg.svg)}.flag-icon-cg.flag-icon-squared{background-image:url(../flags/1x1/cg.svg)}.flag-icon-ch{background-image:url(../flags/4x3/ch.svg)}.flag-icon-ch.flag-icon-squared{background-image:url(../flags/1x1/ch.svg)}.flag-icon-ci{background-image:url(../flags/4x3/ci.svg)}.flag-icon-ci.flag-icon-squared{background-image:url(../flags/1x1/ci.svg)}.flag-icon-ck{background-image:url(../flags/4x3/ck.svg)}.flag-icon-ck.flag-icon-squared{background-image:url(../flags/1x1/ck.svg)}.flag-icon-cl{background-image:url(../flags/4x3/cl.svg)}.flag-icon-cl.flag-icon-squared{background-image:url(../flags/1x1/cl.svg)}.flag-icon-cm{background-image:url(../flags/4x3/cm.svg)}.flag-icon-cm.flag-icon-squared{background-image:url(../flags/1x1/cm.svg)}.flag-icon-cn{background-image:url(../flags/4x3/cn.svg)}.flag-icon-cn.flag-icon-squared{background-image:url(../flags/1x1/cn.svg)}.flag-icon-co{background-image:url(../flags/4x3/co.svg)}.flag-icon-co.flag-icon-squared{background-image:url(../flags/1x1/co.svg)}.flag-icon-cr{background-image:url(../flags/4x3/cr.svg)}.flag-icon-cr.flag-icon-squared{background-image:url(../flags/1x1/cr.svg)}.flag-icon-cu{background-image:url(../flags/4x3/cu.svg)}.flag-icon-cu.flag-icon-squared{background-image:url(../flags/1x1/cu.svg)}.flag-icon-cv{background-image:url(../flags/4x3/cv.svg)}.flag-icon-cv.flag-icon-squared{background-image:url(../flags/1x1/cv.svg)}.flag-icon-cw{background-image:url(../flags/4x3/cw.svg)}.flag-icon-cw.flag-icon-squared{background-image:url(../flags/1x1/cw.svg)}.flag-icon-cx{background-image:url(../flags/4x3/cx.svg)}.flag-icon-cx.flag-icon-squared{background-image:url(../flags/1x1/cx.svg)}.flag-icon-cy{background-image:url(../flags/4x3/cy.svg)}.flag-icon-cy.flag-icon-squared{background-image:url(../flags/1x1/cy.svg)}.flag-icon-cz{background-image:url(../flags/4x3/cz.svg)}.flag-icon-cz.flag-icon-squared{background-image:url(../flags/1x1/cz.svg)}.flag-icon-de{background-image:url(../flags/4x3/de.svg)}.flag-icon-de.flag-icon-squared{background-image:url(../flags/1x1/de.svg)}.flag-icon-dj{background-image:url(../flags/4x3/dj.svg)}.flag-icon-dj.flag-icon-squared{background-image:url(../flags/1x1/dj.svg)}.flag-icon-dk{background-image:url(../flags/4x3/dk.svg)}.flag-icon-dk.flag-icon-squared{background-image:url(../flags/1x1/dk.svg)}.flag-icon-dm{background-image:url(../flags/4x3/dm.svg)}.flag-icon-dm.flag-icon-squared{background-image:url(../flags/1x1/dm.svg)}.flag-icon-do{background-image:url(../flags/4x3/do.svg)}.flag-icon-do.flag-icon-squared{background-image:url(../flags/1x1/do.svg)}.flag-icon-dz{background-image:url(../flags/4x3/dz.svg)}.flag-icon-dz.flag-icon-squared{background-image:url(../flags/1x1/dz.svg)}.flag-icon-ec{background-image:url(../flags/4x3/ec.svg)}.flag-icon-ec.flag-icon-squared{background-image:url(../flags/1x1/ec.svg)}.flag-icon-ee{background-image:url(../flags/4x3/ee.svg)}.flag-icon-ee.flag-icon-squared{background-image:url(../flags/1x1/ee.svg)}.flag-icon-eg{background-image:url(../flags/4x3/eg.svg)}.flag-icon-eg.flag-icon-squared{background-image:url(../flags/1x1/eg.svg)}.flag-icon-eh{background-image:url(../flags/4x3/eh.svg)}.flag-icon-eh.flag-icon-squared{background-image:url(../flags/1x1/eh.svg)}.flag-icon-er{background-image:url(../flags/4x3/er.svg)}.flag-icon-er.flag-icon-squared{background-image:url(../flags/1x1/er.svg)}.flag-icon-es{background-image:url(../flags/4x3/es.svg)}.flag-icon-es.flag-icon-squared{background-image:url(../flags/1x1/es.svg)}.flag-icon-et{background-image:url(../flags/4x3/et.svg)}.flag-icon-et.flag-icon-squared{background-image:url(../flags/1x1/et.svg)}.flag-icon-fi{background-image:url(../flags/4x3/fi.svg)}.flag-icon-fi.flag-icon-squared{background-image:url(../flags/1x1/fi.svg)}.flag-icon-fj{background-image:url(../flags/4x3/fj.svg)}.flag-icon-fj.flag-icon-squared{background-image:url(../flags/1x1/fj.svg)}.flag-icon-fk{background-image:url(../flags/4x3/fk.svg)}.flag-icon-fk.flag-icon-squared{background-image:url(../flags/1x1/fk.svg)}.flag-icon-fm{background-image:url(../flags/4x3/fm.svg)}.flag-icon-fm.flag-icon-squared{background-image:url(../flags/1x1/fm.svg)}.flag-icon-fo{background-image:url(../flags/4x3/fo.svg)}.flag-icon-fo.flag-icon-squared{background-image:url(../flags/1x1/fo.svg)}.flag-icon-fr{background-image:url(../flags/4x3/fr.svg)}.flag-icon-fr.flag-icon-squared{background-image:url(../flags/1x1/fr.svg)}.flag-icon-ga{background-image:url(../flags/4x3/ga.svg)}.flag-icon-ga.flag-icon-squared{background-image:url(../flags/1x1/ga.svg)}.flag-icon-gb{background-image:url(../flags/4x3/gb.svg)}.flag-icon-gb.flag-icon-squared{background-image:url(../flags/1x1/gb.svg)}.flag-icon-gd{background-image:url(../flags/4x3/gd.svg)}.flag-icon-gd.flag-icon-squared{background-image:url(../flags/1x1/gd.svg)}.flag-icon-ge{background-image:url(../flags/4x3/ge.svg)}.flag-icon-ge.flag-icon-squared{background-image:url(../flags/1x1/ge.svg)}.flag-icon-gf{background-image:url(../flags/4x3/gf.svg)}.flag-icon-gf.flag-icon-squared{background-image:url(../flags/1x1/gf.svg)}.flag-icon-gg{background-image:url(../flags/4x3/gg.svg)}.flag-icon-gg.flag-icon-squared{background-image:url(../flags/1x1/gg.svg)}.flag-icon-gh{background-image:url(../flags/4x3/gh.svg)}.flag-icon-gh.flag-icon-squared{background-image:url(../flags/1x1/gh.svg)}.flag-icon-gi{background-image:url(../flags/4x3/gi.svg)}.flag-icon-gi.flag-icon-squared{background-image:url(../flags/1x1/gi.svg)}.flag-icon-gl{background-image:url(../flags/4x3/gl.svg)}.flag-icon-gl.flag-icon-squared{background-image:url(../flags/1x1/gl.svg)}.flag-icon-gm{background-image:url(../flags/4x3/gm.svg)}.flag-icon-gm.flag-icon-squared{background-image:url(../flags/1x1/gm.svg)}.flag-icon-gn{background-image:url(../flags/4x3/gn.svg)}.flag-icon-gn.flag-icon-squared{background-image:url(../flags/1x1/gn.svg)}.flag-icon-gp{background-image:url(../flags/4x3/gp.svg)}.flag-icon-gp.flag-icon-squared{background-image:url(../flags/1x1/gp.svg)}.flag-icon-gq{background-image:url(../flags/4x3/gq.svg)}.flag-icon-gq.flag-icon-squared{background-image:url(../flags/1x1/gq.svg)}.flag-icon-gr{background-image:url(../flags/4x3/gr.svg)}.flag-icon-gr.flag-icon-squared{background-image:url(../flags/1x1/gr.svg)}.flag-icon-gs{background-image:url(../flags/4x3/gs.svg)}.flag-icon-gs.flag-icon-squared{background-image:url(../flags/1x1/gs.svg)}.flag-icon-gt{background-image:url(../flags/4x3/gt.svg)}.flag-icon-gt.flag-icon-squared{background-image:url(../flags/1x1/gt.svg)}.flag-icon-gu{background-image:url(../flags/4x3/gu.svg)}.flag-icon-gu.flag-icon-squared{background-image:url(../flags/1x1/gu.svg)}.flag-icon-gw{background-image:url(../flags/4x3/gw.svg)}.flag-icon-gw.flag-icon-squared{background-image:url(../flags/1x1/gw.svg)}.flag-icon-gy{background-image:url(../flags/4x3/gy.svg)}.flag-icon-gy.flag-icon-squared{background-image:url(../flags/1x1/gy.svg)}.flag-icon-hk{background-image:url(../flags/4x3/hk.svg)}.flag-icon-hk.flag-icon-squared{background-image:url(../flags/1x1/hk.svg)}.flag-icon-hm{background-image:url(../flags/4x3/hm.svg)}.flag-icon-hm.flag-icon-squared{background-image:url(../flags/1x1/hm.svg)}.flag-icon-hn{background-image:url(../flags/4x3/hn.svg)}.flag-icon-hn.flag-icon-squared{background-image:url(../flags/1x1/hn.svg)}.flag-icon-hr{background-image:url(../flags/4x3/hr.svg)}.flag-icon-hr.flag-icon-squared{background-image:url(../flags/1x1/hr.svg)}.flag-icon-ht{background-image:url(../flags/4x3/ht.svg)}.flag-icon-ht.flag-icon-squared{background-image:url(../flags/1x1/ht.svg)}.flag-icon-hu{background-image:url(../flags/4x3/hu.svg)}.flag-icon-hu.flag-icon-squared{background-image:url(../flags/1x1/hu.svg)}.flag-icon-id{background-image:url(../flags/4x3/id.svg)}.flag-icon-id.flag-icon-squared{background-image:url(../flags/1x1/id.svg)}.flag-icon-ie{background-image:url(../flags/4x3/ie.svg)}.flag-icon-ie.flag-icon-squared{background-image:url(../flags/1x1/ie.svg)}.flag-icon-il{background-image:url(../flags/4x3/il.svg)}.flag-icon-il.flag-icon-squared{background-image:url(../flags/1x1/il.svg)}.flag-icon-im{background-image:url(../flags/4x3/im.svg)}.flag-icon-im.flag-icon-squared{background-image:url(../flags/1x1/im.svg)}.flag-icon-in{background-image:url(../flags/4x3/in.svg)}.flag-icon-in.flag-icon-squared{background-image:url(../flags/1x1/in.svg)}.flag-icon-io{background-image:url(../flags/4x3/io.svg)}.flag-icon-io.flag-icon-squared{background-image:url(../flags/1x1/io.svg)}.flag-icon-iq{background-image:url(../flags/4x3/iq.svg)}.flag-icon-iq.flag-icon-squared{background-image:url(../flags/1x1/iq.svg)}.flag-icon-ir{background-image:url(../flags/4x3/ir.svg)}.flag-icon-ir.flag-icon-squared{background-image:url(../flags/1x1/ir.svg)}.flag-icon-is{background-image:url(../flags/4x3/is.svg)}.flag-icon-is.flag-icon-squared{background-image:url(../flags/1x1/is.svg)}.flag-icon-it{background-image:url(../flags/4x3/it.svg)}.flag-icon-it.flag-icon-squared{background-image:url(../flags/1x1/it.svg)}.flag-icon-je{background-image:url(../flags/4x3/je.svg)}.flag-icon-je.flag-icon-squared{background-image:url(../flags/1x1/je.svg)}.flag-icon-jm{background-image:url(../flags/4x3/jm.svg)}.flag-icon-jm.flag-icon-squared{background-image:url(../flags/1x1/jm.svg)}.flag-icon-jo{background-image:url(../flags/4x3/jo.svg)}.flag-icon-jo.flag-icon-squared{background-image:url(../flags/1x1/jo.svg)}.flag-icon-jp{background-image:url(../flags/4x3/jp.svg)}.flag-icon-jp.flag-icon-squared{background-image:url(../flags/1x1/jp.svg)}.flag-icon-ke{background-image:url(../flags/4x3/ke.svg)}.flag-icon-ke.flag-icon-squared{background-image:url(../flags/1x1/ke.svg)}.flag-icon-kg{background-image:url(../flags/4x3/kg.svg)}.flag-icon-kg.flag-icon-squared{background-image:url(../flags/1x1/kg.svg)}.flag-icon-kh{background-image:url(../flags/4x3/kh.svg)}.flag-icon-kh.flag-icon-squared{background-image:url(../flags/1x1/kh.svg)}.flag-icon-ki{background-image:url(../flags/4x3/ki.svg)}.flag-icon-ki.flag-icon-squared{background-image:url(../flags/1x1/ki.svg)}.flag-icon-km{background-image:url(../flags/4x3/km.svg)}.flag-icon-km.flag-icon-squared{background-image:url(../flags/1x1/km.svg)}.flag-icon-kn{background-image:url(../flags/4x3/kn.svg)}.flag-icon-kn.flag-icon-squared{background-image:url(../flags/1x1/kn.svg)}.flag-icon-kp{background-image:url(../flags/4x3/kp.svg)}.flag-icon-kp.flag-icon-squared{background-image:url(../flags/1x1/kp.svg)}.flag-icon-kr{background-image:url(../flags/4x3/kr.svg)}.flag-icon-kr.flag-icon-squared{background-image:url(../flags/1x1/kr.svg)}.flag-icon-kw{background-image:url(../flags/4x3/kw.svg)}.flag-icon-kw.flag-icon-squared{background-image:url(../flags/1x1/kw.svg)}.flag-icon-ky{background-image:url(../flags/4x3/ky.svg)}.flag-icon-ky.flag-icon-squared{background-image:url(../flags/1x1/ky.svg)}.flag-icon-kz{background-image:url(../flags/4x3/kz.svg)}.flag-icon-kz.flag-icon-squared{background-image:url(../flags/1x1/kz.svg)}.flag-icon-la{background-image:url(../flags/4x3/la.svg)}.flag-icon-la.flag-icon-squared{background-image:url(../flags/1x1/la.svg)}.flag-icon-lb{background-image:url(../flags/4x3/lb.svg)}.flag-icon-lb.flag-icon-squared{background-image:url(../flags/1x1/lb.svg)}.flag-icon-lc{background-image:url(../flags/4x3/lc.svg)}.flag-icon-lc.flag-icon-squared{background-image:url(../flags/1x1/lc.svg)}.flag-icon-li{background-image:url(../flags/4x3/li.svg)}.flag-icon-li.flag-icon-squared{background-image:url(../flags/1x1/li.svg)}.flag-icon-lk{background-image:url(../flags/4x3/lk.svg)}.flag-icon-lk.flag-icon-squared{background-image:url(../flags/1x1/lk.svg)}.flag-icon-lr{background-image:url(../flags/4x3/lr.svg)}.flag-icon-lr.flag-icon-squared{background-image:url(../flags/1x1/lr.svg)}.flag-icon-ls{background-image:url(../flags/4x3/ls.svg)}.flag-icon-ls.flag-icon-squared{background-image:url(../flags/1x1/ls.svg)}.flag-icon-lt{background-image:url(../flags/4x3/lt.svg)}.flag-icon-lt.flag-icon-squared{background-image:url(../flags/1x1/lt.svg)}.flag-icon-lu{background-image:url(../flags/4x3/lu.svg)}.flag-icon-lu.flag-icon-squared{background-image:url(../flags/1x1/lu.svg)}.flag-icon-lv{background-image:url(../flags/4x3/lv.svg)}.flag-icon-lv.flag-icon-squared{background-image:url(../flags/1x1/lv.svg)}.flag-icon-ly{background-image:url(../flags/4x3/ly.svg)}.flag-icon-ly.flag-icon-squared{background-image:url(../flags/1x1/ly.svg)}.flag-icon-ma{background-image:url(../flags/4x3/ma.svg)}.flag-icon-ma.flag-icon-squared{background-image:url(../flags/1x1/ma.svg)}.flag-icon-mc{background-image:url(../flags/4x3/mc.svg)}.flag-icon-mc.flag-icon-squared{background-image:url(../flags/1x1/mc.svg)}.flag-icon-md{background-image:url(../flags/4x3/md.svg)}.flag-icon-md.flag-icon-squared{background-image:url(../flags/1x1/md.svg)}.flag-icon-me{background-image:url(../flags/4x3/me.svg)}.flag-icon-me.flag-icon-squared{background-image:url(../flags/1x1/me.svg)}.flag-icon-mf{background-image:url(../flags/4x3/mf.svg)}.flag-icon-mf.flag-icon-squared{background-image:url(../flags/1x1/mf.svg)}.flag-icon-mg{background-image:url(../flags/4x3/mg.svg)}.flag-icon-mg.flag-icon-squared{background-image:url(../flags/1x1/mg.svg)}.flag-icon-mh{background-image:url(../flags/4x3/mh.svg)}.flag-icon-mh.flag-icon-squared{background-image:url(../flags/1x1/mh.svg)}.flag-icon-mk{background-image:url(../flags/4x3/mk.svg)}.flag-icon-mk.flag-icon-squared{background-image:url(../flags/1x1/mk.svg)}.flag-icon-ml{background-image:url(../flags/4x3/ml.svg)}.flag-icon-ml.flag-icon-squared{background-image:url(../flags/1x1/ml.svg)}.flag-icon-mm{background-image:url(../flags/4x3/mm.svg)}.flag-icon-mm.flag-icon-squared{background-image:url(../flags/1x1/mm.svg)}.flag-icon-mn{background-image:url(../flags/4x3/mn.svg)}.flag-icon-mn.flag-icon-squared{background-image:url(../flags/1x1/mn.svg)}.flag-icon-mo{background-image:url(../flags/4x3/mo.svg)}.flag-icon-mo.flag-icon-squared{background-image:url(../flags/1x1/mo.svg)}.flag-icon-mp{background-image:url(../flags/4x3/mp.svg)}.flag-icon-mp.flag-icon-squared{background-image:url(../flags/1x1/mp.svg)}.flag-icon-mq{background-image:url(../flags/4x3/mq.svg)}.flag-icon-mq.flag-icon-squared{background-image:url(../flags/1x1/mq.svg)}.flag-icon-mr{background-image:url(../flags/4x3/mr.svg)}.flag-icon-mr.flag-icon-squared{background-image:url(../flags/1x1/mr.svg)}.flag-icon-ms{background-image:url(../flags/4x3/ms.svg)}.flag-icon-ms.flag-icon-squared{background-image:url(../flags/1x1/ms.svg)}.flag-icon-mt{background-image:url(../flags/4x3/mt.svg)}.flag-icon-mt.flag-icon-squared{background-image:url(../flags/1x1/mt.svg)}.flag-icon-mu{background-image:url(../flags/4x3/mu.svg)}.flag-icon-mu.flag-icon-squared{background-image:url(../flags/1x1/mu.svg)}.flag-icon-mv{background-image:url(../flags/4x3/mv.svg)}.flag-icon-mv.flag-icon-squared{background-image:url(../flags/1x1/mv.svg)}.flag-icon-mw{background-image:url(../flags/4x3/mw.svg)}.flag-icon-mw.flag-icon-squared{background-image:url(../flags/1x1/mw.svg)}.flag-icon-mx{background-image:url(../flags/4x3/mx.svg)}.flag-icon-mx.flag-icon-squared{background-image:url(../flags/1x1/mx.svg)}.flag-icon-my{background-image:url(../flags/4x3/my.svg)}.flag-icon-my.flag-icon-squared{background-image:url(../flags/1x1/my.svg)}.flag-icon-mz{background-image:url(../flags/4x3/mz.svg)}.flag-icon-mz.flag-icon-squared{background-image:url(../flags/1x1/mz.svg)}.flag-icon-na{background-image:url(../flags/4x3/na.svg)}.flag-icon-na.flag-icon-squared{background-image:url(../flags/1x1/na.svg)}.flag-icon-nc{background-image:url(../flags/4x3/nc.svg)}.flag-icon-nc.flag-icon-squared{background-image:url(../flags/1x1/nc.svg)}.flag-icon-ne{background-image:url(../flags/4x3/ne.svg)}.flag-icon-ne.flag-icon-squared{background-image:url(../flags/1x1/ne.svg)}.flag-icon-nf{background-image:url(../flags/4x3/nf.svg)}.flag-icon-nf.flag-icon-squared{background-image:url(../flags/1x1/nf.svg)}.flag-icon-ng{background-image:url(../flags/4x3/ng.svg)}.flag-icon-ng.flag-icon-squared{background-image:url(../flags/1x1/ng.svg)}.flag-icon-ni{background-image:url(../flags/4x3/ni.svg)}.flag-icon-ni.flag-icon-squared{background-image:url(../flags/1x1/ni.svg)}.flag-icon-nl{background-image:url(../flags/4x3/nl.svg)}.flag-icon-nl.flag-icon-squared{background-image:url(../flags/1x1/nl.svg)}.flag-icon-no{background-image:url(../flags/4x3/no.svg)}.flag-icon-no.flag-icon-squared{background-image:url(../flags/1x1/no.svg)}.flag-icon-np{background-image:url(../flags/4x3/np.svg)}.flag-icon-np.flag-icon-squared{background-image:url(../flags/1x1/np.svg)}.flag-icon-nr{background-image:url(../flags/4x3/nr.svg)}.flag-icon-nr.flag-icon-squared{background-image:url(../flags/1x1/nr.svg)}.flag-icon-nu{background-image:url(../flags/4x3/nu.svg)}.flag-icon-nu.flag-icon-squared{background-image:url(../flags/1x1/nu.svg)}.flag-icon-nz{background-image:url(../flags/4x3/nz.svg)}.flag-icon-nz.flag-icon-squared{background-image:url(../flags/1x1/nz.svg)}.flag-icon-om{background-image:url(../flags/4x3/om.svg)}.flag-icon-om.flag-icon-squared{background-image:url(../flags/1x1/om.svg)}.flag-icon-pa{background-image:url(../flags/4x3/pa.svg)}.flag-icon-pa.flag-icon-squared{background-image:url(../flags/1x1/pa.svg)}.flag-icon-pe{background-image:url(../flags/4x3/pe.svg)}.flag-icon-pe.flag-icon-squared{background-image:url(../flags/1x1/pe.svg)}.flag-icon-pf{background-image:url(../flags/4x3/pf.svg)}.flag-icon-pf.flag-icon-squared{background-image:url(../flags/1x1/pf.svg)}.flag-icon-pg{background-image:url(../flags/4x3/pg.svg)}.flag-icon-pg.flag-icon-squared{background-image:url(../flags/1x1/pg.svg)}.flag-icon-ph{background-image:url(../flags/4x3/ph.svg)}.flag-icon-ph.flag-icon-squared{background-image:url(../flags/1x1/ph.svg)}.flag-icon-pk{background-image:url(../flags/4x3/pk.svg)}.flag-icon-pk.flag-icon-squared{background-image:url(../flags/1x1/pk.svg)}.flag-icon-pl{background-image:url(../flags/4x3/pl.svg)}.flag-icon-pl.flag-icon-squared{background-image:url(../flags/1x1/pl.svg)}.flag-icon-pm{background-image:url(../flags/4x3/pm.svg)}.flag-icon-pm.flag-icon-squared{background-image:url(../flags/1x1/pm.svg)}.flag-icon-pn{background-image:url(../flags/4x3/pn.svg)}.flag-icon-pn.flag-icon-squared{background-image:url(../flags/1x1/pn.svg)}.flag-icon-pr{background-image:url(../flags/4x3/pr.svg)}.flag-icon-pr.flag-icon-squared{background-image:url(../flags/1x1/pr.svg)}.flag-icon-ps{background-image:url(../flags/4x3/ps.svg)}.flag-icon-ps.flag-icon-squared{background-image:url(../flags/1x1/ps.svg)}.flag-icon-pt{background-image:url(../flags/4x3/pt.svg)}.flag-icon-pt.flag-icon-squared{background-image:url(../flags/1x1/pt.svg)}.flag-icon-pw{background-image:url(../flags/4x3/pw.svg)}.flag-icon-pw.flag-icon-squared{background-image:url(../flags/1x1/pw.svg)}.flag-icon-py{background-image:url(../flags/4x3/py.svg)}.flag-icon-py.flag-icon-squared{background-image:url(../flags/1x1/py.svg)}.flag-icon-qa{background-image:url(../flags/4x3/qa.svg)}.flag-icon-qa.flag-icon-squared{background-image:url(../flags/1x1/qa.svg)}.flag-icon-re{background-image:url(../flags/4x3/re.svg)}.flag-icon-re.flag-icon-squared{background-image:url(../flags/1x1/re.svg)}.flag-icon-ro{background-image:url(../flags/4x3/ro.svg)}.flag-icon-ro.flag-icon-squared{background-image:url(../flags/1x1/ro.svg)}.flag-icon-rs{background-image:url(../flags/4x3/rs.svg)}.flag-icon-rs.flag-icon-squared{background-image:url(../flags/1x1/rs.svg)}.flag-icon-ru{background-image:url(../flags/4x3/ru.svg)}.flag-icon-ru.flag-icon-squared{background-image:url(../flags/1x1/ru.svg)}.flag-icon-rw{background-image:url(../flags/4x3/rw.svg)}.flag-icon-rw.flag-icon-squared{background-image:url(../flags/1x1/rw.svg)}.flag-icon-sa{background-image:url(../flags/4x3/sa.svg)}.flag-icon-sa.flag-icon-squared{background-image:url(../flags/1x1/sa.svg)}.flag-icon-sb{background-image:url(../flags/4x3/sb.svg)}.flag-icon-sb.flag-icon-squared{background-image:url(../flags/1x1/sb.svg)}.flag-icon-sc{background-image:url(../flags/4x3/sc.svg)}.flag-icon-sc.flag-icon-squared{background-image:url(../flags/1x1/sc.svg)}.flag-icon-sd{background-image:url(../flags/4x3/sd.svg)}.flag-icon-sd.flag-icon-squared{background-image:url(../flags/1x1/sd.svg)}.flag-icon-se{background-image:url(../flags/4x3/se.svg)}.flag-icon-se.flag-icon-squared{background-image:url(../flags/1x1/se.svg)}.flag-icon-sg{background-image:url(../flags/4x3/sg.svg)}.flag-icon-sg.flag-icon-squared{background-image:url(../flags/1x1/sg.svg)}.flag-icon-sh{background-image:url(../flags/4x3/sh.svg)}.flag-icon-sh.flag-icon-squared{background-image:url(../flags/1x1/sh.svg)}.flag-icon-si{background-image:url(../flags/4x3/si.svg)}.flag-icon-si.flag-icon-squared{background-image:url(../flags/1x1/si.svg)}.flag-icon-sj{background-image:url(../flags/4x3/sj.svg)}.flag-icon-sj.flag-icon-squared{background-image:url(../flags/1x1/sj.svg)}.flag-icon-sk{background-image:url(../flags/4x3/sk.svg)}.flag-icon-sk.flag-icon-squared{background-image:url(../flags/1x1/sk.svg)}.flag-icon-sl{background-image:url(../flags/4x3/sl.svg)}.flag-icon-sl.flag-icon-squared{background-image:url(../flags/1x1/sl.svg)}.flag-icon-sm{background-image:url(../flags/4x3/sm.svg)}.flag-icon-sm.flag-icon-squared{background-image:url(../flags/1x1/sm.svg)}.flag-icon-sn{background-image:url(../flags/4x3/sn.svg)}.flag-icon-sn.flag-icon-squared{background-image:url(../flags/1x1/sn.svg)}.flag-icon-so{background-image:url(../flags/4x3/so.svg)}.flag-icon-so.flag-icon-squared{background-image:url(../flags/1x1/so.svg)}.flag-icon-sr{background-image:url(../flags/4x3/sr.svg)}.flag-icon-sr.flag-icon-squared{background-image:url(../flags/1x1/sr.svg)}.flag-icon-ss{background-image:url(../flags/4x3/ss.svg)}.flag-icon-ss.flag-icon-squared{background-image:url(../flags/1x1/ss.svg)}.flag-icon-st{background-image:url(../flags/4x3/st.svg)}.flag-icon-st.flag-icon-squared{background-image:url(../flags/1x1/st.svg)}.flag-icon-sv{background-image:url(../flags/4x3/sv.svg)}.flag-icon-sv.flag-icon-squared{background-image:url(../flags/1x1/sv.svg)}.flag-icon-sx{background-image:url(../flags/4x3/sx.svg)}.flag-icon-sx.flag-icon-squared{background-image:url(../flags/1x1/sx.svg)}.flag-icon-sy{background-image:url(../flags/4x3/sy.svg)}.flag-icon-sy.flag-icon-squared{background-image:url(../flags/1x1/sy.svg)}.flag-icon-sz{background-image:url(../flags/4x3/sz.svg)}.flag-icon-sz.flag-icon-squared{background-image:url(../flags/1x1/sz.svg)}.flag-icon-tc{background-image:url(../flags/4x3/tc.svg)}.flag-icon-tc.flag-icon-squared{background-image:url(../flags/1x1/tc.svg)}.flag-icon-td{background-image:url(../flags/4x3/td.svg)}.flag-icon-td.flag-icon-squared{background-image:url(../flags/1x1/td.svg)}.flag-icon-tf{background-image:url(../flags/4x3/tf.svg)}.flag-icon-tf.flag-icon-squared{background-image:url(../flags/1x1/tf.svg)}.flag-icon-tg{background-image:url(../flags/4x3/tg.svg)}.flag-icon-tg.flag-icon-squared{background-image:url(../flags/1x1/tg.svg)}.flag-icon-th{background-image:url(../flags/4x3/th.svg)}.flag-icon-th.flag-icon-squared{background-image:url(../flags/1x1/th.svg)}.flag-icon-tj{background-image:url(../flags/4x3/tj.svg)}.flag-icon-tj.flag-icon-squared{background-image:url(../flags/1x1/tj.svg)}.flag-icon-tk{background-image:url(../flags/4x3/tk.svg)}.flag-icon-tk.flag-icon-squared{background-image:url(../flags/1x1/tk.svg)}.flag-icon-tl{background-image:url(../flags/4x3/tl.svg)}.flag-icon-tl.flag-icon-squared{background-image:url(../flags/1x1/tl.svg)}.flag-icon-tm{background-image:url(../flags/4x3/tm.svg)}.flag-icon-tm.flag-icon-squared{background-image:url(../flags/1x1/tm.svg)}.flag-icon-tn{background-image:url(../flags/4x3/tn.svg)}.flag-icon-tn.flag-icon-squared{background-image:url(../flags/1x1/tn.svg)}.flag-icon-to{background-image:url(../flags/4x3/to.svg)}.flag-icon-to.flag-icon-squared{background-image:url(../flags/1x1/to.svg)}.flag-icon-tr{background-image:url(../flags/4x3/tr.svg)}.flag-icon-tr.flag-icon-squared{background-image:url(../flags/1x1/tr.svg)}.flag-icon-tt{background-image:url(../flags/4x3/tt.svg)}.flag-icon-tt.flag-icon-squared{background-image:url(../flags/1x1/tt.svg)}.flag-icon-tv{background-image:url(../flags/4x3/tv.svg)}.flag-icon-tv.flag-icon-squared{background-image:url(../flags/1x1/tv.svg)}.flag-icon-tw{background-image:url(../flags/4x3/tw.svg)}.flag-icon-tw.flag-icon-squared{background-image:url(../flags/1x1/tw.svg)}.flag-icon-tz{background-image:url(../flags/4x3/tz.svg)}.flag-icon-tz.flag-icon-squared{background-image:url(../flags/1x1/tz.svg)}.flag-icon-ua{background-image:url(../flags/4x3/ua.svg)}.flag-icon-ua.flag-icon-squared{background-image:url(../flags/1x1/ua.svg)}.flag-icon-ug{background-image:url(../flags/4x3/ug.svg)}.flag-icon-ug.flag-icon-squared{background-image:url(../flags/1x1/ug.svg)}.flag-icon-um{background-image:url(../flags/4x3/um.svg)}.flag-icon-um.flag-icon-squared{background-image:url(../flags/1x1/um.svg)}.flag-icon-us{background-image:url(../flags/4x3/us.svg)}.flag-icon-us.flag-icon-squared{background-image:url(../flags/1x1/us.svg)}.flag-icon-uy{background-image:url(../flags/4x3/uy.svg)}.flag-icon-uy.flag-icon-squared{background-image:url(../flags/1x1/uy.svg)}.flag-icon-uz{background-image:url(../flags/4x3/uz.svg)}.flag-icon-uz.flag-icon-squared{background-image:url(../flags/1x1/uz.svg)}.flag-icon-va{background-image:url(../flags/4x3/va.svg)}.flag-icon-va.flag-icon-squared{background-image:url(../flags/1x1/va.svg)}.flag-icon-vc{background-image:url(../flags/4x3/vc.svg)}.flag-icon-vc.flag-icon-squared{background-image:url(../flags/1x1/vc.svg)}.flag-icon-ve{background-image:url(../flags/4x3/ve.svg)}.flag-icon-ve.flag-icon-squared{background-image:url(../flags/1x1/ve.svg)}.flag-icon-vg{background-image:url(../flags/4x3/vg.svg)}.flag-icon-vg.flag-icon-squared{background-image:url(../flags/1x1/vg.svg)}.flag-icon-vi{background-image:url(../flags/4x3/vi.svg)}.flag-icon-vi.flag-icon-squared{background-image:url(../flags/1x1/vi.svg)}.flag-icon-vn{background-image:url(../flags/4x3/vn.svg)}.flag-icon-vn.flag-icon-squared{background-image:url(../flags/1x1/vn.svg)}.flag-icon-vu{background-image:url(../flags/4x3/vu.svg)}.flag-icon-vu.flag-icon-squared{background-image:url(../flags/1x1/vu.svg)}.flag-icon-wf{background-image:url(../flags/4x3/wf.svg)}.flag-icon-wf.flag-icon-squared{background-image:url(../flags/1x1/wf.svg)}.flag-icon-ws{background-image:url(../flags/4x3/ws.svg)}.flag-icon-ws.flag-icon-squared{background-image:url(../flags/1x1/ws.svg)}.flag-icon-ye{background-image:url(../flags/4x3/ye.svg)}.flag-icon-ye.flag-icon-squared{background-image:url(../flags/1x1/ye.svg)}.flag-icon-yt{background-image:url(../flags/4x3/yt.svg)}.flag-icon-yt.flag-icon-squared{background-image:url(../flags/1x1/yt.svg)}.flag-icon-za{background-image:url(../flags/4x3/za.svg)}.flag-icon-za.flag-icon-squared{background-image:url(../flags/1x1/za.svg)}.flag-icon-zm{background-image:url(../flags/4x3/zm.svg)}.flag-icon-zm.flag-icon-squared{background-image:url(../flags/1x1/zm.svg)}.flag-icon-zw{background-image:url(../flags/4x3/zw.svg)}.flag-icon-zw.flag-icon-squared{background-image:url(../flags/1x1/zw.svg)}.flag-icon-es-ct{background-image:url(../flags/4x3/es-ct.svg)}.flag-icon-es-ct.flag-icon-squared{background-image:url(../flags/1x1/es-ct.svg)}.flag-icon-eu{background-image:url(../flags/4x3/eu.svg)}.flag-icon-eu.flag-icon-squared{background-image:url(../flags/1x1/eu.svg)}.flag-icon-gb-eng{background-image:url(../flags/4x3/gb-eng.svg)}.flag-icon-gb-eng.flag-icon-squared{background-image:url(../flags/1x1/gb-eng.svg)}.flag-icon-gb-nir{background-image:url(../flags/4x3/gb-nir.svg)}.flag-icon-gb-nir.flag-icon-squared{background-image:url(../flags/1x1/gb-nir.svg)}.flag-icon-gb-sct{background-image:url(../flags/4x3/gb-sct.svg)}.flag-icon-gb-sct.flag-icon-squared{background-image:url(../flags/1x1/gb-sct.svg)}.flag-icon-gb-wls{background-image:url(../flags/4x3/gb-wls.svg)}.flag-icon-gb-wls.flag-icon-squared{background-image:url(../flags/1x1/gb-wls.svg)}.flag-icon-un{background-image:url(../flags/4x3/un.svg)}.flag-icon-un.flag-icon-squared{background-image:url(../flags/1x1/un.svg)}.flag-icon-xk{background-image:url(../flags/4x3/xk.svg)}.flag-icon-xk.flag-icon-squared{background-image:url(../flags/1x1/xk.svg)}.loader-container{top:0;left:0;width:100%;height:100%;position:fixed;background-color:#000;opacity:.2;z-index:9999}#loader{position:absolute;left:50%;top:50%;z-index:1;margin:-75px 0 0 -75px;border:16px solid #f3f3f3;border-radius:50%;border-top:16px solid #3498db;width:120px;height:120px;-webkit-animation:spin 2s linear infinite;animation:spin 2s linear infinite}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0)}100%{-webkit-transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.modal-open{overflow:hidden;padding-right:0!important}.croppie-container{width:100%;height:100%}.croppie-container .cr-image{z-index:-1;position:absolute;top:0;left:0;transform-origin:0 0;max-height:none;max-width:none}.croppie-container .cr-boundary{position:relative;overflow:hidden;margin:0 auto;z-index:1;width:100%;height:100%}.croppie-container .cr-resizer,.croppie-container .cr-viewport{position:absolute;border:2px solid #fff;margin:auto;top:0;bottom:0;right:0;left:0;box-shadow:0 0 2000px 2000px rgba(0,0,0,.5);z-index:0}.croppie-container .cr-resizer{z-index:2;box-shadow:none;pointer-events:none}.croppie-container .cr-resizer-horisontal,.croppie-container .cr-resizer-vertical{position:absolute;pointer-events:all}.croppie-container .cr-resizer-horisontal::after,.croppie-container .cr-resizer-vertical::after{display:block;position:absolute;box-sizing:border-box;border:1px solid #000;background:#fff;width:10px;height:10px;content:''}.croppie-container .cr-resizer-vertical{bottom:-5px;cursor:row-resize;width:100%;height:10px}.croppie-container .cr-resizer-vertical::after{left:50%;margin-left:-5px}.croppie-container .cr-resizer-horisontal{right:-5px;cursor:col-resize;width:10px;height:100%}.croppie-container .cr-resizer-horisontal::after{top:50%;margin-top:-5px}.croppie-container .cr-original-image{display:none}.croppie-container .cr-vp-circle{border-radius:50%}.croppie-container .cr-overlay{z-index:1;position:absolute;cursor:move;touch-action:none}.croppie-container .cr-slider-wrap{width:75%;margin:15px auto;text-align:center}.croppie-result{position:relative;overflow:hidden}.croppie-result img{position:absolute}.croppie-container .cr-image,.croppie-container .cr-overlay,.croppie-container .cr-viewport{-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0)}.cr-slider{-webkit-appearance:none;padding-top:8px;padding-bottom:8px;background-color:transparent}.cr-slider::-webkit-slider-runnable-track{width:100%;height:3px;background:rgba(0,0,0,.5);border:0;border-radius:3px}.cr-slider::-webkit-slider-thumb{-webkit-appearance:none;border:none;height:16px;width:16px;border-radius:50%;background:#ddd;margin-top:-6px}.cr-slider:focus{outline:0}.cr-slider::-moz-range-track{width:100%;height:3px;background:rgba(0,0,0,.5);border:0;border-radius:3px}.cr-slider::-moz-range-thumb{border:none;height:16px;width:16px;border-radius:50%;background:#ddd;margin-top:-6px}.cr-slider:-moz-focusring{outline:#fff solid 1px;outline-offset:-1px}.cr-slider::-ms-track{width:100%;height:5px;background:0 0;border-color:transparent;border-width:6px 0;color:transparent}.cr-slider::-ms-fill-lower{background:rgba(0,0,0,.5);border-radius:10px}.cr-slider::-ms-fill-upper{background:rgba(0,0,0,.5);border-radius:10px}.cr-slider::-ms-thumb{border:none;height:16px;width:16px;border-radius:50%;background:#ddd;margin-top:1px}.cr-slider:focus::-ms-fill-lower{background:rgba(0,0,0,.5)}.cr-slider:focus::-ms-fill-upper{background:rgba(0,0,0,.5)}.cr-rotate-controls{position:absolute;bottom:5px;left:5px;z-index:1}.cr-rotate-controls button{border:0;background:0 0}.cr-rotate-controls i:before{font-style:normal;font-weight:900;font-size:22px}.cm-em,.hljs-comment,.hljs-emphasis,.hljs-quote,.tui-editor-contents address,.tui-editor-contents cite,.tui-editor-contents dfn,.tui-editor-contents em,.tui-editor-contents i,.tui-editor-contents var{font-style:italic}.cr-rotate-l i:before{content:'↺'}.cr-rotate-r i:before{content:'↻'}.bootstrap-tagsinput{background-color:#fff;border:1px solid #ccc;box-shadow:inset 0 1px 1px rgba(0,0,0,.075);padding:4px 6px;color:#555;vertical-align:middle;border-radius:4px;line-height:22px;cursor:text}.bootstrap-tagsinput input,.bootstrap-tagsinput input:focus{border:none;box-shadow:none}.bootstrap-tagsinput input{outline:0;background-color:transparent;padding:0 6px;margin:0;width:auto;max-width:inherit}.bootstrap-tagsinput.form-control input::-moz-placeholder{color:#777;opacity:1}.bootstrap-tagsinput.form-control input:-ms-input-placeholder{color:#777}.bootstrap-tagsinput.form-control input::-webkit-input-placeholder{color:#777}.bootstrap-tagsinput .tag{margin-right:2px;color:#fff}.bootstrap-tagsinput .tag [data-role=remove]{margin-left:8px;cursor:pointer}.bootstrap-tagsinput .tag [data-role=remove]:after{content:"x";padding:0 2px}.bootstrap-tagsinput .tag [data-role=remove]:hover{box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05)}.bootstrap-tagsinput .tag [data-role=remove]:hover:active{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}/*! +/* Wed Feb 24 2021 09:22:56 GMT+0700 (Indochina Time) */@charset "UTF-8";.youtube,.youtube .play-button,.youtube img{cursor:pointer}#return-to-top,tags-input .tags .tag-item .remove-button:hover{text-decoration:none}.Chartjs-legend,.dialogdemoThemeInheritance .container{text-align:center}.cr-slider:focus,.hr-text,.input-site-name,tags-input .host:active,tags-input .tags .input,tags-input[disabled] .host:focus{outline:0}.Chartjs-legend,.te-heading-add ul{list-style:none}#return-to-top{position:fixed;bottom:20px;right:20px;background:#000;background:rgba(0,0,0,.7);width:50px;height:50px;-webkit-border-radius:35px;-moz-border-radius:35px;border-radius:35px;display:none;-webkit-transition:all .3s linear;-moz-transition:all .3s ease;-ms-transition:all .3s ease;-o-transition:all .3s ease;transition:all .3s ease;z-index:9}#return-to-top:hover{background:rgba(0,0,0,.9)}#return-to-top i{color:#fff;margin:0;position:relative;left:4px;top:0;font-size:30px;-webkit-transition:all .3s ease;-moz-transition:all .3s ease;-ms-transition:all .3s ease;-o-transition:all .3s ease;transition:all .3s ease}#return-to-top:hover i{color:#fff;top:5px}@media (min-width:992px){.language-switcher{display:inline;position:absolute;right:150px;bottom:15px}.language-switcher.portal{bottom:0}.language-switcher .dropdown-menu{right:0}}@media screen and (max-width:991px){.language-switcher{display:inline;position:absolute;left:20px}.language-switcher .dropdown-menu{left:0}}.language-switcher .dropdown-menu{width:250px;overflow:hidden!important}.navbar-collapse .dropdown-menu .dropdown-item{color:#444}#modal-files-search .modal-body img{height:50px}.data-table .header{padding:10px;font-weight:700;background:#d3d3d3}.mix-loader-container{top:0;left:0;width:100%;height:100%;position:fixed;background-color:#21252987;opacity:.97;z-index:9999;display:flex;justify-content:center;align-items:center}.mix-loader-container .spinner{margin:100px auto;width:40px;height:40px;position:relative;text-align:center;-webkit-animation:sk-rotate 2s infinite linear;animation:sk-rotate 2s infinite linear}.mix-loader-container .dot1,.mix-loader-container .dot2{width:60%;height:60%;display:inline-block;position:absolute;top:0;background-color:#fff;border-radius:100%;-webkit-animation:sk-bounce 2s infinite ease-in-out;animation:sk-bounce 2s infinite ease-in-out}.mix-loader-container .dot2{top:auto;bottom:0;-webkit-animation-delay:-1s;animation-delay:-1s}@-webkit-keyframes sk-rotate{100%{-webkit-transform:rotate(360deg)}}@keyframes sk-rotate{100%{transform:rotate(360deg);-webkit-transform:rotate(360deg)}}@-webkit-keyframes sk-bounce{0%,100%{-webkit-transform:scale(0)}50%{-webkit-transform:scale(1)}}@keyframes sk-bounce{0%,100%{transform:scale(0);-webkit-transform:scale(0)}50%{transform:scale(1);-webkit-transform:scale(1)}}.lds-ellipsis{display:inline-block;position:relative;width:80px;height:80px}.lds-ellipsis div{position:absolute;top:33px;width:13px;height:13px;border-radius:50%;background:#fff;animation-timing-function:cubic-bezier(0,1,1,0)}.lds-ellipsis div:nth-child(1){left:8px;animation:lds-ellipsis1 .6s infinite}.lds-ellipsis div:nth-child(2){left:8px;animation:lds-ellipsis2 .6s infinite}.lds-ellipsis div:nth-child(3){left:32px;animation:lds-ellipsis2 .6s infinite}.lds-ellipsis div:nth-child(4){left:56px;animation:lds-ellipsis3 .6s infinite}@keyframes lds-ellipsis1{0%{transform:scale(0)}100%{transform:scale(1)}}@keyframes lds-ellipsis3{0%{transform:scale(1)}100%{transform:scale(0)}}@keyframes lds-ellipsis2{0%{transform:translate(0,0)}100%{transform:translate(24px,0)}}#dlg-preview-popup .modal-body .img{max-width:100%;display:block;margin:0 auto}.snowflake{display:block;position:absolute;-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0);-webkit-user-select:none;-moz-user-select:none;user-select:none;background-image:-webkit-radial-gradient(center,circle farthest-corner,rgba(255,255,255,1) 40%,rgba(255,255,255,0) 100%);background-image:-moz-radial-gradient(center,circle farthest-corner,rgba(255,255,255,1) 40%,rgba(255,255,255,0) 100%);background-image:-ms-radial-gradient(center,circle farthest-corner,rgba(255,255,255,1) 40%,rgba(255,255,255,0) 100%);background-image:radial-gradient(center,circle farthest-corner,rgba(255,255,255,1) 40%,rgba(255,255,255,0) 100%)}#snow{position:fixed;width:100%;height:100%}.star-rating{margin:0;padding:0;display:inline-block}.star-rating .star{padding:1px;color:#ddd;font-size:12px;text-shadow:.05em .05em #aaa;list-style-type:none;display:inline-block;cursor:pointer}.star-rating .star.filled{color:#fd0}.star-rating.readonly .star.filled{color:#666}.youtube{background-color:#000;margin-bottom:30px;position:relative;padding-top:56.25%;overflow:hidden}.youtube img{width:100%;top:-16.82%;left:0;opacity:.7}.youtube .play-button{width:90px;height:60px;background-color:#333;box-shadow:0 0 30px rgba(0,0,0,.6);z-index:1;opacity:.8;border-radius:6px}tags-input[disabled] .tags,tags-input[disabled] .tags .input{background-color:#eee}.youtube .play-button:before{content:"";border-style:solid;border-width:15px 0 15px 26px;border-color:transparent transparent transparent #fff}.youtube .play-button,.youtube .play-button:before,.youtube iframe,.youtube img{position:absolute}.youtube .play-button,.youtube .play-button:before{top:50%;left:50%;transform:translate3d(-50%,-50%,0)}.youtube iframe{height:100%;width:100%;top:0;left:0}tags-input{box-shadow:none;border:none;padding:0;min-height:34px}tags-input .tags{border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-moz-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}tags-input .tags .tag-item.selected{color:#fff;border:1px solid #d43f3a}tags-input .tags.focused{border:1px solid #66afe9}tags-input .autocomplete{border-radius:4px}tags-input.ng-invalid .tags{border-color:#843534}.input-group tags-input{padding:0;display:table-cell}.input-group tags-input:not(:first-child) .tags{border-top-left-radius:0;border-bottom-left-radius:0}.input-group tags-input:not(:last-child) .tags{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-lg tags-input:first-child .tags{border-top-left-radius:6px;border-bottom-left-radius:6px}.input-group-lg tags-input:last-child .tags{border-top-right-radius:6px;border-bottom-right-radius:6px}.input-group-sm tags-input:first-child .tags{border-top-left-radius:3px;border-bottom-left-radius:3px}.input-group-sm tags-input:last-child .tags{border-top-right-radius:3px;border-bottom-right-radius:3px}.input-group-lg tags-input,tags-input.ti-input-lg{min-height:46px}.input-group-lg tags-input .tags,tags-input.ti-input-lg .tags{border-radius:6px}.input-group-lg tags-input .tags .tag-item,tags-input.ti-input-lg .tags .tag-item{height:38px;line-height:37px;font-size:18px;border-radius:6px}.input-group-lg tags-input .tags .tag-item .remove-button,tags-input.ti-input-lg .tags .tag-item .remove-button{font-size:20px}.input-group-lg tags-input .tags .input,tags-input.ti-input-lg .tags .input{height:38px;font-size:18px}.input-group-sm tags-input,tags-input.ti-input-sm{min-height:30px}.input-group-sm tags-input .tags,tags-input.ti-input-sm .tags{border-radius:3px}.input-group-sm tags-input .tags .tag-item,tags-input.ti-input-sm .tags .tag-item{height:22px;line-height:21px;font-size:12px;border-radius:3px}.input-group-sm tags-input .tags .tag-item .remove-button,tags-input.ti-input-sm .tags .tag-item .remove-button{font-size:16px}.input-group-sm tags-input .tags .input,tags-input.ti-input-sm .tags .input{height:22px;font-size:12px}.has-feedback tags-input .tags{padding-right:30px}.has-success tags-input .tags{border-color:#3c763d}.has-success tags-input .tags.focused{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-error tags-input .tags{border-color:#a94442}.has-error tags-input .tags.focused{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-warning tags-input .tags{border-color:#8a6d3b}.has-warning tags-input .tags.focused{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}tags-input{display:block}tags-input *,tags-input :after,tags-input :before{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}tags-input .host{margin:5px 0;position:relative;height:100%}tags-input .tags{-moz-appearance:textfield;-webkit-appearance:textfield;padding:1px;overflow:hidden;word-wrap:break-word;cursor:text;background-color:#fff;border:1px solid #a9a9a9;box-shadow:1px 1px 1px 0 #d3d3d3 inset;height:100%}tags-input .tags.focused{outline:0;-webkit-box-shadow:0 0 3px 1px rgba(5,139,242,.6);-moz-box-shadow:0 0 3px 1px rgba(5,139,242,.6);box-shadow:0 0 3px 1px rgba(5,139,242,.6)}tags-input .tags .tag-list{margin:0;padding:0;list-style-type:none}tags-input .tags .tag-item{color:#fff;margin:2px;padding:0 5px;display:inline-block;float:left;font:14px "Helvetica Neue",Helvetica,Arial,sans-serif;height:26px;line-height:25px;border:1px solid #acacac;border-radius:3px;background:-webkit-linear-gradient(top,#f0f9ff 0,#cbebff 47%,#a1dbff 100%);background:linear-gradient(to bottom,#f0f9ff 0,#cbebff 47%,#a1dbff 100%)}tags-input .tags .tag-item.selected{background:-webkit-linear-gradient(top,#febbbb 0,#fe9090 45%,#ff5c5c 100%);background:linear-gradient(to bottom,#febbbb 0,#fe9090 45%,#ff5c5c 100%)}tags-input .tags .tag-item .remove-button{margin:0 0 0 5px;padding:0;border:none;background:0 0;cursor:pointer;vertical-align:middle;font:700 16px Arial,sans-serif;color:#585858}tags-input[disabled] .tags,tags-input[disabled] .tags .input,tags-input[disabled] .tags .tag-item .remove-button{cursor:default}tags-input .tags .input.invalid-tag,tags-input .tags .tag-item .remove-button:active{color:red}tags-input .tags .input{border:0;margin:2px;padding:0 0 0 5px;float:left;height:26px;font:14px "Helvetica Neue",Helvetica,Arial,sans-serif}tags-input .tags .input::-ms-clear{display:none}tags-input.ng-invalid .tags{-webkit-box-shadow:0 0 3px 1px rgba(255,0,0,.6);-moz-box-shadow:0 0 3px 1px rgba(255,0,0,.6);box-shadow:0 0 3px 1px rgba(255,0,0,.6)}tags-input[disabled] .tags .tag-item{opacity:.65;background:-webkit-linear-gradient(top,#f0f9ff 0,rgba(203,235,255,.75) 47%,rgba(161,219,255,.62) 100%);background:linear-gradient(to bottom,#f0f9ff 0,rgba(203,235,255,.75) 47%,rgba(161,219,255,.62) 100%)}tags-input[disabled] .tags .tag-item .remove-button:active{color:#585858}tags-input .autocomplete{margin-top:5px;position:absolute;padding:5px 0;z-index:999;width:100%;background-color:#fff;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}tags-input .autocomplete .suggestion-list{margin:0;padding:0;list-style-type:none;max-height:280px;overflow-y:auto;position:relative}tags-input .autocomplete .suggestion-item{padding:5px 10px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font:16px "Helvetica Neue",Helvetica,Arial,sans-serif;color:#000;background-color:#fff}tags-input .autocomplete .suggestion-item.selected,tags-input .autocomplete .suggestion-item.selected em{color:#fff;background-color:#0097cf}tags-input .autocomplete .suggestion-item em{font:normal 700 16px "Helvetica Neue",Helvetica,Arial,sans-serif;color:#000;background-color:#fff}.portal-menus ul[dnd-list],.portal-menus ul[dnd-list]>li{position:relative}.portal-menus ul[dnd-list]{min-height:42px;padding-left:0}.portal-menus ul[dnd-list] .dndDraggingSource{display:none}.portal-menus ul[dnd-list] .dndPlaceholder{display:block;background-color:#ddd;padding:10px 15px;min-height:42px}.portal-menus ul[dnd-list] li{background-color:#fff;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;display:block;margin-bottom:-1px;position:relative;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.portal-menus ul[dnd-list] li dnd-nodrag{display:block;padding:10px 15px}.portal-menus .handle{cursor:move}#inputState,.btn,.btn-link,.round label,body .options .option{cursor:pointer}body,html{height:100%}.display-4{font-size:2rem!important}div[dnd-list],ul[dnd-list]{min-height:42px;padding-left:0}div[dnd-list] .dndDraggingSource,ul[dnd-list] .dndDraggingSource{display:none}div[dnd-list] .dndPlaceholder,ul[dnd-list] .dndPlaceholder{background-color:#ddd;display:block;min-height:42px}div[dnd-list] .dnd-item,ul[dnd-list] li{background-color:#fff;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;display:block;padding:10px 15px;margin-bottom:-1px}div[dnd-list] .dnd-item.selected,ul[dnd-list] li.selected{background-color:#dff0d8;color:#3c763d}.md-avatar{vertical-align:middle;width:50px;height:50px}.mix-tree-view .container{padding-right:0;padding-left:25px}.mix-tree-view .dropdown-menu{z-index:99999}.mix-tree-view .item{padding-bottom:2px;border-left:1px #eee solid}.mix-tree-view .item-fields{padding:12px 8px 0 26px}.sw-search{margin-right:0!important;margin-left:0!important}.sw-sidebar a{color:var(--text-color,#212529)}.ActiveUsers.is-increasing{-webkit-animation:a 3s;animation:a 3s}.ActiveUsers.is-decreasing{-webkit-animation:b 3s;animation:b 3s}@-webkit-keyframes a{10%{background-color:#ebffeb;border-color:rgba(0,128,0,.5);color:green}}@keyframes a{10%{background-color:#ebffeb;border-color:rgba(0,128,0,.5);color:green}}@-webkit-keyframes b{10%{background-color:#ffebeb;border-color:rgba(255,0,0,.5);color:red}}@keyframes b{10%{background-color:#ffebeb;border-color:rgba(255,0,0,.5);color:red}}.Chartjs{font-size:.85em}.Chartjs-figure{height:250px}.Chartjs-legend{margin:0;padding:1em 0 0}.Chartjs-legend>li{display:inline-block;padding:.25em .5em}.Chartjs-legend>li>i{display:inline-block;height:1em;margin-right:.5em;vertical-align:-.1em;width:1em}@media (min-width:570px){.Chartjs-figure{margin-right:1.5em}}.attr-set-value-item:last-child{border-bottom:0!important}.custom-image{max-width:30vw}.mix-sel-icons .dropdown-menu{left:-90px!important}.mix-sel-icons .dropdown-menu.show{max-height:250px;overflow:scroll}.mix-sel-icons .list-icon{max-height:150px;overflow-y:scroll;overflow-x:hidden}#modal-posts img{height:30px}.monaco-editor-full{position:fixed!important;left:0;top:0;width:100%;z-index:2222}.monaco-editor-full .monaco-editor-btn-group-full{z-index:2223;position:fixed;top:15px;right:25px}.simpleDemo ul[dnd-list]{min-height:42px;padding-left:0}.simpleDemo ul[dnd-list] .dndDraggingSource{display:none}.simpleDemo ul[dnd-list] .dndPlaceholder{background-color:#ddd;display:block;min-height:42px}.simpleDemo ul[dnd-list] li{background-color:#fff;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;display:block;padding:10px 15px;margin-bottom:-1px}.simpleDemo ul[dnd-list] li.selected{background-color:#dff0d8;color:#3c763d}@media(min-width:576px){.jumbotron{padding:2rem 1rem!important}}.alert.position-sticky{bottom:10px}.left-coloumn{padding:2rem}.bg-register-image{transition:background-image .2s ease-in-out;background-image:url(../mix-app/mix-app/assets/img/bgs/right-bg.png)}.input-site-name{background:0 0;border:none;border-bottom:1px solid #000;box-shadow:none;display:inline;width:200px;border-radius:0;padding:0}input.country-select{-webkit-appearance:none;-moz-appearance:none;appearance:none}.label-country-select{position:relative}.label-country-select:after{content:"\f107";font-family:FontAwesome;font-size:16px;right:4px;padding:0 0 2px;position:absolute;pointer-events:none}.hr-text:before,.label-country-select:before,.round label:after{content:""}.label-country-select:before{right:4px;top:0;width:16px;height:16px;background:#fff;position:absolute;pointer-events:none;display:block}@media only screen and (min-width:1200px){.card-header-nav-pills{margin-bottom:20px}}.content{width:100%;display:flex;align-items:center;flex-direction:column;background:0 0}.content>div{min-width:400px}.website-configuration{position:relative;margin-top:6%}.label-using{font-size:1.9rem}.bg-register-image{background-position:bottom;background-repeat:no-repeat;background-size:cover}.intruction-labels{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left}.country-select{background:0 0!important}.round{position:relative}.round label{background-color:#fff;border:1px solid #ccc;border-radius:50%;height:40px;left:0;position:absolute;top:0;width:40px}.round label:after{border:2px solid #fff;border-top:none;border-right:none;height:9px;left:11px;opacity:0;position:absolute;top:12px;transform:rotate(-45deg);width:17px}body .credit,body .options .option.active .label{bottom:20px;left:20px}.round input[type=checkbox]{visibility:hidden}.round input[type=checkbox]:checked+label{background-color:#66bb6a;border-color:#66bb6a}.round input[type=checkbox]:checked+label:after{opacity:1}body.app-init{display:flex;flex-direction:row;justify-content:center;align-items:center;overflow:hidden;height:100vh}@media only screen and (max-width:600px){.left-coloumn{padding:1rem}body.app-init{display:unset;flex-direction:unset;justify-content:unset;align-items:unset;overflow:scroll}.container.init-pages{padding-top:4%}}body .credit{position:absolute;color:#000}body .options{display:flex;flex-direction:row;align-items:stretch;overflow:hidden;min-width:100%;max-width:100%;height:400px}body .options .option{position:relative;overflow:hidden;min-width:60px;margin:10px 5px;background:var(--optionBackground,var(--defaultBackground,#e6e9ed));background-size:auto 120%;background-position:center;transition:.5s cubic-bezier(.05,.61,.41,.95)}body .options .option .label,body .options .option .shadow{position:absolute;right:0;transition:.5s cubic-bezier(.05,.61,.41,.95)}body .options .option:nth-child(1){--defaultBackground:#ed5565}body .options .option:nth-child(2){--defaultBackground:#fc6e51}body .options .option:nth-child(3){--defaultBackground:#ffce54}body .options .option:nth-child(4){--defaultBackground:#2ecc71}body .options .option:nth-child(5){--defaultBackground:#5d9cec}body .options .option:nth-child(6){--defaultBackground:#ac92ec}body .options .option.active{flex-grow:10000;-webkit-transform:scale(1);transform:scale(1);max-width:600px;margin:0 5px;border-radius:40px;background-size:auto 100%}body .options .option.active .shadow{box-shadow:inset 0 -120px 120px -120px #000,inset 0 -120px 120px -100px #000}body .options .option.active .label .info>div{left:0;opacity:1}body .options .option:not(.active){flex-grow:1;border-radius:30px}body .options .option:not(.active) .shadow{bottom:-40px;box-shadow:inset 0 -120px 0 -120px #000,inset 0 -120px 0 -100px #000}body .options .option:not(.active) .label{bottom:10px;left:10px}body .options .option:not(.active) .label .info>div{left:20px;opacity:0}body .options .option .shadow{bottom:0;left:0;height:400px;cursor:pointer}body .options .option .label{display:flex;height:40px}body .options .option .label .icon{display:flex;flex-direction:row;justify-content:center;align-items:center;min-width:40px;max-width:40px;height:40px;border-radius:100%;background-color:#fff;color:var(--defaultBackground)}body .options .option .label .info{display:flex;flex-direction:column;justify-content:center;margin-left:35px;color:#fff}body .options .option .label .info>div{position:relative;transition:.5s cubic-bezier(.05,.61,.41,.95),opacity .5s ease-out}body .options .option .label .info .main{font-weight:700;font-size:1.2rem}body .options .option .label .info .sub{transition-delay:.1s}.hr-text{line-height:1em;position:relative;border:0;color:#000;text-align:center;height:1.5em;opacity:.5}.hr-text:before{background:linear-gradient(to right,transparent,#818078,transparent);position:absolute;left:0;top:50%;width:100%;height:1px}.hr-text:after{content:attr(data-content);position:relative;display:inline-block;padding:0 .5em;line-height:1.5em;color:#212529;background-color:#fcfcfa}body::after,body::before{content:"";top:0;left:0;right:0;position:fixed;z-index:-1;bottom:0}body{display:grid;background-color:#000;height:100%}body::before{background:url(/mix-app/img/background.jpg) right top no-repeat fixed #000;opacity:.8;background-size:cover}body::after{background:right top no-repeat fixed #000;opacity:.5;background-size:cover;filter:blur(8px);-webkit-filter:blur(8px)}.flag-icon,.flag-icon-background{background-size:contain;background-position:50%;background-repeat:no-repeat}hr{border:none!important}.container{grid-template-columns:40px 50px auto 50px 40px;grid-template-rows:25% 100px auto}.form-init{width:100%;max-width:530px;padding:15px;margin:auto}mix-module-data-table .data-table .header{padding:5px;color:#495057;background-color:hsla(var(--primary-color-hue,211),100%,50%,.075);border-color:#dee2e6;font-weight:400;font-size:small}mix-module-data-table .preview-container{max-height:4em;overflow:hidden}upload-croppie .cr-boundary{overflow:hidden}main-side-bar-dynamic .sw-sidebar .sw-toc-item{position:relative}main-side-bar-dynamic .sw-sidebar .sw-toc-item .sw-toc-link .sw-toc-link{padding-left:0}main-side-bar-dynamic .sw-sidebar .sw-toc-item .btn-group{right:20px;opacity:1}main-side-bar-dynamic .sw-sidebar ul{padding-left:15px}main-side-bar-dynamic .sw-sidebar .sw-toc-sub-link .btn-group{padding:2px 0}@media (min-width:992px){#modal-content-filter .modal-lg,#modal-content-filter .modal-xl{max-width:80vw}}.img-container>img,.img-preview>img{max-width:100%}.img-container,.img-preview{background-color:#f7f7f7;text-align:center;width:100%}.img-container{margin-bottom:1rem;max-height:497px;min-height:200px}.docs-data>.input-group,.docs-toggles>.btn,.docs-toggles>.btn-group,.docs-toggles>.dropdown,.img-preview{margin-bottom:.5rem}@media (min-width:768px){.img-container{min-height:497px}}.docs-preview{margin-right:-1rem}.img-preview{float:left;margin-right:.5rem;overflow:hidden}.preview-lg{height:9rem;width:16rem}.preview-md{height:4.5rem;width:8rem}.preview-sm{height:2.25rem;width:4rem}.preview-xs{height:1.125rem;margin-right:0;width:2rem}.docs-data>.input-group>label{justify-content:center;min-width:5rem}.docs-data>.input-group>span{justify-content:center;min-width:3rem}.docs-buttons>.btn,.docs-buttons>.btn-group,.docs-buttons>.form-control{margin-bottom:.5rem;margin-right:.25rem}.custom-file-val{position:absolute;bottom:0}.sw-content{width:100%!important}input[type=date]::-webkit-inner-spin-button{display:none}.ace_razor{background-color:#ff0}.ace_punctuation.ace_block.ace_razor,.ace_punctuation.ace_short.ace_razor{color:#000}@media screen and (max-width:580px){.hide-on-mb{display:none}}#modal-files img{height:30px}#modal-files img.preview{width:100%;height:auto}@media screen and (min-width:580px){.hide-on-desktop{display:none}}@media screen and (max-width:991px){.navbar .navbar-nav{min-height:unset}}@font-face{font-family:'Nucleo Outline';src:url(../fonts/nucleo-outline.eot);src:url(../fonts/nucleo-outline.eot) format("embedded-opentype"),url(../fonts/nucleo-outline.woff2) format("woff2"),url(../fonts/nucleo-outline.woff) format("woff"),url(../fonts/nucleo-outline.ttf) format("truetype"),url(../fonts/nucleo-outline.svg) format("svg");font-weight:400;font-style:normal}.now-ui-icons{display:inline-block;font:normal normal normal 14px/1 'Nucleo Outline';font-size:inherit;speak:none;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.now-ui-icons.circle{padding:.33333333em;vertical-align:-16%;background-color:#eee;border-radius:50%}.nc-icon-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.nc-icon-ul>li{position:relative}.nc-icon-ul>li>.now-ui-icons{position:absolute;left:-1.57142857em;top:.14285714em;text-align:center}.nc-icon-ul>li>.now-ui-icons.circle{top:-.19047619em;left:-1.9047619em}.now-ui-icons.spin{-webkit-animation:nc-icon-spin 2s infinite linear;-moz-animation:nc-icon-spin 2s infinite linear;animation:nc-icon-spin 2s infinite linear}@-webkit-keyframes nc-icon-spin{0%{-webkit-transform:rotate(0)}100%{-webkit-transform:rotate(360deg)}}@-moz-keyframes nc-icon-spin{0%{-moz-transform:rotate(0)}100%{-moz-transform:rotate(360deg)}}@keyframes nc-icon-spin{0%{-webkit-transform:rotate(0);-moz-transform:rotate(0);-ms-transform:rotate(0);-o-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}.now-ui-icons.ui-1_check:before{content:"\ea22"}.now-ui-icons.ui-1_email-85:before{content:"\ea2a"}.now-ui-icons.arrows-1_cloud-download-93:before{content:"\ea21"}.now-ui-icons.arrows-1_cloud-upload-94:before{content:"\ea24"}.now-ui-icons.arrows-1_minimal-down:before{content:"\ea39"}.now-ui-icons.arrows-1_minimal-left:before{content:"\ea3a"}.now-ui-icons.arrows-1_minimal-right:before{content:"\ea3b"}.now-ui-icons.arrows-1_minimal-up:before{content:"\ea3c"}.now-ui-icons.arrows-1_refresh-69:before{content:"\ea44"}.now-ui-icons.arrows-1_share-66:before{content:"\ea4c"}.now-ui-icons.business_badge:before{content:"\ea09"}.now-ui-icons.business_bank:before{content:"\ea0a"}.now-ui-icons.business_briefcase-24:before{content:"\ea13"}.now-ui-icons.business_bulb-63:before{content:"\ea15"}.now-ui-icons.business_chart-bar-32:before{content:"\ea1e"}.now-ui-icons.business_chart-pie-36:before{content:"\ea1f"}.now-ui-icons.business_globe:before{content:"\ea2f"}.now-ui-icons.business_money-coins:before{content:"\ea40"}.now-ui-icons.clothes_tie-bow:before{content:"\ea5b"}.now-ui-icons.design_vector:before{content:"\ea61"}.now-ui-icons.design_app:before{content:"\ea08"}.now-ui-icons.design_bullet-list-67:before{content:"\ea14"}.now-ui-icons.design_image:before{content:"\ea33"}.now-ui-icons.design_palette:before{content:"\ea41"}.now-ui-icons.design_scissors:before{content:"\ea4a"}.now-ui-icons.design-2_html5:before{content:"\ea32"}.now-ui-icons.design-2_ruler-pencil:before{content:"\ea48"}.now-ui-icons.emoticons_satisfied:before{content:"\ea49"}.now-ui-icons.files_box:before{content:"\ea12"}.now-ui-icons.files_paper:before{content:"\ea43"}.now-ui-icons.files_single-copy-04:before{content:"\ea52"}.now-ui-icons.health_ambulance:before{content:"\ea07"}.now-ui-icons.loader_gear:before{content:"\ea4e"}.now-ui-icons.loader_refresh:before{content:"\ea44"}.now-ui-icons.location_bookmark:before{content:"\ea10"}.now-ui-icons.location_compass-05:before{content:"\ea25"}.now-ui-icons.location_map-big:before{content:"\ea3d"}.now-ui-icons.location_pin:before{content:"\ea47"}.now-ui-icons.location_world:before{content:"\ea63"}.now-ui-icons.media-1_album:before{content:"\ea02"}.now-ui-icons.media-1_button-pause:before{content:"\ea16"}.now-ui-icons.media-1_button-play:before{content:"\ea18"}.now-ui-icons.media-1_button-power:before{content:"\ea19"}.now-ui-icons.media-1_camera-compact:before{content:"\ea1c"}.now-ui-icons.media-2_note-03:before{content:"\ea3f"}.now-ui-icons.media-2_sound-wave:before{content:"\ea57"}.now-ui-icons.objects_diamond:before{content:"\ea29"}.now-ui-icons.objects_globe:before{content:"\ea2f"}.now-ui-icons.objects_key-25:before{content:"\ea38"}.now-ui-icons.objects_planet:before{content:"\ea46"}.now-ui-icons.objects_spaceship:before{content:"\ea55"}.now-ui-icons.objects_support-17:before{content:"\ea56"}.now-ui-icons.objects_umbrella-13:before{content:"\ea5f"}.now-ui-icons.education_agenda-bookmark:before{content:"\ea01"}.now-ui-icons.education_atom:before{content:"\ea0c"}.now-ui-icons.education_glasses:before{content:"\ea2d"}.now-ui-icons.education_hat:before{content:"\ea30"}.now-ui-icons.education_paper:before{content:"\ea42"}.now-ui-icons.shopping_bag-16:before{content:"\ea0d"}.now-ui-icons.shopping_basket:before{content:"\ea0b"}.now-ui-icons.shopping_box:before{content:"\ea11"}.now-ui-icons.shopping_cart-simple:before{content:"\ea1d"}.now-ui-icons.shopping_credit-card:before{content:"\ea28"}.now-ui-icons.shopping_delivery-fast:before{content:"\ea27"}.now-ui-icons.shopping_shop:before{content:"\ea50"}.now-ui-icons.shopping_tag-content:before{content:"\ea59"}.now-ui-icons.sport_trophy:before{content:"\ea5d"}.now-ui-icons.sport_user-run:before{content:"\ea60"}.now-ui-icons.tech_controller-modern:before{content:"\ea26"}.now-ui-icons.tech_headphones:before{content:"\ea31"}.now-ui-icons.tech_laptop:before{content:"\ea36"}.now-ui-icons.tech_mobile:before{content:"\ea3e"}.now-ui-icons.tech_tablet:before{content:"\ea58"}.now-ui-icons.tech_tv:before{content:"\ea5e"}.now-ui-icons.tech_watch-time:before{content:"\ea62"}.now-ui-icons.text_align-center:before{content:"\ea05"}.now-ui-icons.text_align-left:before{content:"\ea06"}.now-ui-icons.text_bold:before{content:"\ea0e"}.now-ui-icons.text_caps-small:before{content:"\ea1b"}.now-ui-icons.gestures_tap-01:before{content:"\ea5a"}.now-ui-icons.transportation_air-baloon:before{content:"\ea03"}.now-ui-icons.transportation_bus-front-12:before{content:"\ea17"}.now-ui-icons.travel_info:before{content:"\ea04"}.now-ui-icons.travel_istanbul:before{content:"\ea34"}.now-ui-icons.ui-1_bell-53:before{content:"\ea0f"}.now-ui-icons.ui-1_calendar-60:before{content:"\ea1a"}.now-ui-icons.ui-1_lock-circle-open:before{content:"\ea35"}.now-ui-icons.ui-1_send:before{content:"\ea4d"}.now-ui-icons.ui-1_settings-gear-63:before{content:"\ea4e"}.now-ui-icons.ui-1_simple-add:before{content:"\ea4f"}.now-ui-icons.ui-1_simple-delete:before{content:"\ea54"}.now-ui-icons.ui-1_simple-remove:before{content:"\ea53"}.now-ui-icons.ui-1_zoom-bold:before{content:"\ea64"}.now-ui-icons.ui-2_chat-round:before{content:"\ea20"}.now-ui-icons.ui-2_favourite-28:before{content:"\ea2b"}.now-ui-icons.ui-2_like:before{content:"\ea37"}.now-ui-icons.ui-2_settings-90:before{content:"\ea4b"}.now-ui-icons.ui-2_time-alarm:before{content:"\ea5c"}.now-ui-icons.users_circle-08:before{content:"\ea23"}.now-ui-icons.users_single-02:before{content:"\ea51"}.flag-icon{position:relative;display:inline-block;width:1.33333333em;line-height:1em}.flag-icon:before{content:"\00a0"}.flag-icon.flag-icon-squared{width:1em}.flag-icon-ad{background-image:url(../flags/4x3/ad.svg)}.flag-icon-ad.flag-icon-squared{background-image:url(../flags/1x1/ad.svg)}.flag-icon-ae{background-image:url(../flags/4x3/ae.svg)}.flag-icon-ae.flag-icon-squared{background-image:url(../flags/1x1/ae.svg)}.flag-icon-af{background-image:url(../flags/4x3/af.svg)}.flag-icon-af.flag-icon-squared{background-image:url(../flags/1x1/af.svg)}.flag-icon-ag{background-image:url(../flags/4x3/ag.svg)}.flag-icon-ag.flag-icon-squared{background-image:url(../flags/1x1/ag.svg)}.flag-icon-ai{background-image:url(../flags/4x3/ai.svg)}.flag-icon-ai.flag-icon-squared{background-image:url(../flags/1x1/ai.svg)}.flag-icon-al{background-image:url(../flags/4x3/al.svg)}.flag-icon-al.flag-icon-squared{background-image:url(../flags/1x1/al.svg)}.flag-icon-am{background-image:url(../flags/4x3/am.svg)}.flag-icon-am.flag-icon-squared{background-image:url(../flags/1x1/am.svg)}.flag-icon-ao{background-image:url(../flags/4x3/ao.svg)}.flag-icon-ao.flag-icon-squared{background-image:url(../flags/1x1/ao.svg)}.flag-icon-aq{background-image:url(../flags/4x3/aq.svg)}.flag-icon-aq.flag-icon-squared{background-image:url(../flags/1x1/aq.svg)}.flag-icon-ar{background-image:url(../flags/4x3/ar.svg)}.flag-icon-ar.flag-icon-squared{background-image:url(../flags/1x1/ar.svg)}.flag-icon-as{background-image:url(../flags/4x3/as.svg)}.flag-icon-as.flag-icon-squared{background-image:url(../flags/1x1/as.svg)}.flag-icon-at{background-image:url(../flags/4x3/at.svg)}.flag-icon-at.flag-icon-squared{background-image:url(../flags/1x1/at.svg)}.flag-icon-au{background-image:url(../flags/4x3/au.svg)}.flag-icon-au.flag-icon-squared{background-image:url(../flags/1x1/au.svg)}.flag-icon-aw{background-image:url(../flags/4x3/aw.svg)}.flag-icon-aw.flag-icon-squared{background-image:url(../flags/1x1/aw.svg)}.flag-icon-ax{background-image:url(../flags/4x3/ax.svg)}.flag-icon-ax.flag-icon-squared{background-image:url(../flags/1x1/ax.svg)}.flag-icon-az{background-image:url(../flags/4x3/az.svg)}.flag-icon-az.flag-icon-squared{background-image:url(../flags/1x1/az.svg)}.flag-icon-ba{background-image:url(../flags/4x3/ba.svg)}.flag-icon-ba.flag-icon-squared{background-image:url(../flags/1x1/ba.svg)}.flag-icon-bb{background-image:url(../flags/4x3/bb.svg)}.flag-icon-bb.flag-icon-squared{background-image:url(../flags/1x1/bb.svg)}.flag-icon-bd{background-image:url(../flags/4x3/bd.svg)}.flag-icon-bd.flag-icon-squared{background-image:url(../flags/1x1/bd.svg)}.flag-icon-be{background-image:url(../flags/4x3/be.svg)}.flag-icon-be.flag-icon-squared{background-image:url(../flags/1x1/be.svg)}.flag-icon-bf{background-image:url(../flags/4x3/bf.svg)}.flag-icon-bf.flag-icon-squared{background-image:url(../flags/1x1/bf.svg)}.flag-icon-bg{background-image:url(../flags/4x3/bg.svg)}.flag-icon-bg.flag-icon-squared{background-image:url(../flags/1x1/bg.svg)}.flag-icon-bh{background-image:url(../flags/4x3/bh.svg)}.flag-icon-bh.flag-icon-squared{background-image:url(../flags/1x1/bh.svg)}.flag-icon-bi{background-image:url(../flags/4x3/bi.svg)}.flag-icon-bi.flag-icon-squared{background-image:url(../flags/1x1/bi.svg)}.flag-icon-bj{background-image:url(../flags/4x3/bj.svg)}.flag-icon-bj.flag-icon-squared{background-image:url(../flags/1x1/bj.svg)}.flag-icon-bl{background-image:url(../flags/4x3/bl.svg)}.flag-icon-bl.flag-icon-squared{background-image:url(../flags/1x1/bl.svg)}.flag-icon-bm{background-image:url(../flags/4x3/bm.svg)}.flag-icon-bm.flag-icon-squared{background-image:url(../flags/1x1/bm.svg)}.flag-icon-bn{background-image:url(../flags/4x3/bn.svg)}.flag-icon-bn.flag-icon-squared{background-image:url(../flags/1x1/bn.svg)}.flag-icon-bo{background-image:url(../flags/4x3/bo.svg)}.flag-icon-bo.flag-icon-squared{background-image:url(../flags/1x1/bo.svg)}.flag-icon-bq{background-image:url(../flags/4x3/bq.svg)}.flag-icon-bq.flag-icon-squared{background-image:url(../flags/1x1/bq.svg)}.flag-icon-br{background-image:url(../flags/4x3/br.svg)}.flag-icon-br.flag-icon-squared{background-image:url(../flags/1x1/br.svg)}.flag-icon-bs{background-image:url(../flags/4x3/bs.svg)}.flag-icon-bs.flag-icon-squared{background-image:url(../flags/1x1/bs.svg)}.flag-icon-bt{background-image:url(../flags/4x3/bt.svg)}.flag-icon-bt.flag-icon-squared{background-image:url(../flags/1x1/bt.svg)}.flag-icon-bv{background-image:url(../flags/4x3/bv.svg)}.flag-icon-bv.flag-icon-squared{background-image:url(../flags/1x1/bv.svg)}.flag-icon-bw{background-image:url(../flags/4x3/bw.svg)}.flag-icon-bw.flag-icon-squared{background-image:url(../flags/1x1/bw.svg)}.flag-icon-by{background-image:url(../flags/4x3/by.svg)}.flag-icon-by.flag-icon-squared{background-image:url(../flags/1x1/by.svg)}.flag-icon-bz{background-image:url(../flags/4x3/bz.svg)}.flag-icon-bz.flag-icon-squared{background-image:url(../flags/1x1/bz.svg)}.flag-icon-ca{background-image:url(../flags/4x3/ca.svg)}.flag-icon-ca.flag-icon-squared{background-image:url(../flags/1x1/ca.svg)}.flag-icon-cc{background-image:url(../flags/4x3/cc.svg)}.flag-icon-cc.flag-icon-squared{background-image:url(../flags/1x1/cc.svg)}.flag-icon-cd{background-image:url(../flags/4x3/cd.svg)}.flag-icon-cd.flag-icon-squared{background-image:url(../flags/1x1/cd.svg)}.flag-icon-cf{background-image:url(../flags/4x3/cf.svg)}.flag-icon-cf.flag-icon-squared{background-image:url(../flags/1x1/cf.svg)}.flag-icon-cg{background-image:url(../flags/4x3/cg.svg)}.flag-icon-cg.flag-icon-squared{background-image:url(../flags/1x1/cg.svg)}.flag-icon-ch{background-image:url(../flags/4x3/ch.svg)}.flag-icon-ch.flag-icon-squared{background-image:url(../flags/1x1/ch.svg)}.flag-icon-ci{background-image:url(../flags/4x3/ci.svg)}.flag-icon-ci.flag-icon-squared{background-image:url(../flags/1x1/ci.svg)}.flag-icon-ck{background-image:url(../flags/4x3/ck.svg)}.flag-icon-ck.flag-icon-squared{background-image:url(../flags/1x1/ck.svg)}.flag-icon-cl{background-image:url(../flags/4x3/cl.svg)}.flag-icon-cl.flag-icon-squared{background-image:url(../flags/1x1/cl.svg)}.flag-icon-cm{background-image:url(../flags/4x3/cm.svg)}.flag-icon-cm.flag-icon-squared{background-image:url(../flags/1x1/cm.svg)}.flag-icon-cn{background-image:url(../flags/4x3/cn.svg)}.flag-icon-cn.flag-icon-squared{background-image:url(../flags/1x1/cn.svg)}.flag-icon-co{background-image:url(../flags/4x3/co.svg)}.flag-icon-co.flag-icon-squared{background-image:url(../flags/1x1/co.svg)}.flag-icon-cr{background-image:url(../flags/4x3/cr.svg)}.flag-icon-cr.flag-icon-squared{background-image:url(../flags/1x1/cr.svg)}.flag-icon-cu{background-image:url(../flags/4x3/cu.svg)}.flag-icon-cu.flag-icon-squared{background-image:url(../flags/1x1/cu.svg)}.flag-icon-cv{background-image:url(../flags/4x3/cv.svg)}.flag-icon-cv.flag-icon-squared{background-image:url(../flags/1x1/cv.svg)}.flag-icon-cw{background-image:url(../flags/4x3/cw.svg)}.flag-icon-cw.flag-icon-squared{background-image:url(../flags/1x1/cw.svg)}.flag-icon-cx{background-image:url(../flags/4x3/cx.svg)}.flag-icon-cx.flag-icon-squared{background-image:url(../flags/1x1/cx.svg)}.flag-icon-cy{background-image:url(../flags/4x3/cy.svg)}.flag-icon-cy.flag-icon-squared{background-image:url(../flags/1x1/cy.svg)}.flag-icon-cz{background-image:url(../flags/4x3/cz.svg)}.flag-icon-cz.flag-icon-squared{background-image:url(../flags/1x1/cz.svg)}.flag-icon-de{background-image:url(../flags/4x3/de.svg)}.flag-icon-de.flag-icon-squared{background-image:url(../flags/1x1/de.svg)}.flag-icon-dj{background-image:url(../flags/4x3/dj.svg)}.flag-icon-dj.flag-icon-squared{background-image:url(../flags/1x1/dj.svg)}.flag-icon-dk{background-image:url(../flags/4x3/dk.svg)}.flag-icon-dk.flag-icon-squared{background-image:url(../flags/1x1/dk.svg)}.flag-icon-dm{background-image:url(../flags/4x3/dm.svg)}.flag-icon-dm.flag-icon-squared{background-image:url(../flags/1x1/dm.svg)}.flag-icon-do{background-image:url(../flags/4x3/do.svg)}.flag-icon-do.flag-icon-squared{background-image:url(../flags/1x1/do.svg)}.flag-icon-dz{background-image:url(../flags/4x3/dz.svg)}.flag-icon-dz.flag-icon-squared{background-image:url(../flags/1x1/dz.svg)}.flag-icon-ec{background-image:url(../flags/4x3/ec.svg)}.flag-icon-ec.flag-icon-squared{background-image:url(../flags/1x1/ec.svg)}.flag-icon-ee{background-image:url(../flags/4x3/ee.svg)}.flag-icon-ee.flag-icon-squared{background-image:url(../flags/1x1/ee.svg)}.flag-icon-eg{background-image:url(../flags/4x3/eg.svg)}.flag-icon-eg.flag-icon-squared{background-image:url(../flags/1x1/eg.svg)}.flag-icon-eh{background-image:url(../flags/4x3/eh.svg)}.flag-icon-eh.flag-icon-squared{background-image:url(../flags/1x1/eh.svg)}.flag-icon-er{background-image:url(../flags/4x3/er.svg)}.flag-icon-er.flag-icon-squared{background-image:url(../flags/1x1/er.svg)}.flag-icon-es{background-image:url(../flags/4x3/es.svg)}.flag-icon-es.flag-icon-squared{background-image:url(../flags/1x1/es.svg)}.flag-icon-et{background-image:url(../flags/4x3/et.svg)}.flag-icon-et.flag-icon-squared{background-image:url(../flags/1x1/et.svg)}.flag-icon-fi{background-image:url(../flags/4x3/fi.svg)}.flag-icon-fi.flag-icon-squared{background-image:url(../flags/1x1/fi.svg)}.flag-icon-fj{background-image:url(../flags/4x3/fj.svg)}.flag-icon-fj.flag-icon-squared{background-image:url(../flags/1x1/fj.svg)}.flag-icon-fk{background-image:url(../flags/4x3/fk.svg)}.flag-icon-fk.flag-icon-squared{background-image:url(../flags/1x1/fk.svg)}.flag-icon-fm{background-image:url(../flags/4x3/fm.svg)}.flag-icon-fm.flag-icon-squared{background-image:url(../flags/1x1/fm.svg)}.flag-icon-fo{background-image:url(../flags/4x3/fo.svg)}.flag-icon-fo.flag-icon-squared{background-image:url(../flags/1x1/fo.svg)}.flag-icon-fr{background-image:url(../flags/4x3/fr.svg)}.flag-icon-fr.flag-icon-squared{background-image:url(../flags/1x1/fr.svg)}.flag-icon-ga{background-image:url(../flags/4x3/ga.svg)}.flag-icon-ga.flag-icon-squared{background-image:url(../flags/1x1/ga.svg)}.flag-icon-gb{background-image:url(../flags/4x3/gb.svg)}.flag-icon-gb.flag-icon-squared{background-image:url(../flags/1x1/gb.svg)}.flag-icon-gd{background-image:url(../flags/4x3/gd.svg)}.flag-icon-gd.flag-icon-squared{background-image:url(../flags/1x1/gd.svg)}.flag-icon-ge{background-image:url(../flags/4x3/ge.svg)}.flag-icon-ge.flag-icon-squared{background-image:url(../flags/1x1/ge.svg)}.flag-icon-gf{background-image:url(../flags/4x3/gf.svg)}.flag-icon-gf.flag-icon-squared{background-image:url(../flags/1x1/gf.svg)}.flag-icon-gg{background-image:url(../flags/4x3/gg.svg)}.flag-icon-gg.flag-icon-squared{background-image:url(../flags/1x1/gg.svg)}.flag-icon-gh{background-image:url(../flags/4x3/gh.svg)}.flag-icon-gh.flag-icon-squared{background-image:url(../flags/1x1/gh.svg)}.flag-icon-gi{background-image:url(../flags/4x3/gi.svg)}.flag-icon-gi.flag-icon-squared{background-image:url(../flags/1x1/gi.svg)}.flag-icon-gl{background-image:url(../flags/4x3/gl.svg)}.flag-icon-gl.flag-icon-squared{background-image:url(../flags/1x1/gl.svg)}.flag-icon-gm{background-image:url(../flags/4x3/gm.svg)}.flag-icon-gm.flag-icon-squared{background-image:url(../flags/1x1/gm.svg)}.flag-icon-gn{background-image:url(../flags/4x3/gn.svg)}.flag-icon-gn.flag-icon-squared{background-image:url(../flags/1x1/gn.svg)}.flag-icon-gp{background-image:url(../flags/4x3/gp.svg)}.flag-icon-gp.flag-icon-squared{background-image:url(../flags/1x1/gp.svg)}.flag-icon-gq{background-image:url(../flags/4x3/gq.svg)}.flag-icon-gq.flag-icon-squared{background-image:url(../flags/1x1/gq.svg)}.flag-icon-gr{background-image:url(../flags/4x3/gr.svg)}.flag-icon-gr.flag-icon-squared{background-image:url(../flags/1x1/gr.svg)}.flag-icon-gs{background-image:url(../flags/4x3/gs.svg)}.flag-icon-gs.flag-icon-squared{background-image:url(../flags/1x1/gs.svg)}.flag-icon-gt{background-image:url(../flags/4x3/gt.svg)}.flag-icon-gt.flag-icon-squared{background-image:url(../flags/1x1/gt.svg)}.flag-icon-gu{background-image:url(../flags/4x3/gu.svg)}.flag-icon-gu.flag-icon-squared{background-image:url(../flags/1x1/gu.svg)}.flag-icon-gw{background-image:url(../flags/4x3/gw.svg)}.flag-icon-gw.flag-icon-squared{background-image:url(../flags/1x1/gw.svg)}.flag-icon-gy{background-image:url(../flags/4x3/gy.svg)}.flag-icon-gy.flag-icon-squared{background-image:url(../flags/1x1/gy.svg)}.flag-icon-hk{background-image:url(../flags/4x3/hk.svg)}.flag-icon-hk.flag-icon-squared{background-image:url(../flags/1x1/hk.svg)}.flag-icon-hm{background-image:url(../flags/4x3/hm.svg)}.flag-icon-hm.flag-icon-squared{background-image:url(../flags/1x1/hm.svg)}.flag-icon-hn{background-image:url(../flags/4x3/hn.svg)}.flag-icon-hn.flag-icon-squared{background-image:url(../flags/1x1/hn.svg)}.flag-icon-hr{background-image:url(../flags/4x3/hr.svg)}.flag-icon-hr.flag-icon-squared{background-image:url(../flags/1x1/hr.svg)}.flag-icon-ht{background-image:url(../flags/4x3/ht.svg)}.flag-icon-ht.flag-icon-squared{background-image:url(../flags/1x1/ht.svg)}.flag-icon-hu{background-image:url(../flags/4x3/hu.svg)}.flag-icon-hu.flag-icon-squared{background-image:url(../flags/1x1/hu.svg)}.flag-icon-id{background-image:url(../flags/4x3/id.svg)}.flag-icon-id.flag-icon-squared{background-image:url(../flags/1x1/id.svg)}.flag-icon-ie{background-image:url(../flags/4x3/ie.svg)}.flag-icon-ie.flag-icon-squared{background-image:url(../flags/1x1/ie.svg)}.flag-icon-il{background-image:url(../flags/4x3/il.svg)}.flag-icon-il.flag-icon-squared{background-image:url(../flags/1x1/il.svg)}.flag-icon-im{background-image:url(../flags/4x3/im.svg)}.flag-icon-im.flag-icon-squared{background-image:url(../flags/1x1/im.svg)}.flag-icon-in{background-image:url(../flags/4x3/in.svg)}.flag-icon-in.flag-icon-squared{background-image:url(../flags/1x1/in.svg)}.flag-icon-io{background-image:url(../flags/4x3/io.svg)}.flag-icon-io.flag-icon-squared{background-image:url(../flags/1x1/io.svg)}.flag-icon-iq{background-image:url(../flags/4x3/iq.svg)}.flag-icon-iq.flag-icon-squared{background-image:url(../flags/1x1/iq.svg)}.flag-icon-ir{background-image:url(../flags/4x3/ir.svg)}.flag-icon-ir.flag-icon-squared{background-image:url(../flags/1x1/ir.svg)}.flag-icon-is{background-image:url(../flags/4x3/is.svg)}.flag-icon-is.flag-icon-squared{background-image:url(../flags/1x1/is.svg)}.flag-icon-it{background-image:url(../flags/4x3/it.svg)}.flag-icon-it.flag-icon-squared{background-image:url(../flags/1x1/it.svg)}.flag-icon-je{background-image:url(../flags/4x3/je.svg)}.flag-icon-je.flag-icon-squared{background-image:url(../flags/1x1/je.svg)}.flag-icon-jm{background-image:url(../flags/4x3/jm.svg)}.flag-icon-jm.flag-icon-squared{background-image:url(../flags/1x1/jm.svg)}.flag-icon-jo{background-image:url(../flags/4x3/jo.svg)}.flag-icon-jo.flag-icon-squared{background-image:url(../flags/1x1/jo.svg)}.flag-icon-jp{background-image:url(../flags/4x3/jp.svg)}.flag-icon-jp.flag-icon-squared{background-image:url(../flags/1x1/jp.svg)}.flag-icon-ke{background-image:url(../flags/4x3/ke.svg)}.flag-icon-ke.flag-icon-squared{background-image:url(../flags/1x1/ke.svg)}.flag-icon-kg{background-image:url(../flags/4x3/kg.svg)}.flag-icon-kg.flag-icon-squared{background-image:url(../flags/1x1/kg.svg)}.flag-icon-kh{background-image:url(../flags/4x3/kh.svg)}.flag-icon-kh.flag-icon-squared{background-image:url(../flags/1x1/kh.svg)}.flag-icon-ki{background-image:url(../flags/4x3/ki.svg)}.flag-icon-ki.flag-icon-squared{background-image:url(../flags/1x1/ki.svg)}.flag-icon-km{background-image:url(../flags/4x3/km.svg)}.flag-icon-km.flag-icon-squared{background-image:url(../flags/1x1/km.svg)}.flag-icon-kn{background-image:url(../flags/4x3/kn.svg)}.flag-icon-kn.flag-icon-squared{background-image:url(../flags/1x1/kn.svg)}.flag-icon-kp{background-image:url(../flags/4x3/kp.svg)}.flag-icon-kp.flag-icon-squared{background-image:url(../flags/1x1/kp.svg)}.flag-icon-kr{background-image:url(../flags/4x3/kr.svg)}.flag-icon-kr.flag-icon-squared{background-image:url(../flags/1x1/kr.svg)}.flag-icon-kw{background-image:url(../flags/4x3/kw.svg)}.flag-icon-kw.flag-icon-squared{background-image:url(../flags/1x1/kw.svg)}.flag-icon-ky{background-image:url(../flags/4x3/ky.svg)}.flag-icon-ky.flag-icon-squared{background-image:url(../flags/1x1/ky.svg)}.flag-icon-kz{background-image:url(../flags/4x3/kz.svg)}.flag-icon-kz.flag-icon-squared{background-image:url(../flags/1x1/kz.svg)}.flag-icon-la{background-image:url(../flags/4x3/la.svg)}.flag-icon-la.flag-icon-squared{background-image:url(../flags/1x1/la.svg)}.flag-icon-lb{background-image:url(../flags/4x3/lb.svg)}.flag-icon-lb.flag-icon-squared{background-image:url(../flags/1x1/lb.svg)}.flag-icon-lc{background-image:url(../flags/4x3/lc.svg)}.flag-icon-lc.flag-icon-squared{background-image:url(../flags/1x1/lc.svg)}.flag-icon-li{background-image:url(../flags/4x3/li.svg)}.flag-icon-li.flag-icon-squared{background-image:url(../flags/1x1/li.svg)}.flag-icon-lk{background-image:url(../flags/4x3/lk.svg)}.flag-icon-lk.flag-icon-squared{background-image:url(../flags/1x1/lk.svg)}.flag-icon-lr{background-image:url(../flags/4x3/lr.svg)}.flag-icon-lr.flag-icon-squared{background-image:url(../flags/1x1/lr.svg)}.flag-icon-ls{background-image:url(../flags/4x3/ls.svg)}.flag-icon-ls.flag-icon-squared{background-image:url(../flags/1x1/ls.svg)}.flag-icon-lt{background-image:url(../flags/4x3/lt.svg)}.flag-icon-lt.flag-icon-squared{background-image:url(../flags/1x1/lt.svg)}.flag-icon-lu{background-image:url(../flags/4x3/lu.svg)}.flag-icon-lu.flag-icon-squared{background-image:url(../flags/1x1/lu.svg)}.flag-icon-lv{background-image:url(../flags/4x3/lv.svg)}.flag-icon-lv.flag-icon-squared{background-image:url(../flags/1x1/lv.svg)}.flag-icon-ly{background-image:url(../flags/4x3/ly.svg)}.flag-icon-ly.flag-icon-squared{background-image:url(../flags/1x1/ly.svg)}.flag-icon-ma{background-image:url(../flags/4x3/ma.svg)}.flag-icon-ma.flag-icon-squared{background-image:url(../flags/1x1/ma.svg)}.flag-icon-mc{background-image:url(../flags/4x3/mc.svg)}.flag-icon-mc.flag-icon-squared{background-image:url(../flags/1x1/mc.svg)}.flag-icon-md{background-image:url(../flags/4x3/md.svg)}.flag-icon-md.flag-icon-squared{background-image:url(../flags/1x1/md.svg)}.flag-icon-me{background-image:url(../flags/4x3/me.svg)}.flag-icon-me.flag-icon-squared{background-image:url(../flags/1x1/me.svg)}.flag-icon-mf{background-image:url(../flags/4x3/mf.svg)}.flag-icon-mf.flag-icon-squared{background-image:url(../flags/1x1/mf.svg)}.flag-icon-mg{background-image:url(../flags/4x3/mg.svg)}.flag-icon-mg.flag-icon-squared{background-image:url(../flags/1x1/mg.svg)}.flag-icon-mh{background-image:url(../flags/4x3/mh.svg)}.flag-icon-mh.flag-icon-squared{background-image:url(../flags/1x1/mh.svg)}.flag-icon-mk{background-image:url(../flags/4x3/mk.svg)}.flag-icon-mk.flag-icon-squared{background-image:url(../flags/1x1/mk.svg)}.flag-icon-ml{background-image:url(../flags/4x3/ml.svg)}.flag-icon-ml.flag-icon-squared{background-image:url(../flags/1x1/ml.svg)}.flag-icon-mm{background-image:url(../flags/4x3/mm.svg)}.flag-icon-mm.flag-icon-squared{background-image:url(../flags/1x1/mm.svg)}.flag-icon-mn{background-image:url(../flags/4x3/mn.svg)}.flag-icon-mn.flag-icon-squared{background-image:url(../flags/1x1/mn.svg)}.flag-icon-mo{background-image:url(../flags/4x3/mo.svg)}.flag-icon-mo.flag-icon-squared{background-image:url(../flags/1x1/mo.svg)}.flag-icon-mp{background-image:url(../flags/4x3/mp.svg)}.flag-icon-mp.flag-icon-squared{background-image:url(../flags/1x1/mp.svg)}.flag-icon-mq{background-image:url(../flags/4x3/mq.svg)}.flag-icon-mq.flag-icon-squared{background-image:url(../flags/1x1/mq.svg)}.flag-icon-mr{background-image:url(../flags/4x3/mr.svg)}.flag-icon-mr.flag-icon-squared{background-image:url(../flags/1x1/mr.svg)}.flag-icon-ms{background-image:url(../flags/4x3/ms.svg)}.flag-icon-ms.flag-icon-squared{background-image:url(../flags/1x1/ms.svg)}.flag-icon-mt{background-image:url(../flags/4x3/mt.svg)}.flag-icon-mt.flag-icon-squared{background-image:url(../flags/1x1/mt.svg)}.flag-icon-mu{background-image:url(../flags/4x3/mu.svg)}.flag-icon-mu.flag-icon-squared{background-image:url(../flags/1x1/mu.svg)}.flag-icon-mv{background-image:url(../flags/4x3/mv.svg)}.flag-icon-mv.flag-icon-squared{background-image:url(../flags/1x1/mv.svg)}.flag-icon-mw{background-image:url(../flags/4x3/mw.svg)}.flag-icon-mw.flag-icon-squared{background-image:url(../flags/1x1/mw.svg)}.flag-icon-mx{background-image:url(../flags/4x3/mx.svg)}.flag-icon-mx.flag-icon-squared{background-image:url(../flags/1x1/mx.svg)}.flag-icon-my{background-image:url(../flags/4x3/my.svg)}.flag-icon-my.flag-icon-squared{background-image:url(../flags/1x1/my.svg)}.flag-icon-mz{background-image:url(../flags/4x3/mz.svg)}.flag-icon-mz.flag-icon-squared{background-image:url(../flags/1x1/mz.svg)}.flag-icon-na{background-image:url(../flags/4x3/na.svg)}.flag-icon-na.flag-icon-squared{background-image:url(../flags/1x1/na.svg)}.flag-icon-nc{background-image:url(../flags/4x3/nc.svg)}.flag-icon-nc.flag-icon-squared{background-image:url(../flags/1x1/nc.svg)}.flag-icon-ne{background-image:url(../flags/4x3/ne.svg)}.flag-icon-ne.flag-icon-squared{background-image:url(../flags/1x1/ne.svg)}.flag-icon-nf{background-image:url(../flags/4x3/nf.svg)}.flag-icon-nf.flag-icon-squared{background-image:url(../flags/1x1/nf.svg)}.flag-icon-ng{background-image:url(../flags/4x3/ng.svg)}.flag-icon-ng.flag-icon-squared{background-image:url(../flags/1x1/ng.svg)}.flag-icon-ni{background-image:url(../flags/4x3/ni.svg)}.flag-icon-ni.flag-icon-squared{background-image:url(../flags/1x1/ni.svg)}.flag-icon-nl{background-image:url(../flags/4x3/nl.svg)}.flag-icon-nl.flag-icon-squared{background-image:url(../flags/1x1/nl.svg)}.flag-icon-no{background-image:url(../flags/4x3/no.svg)}.flag-icon-no.flag-icon-squared{background-image:url(../flags/1x1/no.svg)}.flag-icon-np{background-image:url(../flags/4x3/np.svg)}.flag-icon-np.flag-icon-squared{background-image:url(../flags/1x1/np.svg)}.flag-icon-nr{background-image:url(../flags/4x3/nr.svg)}.flag-icon-nr.flag-icon-squared{background-image:url(../flags/1x1/nr.svg)}.flag-icon-nu{background-image:url(../flags/4x3/nu.svg)}.flag-icon-nu.flag-icon-squared{background-image:url(../flags/1x1/nu.svg)}.flag-icon-nz{background-image:url(../flags/4x3/nz.svg)}.flag-icon-nz.flag-icon-squared{background-image:url(../flags/1x1/nz.svg)}.flag-icon-om{background-image:url(../flags/4x3/om.svg)}.flag-icon-om.flag-icon-squared{background-image:url(../flags/1x1/om.svg)}.flag-icon-pa{background-image:url(../flags/4x3/pa.svg)}.flag-icon-pa.flag-icon-squared{background-image:url(../flags/1x1/pa.svg)}.flag-icon-pe{background-image:url(../flags/4x3/pe.svg)}.flag-icon-pe.flag-icon-squared{background-image:url(../flags/1x1/pe.svg)}.flag-icon-pf{background-image:url(../flags/4x3/pf.svg)}.flag-icon-pf.flag-icon-squared{background-image:url(../flags/1x1/pf.svg)}.flag-icon-pg{background-image:url(../flags/4x3/pg.svg)}.flag-icon-pg.flag-icon-squared{background-image:url(../flags/1x1/pg.svg)}.flag-icon-ph{background-image:url(../flags/4x3/ph.svg)}.flag-icon-ph.flag-icon-squared{background-image:url(../flags/1x1/ph.svg)}.flag-icon-pk{background-image:url(../flags/4x3/pk.svg)}.flag-icon-pk.flag-icon-squared{background-image:url(../flags/1x1/pk.svg)}.flag-icon-pl{background-image:url(../flags/4x3/pl.svg)}.flag-icon-pl.flag-icon-squared{background-image:url(../flags/1x1/pl.svg)}.flag-icon-pm{background-image:url(../flags/4x3/pm.svg)}.flag-icon-pm.flag-icon-squared{background-image:url(../flags/1x1/pm.svg)}.flag-icon-pn{background-image:url(../flags/4x3/pn.svg)}.flag-icon-pn.flag-icon-squared{background-image:url(../flags/1x1/pn.svg)}.flag-icon-pr{background-image:url(../flags/4x3/pr.svg)}.flag-icon-pr.flag-icon-squared{background-image:url(../flags/1x1/pr.svg)}.flag-icon-ps{background-image:url(../flags/4x3/ps.svg)}.flag-icon-ps.flag-icon-squared{background-image:url(../flags/1x1/ps.svg)}.flag-icon-pt{background-image:url(../flags/4x3/pt.svg)}.flag-icon-pt.flag-icon-squared{background-image:url(../flags/1x1/pt.svg)}.flag-icon-pw{background-image:url(../flags/4x3/pw.svg)}.flag-icon-pw.flag-icon-squared{background-image:url(../flags/1x1/pw.svg)}.flag-icon-py{background-image:url(../flags/4x3/py.svg)}.flag-icon-py.flag-icon-squared{background-image:url(../flags/1x1/py.svg)}.flag-icon-qa{background-image:url(../flags/4x3/qa.svg)}.flag-icon-qa.flag-icon-squared{background-image:url(../flags/1x1/qa.svg)}.flag-icon-re{background-image:url(../flags/4x3/re.svg)}.flag-icon-re.flag-icon-squared{background-image:url(../flags/1x1/re.svg)}.flag-icon-ro{background-image:url(../flags/4x3/ro.svg)}.flag-icon-ro.flag-icon-squared{background-image:url(../flags/1x1/ro.svg)}.flag-icon-rs{background-image:url(../flags/4x3/rs.svg)}.flag-icon-rs.flag-icon-squared{background-image:url(../flags/1x1/rs.svg)}.flag-icon-ru{background-image:url(../flags/4x3/ru.svg)}.flag-icon-ru.flag-icon-squared{background-image:url(../flags/1x1/ru.svg)}.flag-icon-rw{background-image:url(../flags/4x3/rw.svg)}.flag-icon-rw.flag-icon-squared{background-image:url(../flags/1x1/rw.svg)}.flag-icon-sa{background-image:url(../flags/4x3/sa.svg)}.flag-icon-sa.flag-icon-squared{background-image:url(../flags/1x1/sa.svg)}.flag-icon-sb{background-image:url(../flags/4x3/sb.svg)}.flag-icon-sb.flag-icon-squared{background-image:url(../flags/1x1/sb.svg)}.flag-icon-sc{background-image:url(../flags/4x3/sc.svg)}.flag-icon-sc.flag-icon-squared{background-image:url(../flags/1x1/sc.svg)}.flag-icon-sd{background-image:url(../flags/4x3/sd.svg)}.flag-icon-sd.flag-icon-squared{background-image:url(../flags/1x1/sd.svg)}.flag-icon-se{background-image:url(../flags/4x3/se.svg)}.flag-icon-se.flag-icon-squared{background-image:url(../flags/1x1/se.svg)}.flag-icon-sg{background-image:url(../flags/4x3/sg.svg)}.flag-icon-sg.flag-icon-squared{background-image:url(../flags/1x1/sg.svg)}.flag-icon-sh{background-image:url(../flags/4x3/sh.svg)}.flag-icon-sh.flag-icon-squared{background-image:url(../flags/1x1/sh.svg)}.flag-icon-si{background-image:url(../flags/4x3/si.svg)}.flag-icon-si.flag-icon-squared{background-image:url(../flags/1x1/si.svg)}.flag-icon-sj{background-image:url(../flags/4x3/sj.svg)}.flag-icon-sj.flag-icon-squared{background-image:url(../flags/1x1/sj.svg)}.flag-icon-sk{background-image:url(../flags/4x3/sk.svg)}.flag-icon-sk.flag-icon-squared{background-image:url(../flags/1x1/sk.svg)}.flag-icon-sl{background-image:url(../flags/4x3/sl.svg)}.flag-icon-sl.flag-icon-squared{background-image:url(../flags/1x1/sl.svg)}.flag-icon-sm{background-image:url(../flags/4x3/sm.svg)}.flag-icon-sm.flag-icon-squared{background-image:url(../flags/1x1/sm.svg)}.flag-icon-sn{background-image:url(../flags/4x3/sn.svg)}.flag-icon-sn.flag-icon-squared{background-image:url(../flags/1x1/sn.svg)}.flag-icon-so{background-image:url(../flags/4x3/so.svg)}.flag-icon-so.flag-icon-squared{background-image:url(../flags/1x1/so.svg)}.flag-icon-sr{background-image:url(../flags/4x3/sr.svg)}.flag-icon-sr.flag-icon-squared{background-image:url(../flags/1x1/sr.svg)}.flag-icon-ss{background-image:url(../flags/4x3/ss.svg)}.flag-icon-ss.flag-icon-squared{background-image:url(../flags/1x1/ss.svg)}.flag-icon-st{background-image:url(../flags/4x3/st.svg)}.flag-icon-st.flag-icon-squared{background-image:url(../flags/1x1/st.svg)}.flag-icon-sv{background-image:url(../flags/4x3/sv.svg)}.flag-icon-sv.flag-icon-squared{background-image:url(../flags/1x1/sv.svg)}.flag-icon-sx{background-image:url(../flags/4x3/sx.svg)}.flag-icon-sx.flag-icon-squared{background-image:url(../flags/1x1/sx.svg)}.flag-icon-sy{background-image:url(../flags/4x3/sy.svg)}.flag-icon-sy.flag-icon-squared{background-image:url(../flags/1x1/sy.svg)}.flag-icon-sz{background-image:url(../flags/4x3/sz.svg)}.flag-icon-sz.flag-icon-squared{background-image:url(../flags/1x1/sz.svg)}.flag-icon-tc{background-image:url(../flags/4x3/tc.svg)}.flag-icon-tc.flag-icon-squared{background-image:url(../flags/1x1/tc.svg)}.flag-icon-td{background-image:url(../flags/4x3/td.svg)}.flag-icon-td.flag-icon-squared{background-image:url(../flags/1x1/td.svg)}.flag-icon-tf{background-image:url(../flags/4x3/tf.svg)}.flag-icon-tf.flag-icon-squared{background-image:url(../flags/1x1/tf.svg)}.flag-icon-tg{background-image:url(../flags/4x3/tg.svg)}.flag-icon-tg.flag-icon-squared{background-image:url(../flags/1x1/tg.svg)}.flag-icon-th{background-image:url(../flags/4x3/th.svg)}.flag-icon-th.flag-icon-squared{background-image:url(../flags/1x1/th.svg)}.flag-icon-tj{background-image:url(../flags/4x3/tj.svg)}.flag-icon-tj.flag-icon-squared{background-image:url(../flags/1x1/tj.svg)}.flag-icon-tk{background-image:url(../flags/4x3/tk.svg)}.flag-icon-tk.flag-icon-squared{background-image:url(../flags/1x1/tk.svg)}.flag-icon-tl{background-image:url(../flags/4x3/tl.svg)}.flag-icon-tl.flag-icon-squared{background-image:url(../flags/1x1/tl.svg)}.flag-icon-tm{background-image:url(../flags/4x3/tm.svg)}.flag-icon-tm.flag-icon-squared{background-image:url(../flags/1x1/tm.svg)}.flag-icon-tn{background-image:url(../flags/4x3/tn.svg)}.flag-icon-tn.flag-icon-squared{background-image:url(../flags/1x1/tn.svg)}.flag-icon-to{background-image:url(../flags/4x3/to.svg)}.flag-icon-to.flag-icon-squared{background-image:url(../flags/1x1/to.svg)}.flag-icon-tr{background-image:url(../flags/4x3/tr.svg)}.flag-icon-tr.flag-icon-squared{background-image:url(../flags/1x1/tr.svg)}.flag-icon-tt{background-image:url(../flags/4x3/tt.svg)}.flag-icon-tt.flag-icon-squared{background-image:url(../flags/1x1/tt.svg)}.flag-icon-tv{background-image:url(../flags/4x3/tv.svg)}.flag-icon-tv.flag-icon-squared{background-image:url(../flags/1x1/tv.svg)}.flag-icon-tw{background-image:url(../flags/4x3/tw.svg)}.flag-icon-tw.flag-icon-squared{background-image:url(../flags/1x1/tw.svg)}.flag-icon-tz{background-image:url(../flags/4x3/tz.svg)}.flag-icon-tz.flag-icon-squared{background-image:url(../flags/1x1/tz.svg)}.flag-icon-ua{background-image:url(../flags/4x3/ua.svg)}.flag-icon-ua.flag-icon-squared{background-image:url(../flags/1x1/ua.svg)}.flag-icon-ug{background-image:url(../flags/4x3/ug.svg)}.flag-icon-ug.flag-icon-squared{background-image:url(../flags/1x1/ug.svg)}.flag-icon-um{background-image:url(../flags/4x3/um.svg)}.flag-icon-um.flag-icon-squared{background-image:url(../flags/1x1/um.svg)}.flag-icon-us{background-image:url(../flags/4x3/us.svg)}.flag-icon-us.flag-icon-squared{background-image:url(../flags/1x1/us.svg)}.flag-icon-uy{background-image:url(../flags/4x3/uy.svg)}.flag-icon-uy.flag-icon-squared{background-image:url(../flags/1x1/uy.svg)}.flag-icon-uz{background-image:url(../flags/4x3/uz.svg)}.flag-icon-uz.flag-icon-squared{background-image:url(../flags/1x1/uz.svg)}.flag-icon-va{background-image:url(../flags/4x3/va.svg)}.flag-icon-va.flag-icon-squared{background-image:url(../flags/1x1/va.svg)}.flag-icon-vc{background-image:url(../flags/4x3/vc.svg)}.flag-icon-vc.flag-icon-squared{background-image:url(../flags/1x1/vc.svg)}.flag-icon-ve{background-image:url(../flags/4x3/ve.svg)}.flag-icon-ve.flag-icon-squared{background-image:url(../flags/1x1/ve.svg)}.flag-icon-vg{background-image:url(../flags/4x3/vg.svg)}.flag-icon-vg.flag-icon-squared{background-image:url(../flags/1x1/vg.svg)}.flag-icon-vi{background-image:url(../flags/4x3/vi.svg)}.flag-icon-vi.flag-icon-squared{background-image:url(../flags/1x1/vi.svg)}.flag-icon-vn{background-image:url(../flags/4x3/vn.svg)}.flag-icon-vn.flag-icon-squared{background-image:url(../flags/1x1/vn.svg)}.flag-icon-vu{background-image:url(../flags/4x3/vu.svg)}.flag-icon-vu.flag-icon-squared{background-image:url(../flags/1x1/vu.svg)}.flag-icon-wf{background-image:url(../flags/4x3/wf.svg)}.flag-icon-wf.flag-icon-squared{background-image:url(../flags/1x1/wf.svg)}.flag-icon-ws{background-image:url(../flags/4x3/ws.svg)}.flag-icon-ws.flag-icon-squared{background-image:url(../flags/1x1/ws.svg)}.flag-icon-ye{background-image:url(../flags/4x3/ye.svg)}.flag-icon-ye.flag-icon-squared{background-image:url(../flags/1x1/ye.svg)}.flag-icon-yt{background-image:url(../flags/4x3/yt.svg)}.flag-icon-yt.flag-icon-squared{background-image:url(../flags/1x1/yt.svg)}.flag-icon-za{background-image:url(../flags/4x3/za.svg)}.flag-icon-za.flag-icon-squared{background-image:url(../flags/1x1/za.svg)}.flag-icon-zm{background-image:url(../flags/4x3/zm.svg)}.flag-icon-zm.flag-icon-squared{background-image:url(../flags/1x1/zm.svg)}.flag-icon-zw{background-image:url(../flags/4x3/zw.svg)}.flag-icon-zw.flag-icon-squared{background-image:url(../flags/1x1/zw.svg)}.flag-icon-es-ct{background-image:url(../flags/4x3/es-ct.svg)}.flag-icon-es-ct.flag-icon-squared{background-image:url(../flags/1x1/es-ct.svg)}.flag-icon-eu{background-image:url(../flags/4x3/eu.svg)}.flag-icon-eu.flag-icon-squared{background-image:url(../flags/1x1/eu.svg)}.flag-icon-gb-eng{background-image:url(../flags/4x3/gb-eng.svg)}.flag-icon-gb-eng.flag-icon-squared{background-image:url(../flags/1x1/gb-eng.svg)}.flag-icon-gb-nir{background-image:url(../flags/4x3/gb-nir.svg)}.flag-icon-gb-nir.flag-icon-squared{background-image:url(../flags/1x1/gb-nir.svg)}.flag-icon-gb-sct{background-image:url(../flags/4x3/gb-sct.svg)}.flag-icon-gb-sct.flag-icon-squared{background-image:url(../flags/1x1/gb-sct.svg)}.flag-icon-gb-wls{background-image:url(../flags/4x3/gb-wls.svg)}.flag-icon-gb-wls.flag-icon-squared{background-image:url(../flags/1x1/gb-wls.svg)}.flag-icon-un{background-image:url(../flags/4x3/un.svg)}.flag-icon-un.flag-icon-squared{background-image:url(../flags/1x1/un.svg)}.flag-icon-xk{background-image:url(../flags/4x3/xk.svg)}.flag-icon-xk.flag-icon-squared{background-image:url(../flags/1x1/xk.svg)}.loader-container{top:0;left:0;width:100%;height:100%;position:fixed;background-color:#000;opacity:.2;z-index:9999}#loader{position:absolute;left:50%;top:50%;z-index:1;margin:-75px 0 0 -75px;border:16px solid #f3f3f3;border-radius:50%;border-top:16px solid #3498db;width:120px;height:120px;-webkit-animation:spin 2s linear infinite;animation:spin 2s linear infinite}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0)}100%{-webkit-transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.modal-open{overflow:hidden;padding-right:0!important}.croppie-container{width:100%;height:100%}.croppie-container .cr-image{z-index:-1;position:absolute;top:0;left:0;transform-origin:0 0;max-height:none;max-width:none}.croppie-container .cr-boundary{position:relative;overflow:hidden;margin:0 auto;z-index:1;width:100%;height:100%}.croppie-container .cr-resizer,.croppie-container .cr-viewport{position:absolute;border:2px solid #fff;margin:auto;top:0;bottom:0;right:0;left:0;box-shadow:0 0 2000px 2000px rgba(0,0,0,.5);z-index:0}.croppie-container .cr-resizer{z-index:2;box-shadow:none;pointer-events:none}.croppie-container .cr-resizer-horisontal,.croppie-container .cr-resizer-vertical{position:absolute;pointer-events:all}.croppie-container .cr-resizer-horisontal::after,.croppie-container .cr-resizer-vertical::after{display:block;position:absolute;box-sizing:border-box;border:1px solid #000;background:#fff;width:10px;height:10px;content:''}.croppie-container .cr-resizer-vertical{bottom:-5px;cursor:row-resize;width:100%;height:10px}.croppie-container .cr-resizer-vertical::after{left:50%;margin-left:-5px}.croppie-container .cr-resizer-horisontal{right:-5px;cursor:col-resize;width:10px;height:100%}.croppie-container .cr-resizer-horisontal::after{top:50%;margin-top:-5px}.croppie-container .cr-original-image{display:none}.croppie-container .cr-vp-circle{border-radius:50%}.croppie-container .cr-overlay{z-index:1;position:absolute;cursor:move;touch-action:none}.croppie-container .cr-slider-wrap{width:75%;margin:15px auto;text-align:center}.croppie-result{position:relative;overflow:hidden}.croppie-result img{position:absolute}.croppie-container .cr-image,.croppie-container .cr-overlay,.croppie-container .cr-viewport{-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0)}.cr-slider{-webkit-appearance:none;max-width:100%;padding-top:8px;padding-bottom:8px;background-color:transparent}.cr-slider::-webkit-slider-runnable-track{width:100%;height:3px;background:rgba(0,0,0,.5);border:0;border-radius:3px}.cr-slider::-webkit-slider-thumb{-webkit-appearance:none;border:none;height:16px;width:16px;border-radius:50%;background:#ddd;margin-top:-6px}.cr-slider::-moz-range-track{width:100%;height:3px;background:rgba(0,0,0,.5);border:0;border-radius:3px}.cr-slider::-moz-range-thumb{border:none;height:16px;width:16px;border-radius:50%;background:#ddd;margin-top:-6px}.cr-slider:-moz-focusring{outline:#fff solid 1px;outline-offset:-1px}.cr-slider::-ms-track{width:100%;height:5px;background:0 0;border-color:transparent;border-width:6px 0;color:transparent}.cr-slider::-ms-fill-lower{background:rgba(0,0,0,.5);border-radius:10px}.cr-slider::-ms-fill-upper{background:rgba(0,0,0,.5);border-radius:10px}.cr-slider::-ms-thumb{border:none;height:16px;width:16px;border-radius:50%;background:#ddd;margin-top:1px}.cr-slider:focus::-ms-fill-lower{background:rgba(0,0,0,.5)}.cr-slider:focus::-ms-fill-upper{background:rgba(0,0,0,.5)}.cr-rotate-controls{position:absolute;bottom:5px;left:5px;z-index:1}.cr-rotate-controls button{border:0;background:0 0}.cr-rotate-controls i:before{display:inline-block;font-style:normal;font-weight:900;font-size:22px}.cm-em,.hljs-emphasis,.tui-editor-contents address,.tui-editor-contents cite,.tui-editor-contents dfn,.tui-editor-contents em,.tui-editor-contents i,.tui-editor-contents var{font-style:italic}.cr-rotate-l i:before{content:'↺'}.cr-rotate-r i:before{content:'↻'}.bootstrap-tagsinput{background-color:#fff;border:1px solid #ccc;box-shadow:inset 0 1px 1px rgba(0,0,0,.075);display:inline-block;padding:4px 6px;color:#555;vertical-align:middle;border-radius:4px;max-width:100%;line-height:22px;cursor:text}.bootstrap-tagsinput input,.bootstrap-tagsinput input:focus{border:none;box-shadow:none}.bootstrap-tagsinput input{outline:0;background-color:transparent;padding:0 6px;margin:0;width:auto;max-width:inherit}.bootstrap-tagsinput.form-control input::-moz-placeholder{color:#777;opacity:1}.bootstrap-tagsinput.form-control input:-ms-input-placeholder{color:#777}.bootstrap-tagsinput.form-control input::-webkit-input-placeholder{color:#777}.bootstrap-tagsinput .tag{margin-right:2px;color:#fff}.bootstrap-tagsinput .tag [data-role=remove]{margin-left:8px;cursor:pointer}.bootstrap-tagsinput .tag [data-role=remove]:after{content:"x";padding:0 2px}.bootstrap-tagsinput .tag [data-role=remove]:hover{box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05)}.bootstrap-tagsinput .tag [data-role=remove]:hover:active{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}/*! * Font Awesome Free 5.12.1 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) - */@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:auto;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:auto;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:auto;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.CodeMirror{height:300px;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor-mark{background-color:rgba(20,255,20,.5);-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite}.cm-animate-fat-cursor{width:auto;border:0;-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite;background-color:#7e7}@-moz-keyframes blink{50%{background-color:transparent}}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{text-decoration:inherit}.cm-link,.tui-editor-contents a{text-decoration:underline}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:-20px;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-type,.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-invalidchar,.cm-s-default .cm-error{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-30px;margin-right:-30px;padding-bottom:30px;height:100%;outline:0;position:relative}.CodeMirror-sizer{position:relative;border-right:30px solid transparent}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{position:absolute;z-index:6;display:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-30px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:0 0!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:0 0;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:0}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}.CodeMirror-focused div.CodeMirror-cursors,div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:''}.tui-editor-contents .task-list-item:before,.tui-editor-contents ol li.task-list-item:before,.tui-editor-contents pre ul li:before,.tui-editor-contents ul li.task-list-item:before,.tui-editor-defaultUI-toolbar:after,.tui-editor:after,.tui-tooltip .arrow{content:""}span.CodeMirror-selectedtext{background:0 0}.hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#f8f8f8}.hljs-comment,.hljs-quote{color:#998}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:700}.hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable{color:teal}.hljs-doctag,.hljs-string{color:#d14}.hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:700}.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type{color:#458;font-weight:700}.hljs-attribute,.hljs-name,.hljs-tag{color:navy;font-weight:400}.hljs-link,.hljs-regexp{color:#009926}.hljs-bullet,.hljs-symbol{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-strong{font-weight:700}.CodeMirror{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif}.tui-editor-contents :not(table){line-height:160%;box-sizing:content-box}.tui-editor-contents strong{font-weight:700}.tui-editor-contents p{margin:10px 0;color:#555}.tui-editor-contents>div>div:first-of-type h1,.tui-editor-contents>h1:first-of-type{margin-top:14px}.tui-editor-contents h1,.tui-editor-contents h2,.tui-editor-contents h3,.tui-editor-contents h5{font-weight:700}.tui-editor-contents h1{font-size:1.6rem;line-height:28px;border-bottom:3px double #999;margin:52px 0 15px;padding-bottom:7px;color:#000}.tui-editor-contents h2{font-size:1.3rem;line-height:23px;border-bottom:1px solid #dbdbdb;margin:30px 0 13px;padding-bottom:7px;color:#333}.tui-editor-contents h3,.tui-editor-contents h4{font-size:1.2rem;line-height:18px;margin:20px 0 2px;color:#333}.tui-editor-contents h5,.tui-editor-contents h6{font-size:1rem;line-height:17px;margin:10px 0 -4px;color:#333}.tui-editor-contents blockquote{margin:15px 0;border-left:4px solid #ddd;padding:0 15px;color:#777}.tui-editor-contents blockquote>:first-child{margin-top:0}.tui-editor-contents blockquote>:last-child{margin-bottom:0}.tui-editor-contents code,.tui-editor-contents pre{font-family:Consolas,Courier,"Apple SD 산돌고딕 Neo",-apple-system,"Lucida Grande","Apple SD Gothic Neo","맑은 고딕","Malgun Gothic","Segoe UI","돋움",dotum,sans-serif;border:0;border-radius:0}.te-input-language input,.te-ww-block-overlay.code-block-header,.tui-editor-defaultUI{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif}.tui-editor-contents pre{margin:2px 0 8px;padding:18px;background-color:#f5f7f8}.tui-editor-contents code{color:#c1788b;padding:4px 4px 2px 0;letter-spacing:-.3px}.tui-editor-contents pre code{padding:0;color:inherit;white-space:pre-wrap;background-color:transparent}.tui-editor-contents pre.addon{border:1px solid #e8ebed;background-color:#fff}.tui-editor-contents img{margin:4px 0 10px;box-sizing:border-box;vertical-align:top}.tui-editor-contents table{margin:2px 0 14px;color:#555;width:auto;border-collapse:collapse;box-sizing:border-box}.tui-editor-contents table td,.tui-editor-contents table th{height:32px;padding:5px 14px 5px 12px}.tui-editor-contents table td{border:1px solid #eaeaea}.tui-editor-contents table th{border:1px solid #72777b;border-top:0;background-color:#7b8184;font-weight:300;color:#fff;padding-top:6px}.tui-editor-contents dir,.tui-editor-contents menu,.tui-editor-contents ol,.tui-editor-contents ul{display:block;list-style-type:disc;padding-left:17px;margin:6px 0 10px;color:#555}.tui-editor-contents ol{list-style-type:decimal}.tui-editor-contents ol ol,.tui-editor-contents ol ul,.tui-editor-contents ul ol,.tui-editor-contents ul ul{margin-top:0!important;margin-bottom:0!important}.tui-editor-contents ol li,.tui-editor-contents ul li{position:relative}.tui-editor-contents ul p,ol p{margin:0}.tui-editor-contents hr{border-top:1px solid #eee;margin:16px 0}.tui-editor-contents a{color:#5286bc}.tui-editor-contents a:hover{color:#007cff}.tui-editor-contents{font-size:13px;margin:0;padding:0}.tui-editor-contents .task-list-item{border:0;list-style:none;padding-left:22px;margin-left:-22px}.tui-editor-contents .task-list-item:before{background-repeat:no-repeat;background-size:16px 16px;background-position:center;height:18px;width:18px;position:absolute;left:0;top:1px;cursor:pointer;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAADdJREFUKBVjvHv37n8GMgALSI+SkhJJWu/du8fARJIOJMWjGpECA505GjjoIYLEB6dVUNojFQAA/1MJUFWet/4AAAAASUVORK5CYII=)}.tui-editor-contents .task-list-item.checked:before{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAMpJREFUKBVjjJ/64D8DGYCJDD1gLbTVyM3OxJDiJMzAxcYIdyALnIWDAdJU7i/OICfCxsDMxMgwc88bwk5F1vTs/W+GFUffwY2H+1FBlI2hLliCQYCbGSyJrqlzwwuGj9//YWoMtRBgUBJnZ6gMEGeQFWaFOw9kE7omkG5GWDyCPF7mJ86gIMbO8P//fwZGRkYGXJpAGuFO/fbrP0PXppcMD179JKgJRSOIA9N8/NZXrM4DqYEBjOgAaYYFOUwRNhruVGyS+MTI1ggAx8NTGcUtFVQAAAAASUVORK5CYII=)}.tui-editor-contents .task-list-item .task-list-item-checkbox,.tui-editor-contents .task-list-item input[type=checkbox]{margin-left:-17px;margin-right:3.8px;margin-top:3px}.tui-editor-contents-placeholder:before{content:attr(data-placeholder);color:grey;line-height:160%;position:absolute}.auto-height,.auto-height .tui-editor-defaultUI{height:auto}.auto-height .tui-editor{position:relative}:not(.auto-height)>.tui-editor-defaultUI,:not(.auto-height)>.tui-editor-defaultUI>.te-editor-section{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}:not(.auto-height)>.tui-editor-defaultUI>.te-editor-section{-ms-flex:1;flex:1}.tui-editor-defaultUI-toolbar:after,.tui-editor:after{display:block;height:0;clear:both}.tui-editor{position:absolute;line-height:1;color:#181818;width:100%;height:inherit}.te-editor-section{min-height:0;position:relative;height:inherit}.te-md-container{display:none;overflow:hidden;height:100%}.te-md-container .te-editor{line-height:1.5}.te-md-container .te-editor,.te-md-container .te-preview{box-sizing:border-box;padding:0;height:inherit}.te-md-container .CodeMirror{font-size:13px;height:inherit}.te-md-container .te-preview{overflow:auto;padding:0 25px;height:100%}.te-md-container .te-preview>p:first-child{margin-top:0!important}.te-md-container .te-preview .tui-editor-contents{padding-top:11px}.tui-editor .te-preview-style-tab>.te-editor,.tui-editor .te-preview-style-tab>.te-preview{float:left;width:100%;display:none}.tui-editor .te-preview-style-tab>.te-tab-active{display:block}.tui-editor .te-preview-style-vertical>.te-tab-section{display:none}.tui-editor .te-preview-style-tab>.te-tab-section{display:block}.tui-editor .te-preview-style-vertical .te-editor,.tui-editor .te-preview-style-vertical .te-preview{float:left;width:50%}.tui-editor .te-md-splitter{display:none;position:absolute;left:50%;top:0;height:100%;width:1px;border-left:1px solid #e5e5e5}.tui-editor .te-preview-style-vertical .te-md-splitter{display:block}.te-ww-container{display:none;overflow:hidden;z-index:10;height:inherit;background-color:#fff}.te-ww-container>.te-editor{overflow:auto;height:inherit}.te-ww-container .tui-editor-contents:focus{outline:0}.te-ww-container .tui-editor-contents{padding:0 25px}.te-ww-container .tui-editor-contents:first-child{box-sizing:border-box;margin:0;padding:16px 25px 0;height:inherit}.te-ww-container .tui-editor-contents:last-child{margin-bottom:16px}.te-md-mode .te-md-container,.te-ww-mode .te-ww-container{display:block;z-index:100}.tui-editor-defaultUI.te-hide,.tui-editor.te-hide{display:none}.tui-editor-defaultUI .CodeMirror-lines{padding-top:13px;padding-bottom:13px}.tui-editor-defaultUI .CodeMirror-line{padding-left:25px;padding-right:25px}.tui-editor-defaultUI .CodeMirror pre.CodeMirror-placeholder{padding-left:25px;color:grey}.tui-editor-defaultUI .CodeMirror-scroll{cursor:text}.tui-editor-contents td.te-cell-selected{background-color:#d8dfec}.tui-editor-contents td.te-cell-selected::selection{background-color:#d8dfec}.tui-editor-contents th.te-cell-selected{background-color:#908f8f}.tui-editor-contents th.te-cell-selected::selection{background-color:#908f8f}.tui-editor-defaultUI{position:relative;border:1px solid #e5e5e5;height:100%}.tui-editor-defaultUI button{color:#fff;padding:0 14px 0 15px;height:28px;font-size:12px;border:none;cursor:pointer;outline:0}.tui-editor-defaultUI button.te-ok-button{background-color:#4b96e6}.tui-editor-defaultUI button.te-close-button{background-color:#777}.tui-editor-defaultUI-toolbar{padding:0 25px;height:31px;background-color:#fff;border:0;overflow:hidden}.tui-toolbar-divider{float:left;display:inline-block;width:1px;height:14px;background-color:#ddd;margin:9px 6px}.tui-toolbar-button-group{height:28px;border-right:1px solid #d9d9d9;float:left}.te-toolbar-section{height:32px;box-sizing:border-box;border-bottom:1px solid #e5e5e5}.tui-editor-defaultUI-toolbar button{float:left;box-sizing:border-box;outline:0;cursor:pointer;background-color:#fff;width:22px;height:22px;padding:3px;border-radius:0;margin:5px 3px;border:1px solid #fff}.tui-editor-defaultUI-toolbar button.active,.tui-editor-defaultUI-toolbar button:active,.tui-editor-defaultUI-toolbar button:hover{border:1px solid #aaa;background-color:#fff}.tui-editor-defaultUI-toolbar button:first-child{margin-left:0}.tui-editor-defaultUI-toolbar button:last-child{margin-right:0}.tui-editor-defaultUI-toolbar button.tui-scrollsync{width:auto;color:#777;border:0}.tui-editor-defaultUI button.tui-scrollsync:after{content:"Scroll off"}.tui-editor-defaultUI button.tui-scrollsync.active{color:#125de6;font-weight:700}.tui-editor-defaultUI button.tui-scrollsync.active:after{content:"Scroll on"}.tui-editor-defaultUI .te-mode-switch-section{background-color:#f9f9f9;border-top:1px solid #e5e5e5;height:20px;font-size:12px}.tui-editor-defaultUI .te-mode-switch{float:right;height:100%}.tui-editor-defaultUI .te-switch-button{width:92px;height:inherit;background:#e5e5e5;outline:0;color:#a0aabf;cursor:pointer;border:0;border-left:1px solid #ddd;border-right:1px solid #ddd}.tui-editor-defaultUI .te-switch-button.active{background-color:#fff;color:#000}.tui-editor-defaultUI .te-markdown-tab-section{float:left;height:31px;background:#fff}.te-markdown-tab-section .te-tab{margin:0 -7px 0 24px;background:#fff}.tui-editor-defaultUI .te-tab button{box-sizing:border-box;line-height:100%;position:relative;cursor:pointer;z-index:1;font-size:13px;background-color:#f9f9f9;border:1px solid #e5e5e5;border-top:0;padding:0 9px;color:#777;border-radius:0;outline:0}.te-markdown-tab-section .te-tab button:last-child{margin-left:-1px}.te-markdown-tab-section .te-tab button.te-tab-active,.te-markdown-tab-section .te-tab button:hover.te-tab-active{background-color:#fff;color:#333;border-bottom:1px solid #fff;z-index:2}.te-markdown-tab-section .te-tab button:hover{background-color:#fff;color:#333}.tui-popup-modal-background{background-color:rgba(202,202,202,.6);position:fixed;margin:0;left:0;top:0;width:100%;height:100%;z-index:9999}.tui-popup-modal-background.fit-window .tui-popup-wrapper,.tui-popup-wrapper.fit-window{width:100%;height:100%}.tui-popup-wrapper{width:500px;margin-right:auto;border:1px solid #cacaca;background:#fff;z-index:9999}.tui-popup-modal-background .tui-popup-wrapper{position:absolute;margin:auto;top:0;right:0;bottom:0;left:0}.tui-popup-header{padding:10px;height:auto;line-height:normal;position:relative;border-bottom:1px solid #cacaca}.tui-popup-header .tui-popup-header-buttons{float:right}.tui-popup-header .tui-popup-header-buttons button{padding:0;background-color:transparent;background-size:cover;float:left}.tui-popup-header .tui-popup-close-button{margin:3px;width:13px;height:13px;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxMHB4IiBoZWlnaHQ9IjEwcHgiIHZpZXdCb3g9IjAgMCAxMCAxMCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT5GMjc2Qzc4MC0zM0JBLTQ3MTItQTM3OC04RkQwQUNDOTFDRTk8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImxuYi1mb2xkZXItZGVsIiBmaWxsLXJ1bGU9Im5vbnplcm8iIGZpbGw9IiM3Nzc3NzciPiAgICAgICAgICAgIDxwYXRoIGQ9Ik01LDMuNTg1Nzg2NDQgTDEuNzA3MTA2NzgsMC4yOTI4OTMyMTkgTDAuMjkyODkzMjE5LDEuNzA3MTA2NzggTDMuNTg1Nzg2NDQsNSBMMC4yOTI4OTMyMTksOC4yOTI4OTMyMiBMMS43MDcxMDY3OCw5LjcwNzEwNjc4IEw1LDYuNDE0MjEzNTYgTDguMjkyODkzMjIsOS43MDcxMDY3OCBMOS43MDcxMDY3OCw4LjI5Mjg5MzIyIEw2LjQxNDIxMzU2LDUgTDkuNzA3MTA2NzgsMS43MDcxMDY3OCBMOC4yOTI4OTMyMiwwLjI5Mjg5MzIxOSBMNSwzLjU4NTc4NjQ0IFoiIGlkPSJDb21iaW5lZC1TaGFwZSI+PC9wYXRoPiAgICAgICAgPC9nPiAgICA8L2c+PC9zdmc+)}.tui-popup-header .tui-popup-title{font-size:13px;font-weight:700;color:#333;vertical-align:bottom}.tui-popup-body{padding:15px;font-size:12px}.tui-editor-popup{position:absolute;top:30px;left:50%;margin-left:-250px}.tui-editor-popup.tui-popup-modal-background{position:fixed;top:0;left:0;margin:0}.tui-editor-popup .tui-popup-body label{font-weight:700;color:#666;display:block;margin:10px 0 5px}.tui-editor-popup .tui-popup-body .te-button-section{margin-top:15px}.tui-editor-popup .tui-popup-body input[type=file],.tui-editor-popup .tui-popup-body input[type=text]{padding:4px 10px;border:1px solid #bfbfbf;box-sizing:border-box;width:100%}.tui-editor-popup .tui-popup-body input.wrong{border-color:red}.te-popup-add-link .tui-popup-wrapper{height:219px}.te-popup-add-image .tui-popup-wrapper{height:243px}.te-popup-add-image .te-tab{display:block;background:0 0;border-bottom:1px solid #ebebeb;margin-bottom:8px}.te-dropdown-toolbar .tui-toolbar-divider,.te-popup-add-image .te-file-type,.te-popup-add-image .te-url-type,.tui-popup-color .tui-colorpicker-container .tui-colorpicker-palette-toggle-slider{display:none}.te-popup-add-image div.te-tab-active,.te-popup-add-image form.te-tab-active{display:block}.te-popup-add-image .te-tab button{border:1px solid #ccc;background:#eee;min-width:100px;margin-left:-1px;border-bottom:0;border-radius:3px 3px 0 0}.te-popup-add-image .te-tab button.te-tab-active{background:#fff}.te-popup-add-table .te-table-selection{position:relative}.te-popup-add-table .te-table-body{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAARCAYAAAAougcOAAAC7mlDQ1BJQ0MgUHJvZmlsZQAAeAGFVM9rE0EU/jZuqdAiCFprDrJ4kCJJWatoRdQ2/RFiawzbH7ZFkGQzSdZuNuvuJrWliOTi0SreRe2hB/+AHnrwZC9KhVpFKN6rKGKhFy3xzW5MtqXqwM5+8943731vdt8ADXLSNPWABOQNx1KiEWlsfEJq/IgAjqIJQTQlVdvsTiQGQYNz+Xvn2HoPgVtWw3v7d7J3rZrStpoHhP1A4Eea2Sqw7xdxClkSAog836Epx3QI3+PY8uyPOU55eMG1Dys9xFkifEA1Lc5/TbhTzSXTQINIOJT1cVI+nNeLlNcdB2luZsbIEL1PkKa7zO6rYqGcTvYOkL2d9H5Os94+wiHCCxmtP0a4jZ71jNU/4mHhpObEhj0cGDX0+GAVtxqp+DXCFF8QTSeiVHHZLg3xmK79VvJKgnCQOMpkYYBzWkhP10xu+LqHBX0m1xOv4ndWUeF5jxNn3tTd70XaAq8wDh0MGgyaDUhQEEUEYZiwUECGPBoxNLJyPyOrBhuTezJ1JGq7dGJEsUF7Ntw9t1Gk3Tz+KCJxlEO1CJL8Qf4qr8lP5Xn5y1yw2Fb3lK2bmrry4DvF5Zm5Gh7X08jjc01efJXUdpNXR5aseXq8muwaP+xXlzHmgjWPxHOw+/EtX5XMlymMFMXjVfPqS4R1WjE3359sfzs94i7PLrXWc62JizdWm5dn/WpI++6qvJPmVflPXvXx/GfNxGPiKTEmdornIYmXxS7xkthLqwviYG3HCJ2VhinSbZH6JNVgYJq89S9dP1t4vUZ/DPVRlBnM0lSJ93/CKmQ0nbkOb/qP28f8F+T3iuefKAIvbODImbptU3HvEKFlpW5zrgIXv9F98LZua6N+OPwEWDyrFq1SNZ8gvAEcdod6HugpmNOWls05Uocsn5O66cpiUsxQ20NSUtcl12VLFrOZVWLpdtiZ0x1uHKE5QvfEp0plk/qv8RGw/bBS+fmsUtl+ThrWgZf6b8C8/UXAeIuJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAOklEQVQ4EWO8e/fuPwYGBkYgphlgAZmspKREMwtABjPR1HSo4aOWkBTKo8E1GlwkhQBJikdT1wgNLgAMSwQgckFvTgAAAABJRU5ErkJggg==)}.te-popup-add-table .te-table-header{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAARCAYAAAAougcOAAAC7mlDQ1BJQ0MgUHJvZmlsZQAAeAGFVM9rE0EU/jZuqdAiCFprDrJ4kCJJWatoRdQ2/RFiawzbH7ZFkGQzSdZuNuvuJrWliOTi0SreRe2hB/+AHnrwZC9KhVpFKN6rKGKhFy3xzW5MtqXqwM5+8943731vdt8ADXLSNPWABOQNx1KiEWlsfEJq/IgAjqIJQTQlVdvsTiQGQYNz+Xvn2HoPgVtWw3v7d7J3rZrStpoHhP1A4Eea2Sqw7xdxClkSAog836Epx3QI3+PY8uyPOU55eMG1Dys9xFkifEA1Lc5/TbhTzSXTQINIOJT1cVI+nNeLlNcdB2luZsbIEL1PkKa7zO6rYqGcTvYOkL2d9H5Os94+wiHCCxmtP0a4jZ71jNU/4mHhpObEhj0cGDX0+GAVtxqp+DXCFF8QTSeiVHHZLg3xmK79VvJKgnCQOMpkYYBzWkhP10xu+LqHBX0m1xOv4ndWUeF5jxNn3tTd70XaAq8wDh0MGgyaDUhQEEUEYZiwUECGPBoxNLJyPyOrBhuTezJ1JGq7dGJEsUF7Ntw9t1Gk3Tz+KCJxlEO1CJL8Qf4qr8lP5Xn5y1yw2Fb3lK2bmrry4DvF5Zm5Gh7X08jjc01efJXUdpNXR5aseXq8muwaP+xXlzHmgjWPxHOw+/EtX5XMlymMFMXjVfPqS4R1WjE3359sfzs94i7PLrXWc62JizdWm5dn/WpI++6qvJPmVflPXvXx/GfNxGPiKTEmdornIYmXxS7xkthLqwviYG3HCJ2VhinSbZH6JNVgYJq89S9dP1t4vUZ/DPVRlBnM0lSJ93/CKmQ0nbkOb/qP28f8F+T3iuefKAIvbODImbptU3HvEKFlpW5zrgIXv9F98LZua6N+OPwEWDyrFq1SNZ8gvAEcdod6HugpmNOWls05Uocsn5O66cpiUsxQ20NSUtcl12VLFrOZVWLpdtiZ0x1uHKE5QvfEp0plk/qv8RGw/bBS+fmsUtl+ThrWgZf6b8C8/UXAeIuJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAOklEQVQ4EWO8e/fuPwYGBkYgphlgAZksLCxMMwtABjPR1HSo4aOWkBTKo8E1GlwkhQBJikdT1wgNLgDxKwPzTeWPdAAAAABJRU5ErkJggg==)}.te-popup-add-table .te-selection-area{position:absolute;top:0;left:0;background:#80d2ff;opacity:.3;z-index:999}.te-popup-add-table .te-description{margin:10px 0 0;text-align:center}.te-popup-table-utils{width:120px}.te-popup-table-utils .tui-popup-body{padding:0}.te-popup-table-utils button{width:100%;background-color:#fff;border:none;outline:0;padding:0 10px;font-size:12px;line-height:28px;text-align:left;color:#777}.te-popup-table-utils button:hover{background-color:#f4f4f4}.te-popup-table-utils hr{background-color:#cacaca;border-style:none;height:1px}.te-heading-add{width:auto}.te-heading-add .tui-popup-body{padding:0}.te-heading-add h1,.te-heading-add h2,.te-heading-add h3,.te-heading-add h4,.te-heading-add h5,.te-heading-add h6,.te-heading-add p,.te-heading-add ul{padding:0;margin:0}.te-heading-add ul{list-style:none}.te-heading-add ul li{padding:2px 10px;cursor:pointer}.te-dropdown-toolbar .tui-popup-body,.tui-popup-color{padding:0}.te-heading-add ul li:hover{background-color:#eee}.te-heading-add h1{font-size:24px}.te-heading-add h2{font-size:22px}.te-heading-add h3{font-size:20px}.te-heading-add h4{font-size:18px}.te-heading-add h5{font-size:16px}.te-heading-add h6{font-size:14px}.te-dropdown-toolbar{position:absolute;width:auto}.tui-popup-color .tui-colorpicker-container,.tui-popup-color .tui-colorpicker-palette-container{width:144px}.tui-popup-color .tui-colorpicker-container ul{width:144px;margin-bottom:8px}.tui-popup-color .tui-colorpicker-container li{padding:0 1px 1px 0}.tui-popup-color .tui-colorpicker-container li .tui-colorpicker-palette-button{border:0;width:17px;height:17px}.tui-popup-color .tui-popup-body{padding:10px}.tui-popup-color .te-apply-button,.tui-popup-color .tui-colorpicker-palette-hex{float:right}.tui-popup-color .te-apply-button{height:21px;width:35px;background:#fff;border:1px solid #efefef;position:absolute;bottom:141px;right:10px}.tui-tooltip,.tui-tooltip .arrow{background-color:#222;position:absolute}.tui-popup-color .tui-colorpicker-container .tui-colorpicker-palette-hex{border:1px solid #E1E1E1;padding:3px 14px;margin-left:-1px}.tui-popup-color .tui-colorpicker-container div.tui-colorpicker-clearfix{display:inline-block}.tui-popup-color .tui-colorpicker-container .tui-colorpicker-palette-preview{width:19px;height:19px}.tui-popup-color .tui-colorpicker-slider-container .tui-colorpicker-slider-right{width:22px}.tui-popup-color .tui-colorpicker-slider-container .tui-colorpicker-huebar-handle{display:none}.tui-tooltip{z-index:999;opacity:.8;color:#fff;padding:2px 5px;font-size:10px}.tui-tooltip .arrow{display:inline-block;width:10px;height:10px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg);top:-3px;left:6px;z-index:-1}.tui-toolbar-icons{background:url(tui-editor.png);background-size:218px 188px;display:inline-block}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min--moz-device-pixel-ratio:2),only screen and (-o-min-device-pixel-ratio:2/1),only screen and (min-device-pixel-ratio:2),only screen and (min-resolution:192dpi),only screen and (min-resolution:2dppx){.tui-toolbar-icons{background:url(tui-editor-2x.png);background-size:218px 188px;display:inline-block}}.tui-toolbar-icons.tui-heading{background-position:-172px -48px}.tui-toolbar-icons.tui-heading:disabled{background-position:-193px -48px}.tui-toolbar-icons.tui-bold{background-position:-4px -4px}.tui-toolbar-icons.tui-bold:disabled{background-position:-25px -4px}.tui-toolbar-icons.tui-italic{background-position:-4px -48px}.tui-toolbar-icons.tui-italic:disabled{background-position:-25px -48px}.tui-toolbar-icons.tui-color{background-position:-172px -70px}.tui-toolbar-icons.tui-color:disabled{background-position:-193px -70px}.tui-toolbar-icons.tui-strike{background-position:-4px -26px}.tui-toolbar-icons.tui-strike:disabled{background-position:-25px -26px}.tui-toolbar-icons.tui-hrline{background-position:-46px -92px}.tui-toolbar-icons.tui-hrline:disabled{background-position:-67px -92px}.tui-toolbar-icons.tui-quote{background-position:-4px -114px}.tui-toolbar-icons.tui-quote:disabled{background-position:-25px -114px}.tui-toolbar-icons.tui-ul{background-position:-46px -4px}.tui-toolbar-icons.tui-ul:disabled{background-position:-67px -4px}.tui-toolbar-icons.tui-ol{background-position:-46px -26px}.tui-toolbar-icons.tui-ol:disabled{background-position:-67px -26px}.tui-toolbar-icons.tui-task{background-position:-130px -48px}.tui-toolbar-icons.tui-task:disabled{background-position:-151px -48px}.tui-toolbar-icons.tui-indent{background-position:-46px -48px}.tui-toolbar-icons.tui-indent:disabled{background-position:-67px -48px}.tui-toolbar-icons.tui-outdent{background-position:-46px -70px}.tui-toolbar-icons.tui-outdent:disabled{background-position:-67px -70px}.tui-toolbar-icons.tui-table{background-position:-88px -92px}.tui-toolbar-icons.tui-table:disabled{background-position:-109px -92px}.tui-toolbar-icons.tui-image{background-position:-130px -4px}.tui-toolbar-icons.tui-image:disabled{background-position:-151px -4px}.tui-toolbar-icons.tui-link{background-position:-130px -26px}.tui-toolbar-icons.tui-link:disabled{background-position:-151px -26px}.tui-toolbar-icons.tui-code{background-position:-130px -92px}.tui-toolbar-icons.tui-code:disabled{background-position:-151px -92px}.tui-toolbar-icons.tui-codeblock{background-position:-130px -70px}.tui-toolbar-icons.tui-codeblock:disabled{background-position:-151px -70px}.tui-toolbar-icons.tui-more{background-position:-172px -92px}.tui-toolbar-icons.tui-more:disabled{background-position:-193px -92px}.tui-colorpicker-svg-huebar,.tui-colorpicker-svg-slider,.tui-colorpicker-vml-slider{border:1px solid #ebebeb}.CodeMirror-sizer{margin-top:6px}.CodeMirror .cm-header{font-weight:700;color:inherit}.CodeMirror .cm-header-1{font-size:24px}.CodeMirror .cm-header-2{font-size:22px}.CodeMirror .cm-header-3{font-size:20px}.CodeMirror .cm-header-4{font-size:18px}.CodeMirror .cm-header-5{font-size:16px}.CodeMirror .cm-header-6{font-size:14px}.CodeMirror .cm-variable-2{color:inherit}.tui-editor-pseudo-clipboard{position:fixed;left:-1000px;top:-1000px;width:100px;height:100px}.te-ww-block-overlay.code-block-header{text-align:right}.te-ww-block-overlay.code-block-header span{font-size:10px;font-weight:600;padding:0 10px;color:#333;cursor:default}.te-ww-block-overlay.code-block-header button{margin:8px;font-size:10px;color:#333;background-color:#f9f9f9;border:1px solid #ddd;padding:4px;height:auto}.te-popup-code-block-languages{position:fixed;box-sizing:border-box;width:130px}.te-popup-code-block-languages .tui-popup-body{max-height:169px;overflow:auto;padding:0}.te-popup-code-block-languages button{width:100%;background-color:#fff;border:none;outline:0;padding:0 10px;font-size:12px;line-height:24px;text-align:left;color:#777}.te-popup-code-block-languages button.active{background-color:#f4f4f4}.tui-popup-code-block-editor .tui-popup-wrapper{width:70%;height:70%;margin:auto;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.te-input-language{position:relative;margin-left:15px;cursor:pointer}.te-input-language input{font-size:10px;padding:3px 5px;border:1px solid #ddd;background-color:#f9f9f9;box-sizing:border-box;width:130px;outline:0}.te-input-language input::-ms-clear{display:none}.te-input-language::after{content:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjE0cHgiIHZpZXdCb3g9IjAgMCAxMiAxNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT42Q0NBRDk2QS0yMjYxLTRFNDAtOTk1RC1DRUUyQUREQUQ3NkQ8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImNvbS10cmFuZ2xlLWQtc2lkZSIgZmlsbD0iIzU1NTU1NSI+ICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlJlY3RhbmdsZS03IiBwb2ludHM9IjIgNSAxMCA1IDYgMTAiPjwvcG9seWdvbj4gICAgICAgIDwvZz4gICAgPC9nPjwvc3ZnPg==);position:absolute;top:1px;right:3px}.te-input-language.active::after{content:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjE0cHgiIHZpZXdCb3g9IjAgMCAxMiAxNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT5BNEZDRkIzMy0zNjdBLTREMjAtOEEyNC1DQ0I2ODFBMDZDODg8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImNvbS10cmFuZ2xlLXVwLXNpZGUiIGZpbGw9IiM1NTU1NTUiPiAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJSZWN0YW5nbGUtNyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNi4wMDAwMDAsIDYuNTAwMDAwKSBzY2FsZSgxLCAtMSkgdHJhbnNsYXRlKC02LjAwMDAwMCwgLTYuNTAwMDAwKSAiIHBvaW50cz0iMiA0IDEwIDQgNiA5Ij48L3BvbHlnb24+ICAgICAgICA8L2c+ICAgIDwvZz48L3N2Zz4=)}.tui-popup-code-block-editor button{margin:-1px 3px}.tui-popup-code-block-editor .tui-popup-header-buttons{height:20px}.tui-popup-code-block-editor .popup-editor-toggle-preview::after{content:'Preview off';color:#777;margin-right:22px}.tui-popup-code-block-editor .popup-editor-toggle-preview.active::after{content:'Preview on';color:#4b96e6}.tui-popup-code-block-editor .popup-editor-toggle-scroll::after{content:'Scroll off';color:#777;margin-right:16px}.tui-popup-code-block-editor .popup-editor-toggle-scroll.active::after{content:'Scroll on';color:#4b96e6}.tui-popup-code-block-editor .popup-editor-toggle-fit{width:18px;height:18px;margin-top:4px;margin-right:14px;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxOHB4IiBoZWlnaHQ9IjE4cHgiIHZpZXdCb3g9IjAgMCAxOCAxOCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT40OUQ4RTYyMy1GRTAyLTQ1RUUtQkQ5Ri0xMjUyQjEzRTU1MkQ8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImNvbnRlbnRzLWV4cGFuZCIgZmlsbD0iIzU1NTU1NSI+ICAgICAgICAgICAgPHBhdGggZD0iTTMsMyBMOSwzIEw5LDUgTDUsNSBMNSw5IEwzLDkgTDMsMyBaIE0xNSwxNSBMOSwxNSBMOSwxMyBMMTMsMTMgTDEzLDkgTDE1LDkgTDE1LDE1IFoiIGlkPSJDb21iaW5lZC1TaGFwZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOS4wMDAwMDAsIDkuMDAwMDAwKSBzY2FsZSgtMSwgMSkgdHJhbnNsYXRlKC05LjAwMDAwMCwgLTkuMDAwMDAwKSAiPjwvcGF0aD4gICAgICAgICAgICA8cG9seWdvbiBpZD0iTGluZSIgZmlsbC1ydWxlPSJub256ZXJvIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMS41MDAwMDAsIDYuNTAwMDAwKSBzY2FsZSgtMSwgMSkgdHJhbnNsYXRlKC0xMS41MDAwMDAsIC02LjUwMDAwMCkgIiBwb2ludHM9IjkuMDg1Nzg2NDQgNS41IDEyLjUgOC45MTQyMTM1NiAxMy45MTQyMTM2IDcuNSAxMC41IDQuMDg1Nzg2NDQiPjwvcG9seWdvbj4gICAgICAgICAgICA8cG9seWdvbiBpZD0iTGluZS1Db3B5IiBmaWxsLXJ1bGU9Im5vbnplcm8iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYuNTAwMDAwLCAxMS41MDAwMDApIHNjYWxlKC0xLCAxKSB0cmFuc2xhdGUoLTYuNTAwMDAwLCAtMTEuNTAwMDAwKSAiIHBvaW50cz0iNC4wODU3ODY0NCAxMC41IDcuNSAxMy45MTQyMTM2IDguOTE0MjEzNTYgMTIuNSA1LjUgOS4wODU3ODY0NCI+PC9wb2x5Z29uPiAgICAgICAgPC9nPiAgICA8L2c+PC9zdmc+)}.tui-popup-code-block-editor .popup-editor-toggle-fit.active{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxOHB4IiBoZWlnaHQ9IjE4cHgiIHZpZXdCb3g9IjAgMCAxOCAxOCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT4wN0Q1MjlCRi1GNTIzLTREN0EtQTlGNi05NTUzNTU5RDNEMUE8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImNvbnRlbnRzLXJlZHVjZSIgZmlsbD0iIzU1NTU1NSI+ICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgtMzIiIGZpbGwtcnVsZT0ibm9uemVybyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNS41MDAwMDAsIDEyLjUwMDAwMCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtNS41MDAwMDAsIC0xMi41MDAwMDApICIgcG9pbnRzPSIzLjA4NTc4NjQ0IDExLjUgNi41IDE0LjkxNDIxMzYgNy45MTQyMTM1NiAxMy41IDQuNSAxMC4wODU3ODY0Ij48L3BvbHlnb24+ICAgICAgICAgICAgPHBhdGggZD0iTTksOSBMMTUsOSBMMTUsMTEgTDExLDExIEwxMSwxNSBMOSwxNSBMOSw5IFogTTksOSBMMyw5IEwzLDcgTDcsNyBMNywzIEw5LDMgTDksOSBaIiBpZD0iQ29tYmluZWQtU2hhcGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDkuMDAwMDAwLCA5LjAwMDAwMCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtOS4wMDAwMDAsIC05LjAwMDAwMCkgIj48L3BhdGg+ICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgtMzMiIGZpbGwtcnVsZT0ibm9uemVybyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTIuNTAwMDAwLCA1LjUwMDAwMCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtMTIuNTAwMDAwLCAtNS41MDAwMDApICIgcG9pbnRzPSIxNC45MTQyMTM2IDYuNSAxMS41IDMuMDg1Nzg2NDQgMTAuMDg1Nzg2NCA0LjUgMTMuNSA3LjkxNDIxMzU2Ij48L3BvbHlnb24+ICAgICAgICA8L2c+ICAgIDwvZz48L3N2Zz4=)}.tui-popup-code-block-editor .tui-popup-close-button{margin-top:6px}.tui-popup-code-block-editor .tui-popup-body{z-index:-1;padding:0;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex:1;flex:1}.tui-split-scroll.single-content .tui-split-content-right,.tui-split-scroll.single-content .tui-splitter,.tui-split-scroll.single-content button.tui-scrollsync{display:none}.tui-popup-code-block-editor .popup-editor-body{position:relative;-ms-flex:1;flex:1;border-bottom:1px solid #cacaca}.tui-popup-code-block-editor .te-button-section{padding:15px}.fa-ul,.mi-ul{list-style-type:none;padding-left:0}.tui-popup-code-block-editor .te-button-section button{float:left}.tui-popup-code-block-editor .tui-editor-contents pre{margin:0;background-color:transparent}.tui-popup-code-block-editor .CodeMirror{height:auto}.tui-popup-code-block-editor .CodeMirror-line{font-family:Consolas,Courier,"Apple SD 산돌고딕 Neo",-apple-system,"Lucida Grande","Apple SD Gothic Neo","맑은 고딕","Malgun Gothic","Segoe UI","돋움",dotum,sans-serif;font-size:13px;line-height:160%;letter-spacing:-.3px}.tui-popup-code-block-editor .popup-editor-editor-wrapper{min-height:100%}.tui-split-scroll-wrapper{position:relative}.tui-split-scroll{position:absolute}.tui-split-scroll,.tui-split-scroll-wrapper{width:100%;height:100%}.tui-split-scroll .tui-split-content-left,.tui-split-scroll .tui-split-content-right{position:absolute;top:0;width:50%;box-sizing:border-box}.tui-split-scroll .tui-split-content-left{left:0}.tui-split-scroll .tui-split-content-right{left:50%}.tui-split-scroll .tui-splitter{position:absolute;left:50%;top:0;height:100%;width:1px;border-left:1px solid #cacaca}.tui-split-scroll .tui-split-scroll-content{width:100%;height:100%;overflow:hidden;position:relative}.tui-split-scroll .tui-split-content-left,.tui-split-scroll .tui-split-content-right{height:100%;overflow-x:hidden;overflow-y:auto}.tui-split-scroll button.tui-scrollsync{top:10px;opacity:.2}.tui-split-scroll button.tui-scrollsync::after{content:"scroll off"}.tui-split-scroll.scroll-sync button.tui-scrollsync{opacity:.5}.tui-split-scroll.scroll-sync .tui-split-content-left,.tui-split-scroll.scroll-sync .tui-split-content-right{height:auto;overflow:initial}.tui-split-scroll.scroll-sync button.tui-scrollsync::after{content:"scroll on"}.tui-split-scroll.scroll-sync .tui-split-scroll-content{overflow-y:auto}.tui-split-scroll.single-content .tui-split-content-left{width:100%}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.tui-split-scroll-wrapper .tui-splitter{left:calc(50% - 9px)}}@supports (-ms-accelerator:true){.tui-split-scroll-wrapper .tui-splitter{left:calc(50% - 9px)}}@media screen and (max-width:480px){.tui-popup-wrapper{max-width:300px}.tui-editor-popup{margin-left:-150px}.te-dropdown-toolbar{max-width:none}}/*! + */@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:auto;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:auto;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:auto;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.CodeMirror{height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor-mark{background-color:rgba(20,255,20,.5);-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite}.cm-animate-fat-cursor{width:auto;border:0;-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite;background-color:#7e7}@-moz-keyframes blink{50%{background-color:transparent}}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:-20px;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-type,.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-invalidchar,.cm-s-default .cm-error{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-30px;margin-right:-30px;padding-bottom:30px;height:100%;outline:0;position:relative}.CodeMirror-sizer{position:relative;border-right:30px solid transparent}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{position:absolute;z-index:6;display:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-30px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:0 0!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:0 0;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:0}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}.CodeMirror-focused div.CodeMirror-cursors,div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:''}span.CodeMirror-selectedtext{background:0 0}.hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#f8f8f8}.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:700}.hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable{color:teal}.hljs-doctag,.hljs-string{color:#d14}.hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:700}.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type{color:#458;font-weight:700}.hljs-attribute,.hljs-name,.hljs-tag{color:navy;font-weight:400}.hljs-meta,.hljs-strong,.tui-editor-contents h1,.tui-editor-contents h2,.tui-editor-contents h3,.tui-editor-contents h5,.tui-editor-contents strong{font-weight:700}.hljs-link,.hljs-regexp{color:#009926}.hljs-bullet,.hljs-symbol{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.CodeMirror{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif}.tui-editor-contents :not(table){line-height:160%;box-sizing:content-box}.fa,.fab,.fad,.fal,.far,.fas,.mi{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-style:normal;font-variant:normal;text-rendering:auto}.tui-editor-contents p{margin:10px 0;color:#555}.tui-editor-contents>div>div:first-of-type h1,.tui-editor-contents>h1:first-of-type{margin-top:14px}.tui-editor-contents h1{font-size:1.6rem;line-height:28px;border-bottom:3px double #999;margin:52px 0 15px;padding-bottom:7px;color:#000}.tui-editor-contents h2{font-size:1.3rem;line-height:23px;border-bottom:1px solid #dbdbdb;margin:30px 0 13px;padding-bottom:7px;color:#333}.tui-editor-contents h3,.tui-editor-contents h4{font-size:1.2rem;line-height:18px;margin:20px 0 2px;color:#333}.tui-editor-contents h5,.tui-editor-contents h6{font-size:1rem;line-height:17px;margin:10px 0 -4px;color:#333}.tui-editor-contents blockquote{margin:15px 0;border-left:4px solid #ddd;padding:0 15px;color:#777}.tui-editor-contents blockquote>:first-child{margin-top:0}.tui-editor-contents blockquote>:last-child{margin-bottom:0}.tui-editor-contents code,.tui-editor-contents pre{font-family:Consolas,Courier,"Apple SD 산돌고딕 Neo",-apple-system,"Lucida Grande","Apple SD Gothic Neo","맑은 고딕","Malgun Gothic","Segoe UI","돋움",dotum,sans-serif;border:0;border-radius:0}.te-input-language input,.te-ww-block-overlay.code-block-header,.tui-editor-defaultUI{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif}.tui-editor-contents pre{margin:2px 0 8px;padding:18px;background-color:#f5f7f8}.tui-editor-contents code{color:#c1788b;padding:4px 4px 2px 0;letter-spacing:-.3px}.tui-editor-contents pre code{padding:0;color:inherit;white-space:pre-wrap;background-color:transparent}.tui-editor-contents pre.addon{border:1px solid #e8ebed;background-color:#fff}.tui-editor-contents img{margin:4px 0 10px;box-sizing:border-box;vertical-align:top;max-width:100%}.tui-editor-contents table{margin:2px 0 14px;color:#555;width:auto;border-collapse:collapse;box-sizing:border-box}.tui-editor-contents table td,.tui-editor-contents table th{height:32px;padding:5px 14px 5px 12px}.tui-editor-contents table td{border:1px solid #eaeaea}.tui-editor-contents table th{border:1px solid #72777b;border-top:0;background-color:#7b8184;font-weight:300;color:#fff;padding-top:6px}.tui-editor-contents dir,.tui-editor-contents menu,.tui-editor-contents ol,.tui-editor-contents ul{display:block;list-style-type:disc;padding-left:17px;margin:6px 0 10px;color:#555}.tui-editor-contents ol{list-style-type:decimal}.fa-ul,.mi-ul{list-style-type:none}.tui-editor-contents ol ol,.tui-editor-contents ol ul,.tui-editor-contents ul ol,.tui-editor-contents ul ul{margin-top:0!important;margin-bottom:0!important}.tui-editor-contents ol li,.tui-editor-contents ul li{position:relative}.tui-editor-contents ul p,ol p{margin:0}.tui-editor-contents ol li.task-list-item:before,.tui-editor-contents pre ul li:before,.tui-editor-contents ul li.task-list-item:before{content:""}.tui-editor-contents hr{border-top:1px solid #eee;margin:16px 0}.tui-editor-contents a{text-decoration:underline;color:#5286bc}.tui-editor-contents a:hover{color:#007cff}.tui-editor-contents{font-size:13px;margin:0;padding:0}.tui-editor-contents .task-list-item{border:0;list-style:none;padding-left:22px;margin-left:-22px}.tui-editor-contents .task-list-item:before{background-repeat:no-repeat;background-size:16px 16px;background-position:center;content:"";height:18px;width:18px;position:absolute;left:0;top:1px;cursor:pointer;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAADdJREFUKBVjvHv37n8GMgALSI+SkhJJWu/du8fARJIOJMWjGpECA505GjjoIYLEB6dVUNojFQAA/1MJUFWet/4AAAAASUVORK5CYII=)}.tui-editor-contents .task-list-item.checked:before{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAMpJREFUKBVjjJ/64D8DGYCJDD1gLbTVyM3OxJDiJMzAxcYIdyALnIWDAdJU7i/OICfCxsDMxMgwc88bwk5F1vTs/W+GFUffwY2H+1FBlI2hLliCQYCbGSyJrqlzwwuGj9//YWoMtRBgUBJnZ6gMEGeQFWaFOw9kE7omkG5GWDyCPF7mJ86gIMbO8P//fwZGRkYGXJpAGuFO/fbrP0PXppcMD179JKgJRSOIA9N8/NZXrM4DqYEBjOgAaYYFOUwRNhruVGyS+MTI1ggAx8NTGcUtFVQAAAAASUVORK5CYII=)}.tui-editor-contents .task-list-item .task-list-item-checkbox,.tui-editor-contents .task-list-item input[type=checkbox]{margin-left:-17px;margin-right:3.8px;margin-top:3px}.tui-editor-contents-placeholder:before{content:attr(data-placeholder);color:grey;line-height:160%;position:absolute}.auto-height,.auto-height .tui-editor-defaultUI{height:auto}.auto-height .tui-editor{position:relative}:not(.auto-height)>.tui-editor-defaultUI,:not(.auto-height)>.tui-editor-defaultUI>.te-editor-section{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}:not(.auto-height)>.tui-editor-defaultUI>.te-editor-section{-ms-flex:1;flex:1}.tui-editor-defaultUI-toolbar:after,.tui-editor:after{content:"";display:block;height:0;clear:both}.tui-editor{position:absolute;line-height:1;color:#181818;width:100%;height:inherit}.te-editor-section{min-height:0;position:relative;height:inherit}.te-md-container{display:none;overflow:hidden;height:100%}.te-md-container .te-editor{line-height:1.5}.te-md-container .te-editor,.te-md-container .te-preview{box-sizing:border-box;padding:0;height:inherit}.te-md-container .CodeMirror{font-size:13px;height:inherit}.te-md-container .te-preview{overflow:auto;padding:0 25px;height:100%}.te-md-container .te-preview>p:first-child{margin-top:0!important}.te-md-container .te-preview .tui-editor-contents{padding-top:11px}.tui-editor .te-preview-style-tab>.te-editor,.tui-editor .te-preview-style-tab>.te-preview{float:left;width:100%;display:none}.tui-editor .te-preview-style-tab>.te-tab-active{display:block}.tui-editor .te-preview-style-vertical>.te-tab-section{display:none}.tui-editor .te-preview-style-tab>.te-tab-section{display:block}.tui-editor .te-preview-style-vertical .te-editor,.tui-editor .te-preview-style-vertical .te-preview{float:left;width:50%}.tui-editor .te-md-splitter{display:none;position:absolute;left:50%;top:0;height:100%;width:1px;border-left:1px solid #e5e5e5}.tui-editor .te-preview-style-vertical .te-md-splitter{display:block}.te-ww-container{display:none;overflow:hidden;z-index:10;height:inherit;background-color:#fff}.te-ww-container>.te-editor{overflow:auto;height:inherit}.te-ww-container .tui-editor-contents:focus{outline:0}.te-ww-container .tui-editor-contents{padding:0 25px}.te-ww-container .tui-editor-contents:first-child{box-sizing:border-box;margin:0;padding:16px 25px 0;height:inherit}.te-ww-container .tui-editor-contents:last-child{margin-bottom:16px}.te-md-mode .te-md-container,.te-ww-mode .te-ww-container{display:block;z-index:100}.tui-editor-defaultUI.te-hide,.tui-editor.te-hide{display:none}.tui-editor-defaultUI .CodeMirror-lines{padding-top:13px;padding-bottom:13px}.tui-editor-defaultUI .CodeMirror-line{padding-left:25px;padding-right:25px}.tui-editor-defaultUI .CodeMirror pre.CodeMirror-placeholder{padding-left:25px;color:grey}.tui-editor-defaultUI .CodeMirror-scroll{cursor:text}.tui-editor-contents td.te-cell-selected{background-color:#d8dfec}.tui-editor-contents td.te-cell-selected::selection{background-color:#d8dfec}.tui-editor-contents th.te-cell-selected{background-color:#908f8f}.tui-editor-contents th.te-cell-selected::selection{background-color:#908f8f}.tui-editor-defaultUI{position:relative;border:1px solid #e5e5e5;height:100%}.tui-editor-defaultUI button{color:#fff;padding:0 14px 0 15px;height:28px;font-size:12px;border:none;cursor:pointer;outline:0}.tui-editor-defaultUI button.te-ok-button{background-color:#4b96e6}.tui-editor-defaultUI button.te-close-button{background-color:#777}.tui-editor-defaultUI-toolbar{padding:0 25px;height:31px;background-color:#fff;border:0;overflow:hidden}.tui-toolbar-divider{float:left;display:inline-block;width:1px;height:14px;background-color:#ddd;margin:9px 6px}.tui-toolbar-button-group{height:28px;border-right:1px solid #d9d9d9;float:left}.te-toolbar-section{height:32px;box-sizing:border-box;border-bottom:1px solid #e5e5e5}.tui-editor-defaultUI-toolbar button{float:left;box-sizing:border-box;outline:0;cursor:pointer;background-color:#fff;width:22px;height:22px;padding:3px;border-radius:0;margin:5px 3px;border:1px solid #fff}.tui-editor-defaultUI-toolbar button.active,.tui-editor-defaultUI-toolbar button:active,.tui-editor-defaultUI-toolbar button:hover{border:1px solid #aaa;background-color:#fff}.tui-editor-defaultUI-toolbar button:first-child{margin-left:0}.tui-editor-defaultUI-toolbar button:last-child{margin-right:0}.tui-editor-defaultUI-toolbar button.tui-scrollsync{width:auto;color:#777;border:0}.tui-editor-defaultUI button.tui-scrollsync:after{content:"Scroll off"}.tui-editor-defaultUI button.tui-scrollsync.active{color:#125de6;font-weight:700}.tui-editor-defaultUI button.tui-scrollsync.active:after{content:"Scroll on"}.tui-editor-defaultUI .te-mode-switch-section{background-color:#f9f9f9;border-top:1px solid #e5e5e5;height:20px;font-size:12px}.tui-editor-defaultUI .te-mode-switch{float:right;height:100%}.tui-editor-defaultUI .te-switch-button{width:92px;height:inherit;background:#e5e5e5;outline:0;color:#a0aabf;cursor:pointer;border:0;border-left:1px solid #ddd;border-right:1px solid #ddd}.tui-editor-defaultUI .te-switch-button.active{background-color:#fff;color:#000}.tui-editor-defaultUI .te-markdown-tab-section{float:left;height:31px;background:#fff}.te-markdown-tab-section .te-tab{margin:0 -7px 0 24px;background:#fff}.tui-editor-defaultUI .te-tab button{box-sizing:border-box;line-height:100%;position:relative;cursor:pointer;z-index:1;font-size:13px;background-color:#f9f9f9;border:1px solid #e5e5e5;border-top:0;padding:0 9px;color:#777;border-radius:0;outline:0}.te-markdown-tab-section .te-tab button:last-child{margin-left:-1px}.te-markdown-tab-section .te-tab button.te-tab-active,.te-markdown-tab-section .te-tab button:hover.te-tab-active{background-color:#fff;color:#333;border-bottom:1px solid #fff;z-index:2}.te-markdown-tab-section .te-tab button:hover{background-color:#fff;color:#333}.tui-popup-modal-background{background-color:rgba(202,202,202,.6);position:fixed;margin:0;left:0;top:0;width:100%;height:100%;z-index:9999}.tui-popup-modal-background.fit-window .tui-popup-wrapper,.tui-popup-wrapper.fit-window{width:100%;height:100%}.tui-popup-wrapper{width:500px;margin-right:auto;border:1px solid #cacaca;background:#fff;z-index:9999}.tui-popup-modal-background .tui-popup-wrapper{position:absolute;margin:auto;top:0;right:0;bottom:0;left:0}.tui-popup-header{padding:10px;height:auto;line-height:normal;position:relative;border-bottom:1px solid #cacaca}.tui-popup-header .tui-popup-header-buttons{float:right}.tui-popup-header .tui-popup-header-buttons button{padding:0;background-color:transparent;background-size:cover;float:left}.tui-popup-header .tui-popup-close-button{margin:3px;width:13px;height:13px;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxMHB4IiBoZWlnaHQ9IjEwcHgiIHZpZXdCb3g9IjAgMCAxMCAxMCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT5GMjc2Qzc4MC0zM0JBLTQ3MTItQTM3OC04RkQwQUNDOTFDRTk8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImxuYi1mb2xkZXItZGVsIiBmaWxsLXJ1bGU9Im5vbnplcm8iIGZpbGw9IiM3Nzc3NzciPiAgICAgICAgICAgIDxwYXRoIGQ9Ik01LDMuNTg1Nzg2NDQgTDEuNzA3MTA2NzgsMC4yOTI4OTMyMTkgTDAuMjkyODkzMjE5LDEuNzA3MTA2NzggTDMuNTg1Nzg2NDQsNSBMMC4yOTI4OTMyMTksOC4yOTI4OTMyMiBMMS43MDcxMDY3OCw5LjcwNzEwNjc4IEw1LDYuNDE0MjEzNTYgTDguMjkyODkzMjIsOS43MDcxMDY3OCBMOS43MDcxMDY3OCw4LjI5Mjg5MzIyIEw2LjQxNDIxMzU2LDUgTDkuNzA3MTA2NzgsMS43MDcxMDY3OCBMOC4yOTI4OTMyMiwwLjI5Mjg5MzIxOSBMNSwzLjU4NTc4NjQ0IFoiIGlkPSJDb21iaW5lZC1TaGFwZSI+PC9wYXRoPiAgICAgICAgPC9nPiAgICA8L2c+PC9zdmc+)}.tui-popup-header .tui-popup-title{font-size:13px;font-weight:700;color:#333;vertical-align:bottom}.tui-popup-body{padding:15px;font-size:12px}.tui-editor-popup{position:absolute;top:30px;left:50%;margin-left:-250px}.tui-editor-popup.tui-popup-modal-background{position:fixed;top:0;left:0;margin:0}.tui-editor-popup .tui-popup-body label{font-weight:700;color:#666;display:block;margin:10px 0 5px}.tui-editor-popup .tui-popup-body .te-button-section{margin-top:15px}.tui-editor-popup .tui-popup-body input[type=file],.tui-editor-popup .tui-popup-body input[type=text]{padding:4px 10px;border:1px solid #bfbfbf;box-sizing:border-box;width:100%}.tui-editor-popup .tui-popup-body input.wrong{border-color:red}.te-popup-add-link .tui-popup-wrapper{height:219px}.te-popup-add-image .tui-popup-wrapper{height:243px}.te-popup-add-image .te-tab{display:block;background:0 0;border-bottom:1px solid #ebebeb;margin-bottom:8px}.te-popup-add-image .te-file-type,.te-popup-add-image .te-url-type{display:none}.te-popup-add-image div.te-tab-active,.te-popup-add-image form.te-tab-active{display:block}.te-dropdown-toolbar .tui-toolbar-divider,.tui-popup-color .tui-colorpicker-container .tui-colorpicker-palette-toggle-slider{display:none}.te-popup-add-image .te-tab button{border:1px solid #ccc;background:#eee;min-width:100px;margin-left:-1px;border-bottom:0;border-radius:3px 3px 0 0}.te-popup-add-image .te-tab button.te-tab-active{background:#fff}.te-popup-add-table .te-table-selection{position:relative}.te-popup-add-table .te-table-body{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAARCAYAAAAougcOAAAC7mlDQ1BJQ0MgUHJvZmlsZQAAeAGFVM9rE0EU/jZuqdAiCFprDrJ4kCJJWatoRdQ2/RFiawzbH7ZFkGQzSdZuNuvuJrWliOTi0SreRe2hB/+AHnrwZC9KhVpFKN6rKGKhFy3xzW5MtqXqwM5+8943731vdt8ADXLSNPWABOQNx1KiEWlsfEJq/IgAjqIJQTQlVdvsTiQGQYNz+Xvn2HoPgVtWw3v7d7J3rZrStpoHhP1A4Eea2Sqw7xdxClkSAog836Epx3QI3+PY8uyPOU55eMG1Dys9xFkifEA1Lc5/TbhTzSXTQINIOJT1cVI+nNeLlNcdB2luZsbIEL1PkKa7zO6rYqGcTvYOkL2d9H5Os94+wiHCCxmtP0a4jZ71jNU/4mHhpObEhj0cGDX0+GAVtxqp+DXCFF8QTSeiVHHZLg3xmK79VvJKgnCQOMpkYYBzWkhP10xu+LqHBX0m1xOv4ndWUeF5jxNn3tTd70XaAq8wDh0MGgyaDUhQEEUEYZiwUECGPBoxNLJyPyOrBhuTezJ1JGq7dGJEsUF7Ntw9t1Gk3Tz+KCJxlEO1CJL8Qf4qr8lP5Xn5y1yw2Fb3lK2bmrry4DvF5Zm5Gh7X08jjc01efJXUdpNXR5aseXq8muwaP+xXlzHmgjWPxHOw+/EtX5XMlymMFMXjVfPqS4R1WjE3359sfzs94i7PLrXWc62JizdWm5dn/WpI++6qvJPmVflPXvXx/GfNxGPiKTEmdornIYmXxS7xkthLqwviYG3HCJ2VhinSbZH6JNVgYJq89S9dP1t4vUZ/DPVRlBnM0lSJ93/CKmQ0nbkOb/qP28f8F+T3iuefKAIvbODImbptU3HvEKFlpW5zrgIXv9F98LZua6N+OPwEWDyrFq1SNZ8gvAEcdod6HugpmNOWls05Uocsn5O66cpiUsxQ20NSUtcl12VLFrOZVWLpdtiZ0x1uHKE5QvfEp0plk/qv8RGw/bBS+fmsUtl+ThrWgZf6b8C8/UXAeIuJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAOklEQVQ4EWO8e/fuPwYGBkYgphlgAZmspKREMwtABjPR1HSo4aOWkBTKo8E1GlwkhQBJikdT1wgNLgAMSwQgckFvTgAAAABJRU5ErkJggg==)}.te-popup-add-table .te-table-header{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAARCAYAAAAougcOAAAC7mlDQ1BJQ0MgUHJvZmlsZQAAeAGFVM9rE0EU/jZuqdAiCFprDrJ4kCJJWatoRdQ2/RFiawzbH7ZFkGQzSdZuNuvuJrWliOTi0SreRe2hB/+AHnrwZC9KhVpFKN6rKGKhFy3xzW5MtqXqwM5+8943731vdt8ADXLSNPWABOQNx1KiEWlsfEJq/IgAjqIJQTQlVdvsTiQGQYNz+Xvn2HoPgVtWw3v7d7J3rZrStpoHhP1A4Eea2Sqw7xdxClkSAog836Epx3QI3+PY8uyPOU55eMG1Dys9xFkifEA1Lc5/TbhTzSXTQINIOJT1cVI+nNeLlNcdB2luZsbIEL1PkKa7zO6rYqGcTvYOkL2d9H5Os94+wiHCCxmtP0a4jZ71jNU/4mHhpObEhj0cGDX0+GAVtxqp+DXCFF8QTSeiVHHZLg3xmK79VvJKgnCQOMpkYYBzWkhP10xu+LqHBX0m1xOv4ndWUeF5jxNn3tTd70XaAq8wDh0MGgyaDUhQEEUEYZiwUECGPBoxNLJyPyOrBhuTezJ1JGq7dGJEsUF7Ntw9t1Gk3Tz+KCJxlEO1CJL8Qf4qr8lP5Xn5y1yw2Fb3lK2bmrry4DvF5Zm5Gh7X08jjc01efJXUdpNXR5aseXq8muwaP+xXlzHmgjWPxHOw+/EtX5XMlymMFMXjVfPqS4R1WjE3359sfzs94i7PLrXWc62JizdWm5dn/WpI++6qvJPmVflPXvXx/GfNxGPiKTEmdornIYmXxS7xkthLqwviYG3HCJ2VhinSbZH6JNVgYJq89S9dP1t4vUZ/DPVRlBnM0lSJ93/CKmQ0nbkOb/qP28f8F+T3iuefKAIvbODImbptU3HvEKFlpW5zrgIXv9F98LZua6N+OPwEWDyrFq1SNZ8gvAEcdod6HugpmNOWls05Uocsn5O66cpiUsxQ20NSUtcl12VLFrOZVWLpdtiZ0x1uHKE5QvfEp0plk/qv8RGw/bBS+fmsUtl+ThrWgZf6b8C8/UXAeIuJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAOklEQVQ4EWO8e/fuPwYGBkYgphlgAZksLCxMMwtABjPR1HSo4aOWkBTKo8E1GlwkhQBJikdT1wgNLgDxKwPzTeWPdAAAAABJRU5ErkJggg==)}.te-popup-add-table .te-selection-area{position:absolute;top:0;left:0;background:#80d2ff;opacity:.3;z-index:999}.te-popup-add-table .te-description{margin:10px 0 0;text-align:center}.te-popup-table-utils{width:120px}.te-popup-table-utils .tui-popup-body{padding:0}.te-popup-table-utils button{width:100%;background-color:#fff;border:none;outline:0;padding:0 10px;font-size:12px;line-height:28px;text-align:left;color:#777}.te-popup-table-utils button:hover{background-color:#f4f4f4}.te-popup-table-utils hr{background-color:#cacaca;border-style:none;height:1px}.te-heading-add{width:auto}.te-heading-add .tui-popup-body{padding:0}.te-heading-add h1,.te-heading-add h2,.te-heading-add h3,.te-heading-add h4,.te-heading-add h5,.te-heading-add h6,.te-heading-add p,.te-heading-add ul{padding:0;margin:0}.te-heading-add ul li{padding:2px 10px;cursor:pointer}.te-dropdown-toolbar .tui-popup-body,.tui-popup-color{padding:0}.te-heading-add ul li:hover{background-color:#eee}.te-heading-add h1{font-size:24px}.te-heading-add h2{font-size:22px}.te-heading-add h3{font-size:20px}.te-heading-add h4{font-size:18px}.te-heading-add h5{font-size:16px}.te-heading-add h6{font-size:14px}.te-dropdown-toolbar{position:absolute;width:auto}.tui-popup-color .tui-colorpicker-container,.tui-popup-color .tui-colorpicker-palette-container{width:144px}.tui-popup-color .tui-colorpicker-container ul{width:144px;margin-bottom:8px}.tui-popup-color .tui-colorpicker-container li{padding:0 1px 1px 0}.tui-popup-color .tui-colorpicker-container li .tui-colorpicker-palette-button{border:0;width:17px;height:17px}.tui-popup-color .tui-popup-body{padding:10px}.tui-popup-color .te-apply-button,.tui-popup-color .tui-colorpicker-palette-hex{float:right}.fa-pull-left,.tui-popup-code-block-editor .te-button-section button{float:left}.tui-popup-color .te-apply-button{height:21px;width:35px;background:#fff;border:1px solid #efefef;position:absolute;bottom:141px;right:10px}.tui-tooltip,.tui-tooltip .arrow{background-color:#222;position:absolute}.tui-popup-color .tui-colorpicker-container .tui-colorpicker-palette-hex{border:1px solid #E1E1E1;padding:3px 14px;margin-left:-1px}.tui-popup-color .tui-colorpicker-container div.tui-colorpicker-clearfix{display:inline-block}.tui-popup-color .tui-colorpicker-container .tui-colorpicker-palette-preview{width:19px;height:19px}.tui-popup-color .tui-colorpicker-slider-container .tui-colorpicker-slider-right{width:22px}.tui-popup-color .tui-colorpicker-slider-container .tui-colorpicker-huebar-handle{display:none}.tui-tooltip{z-index:999;opacity:.8;color:#fff;padding:2px 5px;font-size:10px}.tui-tooltip .arrow{content:"";display:inline-block;width:10px;height:10px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg);top:-3px;left:6px;z-index:-1}.tui-toolbar-icons{background:url(tui-editor.png);background-size:218px 188px;display:inline-block}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min--moz-device-pixel-ratio:2),only screen and (-o-min-device-pixel-ratio:2/1),only screen and (min-device-pixel-ratio:2),only screen and (min-resolution:192dpi),only screen and (min-resolution:2dppx){.tui-toolbar-icons{background:url(tui-editor-2x.png);background-size:218px 188px;display:inline-block}}.tui-toolbar-icons.tui-heading{background-position:-172px -48px}.tui-toolbar-icons.tui-heading:disabled{background-position:-193px -48px}.tui-toolbar-icons.tui-bold{background-position:-4px -4px}.tui-toolbar-icons.tui-bold:disabled{background-position:-25px -4px}.tui-toolbar-icons.tui-italic{background-position:-4px -48px}.tui-toolbar-icons.tui-italic:disabled{background-position:-25px -48px}.tui-toolbar-icons.tui-color{background-position:-172px -70px}.tui-toolbar-icons.tui-color:disabled{background-position:-193px -70px}.tui-toolbar-icons.tui-strike{background-position:-4px -26px}.tui-toolbar-icons.tui-strike:disabled{background-position:-25px -26px}.tui-toolbar-icons.tui-hrline{background-position:-46px -92px}.tui-toolbar-icons.tui-hrline:disabled{background-position:-67px -92px}.tui-toolbar-icons.tui-quote{background-position:-4px -114px}.tui-toolbar-icons.tui-quote:disabled{background-position:-25px -114px}.tui-toolbar-icons.tui-ul{background-position:-46px -4px}.tui-toolbar-icons.tui-ul:disabled{background-position:-67px -4px}.tui-toolbar-icons.tui-ol{background-position:-46px -26px}.tui-toolbar-icons.tui-ol:disabled{background-position:-67px -26px}.tui-toolbar-icons.tui-task{background-position:-130px -48px}.tui-toolbar-icons.tui-task:disabled{background-position:-151px -48px}.tui-toolbar-icons.tui-indent{background-position:-46px -48px}.tui-toolbar-icons.tui-indent:disabled{background-position:-67px -48px}.tui-toolbar-icons.tui-outdent{background-position:-46px -70px}.tui-toolbar-icons.tui-outdent:disabled{background-position:-67px -70px}.tui-toolbar-icons.tui-table{background-position:-88px -92px}.tui-toolbar-icons.tui-table:disabled{background-position:-109px -92px}.tui-toolbar-icons.tui-image{background-position:-130px -4px}.tui-toolbar-icons.tui-image:disabled{background-position:-151px -4px}.tui-toolbar-icons.tui-link{background-position:-130px -26px}.tui-toolbar-icons.tui-link:disabled{background-position:-151px -26px}.tui-toolbar-icons.tui-code{background-position:-130px -92px}.tui-toolbar-icons.tui-code:disabled{background-position:-151px -92px}.tui-toolbar-icons.tui-codeblock{background-position:-130px -70px}.tui-toolbar-icons.tui-codeblock:disabled{background-position:-151px -70px}.tui-toolbar-icons.tui-more{background-position:-172px -92px}.tui-toolbar-icons.tui-more:disabled{background-position:-193px -92px}.tui-colorpicker-svg-huebar,.tui-colorpicker-svg-slider,.tui-colorpicker-vml-slider{border:1px solid #ebebeb}.CodeMirror-sizer{margin-top:6px}.CodeMirror .cm-header{font-weight:700;color:inherit}.CodeMirror .cm-header-1{font-size:24px}.CodeMirror .cm-header-2{font-size:22px}.CodeMirror .cm-header-3{font-size:20px}.CodeMirror .cm-header-4{font-size:18px}.CodeMirror .cm-header-5{font-size:16px}.CodeMirror .cm-header-6{font-size:14px}.CodeMirror .cm-variable-2{color:inherit}.tui-editor-pseudo-clipboard{position:fixed;left:-1000px;top:-1000px;width:100px;height:100px}.te-ww-block-overlay.code-block-header{text-align:right}.te-ww-block-overlay.code-block-header span{font-size:10px;font-weight:600;padding:0 10px;color:#333;cursor:default}.te-ww-block-overlay.code-block-header button{margin:8px;font-size:10px;color:#333;background-color:#f9f9f9;border:1px solid #ddd;padding:4px;height:auto}.te-popup-code-block-languages{position:fixed;box-sizing:border-box;width:130px}.te-popup-code-block-languages .tui-popup-body{max-height:169px;overflow:auto;padding:0}.te-popup-code-block-languages button{width:100%;background-color:#fff;border:none;outline:0;padding:0 10px;font-size:12px;line-height:24px;text-align:left;color:#777}.fa-fw,.fa-li,.mi-fw,.mi-li,.mi-stack-1x,.mi-stack-2x{text-align:center}.te-popup-code-block-languages button.active{background-color:#f4f4f4}.tui-popup-code-block-editor .tui-popup-wrapper{width:70%;height:70%;margin:auto;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.te-input-language{position:relative;margin-left:15px;cursor:pointer}.te-input-language input{font-size:10px;padding:3px 5px;border:1px solid #ddd;background-color:#f9f9f9;box-sizing:border-box;width:130px;outline:0}.te-input-language input::-ms-clear{display:none}.te-input-language::after{content:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjE0cHgiIHZpZXdCb3g9IjAgMCAxMiAxNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT42Q0NBRDk2QS0yMjYxLTRFNDAtOTk1RC1DRUUyQUREQUQ3NkQ8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImNvbS10cmFuZ2xlLWQtc2lkZSIgZmlsbD0iIzU1NTU1NSI+ICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlJlY3RhbmdsZS03IiBwb2ludHM9IjIgNSAxMCA1IDYgMTAiPjwvcG9seWdvbj4gICAgICAgIDwvZz4gICAgPC9nPjwvc3ZnPg==);position:absolute;top:1px;right:3px}.te-input-language.active::after{content:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjE0cHgiIHZpZXdCb3g9IjAgMCAxMiAxNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT5BNEZDRkIzMy0zNjdBLTREMjAtOEEyNC1DQ0I2ODFBMDZDODg8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImNvbS10cmFuZ2xlLXVwLXNpZGUiIGZpbGw9IiM1NTU1NTUiPiAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJSZWN0YW5nbGUtNyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNi4wMDAwMDAsIDYuNTAwMDAwKSBzY2FsZSgxLCAtMSkgdHJhbnNsYXRlKC02LjAwMDAwMCwgLTYuNTAwMDAwKSAiIHBvaW50cz0iMiA0IDEwIDQgNiA5Ij48L3BvbHlnb24+ICAgICAgICA8L2c+ICAgIDwvZz48L3N2Zz4=)}.tui-popup-code-block-editor button{margin:-1px 3px}.tui-popup-code-block-editor .tui-popup-header-buttons{height:20px}.tui-popup-code-block-editor .popup-editor-toggle-preview::after{content:'Preview off';color:#777;margin-right:22px}.tui-popup-code-block-editor .popup-editor-toggle-preview.active::after{content:'Preview on';color:#4b96e6}.tui-popup-code-block-editor .popup-editor-toggle-scroll::after{content:'Scroll off';color:#777;margin-right:16px}.tui-popup-code-block-editor .popup-editor-toggle-scroll.active::after{content:'Scroll on';color:#4b96e6}.fa-inverse,.mi-inverse{color:#fff}.tui-popup-code-block-editor .popup-editor-toggle-fit{width:18px;height:18px;margin-top:4px;margin-right:14px;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxOHB4IiBoZWlnaHQ9IjE4cHgiIHZpZXdCb3g9IjAgMCAxOCAxOCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT40OUQ4RTYyMy1GRTAyLTQ1RUUtQkQ5Ri0xMjUyQjEzRTU1MkQ8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImNvbnRlbnRzLWV4cGFuZCIgZmlsbD0iIzU1NTU1NSI+ICAgICAgICAgICAgPHBhdGggZD0iTTMsMyBMOSwzIEw5LDUgTDUsNSBMNSw5IEwzLDkgTDMsMyBaIE0xNSwxNSBMOSwxNSBMOSwxMyBMMTMsMTMgTDEzLDkgTDE1LDkgTDE1LDE1IFoiIGlkPSJDb21iaW5lZC1TaGFwZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOS4wMDAwMDAsIDkuMDAwMDAwKSBzY2FsZSgtMSwgMSkgdHJhbnNsYXRlKC05LjAwMDAwMCwgLTkuMDAwMDAwKSAiPjwvcGF0aD4gICAgICAgICAgICA8cG9seWdvbiBpZD0iTGluZSIgZmlsbC1ydWxlPSJub256ZXJvIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMS41MDAwMDAsIDYuNTAwMDAwKSBzY2FsZSgtMSwgMSkgdHJhbnNsYXRlKC0xMS41MDAwMDAsIC02LjUwMDAwMCkgIiBwb2ludHM9IjkuMDg1Nzg2NDQgNS41IDEyLjUgOC45MTQyMTM1NiAxMy45MTQyMTM2IDcuNSAxMC41IDQuMDg1Nzg2NDQiPjwvcG9seWdvbj4gICAgICAgICAgICA8cG9seWdvbiBpZD0iTGluZS1Db3B5IiBmaWxsLXJ1bGU9Im5vbnplcm8iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYuNTAwMDAwLCAxMS41MDAwMDApIHNjYWxlKC0xLCAxKSB0cmFuc2xhdGUoLTYuNTAwMDAwLCAtMTEuNTAwMDAwKSAiIHBvaW50cz0iNC4wODU3ODY0NCAxMC41IDcuNSAxMy45MTQyMTM2IDguOTE0MjEzNTYgMTIuNSA1LjUgOS4wODU3ODY0NCI+PC9wb2x5Z29uPiAgICAgICAgPC9nPiAgICA8L2c+PC9zdmc+)}.tui-popup-code-block-editor .popup-editor-toggle-fit.active{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxOHB4IiBoZWlnaHQ9IjE4cHgiIHZpZXdCb3g9IjAgMCAxOCAxOCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT4wN0Q1MjlCRi1GNTIzLTREN0EtQTlGNi05NTUzNTU5RDNEMUE8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImNvbnRlbnRzLXJlZHVjZSIgZmlsbD0iIzU1NTU1NSI+ICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgtMzIiIGZpbGwtcnVsZT0ibm9uemVybyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNS41MDAwMDAsIDEyLjUwMDAwMCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtNS41MDAwMDAsIC0xMi41MDAwMDApICIgcG9pbnRzPSIzLjA4NTc4NjQ0IDExLjUgNi41IDE0LjkxNDIxMzYgNy45MTQyMTM1NiAxMy41IDQuNSAxMC4wODU3ODY0Ij48L3BvbHlnb24+ICAgICAgICAgICAgPHBhdGggZD0iTTksOSBMMTUsOSBMMTUsMTEgTDExLDExIEwxMSwxNSBMOSwxNSBMOSw5IFogTTksOSBMMyw5IEwzLDcgTDcsNyBMNywzIEw5LDMgTDksOSBaIiBpZD0iQ29tYmluZWQtU2hhcGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDkuMDAwMDAwLCA5LjAwMDAwMCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtOS4wMDAwMDAsIC05LjAwMDAwMCkgIj48L3BhdGg+ICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgtMzMiIGZpbGwtcnVsZT0ibm9uemVybyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTIuNTAwMDAwLCA1LjUwMDAwMCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtMTIuNTAwMDAwLCAtNS41MDAwMDApICIgcG9pbnRzPSIxNC45MTQyMTM2IDYuNSAxMS41IDMuMDg1Nzg2NDQgMTAuMDg1Nzg2NCA0LjUgMTMuNSA3LjkxNDIxMzU2Ij48L3BvbHlnb24+ICAgICAgICA8L2c+ICAgIDwvZz48L3N2Zz4=)}.tui-popup-code-block-editor .tui-popup-close-button{margin-top:6px}.tui-popup-code-block-editor .tui-popup-body{z-index:-1;padding:0;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex:1;flex:1}.tui-split-scroll.single-content .tui-split-content-right,.tui-split-scroll.single-content .tui-splitter,.tui-split-scroll.single-content button.tui-scrollsync{display:none}.tui-popup-code-block-editor .popup-editor-body{position:relative;-ms-flex:1;flex:1;border-bottom:1px solid #cacaca}.tui-popup-code-block-editor .te-button-section{padding:15px}.tui-popup-code-block-editor .tui-editor-contents pre{margin:0;background-color:transparent}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left,.mi.mi-pull-left{margin-right:.3em}.tui-popup-code-block-editor .CodeMirror{height:auto}.tui-popup-code-block-editor .CodeMirror-line{font-family:Consolas,Courier,"Apple SD 산돌고딕 Neo",-apple-system,"Lucida Grande","Apple SD Gothic Neo","맑은 고딕","Malgun Gothic","Segoe UI","돋움",dotum,sans-serif;font-size:13px;line-height:160%;letter-spacing:-.3px}.tui-popup-code-block-editor .popup-editor-editor-wrapper{min-height:100%}.tui-split-scroll-wrapper{position:relative}.tui-split-scroll{position:absolute}.tui-split-scroll,.tui-split-scroll-wrapper{width:100%;height:100%}.tui-split-scroll .tui-split-content-left,.tui-split-scroll .tui-split-content-right{position:absolute;top:0;width:50%;box-sizing:border-box}.tui-split-scroll .tui-split-content-left{left:0}.tui-split-scroll .tui-split-content-right{left:50%}.tui-split-scroll .tui-splitter{position:absolute;left:50%;top:0;height:100%;width:1px;border-left:1px solid #cacaca}.tui-split-scroll .tui-split-scroll-content{width:100%;height:100%;overflow:hidden;position:relative}.tui-split-scroll .tui-split-content-left,.tui-split-scroll .tui-split-content-right{height:100%;overflow-x:hidden;overflow-y:auto}.tui-split-scroll button.tui-scrollsync{top:10px;opacity:.2}.tui-split-scroll button.tui-scrollsync::after{content:"scroll off"}.tui-split-scroll.scroll-sync button.tui-scrollsync{opacity:.5}.tui-split-scroll.scroll-sync .tui-split-content-left,.tui-split-scroll.scroll-sync .tui-split-content-right{height:auto;overflow:initial}.tui-split-scroll.scroll-sync button.tui-scrollsync::after{content:"scroll on"}.tui-split-scroll.scroll-sync .tui-split-scroll-content{overflow-y:auto}.tui-split-scroll.single-content .tui-split-content-left{width:100%}.fa-stack,.mi,.mi-stack{display:inline-block}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.tui-split-scroll-wrapper .tui-splitter{left:calc(50% - 9px)}}@supports (-ms-accelerator:true){.tui-split-scroll-wrapper .tui-splitter{left:calc(50% - 9px)}}@media screen and (max-width:480px){.tui-popup-wrapper{max-width:300px}.tui-editor-popup{margin-left:-150px}.te-dropdown-toolbar{max-width:none}}/*! * Font Awesome Free 5.12.1 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) - */.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{margin-left:2.5em}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right,.trumbowyg-button-pane .trumbowyg-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adobe:before{content:"\f778"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-bahai:before{content:"\f666"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-alt:before{content:"\f422"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\f952"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-alt:before{content:"\f424"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\f907"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-handshake:before{content:"\f2b5"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-hdd:before{content:"\f0a0"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-ideal:before{content:"\f913"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-instagram-square:before{content:"\f955"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microblog:before{content:"\f91a"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\f956"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\f91e"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopify:before{content:"\f957"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\f941"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\f949"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:auto;src:url(../fonts/fa-brands-400.eot);src:url(../fonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../fonts/fa-brands-400.woff2) format("woff2"),url(../fonts/fa-brands-400.woff) format("woff"),url(../fonts/fa-brands-400.ttf) format("truetype"),url(../fonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:auto;src:url(../fonts/fa-regular-400.eot);src:url(../fonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../fonts/fa-regular-400.woff2) format("woff2"),url(../fonts/fa-regular-400.woff) format("woff"),url(../fonts/fa-regular-400.ttf) format("truetype"),url(../fonts/fa-regular-400.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:auto;src:url(../fonts/fa-solid-900.eot);src:url(../fonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../fonts/fa-solid-900.woff2) format("woff2"),url(../fonts/fa-solid-900.woff) format("woff"),url(../fonts/fa-solid-900.ttf) format("truetype"),url(../fonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900}#trumbowyg-icons,#trumbowyg-icons svg{height:0;width:0}#trumbowyg-icons{overflow:hidden;visibility:hidden}.trumbowyg-box *,.trumbowyg-box ::after,.trumbowyg-box ::before,.trumbowyg-modal *,.trumbowyg-modal ::after,.trumbowyg-modal ::before{box-sizing:border-box}.trumbowyg-box svg,.trumbowyg-modal svg{width:17px;height:100%;fill:#222}.trumbowyg-box,.trumbowyg-editor{display:block;position:relative;border:1px solid #DDD;width:100%;min-height:300px;margin:17px auto}.trumbowyg-box .trumbowyg-editor{margin:0 auto}.trumbowyg-box.trumbowyg-fullscreen{background:#FEFEFE;border:none!important}.trumbowyg-editor,.trumbowyg-textarea{position:relative;box-sizing:border-box;padding:20px;min-height:300px;width:100%;border-style:none;resize:none;outline:0;overflow:auto}.trumbowyg-editor.trumbowyg-autogrow-on-enter,.trumbowyg-textarea.trumbowyg-autogrow-on-enter{transition:height .3s ease-out}.trumbowyg-box-blur .trumbowyg-editor *,.trumbowyg-box-blur .trumbowyg-editor::before{color:transparent!important;text-shadow:0 0 7px #333}@media screen and (min-width:0 \0){.trumbowyg-box-blur .trumbowyg-editor *,.trumbowyg-box-blur .trumbowyg-editor::before{color:rgba(200,200,200,.6)!important}}@supports (-ms-accelerator:true){.trumbowyg-box-blur .trumbowyg-editor *,.trumbowyg-box-blur .trumbowyg-editor::before{color:rgba(200,200,200,.6)!important}}.trumbowyg-box-blur .trumbowyg-editor hr,.trumbowyg-box-blur .trumbowyg-editor img{opacity:.2}.trumbowyg-textarea{position:relative;display:block;overflow:auto;border:none;font-size:14px;font-family:Inconsolata,Consolas,Courier,"Courier New",sans-serif;line-height:18px}.trumbowyg-box.trumbowyg-editor-visible .trumbowyg-textarea{height:1px!important;width:25%;min-height:0!important;padding:0!important;background:0 0;opacity:0!important}.trumbowyg-box.trumbowyg-editor-hidden .trumbowyg-textarea{display:block}.trumbowyg-box.trumbowyg-editor-hidden .trumbowyg-editor{display:none}.trumbowyg-box.trumbowyg-disabled .trumbowyg-textarea{opacity:.8;background:0 0}.trumbowyg-editor[contenteditable=true]:empty:not(:focus)::before{content:attr(placeholder);color:#999;pointer-events:none}.trumbowyg-button-pane{width:100%;min-height:36px;background:#ecf0f1;border-bottom:1px solid #d7e0e2;margin:0;padding:0 5px;position:relative;list-style-type:none;line-height:10px;backface-visibility:hidden;z-index:11}.trumbowyg-button-pane::after{content:" ";display:block;position:absolute;top:36px;left:0;right:0;width:100%;height:1px;background:#d7e0e2}.trumbowyg-button-pane .trumbowyg-button-group{display:inline-block}.trumbowyg-button-pane .trumbowyg-button-group .trumbowyg-fullscreen-button svg{color:transparent}.trumbowyg-button-pane .trumbowyg-button-group::after{content:" ";display:inline-block;width:1px;background:#d7e0e2;margin:0 5px;height:35px;vertical-align:top}.trumbowyg-button-pane .trumbowyg-button-group:last-child::after{content:none}.trumbowyg-button-pane button{display:inline-block;position:relative;width:35px;height:35px;padding:1px 6px!important;margin-bottom:1px;overflow:hidden;border:none;cursor:pointer;background:0 0;vertical-align:middle;transition:background-color 150ms,opacity 150ms}.trumbowyg-button-pane button.trumbowyg-textual-button{width:auto;line-height:35px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.trumbowyg-button-pane button.trumbowyg-disable,.trumbowyg-button-pane.trumbowyg-disable button:not(.trumbowyg-not-disable):not(.trumbowyg-active),.trumbowyg-disabled .trumbowyg-button-pane button:not(.trumbowyg-not-disable):not(.trumbowyg-viewHTML-button){opacity:.2;cursor:default}.trumbowyg-button-pane.trumbowyg-disable .trumbowyg-button-group::before,.trumbowyg-disabled .trumbowyg-button-pane .trumbowyg-button-group::before{background:#e3e9eb}.trumbowyg-button-pane button.trumbowyg-active,.trumbowyg-button-pane button:not(.trumbowyg-disable):focus,.trumbowyg-button-pane button:not(.trumbowyg-disable):hover{background-color:#FFF;outline:0}.trumbowyg-button-pane .trumbowyg-open-dropdown::after{display:block;content:" ";position:absolute;top:25px;right:3px;height:0;width:0;border:3px solid transparent;border-top-color:#555}.trumbowyg-button-pane .trumbowyg-open-dropdown.trumbowyg-textual-button{padding-left:10px!important;padding-right:18px!important}.trumbowyg-button-pane .trumbowyg-open-dropdown.trumbowyg-textual-button::after{top:17px;right:7px}.trumbowyg-modal,.trumbowyg-modal-box{top:0;left:50%;transform:translateX(-50%);backface-visibility:hidden;position:absolute}.trumbowyg-dropdown{width:200px;border:1px solid #ecf0f1;padding:5px 0;border-top:none;background:#FFF;margin-left:-1px;box-shadow:rgba(0,0,0,.1) 0 2px 3px;z-index:12}.trumbowyg-dropdown button{display:block;width:100%;height:35px;line-height:35px;text-decoration:none;background:#FFF;padding:0 10px;color:#333!important;border:none;cursor:pointer;text-align:left;font-size:15px;transition:all 150ms}.trumbowyg-dropdown button:focus,.trumbowyg-dropdown button:hover{background:#ecf0f1}.trumbowyg-dropdown button svg{float:left;margin-right:14px}.trumbowyg-modal{max-width:520px;width:100%;height:350px;z-index:12;overflow:hidden}.trumbowyg-modal-box{max-width:500px;width:calc(100% - 20px);padding-bottom:45px;z-index:1;background-color:#FFF;text-align:center;font-size:14px;box-shadow:rgba(0,0,0,.2) 0 2px 3px}.trumbowyg-modal-box .trumbowyg-modal-title{font-size:24px;font-weight:700;margin:0 0 20px;padding:15px 0 13px;display:block;border-bottom:1px solid #EEE;color:#333;background:#fbfcfc}.trumbowyg-modal-box .trumbowyg-progress{width:100%;height:3px;position:absolute;top:58px}.trumbowyg-modal-box .trumbowyg-progress .trumbowyg-progress-bar{background:#2BC06A;width:0;height:100%;transition:width 150ms linear}.trumbowyg-modal-box label{display:block;position:relative;margin:15px 12px;height:29px;line-height:29px;overflow:hidden}.trumbowyg-modal-box label .trumbowyg-input-infos{display:block;text-align:left;height:25px;line-height:25px;transition:all 150ms}.trumbowyg-modal-box label .trumbowyg-input-infos span{display:block;color:#69878f;background-color:#fbfcfc;border:1px solid #DEDEDE;padding:0 7px;width:150px}.trumbowyg-modal-box label .trumbowyg-input-infos span.trumbowyg-msg-error{color:#e74c3c}.trumbowyg-modal-box label.trumbowyg-input-error input,.trumbowyg-modal-box label.trumbowyg-input-error textarea{border:1px solid #e74c3c}.trumbowyg-modal-box label.trumbowyg-input-error .trumbowyg-input-infos{margin-top:-27px}.trumbowyg-modal-box label input{position:absolute;top:0;right:0;height:27px;line-height:27px;border:1px solid #DEDEDE;background:#fff;font-size:14px;max-width:330px;width:70%;padding:0 7px;transition:all 150ms}.trumbowyg-modal-box label input:focus,.trumbowyg-modal-box label input:hover{outline:0;border:1px solid #95a5a6}.trumbowyg-modal-box label input:focus{background:#fbfcfc}.trumbowyg-modal-box label input[type=checkbox]{left:5px;top:5px;right:auto}.trumbowyg-modal-box label input[type=checkbox]+.trumbowyg-input-infos span{width:auto;padding-left:25px}.trumbowyg-modal-box .error{margin-top:25px;display:block;color:red}.trumbowyg-modal-box .trumbowyg-modal-button{position:absolute;bottom:10px;right:0;text-decoration:none;color:#FFF;display:block;width:100px;height:35px;line-height:33px;margin:0 10px;background-color:#333;border:none;cursor:pointer;font-family:"Trebuchet MS",Helvetica,Verdana,sans-serif;font-size:16px;transition:all 150ms}.trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-submit{right:110px;background:#2bc06a}.trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-submit:focus,.trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-submit:hover{background:#40d47e;outline:0}.trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-submit:active{background:#25a25a}.trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-reset{color:#555;background:#e6e6e6}.trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-reset:focus,.trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-reset:hover{background:#fbfbfb;outline:0}.trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-reset:active{background:#d5d5d5}.trumbowyg-overlay{position:absolute;background-color:rgba(255,255,255,.5);height:100%;width:100%;left:0;display:none;top:0;z-index:10}body.trumbowyg-body-fullscreen{overflow:hidden}.trumbowyg-fullscreen{position:fixed;top:0;left:0;width:100%;height:100%;margin:0;padding:0;z-index:99999}.trumbowyg-fullscreen .trumbowyg-editor,.trumbowyg-fullscreen.trumbowyg-box{border:none}.trumbowyg-fullscreen .trumbowyg-editor,.trumbowyg-fullscreen .trumbowyg-textarea{height:calc(100% - 37px)!important;overflow:auto}.trumbowyg-fullscreen .trumbowyg-overlay{height:100%!important}.trumbowyg-fullscreen .trumbowyg-button-group .trumbowyg-fullscreen-button svg{color:#222;fill:transparent}.trumbowyg-editor img,.trumbowyg-editor video{height:auto}.trumbowyg-editor img{cursor:move}.trumbowyg-editor.trumbowyg-reset-css{background:#FEFEFE!important;font-family:"Trebuchet MS",Helvetica,Verdana,sans-serif!important;font-size:14px!important;line-height:1.45em!important;color:#333}.trumbowyg-editor.trumbowyg-reset-css a{color:#15c!important;text-decoration:underline!important}.trumbowyg-editor.trumbowyg-reset-css blockquote,.trumbowyg-editor.trumbowyg-reset-css div,.trumbowyg-editor.trumbowyg-reset-css ol,.trumbowyg-editor.trumbowyg-reset-css p,.trumbowyg-editor.trumbowyg-reset-css ul{box-shadow:none!important;background:0 0!important;margin:0 0 15px!important;line-height:1.4em!important;font-family:"Trebuchet MS",Helvetica,Verdana,sans-serif!important;font-size:14px!important;border:none}.trumbowyg-editor.trumbowyg-reset-css hr,.trumbowyg-editor.trumbowyg-reset-css iframe,.trumbowyg-editor.trumbowyg-reset-css object{margin-bottom:15px!important}.trumbowyg-editor.trumbowyg-reset-css blockquote{margin-left:32px!important;font-style:italic!important;color:#555}.trumbowyg-editor.trumbowyg-reset-css ul{list-style:disc}.trumbowyg-editor.trumbowyg-reset-css ol,.trumbowyg-editor.trumbowyg-reset-css ul{padding-left:20px!important}.trumbowyg-editor.trumbowyg-reset-css ol ol,.trumbowyg-editor.trumbowyg-reset-css ol ul,.trumbowyg-editor.trumbowyg-reset-css ul ol,.trumbowyg-editor.trumbowyg-reset-css ul ul{border:none;margin:2px!important;padding:0 0 0 24px!important}.trumbowyg-editor.trumbowyg-reset-css hr{display:block;height:1px;border:none;border-top:1px solid #CCC}.trumbowyg-editor.trumbowyg-reset-css h1,.trumbowyg-editor.trumbowyg-reset-css h2,.trumbowyg-editor.trumbowyg-reset-css h3,.trumbowyg-editor.trumbowyg-reset-css h4{color:#111;background:0 0;margin:0!important;padding:0!important;font-weight:700}.trumbowyg-editor.trumbowyg-reset-css h1{font-size:32px!important;line-height:38px!important;margin-bottom:20px!important}.trumbowyg-editor.trumbowyg-reset-css h2{font-size:26px!important;line-height:34px!important;margin-bottom:15px!important}.trumbowyg-editor.trumbowyg-reset-css h3{font-size:22px!important;line-height:28px!important;margin-bottom:7px!important}.trumbowyg-editor.trumbowyg-reset-css h4{font-size:16px!important;line-height:22px!important;margin-bottom:7px!important}.trumbowyg-dark .trumbowyg-textarea{background:#111;color:#ddd}.trumbowyg-dark .trumbowyg-box{border:1px solid #343434}.trumbowyg-dark .trumbowyg-box.trumbowyg-fullscreen{background:#111}.trumbowyg-dark .trumbowyg-box.trumbowyg-box-blur .trumbowyg-editor *,.trumbowyg-dark .trumbowyg-box.trumbowyg-box-blur .trumbowyg-editor::before{text-shadow:0 0 7px #ccc}@media screen and (min-width:0 \0){.trumbowyg-dark .trumbowyg-box.trumbowyg-box-blur .trumbowyg-editor *,.trumbowyg-dark .trumbowyg-box.trumbowyg-box-blur .trumbowyg-editor::before{color:rgba(20,20,20,.6)!important}}@supports (-ms-accelerator:true){.trumbowyg-dark .trumbowyg-box.trumbowyg-box-blur .trumbowyg-editor *,.trumbowyg-dark .trumbowyg-box.trumbowyg-box-blur .trumbowyg-editor::before{color:rgba(20,20,20,.6)!important}}.trumbowyg-dark .trumbowyg-box svg{fill:#ecf0f1;color:#ecf0f1}.trumbowyg-dark .trumbowyg-button-pane{background-color:#222;border-bottom-color:#343434}.trumbowyg-dark .trumbowyg-button-pane::after{background:#343434}.trumbowyg-dark .trumbowyg-button-pane .trumbowyg-button-group:not(:empty)::after{background-color:#343434}.trumbowyg-dark .trumbowyg-button-pane .trumbowyg-button-group:not(:empty) .trumbowyg-fullscreen-button svg{color:transparent}.trumbowyg-dark .trumbowyg-button-pane.trumbowyg-disable .trumbowyg-button-group::after{background-color:#2a2a2a}.trumbowyg-dark .trumbowyg-button-pane button.trumbowyg-active,.trumbowyg-dark .trumbowyg-button-pane button:not(.trumbowyg-disable):focus,.trumbowyg-dark .trumbowyg-button-pane button:not(.trumbowyg-disable):hover{background-color:#333}.trumbowyg-dark .trumbowyg-button-pane .trumbowyg-open-dropdown::after{border-top-color:#fff}.trumbowyg-dark .trumbowyg-fullscreen .trumbowyg-button-group .trumbowyg-fullscreen-button svg{color:#ecf0f1;fill:transparent}.trumbowyg-dark .trumbowyg-dropdown{border-color:#222;background:#333;box-shadow:rgba(0,0,0,.3) 0 2px 3px}.trumbowyg-dark .trumbowyg-dropdown button{background:#333;color:#fff!important}.trumbowyg-dark .trumbowyg-dropdown button:focus,.trumbowyg-dark .trumbowyg-dropdown button:hover{background:#222}.trumbowyg-dark .trumbowyg-modal-box{background-color:#222}.trumbowyg-dark .trumbowyg-modal-box .trumbowyg-modal-title{border-bottom:1px solid #555;color:#fff;background:#3c3c3c}.trumbowyg-dark .trumbowyg-modal-box label{display:block;position:relative;margin:15px 12px;height:27px;line-height:27px;overflow:hidden}.mi,.mi-stack{display:inline-block}.trumbowyg-dark .trumbowyg-modal-box label .trumbowyg-input-infos span{color:#eee;background-color:#2f2f2f;border-color:#222}.trumbowyg-dark .trumbowyg-modal-box label .trumbowyg-input-infos span.trumbowyg-msg-error{color:#e74c3c}.trumbowyg-dark .trumbowyg-modal-box label.trumbowyg-input-error input,.trumbowyg-dark .trumbowyg-modal-box label.trumbowyg-input-error textarea{border-color:#e74c3c}.trumbowyg-dark .trumbowyg-modal-box label input{border-color:#222;color:#eee;background:#333}.trumbowyg-dark .trumbowyg-modal-box label input:focus,.trumbowyg-dark .trumbowyg-modal-box label input:hover{border-color:#626262}.trumbowyg-dark .trumbowyg-modal-box label input:focus{background-color:#2f2f2f}.trumbowyg-dark .trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-submit{background:#1b7943}.trumbowyg-dark .trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-submit:focus,.trumbowyg-dark .trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-submit:hover{background:#25a25a}.trumbowyg-dark .trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-submit:active{background:#176437}.trumbowyg-dark .trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-reset{background:#333;color:#ccc}.trumbowyg-dark .trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-reset:focus,.trumbowyg-dark .trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-reset:hover{background:#444}.trumbowyg-dark .trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-reset:active{background:#111}.trumbowyg-dark .trumbowyg-overlay{background-color:rgba(15,15,15,.6)}/*! + */.fa,.fab,.fad,.fal,.far,.fas{display:inline-block;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{width:1.25em}.fa-ul{margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-right{float:right}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adobe:before{content:"\f778"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-bahai:before{content:"\f666"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-alt:before{content:"\f422"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\f952"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-alt:before{content:"\f424"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\f907"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-handshake:before{content:"\f2b5"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-hdd:before{content:"\f0a0"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-ideal:before{content:"\f913"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-instagram-square:before{content:"\f955"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microblog:before{content:"\f91a"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\f956"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\f91e"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopify:before{content:"\f957"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\f941"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\f949"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:auto;src:url(../fonts/fa-brands-400.eot);src:url(../fonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../fonts/fa-brands-400.woff2) format("woff2"),url(../fonts/fa-brands-400.woff) format("woff"),url(../fonts/fa-brands-400.ttf) format("truetype"),url(../fonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:auto;src:url(../fonts/fa-regular-400.eot);src:url(../fonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../fonts/fa-regular-400.woff2) format("woff2"),url(../fonts/fa-regular-400.woff) format("woff"),url(../fonts/fa-regular-400.ttf) format("truetype"),url(../fonts/fa-regular-400.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:auto;src:url(../fonts/fa-solid-900.eot);src:url(../fonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../fonts/fa-solid-900.woff2) format("woff2"),url(../fonts/fa-solid-900.woff) format("woff"),url(../fonts/fa-solid-900.ttf) format("truetype"),url(../fonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900}/*! * License - Micon v3.0.168 http://xtoolkit.github.io/Micon/ (MIT License) * License - template: https://fontawesome.com/license/free (Code: MIT License) - */@font-face{font-family:micon;font-style:normal;font-weight:400;src:url(../fonts/micon.eot);src:url(../fonts/micon.eot?#iefix) format("embedded-opentype"),url(../fonts/micon.woff2) format("woff2"),url(../fonts/micon.woff) format("woff"),url(../fonts/micon.ttf) format("truetype"),url(../fonts/micon.svg#micon) format("svg")}.mi{font-family:micon;font-weight:400;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.mi-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.mi-xs{font-size:.75em}.mi-sm{font-size:.875em}.mi-1x{font-size:1em}.mi-2x,.mi-stack-2x{font-size:2em}.mi-3x{font-size:3em}.mi-4x{font-size:4em}.mi-5x{font-size:5em}.mi-6x{font-size:6em}.mi-7x{font-size:7em}.mi-8x{font-size:8em}.mi-9x{font-size:9em}.mi-10x{font-size:10em}.mi-fw{text-align:center;width:1.25em}.mi-ul{margin-left:2.5em}.mi-ul>li{position:relative}.mi-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.mi-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.mi-pull-left{float:left}.mi-pull-right{float:right}.mi.mi-pull-left{margin-right:.3em}.mi.mi-pull-right{margin-left:.3em}.mi-spin{animation:mi-spin 2s infinite linear}.mi-pulse{animation:mi-spin 1s infinite steps(8)}@keyframes mi-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.mi-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.mi-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.mi-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.mi-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scale(-1,1)}.mi-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";transform:scale(1,-1)}.mi-flip-horizontal.mi-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";transform:scale(-1,-1)}:root .mi-flip-horizontal,:root .mi-flip-vertical,:root .mi-rotate-180,:root .mi-rotate-270,:root .mi-rotate-90{filter:none}.mi-stack{height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.mi-stack-1x,.mi-stack-2x{left:0;position:absolute;text-align:center;width:100%}.mi-stack-1x{line-height:inherit}.mi-inverse{color:#fff}.mi-Accept:before,.mi-AcceptLegacy:before,.mi-CheckmarkListviewLegacy:before,.mi-CheckmarkMenuLegacy:before{content:"\EA01"}.mi-Accident:before{content:"\EA02"}.mi-AccidentSolid:before{content:"\EA03"}.mi-Accounts:before,.mi-AccountsLegacy:before{content:"\EA04"}.mi-ActionCenter:before{content:"\EA05"}.mi-ActionCenterAsterisk:before{content:"\EA06"}.mi-ActionCenterMirrored:before{content:"\EA07"}.mi-ActionCenterNotification:before{content:"\EA08"}.mi-ActionCenterNotificationMirrored:before{content:"\EA09"}.mi-ActionCenterQuiet:before{content:"\EA0A"}.mi-ActionCenterQuietNotification:before{content:"\EA0B"}.mi-Add:before,.mi-AddLegacy:before{content:"\EA0C"}.mi-AddFriend:before,.mi-AddFriendLegacy:before{content:"\EA0D"}.mi-AddRemoteDevice:before{content:"\EA0E"}.mi-AddSurfaceHub:before{content:"\EA0F"}.mi-AddTo:before{content:"\EA10"}.mi-AdjustHologram:before{content:"\EA11"}.mi-Admin:before,.mi-AdminLegacy:before{content:"\EA12"}.mi-Airplane:before{content:"\EA13"}.mi-AirplaneSolid:before{content:"\EA14"}.mi-AlignCenter:before,.mi-AlignCenterLegacy:before{content:"\EA15"}.mi-AlignLeft:before,.mi-AlignLeftLegacy:before{content:"\EA16"}.mi-AlignRight:before,.mi-AlignRightLegacy:before{content:"\EA17"}.mi-AllApps:before,.mi-AllAppsLegacy:before{content:"\EA18"}.mi-AllAppsLegacyMirrored:before,.mi-AllAppsMirrored:before{content:"\EA19"}.mi-Annotation:before{content:"\EA1A"}.mi-AppIconDefault:before{content:"\EA1B"}.mi-Apps:before{content:"\EA1C"}.mi-AreaChart:before{content:"\EA1D"}.mi-ArrowDown8:before{content:"\EA1E"}.mi-ArrowLeft8:before{content:"\EA1F"}.mi-ArrowRight8:before{content:"\EA20"}.mi-ArrowUp8:before{content:"\EA21"}.mi-AspectRatio:before{content:"\EA22"}.mi-Asterisk:before{content:"\EA23"}.mi-AsteriskBadge12:before{content:"\EA24"}.mi-Attach:before,.mi-AttachLegacy:before{content:"\EA25"}.mi-AttachCamera:before,.mi-AttachCameraLegacy:before{content:"\EA26"}.mi-Audio:before,.mi-AudioLegacy:before{content:"\EA27"}.mi-ArrowHTMLLegacy:before,.mi-Back:before,.mi-BackBttnArrow20Legacy:before,.mi-BackBttnArrow42Legacy:before,.mi-BackLegacy:before{content:"\EA28"}.mi-BackMirrored:before{content:"\EA29"}.mi-BackSpaceQWERTYLg:before{content:"\EA2B"}.mi-BackSpaceQWERTYMd:before{content:"\EA2C"}.mi-BackSpaceQWERTYSm:before{content:"\EA2D"}.mi-BackToWindow:before,.mi-BackToWindowLegacy:before{content:"\EA2E"}.mi-BackgroundToggle:before{content:"\EA2F"}.mi-Badge:before{content:"\EA30"}.mi-BandBattery0:before{content:"\EA31"}.mi-BandBattery1:before{content:"\EA32"}.mi-BandBattery2:before{content:"\EA33"}.mi-BandBattery3:before{content:"\EA34"}.mi-BandBattery4:before{content:"\EA35"}.mi-BandBattery5:before{content:"\EA36"}.mi-BandBattery6:before{content:"\EA37"}.mi-Bank:before{content:"\EA38"}.mi-BarcodeScanner:before{content:"\EA39"}.mi-Battery0:before{content:"\EA3A"}.mi-Battery1:before{content:"\EA3B"}.mi-Battery10:before{content:"\EA3C"}.mi-Battery2:before{content:"\EA3D"}.mi-Battery3:before{content:"\EA3E"}.mi-Battery4:before{content:"\EA3F"}.mi-Battery5:before{content:"\EA40"}.mi-Battery6:before{content:"\EA41"}.mi-Battery7:before{content:"\EA42"}.mi-Battery8:before{content:"\EA43"}.mi-Battery9:before{content:"\EA44"}.mi-BatteryCharging0:before{content:"\EA45"}.mi-BatteryCharging1:before{content:"\EA46"}.mi-BatteryCharging10:before{content:"\EA47"}.mi-BatteryCharging2:before{content:"\EA48"}.mi-BatteryCharging3:before{content:"\EA49"}.mi-BatteryCharging4:before{content:"\EA4A"}.mi-BatteryCharging5:before{content:"\EA4B"}.mi-BatteryCharging6:before{content:"\EA4C"}.mi-BatteryCharging7:before{content:"\EA4D"}.mi-BatteryCharging8:before{content:"\EA4E"}.mi-BatteryCharging9:before{content:"\EA4F"}.mi-BatterySaver0:before{content:"\EA50"}.mi-BatterySaver1:before{content:"\EA51"}.mi-BatterySaver10:before{content:"\EA52"}.mi-BatterySaver2:before{content:"\EA53"}.mi-BatterySaver3:before{content:"\EA54"}.mi-BatterySaver4:before{content:"\EA55"}.mi-BatterySaver5:before{content:"\EA56"}.mi-BatterySaver6:before{content:"\EA57"}.mi-BatterySaver7:before{content:"\EA58"}.mi-BatterySaver8:before{content:"\EA59"}.mi-BatterySaver9:before{content:"\EA5A"}.mi-BatteryUnknown:before{content:"\EA5B"}.mi-Beta:before{content:"\EA5C"}.mi-BidiLtr:before{content:"\EA5D"}.mi-BidiRtl:before{content:"\EA5E"}.mi-BlockContact:before,.mi-BlockContactLegacy:before{content:"\EA5F"}.mi-Blocked:before,.mi-BlockedLegacy:before{content:"\EA61"}.mi-BlueLight:before{content:"\EA62"}.mi-Bluetooth:before{content:"\EA63"}.mi-BodyCam:before{content:"\EA64"}.mi-Bold:before,.mi-BoldLegacy:before{content:"\EA65"}.mi-BoldF:before,.mi-BoldFLegacy:before{content:"\EA67"}.mi-BoldG:before,.mi-BoldGLegacy:before{content:"\EA69"}.mi-BoldKorean:before,.mi-BoldKoreanLegacy:before{content:"\EA6B"}.mi-BoldN:before,.mi-BoldNLegacy:before{content:"\EA6D"}.mi-BoldRussion:before,.mi-BoldRussionLegacy:before{content:"\EA6F"}.mi-Bookmarks:before,.mi-BookmarksLegacy:before{content:"\EA70"}.mi-BookmarksLegacyMirrored:before,.mi-BookmarksMirrored:before{content:"\EA71"}.mi-Brightness:before{content:"\EA72"}.mi-Broom:before{content:"\EA73"}.mi-BrowsePhotos:before,.mi-BrowsePhotosLegacy:before{content:"\EA74"}.mi-BrushSize:before{content:"\EA75"}.mi-Bug:before{content:"\EA76"}.mi-BuildingEnergy:before{content:"\EA77"}.mi-BulletedList:before,.mi-BulletedListLegacy:before,.mi-ListLegacy:before{content:"\EA78"}.mi-BulletedListLegacyMirrored:before,.mi-BulletedListMirrored:before,.mi-ListLegacyMirrored:before{content:"\EA79"}.mi-Bullseye:before{content:"\EA7A"}.mi-BumperLeft:before{content:"\EA7B"}.mi-BumperRight:before{content:"\EA7C"}.mi-Bus:before{content:"\EA7D"}.mi-BusSolid:before{content:"\EA7E"}.mi-ButtonA:before{content:"\EA7F"}.mi-ButtonB:before{content:"\EA80"}.mi-ButtonMenu:before{content:"\EA81"}.mi-ButtonView2:before{content:"\EA82"}.mi-ButtonX:before{content:"\EA83"}.mi-ButtonY:before{content:"\EA84"}.mi-CC:before,.mi-CCLegacy:before{content:"\EA85"}.mi-CCEuro:before,.mi-CCEuroLegacy:before{content:"\EA87"}.mi-CCJapan:before,.mi-CCJapanLegacy:before{content:"\EA89"}.mi-Cafe:before{content:"\EA8A"}.mi-Calculator:before,.mi-CalculatorLegacy:before{content:"\EA8B"}.mi-CalculatorAddition:before{content:"\EA8C"}.mi-BackSpaceQWERTY:before,.mi-CalculatorBackspace:before{content:"\EA8D"}.mi-CalculatorDivide:before{content:"\EA8E"}.mi-CalculatorEqualTo:before{content:"\EA8F"}.mi-CalculatorMultiply:before{content:"\EA90"}.mi-CalculatorNegate:before{content:"\EA91"}.mi-CalculatorPercentage:before{content:"\EA92"}.mi-CalculatorSquareroot:before{content:"\EA93"}.mi-CalculatorSubtract:before{content:"\EA94"}.mi-Calendar:before,.mi-CalendarLegacy:before{content:"\EA95"}.mi-CalendarDay:before,.mi-CalendarDayLegacy:before{content:"\EA96"}.mi-CalendarLegacyMirrored:before,.mi-CalendarMirrored:before{content:"\EA97"}.mi-CalendarReply:before,.mi-CalendarReplyLegacy:before{content:"\EA98"}.mi-CalendarSolid:before{content:"\EA99"}.mi-CalendarWeek:before,.mi-CalendarWeekLegacy:before{content:"\EA9A"}.mi-CallForwardInternational:before{content:"\EA9B"}.mi-CallForwardInternationalMirrored:before{content:"\EA9C"}.mi-CallForwardRoaming:before{content:"\EA9D"}.mi-CallForwardRoamingMirrored:before{content:"\EA9E"}.mi-CallForwarding:before{content:"\EA9F"}.mi-CallForwardingMirrored:before{content:"\EAA0"}.mi-CalligraphyFill:before{content:"\EAA1"}.mi-CalligraphyPen:before{content:"\EAA2"}.mi-Calories:before{content:"\EAA3"}.mi-Camera:before,.mi-CameraLegacy:before{content:"\EAA4"}.mi-Cancel:before,.mi-CancelLegacy:before{content:"\EAA5"}.mi-Caption:before,.mi-CaptionLegacy:before{content:"\EAA6"}.mi-Car:before,.mi-DrivingMode:before{content:"\EAA7"}.mi-CaretBottomRightSolidCenter8:before{content:"\EAA8"}.mi-CaretDownSolid8:before{content:"\EAA9"}.mi-CaretLeftSolid8:before{content:"\EAAA"}.mi-CaretRight8:before{content:"\EAAB"}.mi-CaretRightSolid8:before{content:"\EAAC"}.mi-CaretUpSolid8:before{content:"\EAAD"}.mi-CashDrawer:before{content:"\EAAE"}.mi-CellPhone:before,.mi-CellPhoneLegacy:before,.mi-MobileContactLegacy:before{content:"\EAAF"}.mi-Certificate:before{content:"\EAB0"}.mi-CharacterAppearance:before{content:"\EAB1"}.mi-Characters:before,.mi-CharactersLegacy:before{content:"\EAB2"}.mi-ChatBubbles:before{content:"\EAB3"}.mi-CheckList:before{content:"\EAB4"}.mi-CheckMark:before,.mi-CheckMarkLegacy:before,.mi-CheckMarkZeroWidthLegacy:before{content:"\EAB5"}.mi-Checkbox:before,.mi-CheckboxLegacy:before{content:"\EAB6"}.mi-Checkbox14:before{content:"\EAB7"}.mi-CheckboxComposite:before,.mi-CheckboxCompositeLegacy:before{content:"\EAB8"}.mi-CheckboxComposite14:before{content:"\EAB9"}.mi-CheckboxCompositeReversed:before,.mi-CheckboxCompositeReversedLegacy:before{content:"\EABA"}.mi-CheckboxIndeterminate:before,.mi-CheckboxIndeterminateLegacy:before{content:"\EABC"}.mi-CheckboxIndeterminateCombo:before{content:"\EABD"}.mi-CheckboxIndeterminateCombo14:before{content:"\EABE"}.mi-ChecklistMirrored:before{content:"\EABF"}.mi-ChevronDown1Legacy:before,.mi-ChevronDown2Legacy:before,.mi-ChevronDown3Legacy:before,.mi-ChevronDown4Legacy:before,.mi-ChevronDown:before,.mi-ChevronFlipDownLegacy:before,.mi-ScrollChevronDownBoldLegacy:before,.mi-ScrollChevronDownLegacy:before{content:"\EAC0"}.mi-ChevronDownMed:before{content:"\EAC1"}.mi-ChevronDownSmLegacy:before,.mi-ChevronDownSmall:before{content:"\EAC2"}.mi-ChevronFlipLeftLegacy:before,.mi-ChevronLeft1Legacy:before,.mi-ChevronLeft2Legacy:before,.mi-ChevronLeft3Legacy:before,.mi-ChevronLeft4Legacy:before,.mi-ChevronLeft:before,.mi-ScrollChevronLeftBoldLegacy:before,.mi-ScrollChevronLeftLegacy:before{content:"\EAC3"}.mi-ChevronLeftMed:before{content:"\EAC4"}.mi-ChevronLeftSmLegacy:before,.mi-ChevronLeftSmall:before{content:"\EAC5"}.mi-ChevronFlipRightLegacy:before,.mi-ChevronRight1Legacy:before,.mi-ChevronRight2Legacy:before,.mi-ChevronRight3Legacy:before,.mi-ChevronRight4Legacy:before,.mi-ChevronRight:before,.mi-ScrollChevronRightBoldLegacy:before,.mi-ScrollChevronRightLegacy:before{content:"\EAC6"}.mi-ChevronRightMed:before{content:"\EAC7"}.mi-ChevronRightSmLegacy:before,.mi-ChevronRightSmall:before{content:"\EAC8"}.mi-ChevronFlipUpLegacy:before,.mi-ChevronUp1Legacy:before,.mi-ChevronUp2Legacy:before,.mi-ChevronUp3Legacy:before,.mi-ChevronUp4Legacy:before,.mi-ChevronUp:before,.mi-ScrollChevronUpBoldLegacy:before,.mi-ScrollChevronUpLegacy:before{content:"\EAC9"}.mi-ChevronUpMed:before{content:"\EACA"}.mi-ChevronUpSmall:before{content:"\EACB"}.mi-ChineseBoPoMoFo:before{content:"\EACC"}.mi-ChineseChangjie:before{content:"\EACD"}.mi-ChinesePinyin:before{content:"\EACE"}.mi-ChinesePunctuation:before{content:"\EACF"}.mi-ChineseQuick:before{content:"\EAD0"}.mi-ChipCardCreditCardReader:before{content:"\EAD1"}.mi-ChromeAnnotate:before{content:"\EAD2"}.mi-ChromeAnnotateContrast:before{content:"\EAD3"}.mi-ChromeBack:before{content:"\EAD4"}.mi-ChromeBackContrast:before{content:"\EAD5"}.mi-ChromeBackContrastMirrored:before{content:"\EAD6"}.mi-ChromeBackMirrored:before{content:"\EAD7"}.mi-ChromeBackToWindow:before{content:"\EAD8"}.mi-ChromeBackToWindowContrast:before{content:"\EAD9"}.mi-ChromeClose:before{content:"\EADA"}.mi-ChromeCloseContrast:before{content:"\EADB"}.mi-ChromeFullScreen:before{content:"\EADC"}.mi-ChromeFullScreenContrast:before{content:"\EADD"}.mi-ChromeMaximize:before{content:"\EADE"}.mi-ChromeMaximizeContrast:before{content:"\EADF"}.mi-ChromeMinimize:before{content:"\EAE0"}.mi-ChromeMinimizeContrast:before{content:"\EAE1"}.mi-ChromeRestore:before{content:"\EAE2"}.mi-ChromeRestoreContrast:before{content:"\EAE3"}.mi-ChromeSwitch:before{content:"\EAE4"}.mi-ChromeSwitchContast:before{content:"\EAE5"}.mi-CircleFill:before{content:"\EAE6"}.mi-CircleFillBadge12:before{content:"\EAE7"}.mi-CircleRing:before{content:"\EAE8"}.mi-CircleRingBadge12:before{content:"\EAE9"}.mi-CityNext:before{content:"\EAEA"}.mi-CityNext2:before{content:"\EAEB"}.mi-Clear:before,.mi-ClearLegacy:before{content:"\EAEC"}.mi-ClearAllInk:before{content:"\EAED"}.mi-ClearAllInkMirrored:before{content:"\EAEE"}.mi-ClearSelection:before,.mi-ClearSelectionLegacy:before{content:"\EAEF"}.mi-ClearSelectionLegacyMirrored:before,.mi-ClearSelectionMirrored:before{content:"\EAF0"}.mi-Click:before{content:"\EAF1"}.mi-ClipboardList:before{content:"\EAF2"}.mi-ClipboardListMirrored:before{content:"\EAF3"}.mi-ClippingTool:before{content:"\EAF4"}.mi-Clock:before,.mi-ClockLegacy:before{content:"\EAF6"}.mi-ClosePane:before,.mi-ClosePaneLegacy:before{content:"\EAF7"}.mi-ClosePaneLegacyMirrored:before,.mi-ClosePaneMirrored:before{content:"\EAF8"}.mi-Cloud:before{content:"\EAF9"}.mi-CloudPrinter:before{content:"\EAFA"}.mi-CloudSeach:before{content:"\EAFB"}.mi-Code:before{content:"\EAFC"}.mi-CollapseContent:before{content:"\EAFD"}.mi-CollapseContentSingle:before{content:"\EAFE"}.mi-CollateLandscape:before{content:"\EAFF"}.mi-CollateLandscapeSeparated:before{content:"\EB00"}.mi-CollatePortrait:before{content:"\EB01"}.mi-CollatePortraitSeparated:before{content:"\EB02"}.mi-Color:before,.mi-ColorLegacy:before{content:"\EB03"}.mi-ColorOff:before{content:"\EB04"}.mi-CommaKey:before{content:"\EB05"}.mi-CommandPrompt:before{content:"\EB06"}.mi-Comment:before,.mi-CommentLegacy:before{content:"\EB07"}.mi-Communications:before{content:"\EB08"}.mi-CompanionApp:before{content:"\EB09"}.mi-CompanionDeviceFramework:before{content:"\EB0A"}.mi-Completed:before{content:"\EB0B"}.mi-CompletedSolid:before{content:"\EB0C"}.mi-Component:before{content:"\EB0D"}.mi-Connect:before{content:"\EB0E"}.mi-ConnectApp:before,.mi-MiracastLogoLarge:before{content:"\EB0F"}.mi-Connected:before{content:"\EB10"}.mi-Construction:before{content:"\EB11"}.mi-ConstructionCone:before{content:"\EB12"}.mi-ConstructionSolid:before{content:"\EB13"}.mi-Contact3Legacy:before,.mi-Contact:before,.mi-ContactLegacy:before{content:"\EB14"}.mi-Contact2:before,.mi-Contact2Legacy:before{content:"\EB15"}.mi-ContactInfo:before,.mi-ContactInfoLegacy:before{content:"\EB16"}.mi-ContactInfoMirrored:before{content:"\EB17"}.mi-ContactPresence:before,.mi-ContactPresenceLegacy:before{content:"\EB18"}.mi-ContactSolid:before{content:"\EB19"}.mi-Copy:before,.mi-CopyLegacy:before{content:"\EB1A"}.mi-CopyTo:before{content:"\EB1B"}.mi-Courthouse:before{content:"\EB1C"}.mi-Crop:before,.mi-CropLegacy:before{content:"\EB1D"}.mi-CtrlSpatialLeft:before{content:"\EB1E"}.mi-CtrlSpatialRight:before{content:"\EB1F"}.mi-Cut:before,.mi-CutLegacy:before{content:"\EB20"}.mi-DMC:before{content:"\EB21"}.mi-DashKey:before{content:"\EB22"}.mi-DataSense:before{content:"\EB23"}.mi-DataSenseBar:before{content:"\EB24"}.mi-DateTime:before{content:"\EB25"}.mi-DateTimeMirrored:before{content:"\EB26"}.mi-DecreaseIndent:before,.mi-DecreaseIndentLegacy:before{content:"\EB28"}.mi-DecreaseIndentLegacyMirrored:before,.mi-DecreaseIndentMirrored:before{content:"\EB2A"}.mi-DefaultAPN:before{content:"\EB2B"}.mi-DefenderApp:before{content:"\EB2C"}.mi-DefenderBadge12:before{content:"\EB2D"}.mi-Delete:before,.mi-DeleteLegacy:before{content:"\EB2E"}.mi-Design:before{content:"\EB2F"}.mi-DetachablePC:before{content:"\EB30"}.mi-DevUpdate:before{content:"\EB31"}.mi-DeveloperTools:before{content:"\EB32"}.mi-DeviceDiscovery:before{content:"\EB33"}.mi-DeviceLaptopNoPic:before{content:"\EB34"}.mi-DeviceLaptopPic:before{content:"\EB35"}.mi-DeviceMonitorLeftPic:before{content:"\EB36"}.mi-DeviceMonitorNoPic:before{content:"\EB37"}.mi-DeviceMonitorRightPic:before{content:"\EB38"}.mi-Devices:before{content:"\EB39"}.mi-Devices3:before{content:"\EB3B"}.mi-Devices4:before{content:"\EB3C"}.mi-Devices2:before,.mi-DevicesLegacy:before{content:"\EB3D"}.mi-Diagnostic:before{content:"\EB3E"}.mi-Dial1:before{content:"\EB3F"}.mi-Dial10:before{content:"\EB40"}.mi-Dial11:before{content:"\EB41"}.mi-Dial12:before{content:"\EB42"}.mi-Dial13:before{content:"\EB43"}.mi-Dial14:before{content:"\EB44"}.mi-Dial15:before{content:"\EB45"}.mi-Dial16:before{content:"\EB46"}.mi-Dial2:before{content:"\EB47"}.mi-Dial3:before{content:"\EB48"}.mi-Dial4:before{content:"\EB49"}.mi-Dial5:before{content:"\EB4A"}.mi-Dial6:before{content:"\EB4B"}.mi-Dial7:before{content:"\EB4C"}.mi-Dial8:before{content:"\EB4D"}.mi-Dial9:before{content:"\EB4E"}.mi-DialShape1:before{content:"\EB4F"}.mi-DialShape2:before{content:"\EB50"}.mi-DialShape3:before{content:"\EB51"}.mi-DialShape4:before{content:"\EB52"}.mi-DialUp:before{content:"\EB53"}.mi-Dialpad:before{content:"\EB54"}.mi-Dictionary:before{content:"\EB55"}.mi-DictionaryAdd:before{content:"\EB56"}.mi-DictionaryCloud:before{content:"\EB57"}.mi-DirectAccess:before{content:"\EB58"}.mi-Directions:before,.mi-DirectionsLegacy:before{content:"\EB59"}.mi-DisableUpdates:before,.mi-DisableUpdatesLegacy:before{content:"\EB5A"}.mi-DisconnectDisplay:before{content:"\EB5B"}.mi-DisconnectDrive:before,.mi-DisconnectDriveLegacy:before{content:"\EB5C"}.mi-Dislike:before,.mi-DislikeLegacy:before{content:"\EB5D"}.mi-Dock:before{content:"\EB5E"}.mi-DockBottom:before,.mi-DockBottomLegacy:before{content:"\EB5F"}.mi-DockLeft:before,.mi-DockLeftLegacy:before{content:"\EB60"}.mi-DockLeftLegacyMirrored:before,.mi-DockLeftMirrored:before{content:"\EB61"}.mi-DockRight:before,.mi-DockRightLegacy:before{content:"\EB62"}.mi-DockRightLegacyMirrored:before,.mi-DockRightMirrored:before{content:"\EB63"}.mi-Document:before,.mi-DocumentLegacy:before{content:"\EB64"}.mi-DoublePinyin:before{content:"\EB65"}.mi-Down:before,.mi-DownLegacy:before{content:"\EB66"}.mi-DownShiftKey:before{content:"\EB67"}.mi-Download:before,.mi-DownloadLegacy:before{content:"\EB68"}.mi-DownloadMap:before{content:"\EB69"}.mi-Dpad:before{content:"\EB6A"}.mi-Draw:before{content:"\EB6B"}.mi-DrawSolid:before{content:"\EB6C"}.mi-Drop:before{content:"\EB6D"}.mi-DullSound:before{content:"\EB6E"}.mi-DullSoundKey:before{content:"\EB6F"}.mi-DuplexLandscapeOneSided:before{content:"\EB70"}.mi-DuplexLandscapeOneSidedMirrored:before{content:"\EB71"}.mi-DuplexLandscapeTwoSidedLongEdge:before{content:"\EB72"}.mi-DuplexLandscapeTwoSidedLongEdgeMirrored:before{content:"\EB73"}.mi-DuplexLandscapeTwoSidedShortEdge:before{content:"\EB74"}.mi-DuplexLandscapeTwoSidedShortEdgeMirrored:before{content:"\EB75"}.mi-DuplexPortraitOneSided:before{content:"\EB76"}.mi-DuplexPortraitOneSidedMirrored:before{content:"\EB77"}.mi-DuplexPortraitTwoSidedLongEdge:before{content:"\EB78"}.mi-DuplexPortraitTwoSidedLongEdgeMirrored:before{content:"\EB79"}.mi-DuplexPortraitTwoSidedShortEdge:before{content:"\EB7A"}.mi-DuplexPortraitTwoSidedShortEdgeMirrored:before{content:"\EB7B"}.mi-DynamicLock:before{content:"\EB7C"}.mi-EMI:before{content:"\EB7D"}.mi-Ear:before{content:"\EB7E"}.mi-Earbud:before{content:"\EB7F"}.mi-EaseOfAccess:before,.mi-EaseOfAccessLegacy:before{content:"\EB80"}.mi-Edit:before,.mi-EditLegacy:before{content:"\EB81"}.mi-EditLegacyMirrored:before,.mi-EditMirrored:before{content:"\EB82"}.mi-Education:before{content:"\EB83"}.mi-Emoji:before,.mi-EmojiLegacy:before{content:"\EB84"}.mi-Emoji2:before,.mi-Emoji2Legacy:before{content:"\EB85"}.mi-EmojiSwatch:before{content:"\EB86"}.mi-EmojiTabCelebrationObjects:before{content:"\EB87"}.mi-EmojiTabFavorites:before{content:"\EB88"}.mi-EmojiTabFoodPlants:before{content:"\EB89"}.mi-EmojiTabPeople:before{content:"\EB8A"}.mi-EmojiTabSmilesAnimals:before{content:"\EB8B"}.mi-EmojiTabSymbols:before{content:"\EB8C"}.mi-EmojiTabTextSmiles:before{content:"\EB8D"}.mi-EmojiTabTransitPlaces:before{content:"\EB8E"}.mi-EndPointSolid:before{content:"\EB90"}.mi-EnglishPunctuation:before{content:"\EB91"}.mi-Equalizer:before{content:"\EB92"}.mi-EraseTool:before{content:"\EB93"}.mi-EraseToolFill:before{content:"\EB94"}.mi-EraseToolFill2:before{content:"\EB95"}.mi-Error:before{content:"\EB96"}.mi-ErrorBadge:before{content:"\EB97"}.mi-ErrorBadge12:before{content:"\EB98"}.mi-Ethernet:before{content:"\EB99"}.mi-EthernetError:before{content:"\EB9A"}.mi-EthernetWarning:before{content:"\EB9B"}.mi-ExpandTile:before,.mi-ExpandTileLegacy:before{content:"\EB9C"}.mi-ExpandTileLegacyMirrored:before,.mi-ExpandTileMirrored:before{content:"\EB9D"}.mi-ExploitProtectionSettings:before{content:"\EB9E"}.mi-ExploreContent:before{content:"\EB9F"}.mi-ExploreContentSingle:before{content:"\EBA0"}.mi-Export:before,.mi-ImportLegacyMirrored:before,.mi-ImportMirrored:before{content:"\EBA1"}.mi-EyeGaze:before{content:"\EBA2"}.mi-Eyedropper:before{content:"\EBA3"}.mi-Family:before{content:"\EBA4"}.mi-FastForward:before{content:"\EBA5"}.mi-Favicon:before{content:"\EBA6"}.mi-FavoriteList:before{content:"\EBA8"}.mi-FavoriteInlineLegacy:before,.mi-FavoriteStar:before,.mi-OutlineStarLegacy:before,.mi-RatingStarLegacy:before,.mi-Unfavorite2Legacy:before{content:"\EBA9"}.mi-Favorite2Legacy:before,.mi-FavoriteLegacy:before,.mi-FavoriteStarFill:before,.mi-RatingStarFillLegacy:before,.mi-RatingStarFillReducedPaddingHTMLLegacy:before,.mi-RatingStarFillSmallLegacy:before,.mi-RatingStarFillZeroWidthLegacy:before,.mi-SolidStarLegacy:before{content:"\EBAA"}.mi-Feedback:before{content:"\EBAB"}.mi-FeedbackApp:before{content:"\EBAC"}.mi-Ferry:before{content:"\EBAD"}.mi-FerrySolid:before{content:"\EBAE"}.mi-FileExplorer:before{content:"\EBAF"}.mi-FileExplorerApp:before{content:"\EBB0"}.mi-Filter:before,.mi-FilterLegacy:before{content:"\EBB1"}.mi-FingerInking:before{content:"\EBB2"}.mi-Fingerprint:before{content:"\EBB3"}.mi-FitPage:before{content:"\EBB4"}.mi-EndPoint:before,.mi-Flag:before,.mi-FlagLegacy:before{content:"\EBB5"}.mi-Flashlight:before{content:"\EBB6"}.mi-FlickDown:before{content:"\EBB7"}.mi-FlickLeft:before{content:"\EBB8"}.mi-FlickRight:before{content:"\EBB9"}.mi-FlickUp:before{content:"\EBBA"}.mi-Folder:before{content:"\EBBB"}.mi-FolderFill:before,.mi-FolderLegacy:before{content:"\EBBC"}.mi-FolderHorizontal:before{content:"\EBBD"}.mi-FolderOpen:before{content:"\EBBE"}.mi-Font:before,.mi-FontLegacy:before{content:"\EBBF"}.mi-FontColor:before,.mi-FontColorLegacy:before{content:"\EBC0"}.mi-FontColorKorean:before,.mi-FontColorKoreanLegacy:before{content:"\EBC2"}.mi-FontDecrease:before,.mi-FontDecreaseLegacy:before{content:"\EBC3"}.mi-FontIncrease:before,.mi-FontIncreaseLegacy:before{content:"\EBC4"}.mi-FontSize:before,.mi-FontSizeLegacy:before{content:"\EBC5"}.mi-FontStyleKorean:before,.mi-FontStyleKoreanLegacy:before{content:"\EBC7"}.mi-ArrowHTMLLegacyMirrored:before,.mi-BackBttnMirroredArrow20Legacy:before,.mi-BackBttnMirroredArrow42Legacy:before,.mi-Forward:before,.mi-ForwardLegacy:before{content:"\EBC8"}.mi-ForwardMirrored:before{content:"\EBC9"}.mi-ForwardSm:before{content:"\EBCA"}.mi-FourBars:before,.mi-FourBarsLegacy:before{content:"\EBCB"}.mi-FreeFormClipping:before{content:"\EBCC"}.mi-Frigid:before{content:"\EBCD"}.mi-FullAlpha:before{content:"\EBCE"}.mi-FullCircleMask:before{content:"\EBCF"}.mi-FullHiragana:before{content:"\EBD0"}.mi-FullKatakana:before{content:"\EBD1"}.mi-FullScreen:before,.mi-FullScreenLegacy:before{content:"\EBD2"}.mi-FuzzyReading:before{content:"\EBD3"}.mi-GIF:before{content:"\EBD4"}.mi-Game:before{content:"\EBD5"}.mi-GameConsole:before{content:"\EBD6"}.mi-GiftboxOpen:before{content:"\EBD7"}.mi-GlobalNavigationButton:before{content:"\EBD8"}.mi-Globe:before,.mi-GlobeLegacy:before{content:"\EBD9"}.mi-Go:before,.mi-GoLegacy:before{content:"\EBDA"}.mi-GoLegacyMirrored:before,.mi-GoMirrored:before{content:"\EBDB"}.mi-GoToStart:before,.mi-GoToStartLegacy:before{content:"\EBDC"}.mi-GotoToday:before,.mi-GotoTodayLegacy:before{content:"\EBDD"}.mi-GridView:before{content:"\EBDE"}.mi-GripperBarHorizontal:before{content:"\EBDF"}.mi-GripperBarVertical:before{content:"\EBE0"}.mi-GripperResize:before{content:"\EBE1"}.mi-GripperResizeMirrored:before{content:"\EBE2"}.mi-GripperTool:before{content:"\EBE3"}.mi-Groceries:before{content:"\EBE4"}.mi-Group:before{content:"\EBE5"}.mi-GroupList:before{content:"\EBE6"}.mi-GuestUser:before{content:"\EBE7"}.mi-HMD:before{content:"\EBE8"}.mi-HWPInsert:before{content:"\EBE9"}.mi-HWPJoin:before{content:"\EBEA"}.mi-HWPNewLine:before{content:"\EBEB"}.mi-HWPOverwrite:before{content:"\EBEC"}.mi-HWPScratchOut:before{content:"\EBED"}.mi-HWPSplit:before{content:"\EBEE"}.mi-HWPStrikeThrough:before{content:"\EBEF"}.mi-HalfAlpha:before{content:"\EBF0"}.mi-HalfDullSound:before{content:"\EBF1"}.mi-HalfKatakana:before{content:"\EBF2"}.mi-HalfStarLeft:before{content:"\EBF3"}.mi-HalfStarRight:before{content:"\EBF4"}.mi-Handwriting:before{content:"\EBF5"}.mi-HangUp:before,.mi-HangUpLegacy:before{content:"\EBF6"}.mi-HardDrive:before{content:"\EBF7"}.mi-HeadlessDevice:before{content:"\EBF8"}.mi-Headphone:before{content:"\EBF9"}.mi-Headphone0:before{content:"\EBFA"}.mi-Headphone1:before{content:"\EBFB"}.mi-Headphone2:before{content:"\EBFC"}.mi-Headphone3:before{content:"\EBFD"}.mi-Headset:before{content:"\EBFE"}.mi-Health:before{content:"\EBFF"}.mi-Heart:before,.mi-HeartLegacy:before{content:"\EC00"}.mi-HeartBroken:before{content:"\EC01"}.mi-HeartBrokenLegacy:before,.mi-HeartBrokenZeroWidthLegacy:before{content:"\EC02"}.mi-HeartFill:before,.mi-HeartFillLegacy:before,.mi-HeartFillZeroWidthLegacy:before{content:"\EC03"}.mi-Help:before,.mi-HelpLegacy:before{content:"\EC04"}.mi-HelpLegacyMirrored:before,.mi-HelpMirrored:before{content:"\EC05"}.mi-HideBcc:before,.mi-HideBccLegacy:before{content:"\EC06"}.mi-Highlight:before,.mi-HighlightLegacy:before{content:"\EC07"}.mi-HighlightFill:before{content:"\EC08"}.mi-HighlightFill2:before{content:"\EC09"}.mi-History:before{content:"\EC0A"}.mi-HolePunchLandscapeBottom:before{content:"\EC0B"}.mi-HolePunchLandscapeLeft:before{content:"\EC0C"}.mi-HolePunchLandscapeRight:before{content:"\EC0D"}.mi-HolePunchLandscapeTop:before{content:"\EC0E"}.mi-HolePunchOff:before{content:"\EC0F"}.mi-HolePunchPortraitBottom:before{content:"\EC10"}.mi-HolePunchPortraitLeft:before{content:"\EC11"}.mi-HolePunchPortraitRight:before{content:"\EC12"}.mi-HolePunchPortraitTop:before{content:"\EC13"}.mi-HoloLensSelected:before{content:"\EC14"}.mi-Home:before,.mi-HomeLegacy:before{content:"\EC15"}.mi-HomeGroup:before{content:"\EC16"}.mi-HomeSolid:before{content:"\EC17"}.mi-HorizontalTabKey:before{content:"\EC18"}.mi-IBeam:before{content:"\EC19"}.mi-IBeamOutline:before{content:"\EC1A"}.mi-IOT:before{content:"\EC1B"}.mi-ImageExport:before{content:"\EC1C"}.mi-ExportMirrored:before,.mi-Import:before,.mi-ImportLegacy:before{content:"\EC1D"}.mi-ImportAll:before,.mi-ImportAllLegacy:before{content:"\EC1E"}.mi-ImportAllLegacyMirrored:before,.mi-ImportAllMirrored:before{content:"\EC1F"}.mi-Important:before,.mi-ImportantLegacy:before{content:"\EC20"}.mi-ImportantBadge12:before{content:"\EC21"}.mi-InPrivate:before{content:"\EC22"}.mi-IncidentTriangle:before{content:"\EC23"}.mi-IncreaseIndent:before,.mi-IncreaseIndentLegacy:before{content:"\EC25"}.mi-IncreaseIndentLegacyMirrored:before,.mi-IncreaseIndentMirrored:before{content:"\EC27"}.mi-Info:before{content:"\EC28"}.mi-Info2:before{content:"\EC29"}.mi-InfoSolid:before{content:"\EC2A"}.mi-InkingCaret:before{content:"\EC2B"}.mi-InkingColorFill:before{content:"\EC2C"}.mi-InkingColorOutline:before{content:"\EC2D"}.mi-InkingTool:before{content:"\EC2E"}.mi-InkingToolFill:before{content:"\EC2F"}.mi-InkingToolFill2:before{content:"\EC30"}.mi-Input:before{content:"\EC31"}.mi-InsiderHubApp:before{content:"\EC32"}.mi-InteractiveDashboard:before{content:"\EC33"}.mi-Italic:before,.mi-ItalicLegacy:before{content:"\EC34"}.mi-ItalicC:before,.mi-ItalicCLegacy:before{content:"\EC36"}.mi-ItalicI:before,.mi-ItalicILegacy:before{content:"\EC38"}.mi-ItalicK:before,.mi-ItalicKLegacy:before{content:"\EC3A"}.mi-ItalicKorean:before,.mi-ItalicKoreanLegacy:before{content:"\EC3C"}.mi-ItalicRussian:before,.mi-ItalicRussianLegacy:before{content:"\EC3E"}.mi-Japanese:before{content:"\EC3F"}.mi-JpnRomanji:before{content:"\EC40"}.mi-JpnRomanjiLock:before{content:"\EC41"}.mi-JpnRomanjiShift:before{content:"\EC42"}.mi-JpnRomanjiShiftLock:before{content:"\EC43"}.mi-Key12On:before{content:"\EC44"}.mi-Keyboard12Key:before{content:"\EC46"}.mi-KeyboardBrightness:before{content:"\EC47"}.mi-KeyBoardLegacy:before,.mi-KeyboardClassic:before{content:"\EC48"}.mi-KeyboardDismiss:before{content:"\EC49"}.mi-KeyboardDock:before{content:"\EC4A"}.mi-KeyboardFull:before{content:"\EC4B"}.mi-KeyboardLeftAligned:before{content:"\EC4C"}.mi-KeyboardLeftDock:before{content:"\EC4D"}.mi-KeyboardLeftHanded:before{content:"\EC4E"}.mi-KeyboardLowerBrightness:before{content:"\EC4F"}.mi-KeyboardNarrow:before{content:"\EC50"}.mi-KeyboardOneHanded:before{content:"\EC51"}.mi-KeyboardRightAligned:before{content:"\EC52"}.mi-KeyboardRightDock:before{content:"\EC53"}.mi-KeyboardRightHanded:before{content:"\EC54"}.mi-KeyboardSettings:before{content:"\EC55"}.mi-KeyboardShortcut:before{content:"\EC56"}.mi-KeyboardSplit:before,.mi-KeyboardSplitLegacy:before{content:"\EC57"}.mi-KeyboardStandard:before,.mi-KeyboardStandardLegacy:before{content:"\EC58"}.mi-KeyboardUndock:before{content:"\EC59"}.mi-KnowledgeArticle:before{content:"\EC5A"}.mi-Korean:before{content:"\EC5B"}.mi-LEDLight:before{content:"\EC5C"}.mi-Label:before{content:"\EC5D"}.mi-LandscapeOrientation:before{content:"\EC5E"}.mi-LandscapeOrientationMirrored:before{content:"\EC5F"}.mi-LangJPN:before{content:"\EC60"}.mi-LanguageChs:before{content:"\EC61"}.mi-LanguageCht:before{content:"\EC62"}.mi-LanguageJpn:before{content:"\EC63"}.mi-LanguageKor:before{content:"\EC64"}.mi-LaptopSecure:before{content:"\EC65"}.mi-LaptopSelected:before{content:"\EC66"}.mi-LargeErase:before{content:"\EC67"}.mi-Layout:before,.mi-LayoutLegacy:before{content:"\EC69"}.mi-Leaf:before{content:"\EC6A"}.mi-LeaveChat:before,.mi-LeaveChatLegacy:before{content:"\EC6B"}.mi-LeaveChatMirrored:before{content:"\EC6C"}.mi-LeftArrowKeyTime0:before{content:"\EC6D"}.mi-LeftDoubleQuote:before{content:"\EC6E"}.mi-LeftQuote:before{content:"\EC6F"}.mi-LeftStick:before{content:"\EC70"}.mi-Lexicon:before{content:"\EC71"}.mi-Library:before,.mi-LibraryLegacy:before{content:"\EC72"}.mi-Light:before{content:"\EC73"}.mi-LightningBolt:before{content:"\EC75"}.mi-Like:before,.mi-LikeInlineLegacy:before,.mi-LikeLegacy:before{content:"\EC76"}.mi-LikeDislike:before,.mi-LikeDislikeLegacy:before{content:"\EC77"}.mi-LineDisplay:before{content:"\EC78"}.mi-Link:before,.mi-LinkLegacy:before{content:"\EC79"}.mi-List:before{content:"\EC7A"}.mi-ListMirrored:before{content:"\EC7B"}.mi-Location:before,.mi-LocationLegacy:before{content:"\EC7C"}.mi-Lock:before,.mi-LockLegacy:before{content:"\EC7D"}.mi-LockFeedback:before{content:"\EC7E"}.mi-LockScreenGlance:before{content:"\EC7F"}.mi-LockscreenDesktop:before{content:"\EC80"}.mi-LowerBrightness:before{content:"\EC81"}.mi-MagStripeReader:before{content:"\EC82"}.mi-Mail:before,.mi-MailLegacy:before{content:"\EC83"}.mi-MailBadge12:before{content:"\EC84"}.mi-MailFill:before,.mi-MailFillLegacy:before,.mi-MailMessageLegacy:before{content:"\EC85"}.mi-MailForward:before,.mi-MailForwardLegacy:before{content:"\EC86"}.mi-MailForwardLegacyMirrored:before,.mi-MailForwardMirrored:before{content:"\EC87"}.mi-MailReply:before,.mi-MailReplyLegacy:before{content:"\EC88"}.mi-MailReplyAll:before,.mi-MailReplyAllLegacy:before{content:"\EC89"}.mi-MailReplyAllLegacyMirrored:before,.mi-MailReplyAllMirrored:before{content:"\EC8A"}.mi-MailReplyLegacyMirrored:before,.mi-MailReplyMirrored:before{content:"\EC8B"}.mi-Manage:before,.mi-ManageLegacy:before{content:"\EC8C"}.mi-MapCompassBottom:before{content:"\EC8D"}.mi-MapCompassTop:before{content:"\EC8E"}.mi-MapDirections:before{content:"\EC8F"}.mi-MapDrive:before,.mi-MapDriveLegacy:before{content:"\EC90"}.mi-MapLayers:before{content:"\EC91"}.mi-MapLegacy:before,.mi-MapPin:before{content:"\EC92"}.mi-MapPin2:before,.mi-MapPinLegacy:before{content:"\EC94"}.mi-Marker:before{content:"\EC95"}.mi-Marquee:before{content:"\EC96"}.mi-Media:before{content:"\EC97"}.mi-MediaStorageTower:before{content:"\EC98"}.mi-Megaphone:before{content:"\EC99"}.mi-Memo:before,.mi-MemoLegacy:before{content:"\EC9A"}.mi-CommentInlineLegacy:before,.mi-Message:before,.mi-MessageLegacy:before{content:"\EC9B"}.mi-MicClipping:before{content:"\EC9C"}.mi-MicError:before{content:"\EC9D"}.mi-MicOff:before{content:"\EC9E"}.mi-MicOn:before{content:"\EC9F"}.mi-MicSleep:before{content:"\ECA0"}.mi-Microphone:before,.mi-MicrophoneLegacy:before{content:"\ECA1"}.mi-MicrophoneListening:before{content:"\ECA2"}.mi-MiracastLogoSmall:before{content:"\ECA3"}.mi-MixVolumes:before{content:"\ECA4"}.mi-MobActionCenter:before{content:"\ECA5"}.mi-MobAirplane:before{content:"\ECA6"}.mi-MobBattery0:before{content:"\ECA7"}.mi-MobBattery1:before{content:"\ECA8"}.mi-MobBattery10:before{content:"\ECA9"}.mi-MobBattery2:before{content:"\ECAA"}.mi-MobBattery3:before{content:"\ECAB"}.mi-MobBattery4:before{content:"\ECAC"}.mi-MobBattery5:before{content:"\ECAD"}.mi-MobBattery6:before{content:"\ECAE"}.mi-MobBattery7:before{content:"\ECAF"}.mi-MobBattery8:before{content:"\ECB0"}.mi-MobBattery9:before{content:"\ECB1"}.mi-MobBatteryCharging0:before{content:"\ECB2"}.mi-MobBatteryCharging1:before{content:"\ECB3"}.mi-MobBatteryCharging10:before{content:"\ECB4"}.mi-MobBatteryCharging2:before{content:"\ECB5"}.mi-MobBatteryCharging3:before{content:"\ECB6"}.mi-MobBatteryCharging4:before{content:"\ECB7"}.mi-MobBatteryCharging5:before{content:"\ECB8"}.mi-MobBatteryCharging6:before{content:"\ECB9"}.mi-MobBatteryCharging7:before{content:"\ECBA"}.mi-MobBatteryCharging8:before{content:"\ECBB"}.mi-MobBatteryCharging9:before{content:"\ECBC"}.mi-MobBatterySaver0:before{content:"\ECBD"}.mi-MobBatterySaver1:before{content:"\ECBE"}.mi-MobBatterySaver10:before{content:"\ECBF"}.mi-MobBatterySaver2:before{content:"\ECC0"}.mi-MobBatterySaver3:before{content:"\ECC1"}.mi-MobBatterySaver4:before{content:"\ECC2"}.mi-MobBatterySaver5:before{content:"\ECC3"}.mi-MobBatterySaver6:before{content:"\ECC4"}.mi-MobBatterySaver7:before{content:"\ECC5"}.mi-MobBatterySaver8:before{content:"\ECC6"}.mi-MobBatterySaver9:before{content:"\ECC7"}.mi-MobBatteryUnknown:before{content:"\ECC8"}.mi-MobBluetooth:before{content:"\ECC9"}.mi-MobCallForwarding:before{content:"\ECCA"}.mi-MobCallForwardingMirrored:before{content:"\ECCB"}.mi-MobDrivingMode:before{content:"\ECCC"}.mi-MobLocation:before{content:"\ECCD"}.mi-MobQuietHours:before{content:"\ECCE"}.mi-MobSIMError:before{content:"\ECCF"}.mi-MobSIMLock:before{content:"\ECD0"}.mi-MobSIMMissing:before{content:"\ECD1"}.mi-MobSignal1:before{content:"\ECD2"}.mi-MobSignal2:before{content:"\ECD3"}.mi-MobSignal3:before{content:"\ECD4"}.mi-MobSignal4:before{content:"\ECD5"}.mi-MobSignal5:before{content:"\ECD6"}.mi-MobWifi1:before{content:"\ECD7"}.mi-MobWifi2:before{content:"\ECD8"}.mi-MobWifi3:before{content:"\ECD9"}.mi-MobWifi4:before{content:"\ECDA"}.mi-MobWifiHotspot:before{content:"\ECDB"}.mi-MobWifiWarning1:before{content:"\ECDC"}.mi-MobWifiWarning2:before{content:"\ECDD"}.mi-MobWifiWarning3:before{content:"\ECDE"}.mi-MobWifiWarning4:before{content:"\ECDF"}.mi-MobeSIM:before{content:"\ECE0"}.mi-MobeSIMBusy:before{content:"\ECE1"}.mi-MobeSIMLocked:before{content:"\ECE2"}.mi-MobeSIMNoProfile:before{content:"\ECE3"}.mi-MobileLocked:before{content:"\ECE4"}.mi-MobileSelected:before{content:"\ECE5"}.mi-MobileTablet:before{content:"\ECE6"}.mi-More:before,.mi-MoreLegacy:before{content:"\ECE7"}.mi-Mouse:before{content:"\ECE8"}.mi-MoveToFolder:before,.mi-MoveToFolderLegacy:before{content:"\ECE9"}.mi-Movies:before{content:"\ECEA"}.mi-MultiSelect:before,.mi-MultiSelectLegacy:before{content:"\ECEB"}.mi-MultiSelectLegacyMirrored:before,.mi-MultiSelectMirrored:before{content:"\ECEC"}.mi-MultimediaDMP:before{content:"\ECED"}.mi-MultimediaDMS:before{content:"\ECEE"}.mi-MultimediaDVR:before{content:"\ECEF"}.mi-MultimediaPMP:before{content:"\ECF0"}.mi-Multitask:before{content:"\ECF1"}.mi-Multitask16:before{content:"\ECF2"}.mi-MultitaskExpanded:before{content:"\ECF3"}.mi-MusicAlbum:before{content:"\ECF4"}.mi-MusicInfo:before,.mi-MusicInfoLegacy:before{content:"\ECF5"}.mi-MusicNote:before{content:"\ECF6"}.mi-MusicSharing:before{content:"\ECF7"}.mi-MusicSharingOff:before{content:"\ECF8"}.mi-Mute:before,.mi-MuteLegacy:before{content:"\ECF9"}.mi-MyNetwork:before{content:"\ECFA"}.mi-NUIFPContinueSlideAction:before{content:"\ECFB"}.mi-NUIFPContinueSlideHand:before{content:"\ECFC"}.mi-NUIFPPressAction:before{content:"\ECFD"}.mi-NUIFPPressHand:before{content:"\ECFE"}.mi-NUIFPPressRepeatAction:before{content:"\ECFF"}.mi-NUIFPRollLeftAction:before{content:"\ED00"}.mi-NUIFPRollLeftHand:before{content:"\ED01"}.mi-NUIFPRollRightHand:before{content:"\ED02"}.mi-NUIFPRollRightHandAction:before{content:"\ED03"}.mi-NUIFPStartSlideAction:before{content:"\ED04"}.mi-NUIFPPressRepeatHand:before,.mi-NUIFPStartSlideHand:before{content:"\ED05"}.mi-NUIFace:before{content:"\ED06"}.mi-NUIIris:before{content:"\ED07"}.mi-Narrator:before{content:"\ED08"}.mi-NarratorForward:before{content:"\ED09"}.mi-NarratorForwardMirrored:before{content:"\ED0A"}.mi-NearbySharing:before{content:"\ED0B"}.mi-Network:before{content:"\ED0C"}.mi-NetworkAdapter:before{content:"\ED0D"}.mi-NetworkConnected:before{content:"\ED0E"}.mi-NetworkConnectedCheckmark:before{content:"\ED0F"}.mi-NetworkOffline:before{content:"\ED10"}.mi-NetworkPrinter:before{content:"\ED11"}.mi-NetworkSharing:before{content:"\ED12"}.mi-NetworkTower:before{content:"\ED13"}.mi-NewFolder:before,.mi-NewFolderLegacy:before{content:"\ED14"}.mi-NewWindow:before,.mi-NewWindowLegacy:before{content:"\ED15"}.mi-Next:before,.mi-NextLegacy:before{content:"\ED16"}.mi-NoiseCancelation:before{content:"\ED17"}.mi-NoiseCancelationOff:before{content:"\ED18"}.mi-OEM:before{content:"\ED19"}.mi-OneBar:before,.mi-OneBarLegacy:before{content:"\ED1A"}.mi-OpenFile:before,.mi-OpenFileLegacy:before{content:"\ED1B"}.mi-OpenFolderHorizontal:before{content:"\ED1C"}.mi-OpenInNewWindow:before,.mi-OpenInNewWindowLegacy:before{content:"\ED1D"}.mi-OpenLocal:before,.mi-OpenLocalLegacy:before{content:"\ED1E"}.mi-OpenPane:before,.mi-OpenPaneLegacy:before{content:"\ED1F"}.mi-OpenPaneLegacyMirrored:before,.mi-OpenPaneMirrored:before{content:"\ED20"}.mi-OpenWith:before,.mi-OpenWithLegacy:before{content:"\ED21"}.mi-OpenWithLegacyMirrored:before,.mi-OpenWithMirrored:before{content:"\ED22"}.mi-Orientation:before,.mi-OrientationLegacy:before{content:"\ED23"}.mi-OtherUser:before,.mi-OtherUserLegacy:before{content:"\ED24"}.mi-OutlineHalfStarLeft:before{content:"\ED25"}.mi-OutlineHalfStarRight:before{content:"\ED26"}.mi-OutlineQuarterStarLeft:before{content:"\ED27"}.mi-OutlineQuarterStarRight:before{content:"\ED28"}.mi-OutlineStarLeftHalf:before{content:"\ED29"}.mi-OutlineStarRightHalf:before{content:"\ED2A"}.mi-OutlineThreeQuarterStarLeft:before{content:"\ED2B"}.mi-OutlineThreeQuarterStarRight:before{content:"\ED2C"}.mi-PC1:before,.mi-PC1Legacy:before{content:"\ED2D"}.mi-PINPad:before{content:"\ED2E"}.mi-PLAP:before{content:"\ED2F"}.mi-PPSFourLandscape:before{content:"\ED30"}.mi-PPSFourPortrait:before{content:"\ED31"}.mi-PPSOneLandscape:before{content:"\ED32"}.mi-PPSOnePortrait:before{content:"\ED33"}.mi-PPSTwoLandscape:before{content:"\ED34"}.mi-PPSTwoPortrait:before{content:"\ED35"}.mi-Package:before{content:"\ED36"}.mi-Page:before,.mi-PageLegacy:before{content:"\ED37"}.mi-PageLeft:before{content:"\ED38"}.mi-PageMarginLandscapeModerate:before{content:"\ED39"}.mi-PageMarginLandscapeNarrow:before{content:"\ED3A"}.mi-PageMarginLandscapeNormal:before{content:"\ED3B"}.mi-PageMarginLandscapeWide:before{content:"\ED3C"}.mi-PageMarginPortraitModerate:before{content:"\ED3D"}.mi-PageMarginPortraitNarrow:before{content:"\ED3E"}.mi-PageMarginPortraitNormal:before{content:"\ED3F"}.mi-PageMarginPortraitWide:before{content:"\ED40"}.mi-PageMirrored:before{content:"\ED41"}.mi-PageRight:before{content:"\ED42"}.mi-PageFillLegacy:before,.mi-PageSolid:before{content:"\ED43"}.mi-PaginationDotOutline10:before{content:"\ED44"}.mi-PaginationDotSolid10:before{content:"\ED45"}.mi-PanMode:before{content:"\ED46"}.mi-ParkingLocation:before{content:"\ED47"}.mi-ParkingLocationMirrored:before{content:"\ED48"}.mi-ParkingLocationSolid:before{content:"\ED49"}.mi-PartyLeader:before{content:"\ED4A"}.mi-PassiveAuthentication:before{content:"\ED4B"}.mi-PasswordKeyHide:before{content:"\ED4C"}.mi-PasswordKeyShow:before{content:"\ED4D"}.mi-Paste:before,.mi-PasteLegacy:before{content:"\ED4E"}.mi-Pause:before,.mi-PauseLegacy:before{content:"\ED4F"}.mi-PauseBadge12:before{content:"\ED50"}.mi-PaymentCard:before{content:"\ED51"}.mi-PenPalette:before{content:"\ED52"}.mi-PenPaletteMirrored:before{content:"\ED53"}.mi-PenTips:before{content:"\ED54"}.mi-PenTipsMirrored:before{content:"\ED55"}.mi-PenWorkspace:before{content:"\ED56"}.mi-PenWorkspaceMirrored:before{content:"\ED57"}.mi-Pencil:before{content:"\ED58"}.mi-PencilFill:before{content:"\ED59"}.mi-People:before,.mi-PeopleLegacy:before{content:"\ED5A"}.mi-PeriodKey:before{content:"\ED5B"}.mi-Permissions:before,.mi-PermissionsLegacy:before{content:"\ED5C"}.mi-PersonalFolder:before{content:"\ED5D"}.mi-Personalize:before{content:"\ED5E"}.mi-Phone:before,.mi-PhoneLegacy:before{content:"\ED5F"}.mi-PhoneBook:before,.mi-PhoneBookLegacy:before{content:"\ED60"}.mi-Photo:before{content:"\ED61"}.mi-Photo2:before{content:"\ED62"}.mi-Picture:before,.mi-PictureLegacy:before{content:"\ED63"}.mi-PieSingle:before{content:"\ED64"}.mi-Pin:before,.mi-PinLegacy:before{content:"\ED65"}.mi-PinFill:before{content:"\ED66"}.mi-Pinned:before{content:"\ED67"}.mi-PinnedFill:before{content:"\ED68"}.mi-PinyinIMELogo:before{content:"\ED69"}.mi-PlaceFolder:before,.mi-PlaceFolderLegacy:before{content:"\ED6B"}.mi-Play:before,.mi-PlayLegacy:before{content:"\ED6C"}.mi-Play36:before{content:"\ED6D"}.mi-PlayBadge12:before{content:"\ED6E"}.mi-PlayOn:before,.mi-PlayOnLegacy:before{content:"\ED70"}.mi-PlaySolid:before{content:"\ED71"}.mi-PlaybackRate1x:before{content:"\ED72"}.mi-PlaybackRateOther:before{content:"\ED73"}.mi-PlayerSettings:before{content:"\ED74"}.mi-PointErase:before{content:"\ED75"}.mi-PointEraseMirrored:before{content:"\ED76"}.mi-PointerHand:before{content:"\ED77"}.mi-PoliceCar:before{content:"\ED78"}.mi-PostUpdate:before,.mi-PostUpdateLegacy:before{content:"\ED79"}.mi-PowerButton:before{content:"\ED7A"}.mi-CheckboxFill:before,.mi-CheckboxFillLegacy:before,.mi-CheckboxFillZeroWidthLegacy:before,.mi-PresenceChicklet:before,.mi-PresenceChickletLegacy:before,.mi-ResizeMouseLarge:before{content:"\ED7B"}.mi-PresenceChickletVideo:before,.mi-PresenceChickletVideoLegacy:before{content:"\ED7C"}.mi-Preview:before,.mi-PreviewLegacy:before{content:"\ED7D"}.mi-PreviewLink:before,.mi-PreviewLinkLegacy:before{content:"\ED7E"}.mi-Previous:before,.mi-PreviousLegacy:before{content:"\ED7F"}.mi-Print:before,.mi-PrintLegacy:before{content:"\ED80"}.mi-PrintAllPages:before{content:"\ED81"}.mi-PrintCustomRange:before{content:"\ED82"}.mi-PrintDefault:before{content:"\ED83"}.mi-Printer3D:before{content:"\ED84"}.mi-Printer3DLegacy:before{content:"\ED85"}.mi-PrintfaxPrinterFile:before{content:"\ED86"}.mi-Priority:before,.mi-PriorityLegacy:before{content:"\ED87"}.mi-Process:before{content:"\ED88"}.mi-Processing:before{content:"\ED89"}.mi-ProgressRingDots:before{content:"\ED8A"}.mi-Project:before{content:"\ED8B"}.mi-Projector:before{content:"\ED8C"}.mi-ProtectedDocument:before,.mi-ProtectedDocumentLegacy:before{content:"\ED8D"}.mi-Protractor:before{content:"\ED8E"}.mi-ProvisioningPackage:before{content:"\ED8F"}.mi-PuncKey:before{content:"\ED90"}.mi-PuncKey0:before{content:"\ED91"}.mi-PuncKey1:before{content:"\ED92"}.mi-PuncKey2:before{content:"\ED93"}.mi-PuncKey3:before{content:"\ED94"}.mi-PuncKey4:before{content:"\ED95"}.mi-PuncKey5:before{content:"\ED96"}.mi-PuncKey6:before{content:"\ED97"}.mi-PuncKey7:before{content:"\ED98"}.mi-PuncKey8:before{content:"\ED99"}.mi-PuncKey9:before{content:"\ED9A"}.mi-PuncKeyLeftBottom:before{content:"\ED9B"}.mi-PuncKeyRightBottom:before{content:"\ED9C"}.mi-Puzzle:before{content:"\ED9D"}.mi-QWERTYOff:before{content:"\ED9E"}.mi-QWERTYOn:before{content:"\ED9F"}.mi-QuarentinedItems:before{content:"\EDA0"}.mi-QuarentinedItemsMirrored:before{content:"\EDA1"}.mi-QuarterStarLeft:before{content:"\EDA2"}.mi-QuarterStarRight:before{content:"\EDA3"}.mi-QuickNote:before{content:"\EDA4"}.mi-QuietHours:before{content:"\EDA5"}.mi-QuietHoursBadge12:before{content:"\EDA6"}.mi-Radar:before{content:"\EDA7"}.mi-RadioBtnOff:before{content:"\EDA8"}.mi-RadioBtnOn:before{content:"\EDA9"}.mi-RadioBullet:before{content:"\EDAA"}.mi-RadioBullet2:before{content:"\EDAB"}.mi-Read:before,.mi-ReadLegacy:before{content:"\EDAC"}.mi-ReadingList:before{content:"\EDAD"}.mi-ReceiptPrinter:before{content:"\EDAE"}.mi-LengthLegacy:before,.mi-Recent:before{content:"\EDAF"}.mi-Record:before,.mi-RecordLegacy:before{content:"\EDB0"}.mi-RectangularClipping:before{content:"\EDB1"}.mi-RedEye:before{content:"\EDB2"}.mi-Redo:before,.mi-RedoLegacy:before{content:"\EDB3"}.mi-ReduceTile:before,.mi-ReduceTileLegacy:before{content:"\EDB5"}.mi-ReduceTileLegacyMirrored:before,.mi-ReduceTileMirrored:before{content:"\EDB7"}.mi-Refresh:before,.mi-RefreshLegacy:before,.mi-RepeatAll:before,.mi-RepeatAllLegacy:before{content:"\EDB8"}.mi-Relationship:before{content:"\EDB9"}.mi-RememberedDevice:before{content:"\EDBA"}.mi-Reminder:before{content:"\EDBB"}.mi-ReminderFill:before{content:"\EDBC"}.mi-Remote:before,.mi-RemoteLegacy:before{content:"\EDBD"}.mi-Remove:before,.mi-RemoveLegacy:before{content:"\EDBE"}.mi-RemoveFrom:before{content:"\EDBF"}.mi-Rename:before,.mi-RenameLegacy:before{content:"\EDC0"}.mi-Repair:before,.mi-RepairLegacy:before{content:"\EDC1"}.mi-RepeatOne:before,.mi-RepeatOneLegacy:before{content:"\EDC2"}.mi-Replay:before{content:"\EDC3"}.mi-Reply:before,.mi-ReplyLegacy:before{content:"\EDC4"}.mi-ReplyMirrored:before{content:"\EDC5"}.mi-ReportDocument:before{content:"\EDC6"}.mi-ReportHacked:before,.mi-ReportHackedLegacy:before{content:"\EDC7"}.mi-ResetDevice:before{content:"\EDC8"}.mi-ResetDrive:before{content:"\EDC9"}.mi-Reshare:before,.mi-ReshareLegacy:before{content:"\EDCA"}.mi-ResizeMouseMedium:before{content:"\EDCB"}.mi-ResizeMouseMediumMirrored:before{content:"\EDCC"}.mi-ResizeMouseSmall:before{content:"\EDCD"}.mi-ResizeMouseSmallMirrored:before{content:"\EDCE"}.mi-ResizeMouseTall:before{content:"\EDCF"}.mi-ResizeMouseTallMirrored:before{content:"\EDD0"}.mi-ResizeMouseWide:before{content:"\EDD1"}.mi-ResizeTouchLarger:before{content:"\EDD2"}.mi-ResizeTouchNarrower:before{content:"\EDD3"}.mi-ResizeTouchNarrowerMirrored:before{content:"\EDD4"}.mi-ResizeTouchShorter:before{content:"\EDD5"}.mi-ResizeTouchSmaller:before{content:"\EDD6"}.mi-Resolution:before,.mi-ResolutionLegacy:before{content:"\EDD8"}.mi-ReturnKey:before{content:"\EDD9"}.mi-ReturnKeyLg:before{content:"\EDDA"}.mi-ReturnKeySm:before{content:"\EDDB"}.mi-ReturnToWindow:before,.mi-ReturnToWindowLegacy:before{content:"\EDDC"}.mi-RevToggleKey:before{content:"\EDDD"}.mi-Rewind:before{content:"\EDDE"}.mi-RightArrowKeyTime0:before{content:"\EDDF"}.mi-RightArrowKeyTime1:before{content:"\EDE0"}.mi-RightArrowKeyTime2:before{content:"\EDE1"}.mi-RightArrowKeyTime3:before{content:"\EDE2"}.mi-RightArrowKeyTime4:before{content:"\EDE3"}.mi-RightDoubleQuote:before{content:"\EDE4"}.mi-RightQuote:before{content:"\EDE5"}.mi-RightStick:before{content:"\EDE6"}.mi-Ringer:before{content:"\EDE7"}.mi-RingerBadge12:before{content:"\EDE8"}.mi-RingerSilent:before{content:"\EDE9"}.mi-RoamingDomestic:before{content:"\EDEA"}.mi-RoamingInternational:before{content:"\EDEB"}.mi-Robot:before{content:"\EDEC"}.mi-Rotate:before{content:"\EDED"}.mi-RotateCamera:before,.mi-RotateCameraLegacy:before{content:"\EDEE"}.mi-RotateLegacy:before{content:"\EDEF"}.mi-RotateMapLeft:before{content:"\EDF0"}.mi-RotateMapRight:before{content:"\EDF1"}.mi-RotationLock:before{content:"\EDF2"}.mi-Ruler:before{content:"\EDF3"}.mi-SDCard:before{content:"\EDF4"}.mi-SIMError:before{content:"\EDF5"}.mi-SIMLock:before{content:"\EDF6"}.mi-SIMMissing:before{content:"\EDF7"}.mi-SIPMove:before{content:"\EDF8"}.mi-SIPRedock:before{content:"\EDF9"}.mi-SIPUndock:before{content:"\EDFA"}.mi-Safe:before{content:"\EDFB"}.mi-Save:before,.mi-SaveLegacy:before{content:"\EDFC"}.mi-SaveAs:before,.mi-SaveAsLegacy:before{content:"\EDFD"}.mi-SaveCopy:before{content:"\EDFE"}.mi-SaveLocal:before,.mi-SaveLocalLegacy:before{content:"\EDFF"}.mi-Scan:before,.mi-ScanLegacy:before{content:"\EE00"}.mi-ScreenTime:before{content:"\EE01"}.mi-ScrollMode:before{content:"\EE02"}.mi-ScrollUpDown:before{content:"\EE03"}.mi-FindLegacy:before,.mi-Search:before,.mi-SearchboxLegacy:before{content:"\EE04"}.mi-SearchAndApps:before{content:"\EE05"}.mi-SelectAll:before,.mi-SelectAllLegacy:before{content:"\EE06"}.mi-SemanticZoom:before,.mi-SemanticZoomLegacy:before{content:"\EE08"}.mi-Send:before,.mi-SendLegacy:before{content:"\EE09"}.mi-SendFill:before{content:"\EE0A"}.mi-SendFillMirrored:before{content:"\EE0B"}.mi-SendMirrored:before{content:"\EE0C"}.mi-Sensor:before{content:"\EE0D"}.mi-Set:before{content:"\EE0E"}.mi-SetSolid:before{content:"\EE0F"}.mi-SetTile:before,.mi-SetTileLegacy:before{content:"\EE10"}.mi-SetlockScreen:before,.mi-SetlockScreenLegacy:before{content:"\EE11"}.mi-Settings:before,.mi-SettingsLegacy:before{content:"\EE12"}.mi-SettingsBattery:before{content:"\EE13"}.mi-SettingsDisplaySound:before{content:"\EE14"}.mi-Share:before{content:"\EE15"}.mi-ShareBroadband:before{content:"\EE16"}.mi-Shield:before{content:"\EE17"}.mi-Shop:before,.mi-ShopLegacy:before{content:"\EE18"}.mi-ShoppingCart:before{content:"\EE19"}.mi-ShowAllFiles1:before,.mi-ShowAllFiles1Legacy:before{content:"\EE1B"}.mi-ShowAllFiles3:before,.mi-ShowAllFiles3Legacy:before{content:"\EE1D"}.mi-ShowBcc:before,.mi-ShowBccLegacy:before{content:"\EE1E"}.mi-ShowResults:before,.mi-ShowResultsLegacy:before{content:"\EE1F"}.mi-ShowResultsLegacyMirrored:before,.mi-ShowResultsMirrored:before{content:"\EE20"}.mi-Shuffle:before,.mi-ShuffleLegacy:before{content:"\EE21"}.mi-SignalBars1:before{content:"\EE22"}.mi-SignalBars2:before{content:"\EE23"}.mi-SignalBars3:before{content:"\EE24"}.mi-SignalBars4:before{content:"\EE25"}.mi-SignalBars5:before{content:"\EE26"}.mi-SignalError:before{content:"\EE27"}.mi-SignalNotConnected:before{content:"\EE28"}.mi-SignalRoaming:before{content:"\EE29"}.mi-SignatureCapture:before{content:"\EE2A"}.mi-Size:before{content:"\EE2B"}.mi-SkipBack10:before{content:"\EE2C"}.mi-SkipForward30:before{content:"\EE2D"}.mi-SliderThumb:before{content:"\EE2E"}.mi-Slideshow:before,.mi-SlideshowLegacy:before{content:"\EE2F"}.mi-SlowMotionOn:before{content:"\EE30"}.mi-SmallErase:before{content:"\EE31"}.mi-Smartcard:before{content:"\EE32"}.mi-SmartcardVirtual:before{content:"\EE33"}.mi-Sort:before,.mi-SortLegacy:before{content:"\EE34"}.mi-SpatialVolume0:before{content:"\EE35"}.mi-SpatialVolume1:before{content:"\EE36"}.mi-SpatialVolume2:before{content:"\EE37"}.mi-SpatialVolume3:before{content:"\EE38"}.mi-Speakers:before{content:"\EE39"}.mi-Speech:before{content:"\EE3A"}.mi-SpeedHigh:before{content:"\EE3B"}.mi-SpeedMedium:before{content:"\EE3C"}.mi-SpeedOff:before{content:"\EE3D"}.mi-StaplingLandscapeBookBinding:before{content:"\EE3E"}.mi-StaplingLandscapeBottomLeft:before{content:"\EE3F"}.mi-StaplingLandscapeBottomRight:before{content:"\EE40"}.mi-StaplingLandscapeTopLeft:before{content:"\EE41"}.mi-StaplingLandscapeTopRight:before{content:"\EE42"}.mi-StaplingLandscapeTwoBottom:before{content:"\EE43"}.mi-StaplingLandscapeTwoLeft:before{content:"\EE44"}.mi-StaplingLandscapeTwoRight:before{content:"\EE45"}.mi-StaplingLandscapeTwoTop:before{content:"\EE46"}.mi-StaplingOff:before{content:"\EE47"}.mi-StaplingPortraitBookBinding:before{content:"\EE48"}.mi-StaplingPortraitBottomLeft:before{content:"\EE49"}.mi-StaplingPortraitBottomRight:before{content:"\EE4A"}.mi-StaplingPortraitTopLeft:before{content:"\EE4B"}.mi-StaplingPortraitTopRight:before{content:"\EE4C"}.mi-StaplingPortraitTwoBottom:before{content:"\EE4D"}.mi-StaplingPortraitTwoLeft:before{content:"\EE4E"}.mi-StaplingPortraitTwoRight:before{content:"\EE4F"}.mi-StaplingPortraitTwoTop:before{content:"\EE50"}.mi-StartPoint:before{content:"\EE51"}.mi-StartPointSolid:before{content:"\EE52"}.mi-StatusCheckmark:before{content:"\EE53"}.mi-StatusCheckmark7:before{content:"\EE54"}.mi-StatusCheckmarkLeft:before{content:"\EE55"}.mi-StatusCircle:before{content:"\EE56"}.mi-StatusCircle7:before{content:"\EE57"}.mi-StatusCircleBlock:before{content:"\EE58"}.mi-StatusCircleBlock2:before{content:"\EE59"}.mi-StatusCircleCheckmark:before{content:"\EE5A"}.mi-StatusCircleErrorX:before{content:"\EE5B"}.mi-StatusCircleExclamation:before{content:"\EE5C"}.mi-StatusCircleInfo:before{content:"\EE5D"}.mi-StatusCircleInner:before{content:"\EE5E"}.mi-StatusCircleLeft:before{content:"\EE5F"}.mi-StatusCircleOuter:before{content:"\EE60"}.mi-StatusCircleQuestionMark:before{content:"\EE61"}.mi-StatusCircleRing:before{content:"\EE62"}.mi-StatusCircleSync:before{content:"\EE63"}.mi-StatusConnecting1:before{content:"\EE64"}.mi-StatusConnecting2:before{content:"\EE65"}.mi-StatusDataTransfer:before{content:"\EE66"}.mi-StatusDataTransferVPN:before{content:"\EE67"}.mi-StatusDualSIM1:before{content:"\EE68"}.mi-StatusDualSIM1VPN:before{content:"\EE69"}.mi-StatusDualSIM2:before{content:"\EE6A"}.mi-StatusDualSIM2VPN:before{content:"\EE6B"}.mi-StatusError:before{content:"\EE6C"}.mi-StatusErrorCircle7:before{content:"\EE6D"}.mi-StatusErrorFull:before{content:"\EE6E"}.mi-StatusErrorLeft:before{content:"\EE6F"}.mi-StatusExclamationCircle7:before{content:"\EE70"}.mi-StatusInfo:before{content:"\EE71"}.mi-StatusInfoLeft:before{content:"\EE72"}.mi-StatusPause7:before{content:"\EE73"}.mi-StatusSGLTE:before{content:"\EE74"}.mi-StatusSGLTECell:before{content:"\EE75"}.mi-StatusSGLTEDataVPN:before{content:"\EE76"}.mi-StatusTriangle:before{content:"\EE77"}.mi-StatusTriangleExclamation:before{content:"\EE78"}.mi-StatusTriangleInner:before{content:"\EE79"}.mi-StatusTriangleLeft:before{content:"\EE7A"}.mi-StatusTriangleOuter:before{content:"\EE7B"}.mi-StatusUnsecure:before{content:"\EE7C"}.mi-StatusVPN:before{content:"\EE7D"}.mi-StatusWarning:before{content:"\EE7E"}.mi-StatusWarningLeft:before{content:"\EE7F"}.mi-Sticker2:before{content:"\EE80"}.mi-StockDown:before{content:"\EE81"}.mi-StockUp:before{content:"\EE82"}.mi-Stop:before,.mi-StopLegacy:before{content:"\EE83"}.mi-StopPoint:before{content:"\EE84"}.mi-StopPointSolid:before{content:"\EE85"}.mi-StopSlideshow:before,.mi-StopSlideshowLegacy:before{content:"\EE87"}.mi-Stopwatch:before{content:"\EE88"}.mi-StorageNetworkWireless:before{content:"\EE89"}.mi-StorageOptical:before{content:"\EE8A"}.mi-StorageTape:before{content:"\EE8B"}.mi-Streaming:before{content:"\EE8C"}.mi-StreamingEnterprise:before{content:"\EE8D"}.mi-Street:before,.mi-StreetLegacy:before{content:"\EE8E"}.mi-StreetsideSplitExpand:before{content:"\EE8F"}.mi-StreetsideSplitMinimize:before{content:"\EE90"}.mi-StrokeErase:before{content:"\EE91"}.mi-StrokeErase2:before{content:"\EE92"}.mi-StrokeEraseMirrored:before{content:"\EE93"}.mi-Subtitles:before{content:"\EE94"}.mi-SubtitlesAudio:before{content:"\EE95"}.mi-SurfaceHub:before{content:"\EE96"}.mi-SurfaceHubSelected:before{content:"\EE97"}.mi-Sustainable:before{content:"\EE98"}.mi-Swipe:before{content:"\EE99"}.mi-SwipeRevealArt:before{content:"\EE9A"}.mi-Switch:before,.mi-SwitchLegacy:before{content:"\EE9B"}.mi-SwitchApps:before,.mi-SwitchAppsLegacy:before{content:"\EE9C"}.mi-SwitchUser:before{content:"\EE9D"}.mi-Sync:before,.mi-SyncLegacy:before{content:"\EE9E"}.mi-SyncBadge12:before{content:"\EE9F"}.mi-SyncError:before{content:"\EEA0"}.mi-SyncFolder:before,.mi-SyncFolderLegacy:before{content:"\EEA1"}.mi-System:before{content:"\EEA2"}.mi-TVMonitor:before{content:"\EEA3"}.mi-TVMonitorSelected:before{content:"\EEA4"}.mi-Tablet:before{content:"\EEA5"}.mi-TabletMode:before{content:"\EEA6"}.mi-TabletSelected:before{content:"\EEA7"}.mi-Tag:before,.mi-TagLegacy:before{content:"\EEA8"}.mi-TapAndSend:before{content:"\EEA9"}.mi-TaskView:before{content:"\EEAA"}.mi-TaskViewExpanded:before{content:"\EEAB"}.mi-TaskViewSettings:before{content:"\EEAC"}.mi-TaskbarPhone:before{content:"\EEAD"}.mi-ThisPC:before{content:"\EEAE"}.mi-ThoughtBubble:before{content:"\EEAF"}.mi-ThreeBars:before,.mi-ThreeBarsLegacy:before{content:"\EEB0"}.mi-ThreeQuarterStarLeft:before{content:"\EEB1"}.mi-ThreeQuarterStarRight:before{content:"\EEB2"}.mi-Tiles:before{content:"\EEB3"}.mi-TiltDown:before{content:"\EEB4"}.mi-TiltUp:before{content:"\EEB5"}.mi-TimeLanguage:before{content:"\EEB6"}.mi-ToggleBorder:before{content:"\EEB7"}.mi-ToggleFilled:before{content:"\EEB8"}.mi-ToggleThumb:before{content:"\EEB9"}.mi-TollSolid:before{content:"\EEBA"}.mi-Lightbulb:before,.mi-ToolTip:before{content:"\EEBB"}.mi-Touch:before{content:"\EEBC"}.mi-TouchPointer:before,.mi-TouchPointerLegacy:before{content:"\EEBD"}.mi-Touchpad:before{content:"\EEBE"}.mi-Touchscreen:before{content:"\EEBF"}.mi-Trackers:before{content:"\EEC0"}.mi-TrackersMirrored:before{content:"\EEC1"}.mi-TrafficCongestionSolid:before{content:"\EEC2"}.mi-TrafficLight:before{content:"\EEC3"}.mi-Train:before{content:"\EEC4"}.mi-TrainSolid:before{content:"\EEC5"}.mi-TreeFolderFolder:before{content:"\EEC6"}.mi-TreeFolderFolderFill:before{content:"\EEC7"}.mi-TreeFolderFolderOpen:before{content:"\EEC8"}.mi-TreeFolderFolderOpenFill:before{content:"\EEC9"}.mi-TriggerLeft:before{content:"\EECA"}.mi-TriggerRight:before{content:"\EECB"}.mi-Trim:before,.mi-TrimLegacy:before{content:"\EECC"}.mi-TwoBars:before,.mi-TwoBarsLegacy:before{content:"\EECD"}.mi-TwoPage:before,.mi-TwoPageLegacy:before{content:"\EECE"}.mi-Type:before,.mi-TypeLegacy:before{content:"\EECF"}.mi-TypingIndicatorLegacy:before{content:"\EED0"}.mi-USB:before{content:"\EED1"}.mi-USBSafeConnect:before{content:"\EED2"}.mi-Underline:before,.mi-UnderlineLegacy:before{content:"\EED3"}.mi-UnderlineLKorean:before,.mi-UnderlineLKoreanLegacy:before{content:"\EED5"}.mi-UnderlineRussian:before,.mi-UnderlineRussianLegacy:before{content:"\EED7"}.mi-UnderlineS:before,.mi-UnderlineSLegacy:before{content:"\EED9"}.mi-UnderlineU:before,.mi-UnderlineULegacy:before{content:"\EEDB"}.mi-UnderscoreSpace:before{content:"\EEDC"}.mi-Undo:before,.mi-UndoLegacy:before{content:"\EEDD"}.mi-Unfavorite:before,.mi-UnfavoriteLegacy:before{content:"\EEDE"}.mi-Unit:before{content:"\EEDF"}.mi-Unknown:before{content:"\EEE0"}.mi-UnknownMirrored:before{content:"\EEE1"}.mi-Unlock:before,.mi-UnlockLegacy:before{content:"\EEE2"}.mi-Unpin:before,.mi-UnpinLegacy:before{content:"\EEE3"}.mi-UnsyncFolder:before,.mi-UnsyncFolderLegacy:before{content:"\EEE4"}.mi-Up:before,.mi-UpLegacy:before{content:"\EEE5"}.mi-UpArrowShiftKey:before{content:"\EEE6"}.mi-UpShiftKey:before{content:"\EEE7"}.mi-UpdateRestore:before{content:"\EEE8"}.mi-Upload:before,.mi-UploadLegacy:before,.mi-UploadSkyDriveLegacy:before{content:"\EEE9"}.mi-UserAPN:before{content:"\EEEA"}.mi-VPN:before{content:"\EEEB"}.mi-VerticalBattery0:before{content:"\EEEC"}.mi-VerticalBattery1:before{content:"\EEED"}.mi-VerticalBattery10:before{content:"\EEEE"}.mi-VerticalBattery2:before{content:"\EEEF"}.mi-VerticalBattery3:before{content:"\EEF0"}.mi-VerticalBattery4:before{content:"\EEF1"}.mi-VerticalBattery5:before{content:"\EEF2"}.mi-VerticalBattery6:before{content:"\EEF3"}.mi-VerticalBattery7:before{content:"\EEF4"}.mi-VerticalBattery8:before{content:"\EEF5"}.mi-VerticalBattery9:before{content:"\EEF6"}.mi-VerticalBatteryCharging0:before{content:"\EEF7"}.mi-VerticalBatteryCharging1:before{content:"\EEF8"}.mi-VerticalBatteryCharging10:before{content:"\EEF9"}.mi-VerticalBatteryCharging2:before{content:"\EEFA"}.mi-VerticalBatteryCharging3:before{content:"\EEFB"}.mi-VerticalBatteryCharging4:before{content:"\EEFC"}.mi-VerticalBatteryCharging5:before{content:"\EEFD"}.mi-VerticalBatteryCharging6:before{content:"\EEFE"}.mi-VerticalBatteryCharging7:before{content:"\EEFF"}.mi-VerticalBatteryCharging8:before{content:"\EF00"}.mi-VerticalBatteryCharging9:before{content:"\EF01"}.mi-VerticalBatteryUnknown:before{content:"\EF02"}.mi-Vibrate:before{content:"\EF03"}.mi-Video:before,.mi-VideoInlineLegacy:before,.mi-VideoLegacy:before{content:"\EF04"}.mi-Video360:before{content:"\EF05"}.mi-VideoChat:before,.mi-VideoChatLegacy:before{content:"\EF06"}.mi-VideoSolid:before{content:"\EF07"}.mi-RevealPasswordLegacy:before,.mi-View:before,.mi-ViewLegacy:before{content:"\EF08"}.mi-ShowAllFilesLegacy:before,.mi-ViewAll:before,.mi-ViewAllLegacy:before{content:"\EF09"}.mi-ViewDashboard:before{content:"\EF0A"}.mi-Volume:before,.mi-VolumeLegacy:before{content:"\EF0B"}.mi-Volume0:before{content:"\EF0C"}.mi-Volume1:before{content:"\EF0D"}.mi-Volume2:before{content:"\EF0E"}.mi-Volume3:before{content:"\EF0F"}.mi-VolumeBars:before{content:"\EF10"}.mi-Walk:before{content:"\EF11"}.mi-WalkSolid:before{content:"\EF12"}.mi-Warning:before{content:"\EF13"}.mi-Webcam:before,.mi-WebcamLegacy:before{content:"\EF14"}.mi-Webcam2:before{content:"\EF15"}.mi-Website:before{content:"\EF16"}.mi-Wheel:before{content:"\EF17"}.mi-Wifi:before{content:"\EF18"}.mi-Wifi1:before{content:"\EF19"}.mi-Wifi2:before{content:"\EF1A"}.mi-Wifi3:before{content:"\EF1B"}.mi-WifiAttentionOverlay:before{content:"\EF1C"}.mi-WifiCall0:before{content:"\EF1D"}.mi-WifiCall1:before{content:"\EF1E"}.mi-WifiCall2:before{content:"\EF1F"}.mi-WifiCall3:before{content:"\EF20"}.mi-WifiCall4:before{content:"\EF21"}.mi-WifiCallBars:before{content:"\EF22"}.mi-WifiError0:before{content:"\EF23"}.mi-WifiError1:before{content:"\EF24"}.mi-WifiError2:before{content:"\EF25"}.mi-WifiError3:before{content:"\EF26"}.mi-WifiError4:before{content:"\EF27"}.mi-WifiEthernet:before{content:"\EF28"}.mi-InternetSharing:before,.mi-WifiHotspot:before{content:"\EF29"}.mi-WifiWarning0:before{content:"\EF2A"}.mi-WifiWarning1:before{content:"\EF2B"}.mi-WifiWarning2:before{content:"\EF2C"}.mi-WifiWarning3:before{content:"\EF2D"}.mi-WifiWarning4:before{content:"\EF2E"}.mi-WindDirection:before{content:"\EF2F"}.mi-WindowsInsider:before{content:"\EF30"}.mi-WiredUSB:before{content:"\EF31"}.mi-WirelessUSB:before{content:"\EF32"}.mi-Work:before{content:"\EF33"}.mi-WorkSolid:before{content:"\EF34"}.mi-World:before,.mi-WorldLegacy:before{content:"\EF35"}.mi-XboxOneConsole:before{content:"\EF36"}.mi-ZeroBars:before,.mi-ZeroBarsLegacy:before{content:"\EF37"}.mi-Zoom:before,.mi-ZoomLegacy:before{content:"\EF38"}.mi-ZoomIn:before,.mi-ZoomInLegacy:before{content:"\EF39"}.mi-ZoomMode:before{content:"\EF3A"}.mi-ZoomOut:before,.mi-ZoomOutLegacy:before{content:"\EF3B"}.mi-eSIM:before{content:"\EF3C"}.mi-eSIMBusy:before{content:"\EF3D"}.mi-eSIMLocked:before{content:"\EF3E"}.mi-eSIMNoProfile:before{content:"\EF3F"}.mi-E80B:before,.mi-uniE80B:before{content:"\EF40"}.mi-EA0D:before,.mi-uniEA0D:before{content:"\EF41"}.mi-EA3F:before,.mi-uniEA3F:before{content:"\EF42"}.mi-EA90:before,.mi-uniEA90:before{content:"\EF43"}.mi-EAC2:before,.mi-uniEAC2:before{content:"\EF44"}.mi-EC6C:before,.mi-uniEC6C:before{content:"\EF45"}.mi-EEA3:before,.mi-uniEEA3:before{content:"\EF46"}.mi-F2B7:before,.mi-uniF2B7:before{content:"\EF47"}.mi-F5AA:before,.mi-uniF5AA:before{content:"\EF48"}.mi-F614:before,.mi-uniF614:before{content:"\EF49"}.mi-F615:before,.mi-uniF615:before{content:"\EF4A"}.mi-F616:before,.mi-uniF616:before{content:"\EF4B"}.mi-F617:before,.mi-uniF617:before{content:"\EF4C"}.mi-F657:before,.mi-uniF657:before{content:"\EF4D"}.mi-F658:before,.mi-uniF658:before{content:"\EF4E"}.mi-F659:before,.mi-uniF659:before{content:"\EF4F"}.mi-F65A:before,.mi-uniF65A:before{content:"\EF50"}.mi-F65B:before,.mi-uniF65B:before{content:"\EF51"}.mi-F65C:before,.mi-uniF65C:before{content:"\EF52"}.mi-F69E:before,.mi-uniF69E:before{content:"\EF53"}.mi-F6FA:before,.mi-uniF6FA:before{content:"\EF54"}.mi-F712:before,.mi-uniF712:before{content:"\EF55"}.mi-F71C:before,.mi-uniF71C:before{content:"\EF56"}.mi-F71D:before,.mi-uniF71D:before{content:"\EF57"}.mi-F71E:before,.mi-uniF71E:before{content:"\EF58"}.mi-F738:before,.mi-uniF738:before{content:"\EF59"}.mi-F739:before,.mi-uniF739:before{content:"\EF5A"}.mi-F73D:before,.mi-uniF73D:before{content:"\EF5B"}.mi-F73E:before,.mi-uniF73E:before{content:"\EF5C"}.mi-F73F:before,.mi-uniF73F:before{content:"\EF5D"}.mi-F740:before,.mi-uniF740:before{content:"\EF5E"}.mi-F741:before,.mi-uniF741:before{content:"\EF5F"}.mi-F742:before,.mi-uniF742:before{content:"\EF60"}.mi-F743:before,.mi-uniF743:before{content:"\EF61"}.mi-F744:before,.mi-uniF744:before{content:"\EF62"}.mi-F745:before,.mi-uniF745:before{content:"\EF63"}.mi-F746:before,.mi-uniF746:before{content:"\EF64"}.mi-F785:before,.mi-uniF785:before{content:"\EF65"}.mi-500px:before{content:"\EF66"}.mi-accessible-icon:before{content:"\EF67"}.mi-accusoft:before{content:"\EF68"}.mi-acquisitions-incorporated:before{content:"\EF69"}.mi-adn:before{content:"\EF6A"}.mi-adobe:before{content:"\EF6B"}.mi-adversal:before{content:"\EF6C"}.mi-affiliatetheme:before{content:"\EF6D"}.mi-algolia:before{content:"\EF6E"}.mi-alipay:before{content:"\EF6F"}.mi-amazon-pay:before{content:"\EF70"}.mi-amazon:before{content:"\EF71"}.mi-amilia:before{content:"\EF72"}.mi-android:before{content:"\EF73"}.mi-angellist:before{content:"\EF74"}.mi-angrycreative:before{content:"\EF75"}.mi-angular:before{content:"\EF76"}.mi-app-store-ios:before{content:"\EF77"}.mi-app-store:before{content:"\EF78"}.mi-apper:before{content:"\EF79"}.mi-apple-pay:before{content:"\EF7A"}.mi-apple:before{content:"\EF7B"}.mi-artstation:before{content:"\EF7C"}.mi-asymmetrik:before{content:"\EF7D"}.mi-atlassian:before{content:"\EF7E"}.mi-audible:before{content:"\EF7F"}.mi-autoprefixer:before{content:"\EF80"}.mi-avianex:before{content:"\EF81"}.mi-aviato:before{content:"\EF82"}.mi-aws:before{content:"\EF83"}.mi-bandcamp:before{content:"\EF84"}.mi-behance-square:before{content:"\EF85"}.mi-behance:before{content:"\EF86"}.mi-bimobject:before{content:"\EF87"}.mi-bitbucket:before{content:"\EF88"}.mi-bitcoin:before{content:"\EF89"}.mi-bity:before{content:"\EF8A"}.mi-black-tie:before{content:"\EF8B"}.mi-blackberry:before{content:"\EF8C"}.mi-blogger-b:before{content:"\EF8D"}.mi-blogger:before{content:"\EF8E"}.mi-bluetooth-b:before{content:"\EF8F"}.mi-bluetooth:before{content:"\EF90"}.mi-btc:before{content:"\EF91"}.mi-buromobelexperte:before{content:"\EF92"}.mi-buysellads:before{content:"\EF93"}.mi-canadian-maple-leaf:before{content:"\EF94"}.mi-cc-amazon-pay:before{content:"\EF95"}.mi-cc-amex:before{content:"\EF96"}.mi-cc-apple-pay:before{content:"\EF97"}.mi-cc-diners-club:before{content:"\EF98"}.mi-cc-discover:before{content:"\EF99"}.mi-cc-jcb:before{content:"\EF9A"}.mi-cc-mastercard:before{content:"\EF9B"}.mi-cc-paypal:before{content:"\EF9C"}.mi-cc-stripe:before{content:"\EF9D"}.mi-cc-visa:before{content:"\EF9E"}.mi-centercode:before{content:"\EF9F"}.mi-centos:before{content:"\EFA0"}.mi-chrome:before{content:"\EFA1"}.mi-cloudscale:before{content:"\EFA2"}.mi-cloudsmith:before{content:"\EFA3"}.mi-cloudversify:before{content:"\EFA4"}.mi-codepen:before{content:"\EFA5"}.mi-codiepie:before{content:"\EFA6"}.mi-confluence:before{content:"\EFA7"}.mi-connectdevelop:before{content:"\EFA8"}.mi-contao:before{content:"\EFA9"}.mi-cpanel:before{content:"\EFAA"}.mi-creative-commons-by:before{content:"\EFAB"}.mi-creative-commons-nc-eu:before{content:"\EFAC"}.mi-creative-commons-nc-jp:before{content:"\EFAD"}.mi-creative-commons-nc:before{content:"\EFAE"}.mi-creative-commons-nd:before{content:"\EFAF"}.mi-creative-commons-pd-alt:before{content:"\EFB0"}.mi-creative-commons-pd:before{content:"\EFB1"}.mi-creative-commons-remix:before{content:"\EFB2"}.mi-creative-commons-sa:before{content:"\EFB3"}.mi-creative-commons-sampling-plus:before{content:"\EFB4"}.mi-creative-commons-sampling:before{content:"\EFB5"}.mi-creative-commons-share:before{content:"\EFB6"}.mi-creative-commons-zero:before{content:"\EFB7"}.mi-creative-commons:before{content:"\EFB8"}.mi-critical-role:before{content:"\EFB9"}.mi-css3-alt:before{content:"\EFBA"}.mi-css3:before{content:"\EFBB"}.mi-cuttlefish:before{content:"\EFBC"}.mi-d-and-d-beyond:before{content:"\EFBD"}.mi-d-and-d:before{content:"\EFBE"}.mi-dashcube:before{content:"\EFBF"}.mi-delicious:before{content:"\EFC0"}.mi-deploydog:before{content:"\EFC1"}.mi-deskpro:before{content:"\EFC2"}.mi-dev:before{content:"\EFC3"}.mi-deviantart:before{content:"\EFC4"}.mi-dhl:before{content:"\EFC5"}.mi-diaspora:before{content:"\EFC6"}.mi-digg:before{content:"\EFC7"}.mi-digital-ocean:before{content:"\EFC8"}.mi-discord:before{content:"\EFC9"}.mi-discourse:before{content:"\EFCA"}.mi-dochub:before{content:"\EFCB"}.mi-docker:before{content:"\EFCC"}.mi-draft2digital:before{content:"\EFCD"}.mi-dribbble-square:before{content:"\EFCE"}.mi-dribbble:before{content:"\EFCF"}.mi-dropbox:before{content:"\EFD0"}.mi-drupal:before{content:"\EFD1"}.mi-dyalog:before{content:"\EFD2"}.mi-earlybirds:before{content:"\EFD3"}.mi-ebay:before{content:"\EFD4"}.mi-edge:before{content:"\EFD5"}.mi-elementor:before{content:"\EFD6"}.mi-ello:before{content:"\EFD7"}.mi-ember:before{content:"\EFD8"}.mi-empire:before{content:"\EFD9"}.mi-envira:before{content:"\EFDA"}.mi-erlang:before{content:"\EFDB"}.mi-ethereum:before{content:"\EFDC"}.mi-etsy:before{content:"\EFDD"}.mi-expeditedssl:before{content:"\EFDE"}.mi-facebook-f:before{content:"\EFDF"}.mi-facebook-messenger:before{content:"\EFE0"}.mi-facebook-square:before{content:"\EFE1"}.mi-facebook:before{content:"\EFE2"}.mi-fedex:before{content:"\EFE3"}.mi-fedora:before{content:"\EFE4"}.mi-figma:before{content:"\EFE5"}.mi-firefox:before{content:"\EFE6"}.mi-first-order-alt:before{content:"\EFE7"}.mi-first-order:before{content:"\EFE8"}.mi-firstdraft:before{content:"\EFE9"}.mi-flickr:before{content:"\EFEA"}.mi-flipboard:before{content:"\EFEB"}.mi-fly:before{content:"\EFEC"}.mi-font-awesome-alt:before{content:"\EFED"}.mi-font-awesome-flag:before{content:"\EFEE"}.mi-font-awesome:before{content:"\EFEF"}.mi-fonticons-fi:before{content:"\EFF0"}.mi-fonticons:before{content:"\EFF1"}.mi-fort-awesome-alt:before{content:"\EFF2"}.mi-fort-awesome:before{content:"\EFF3"}.mi-forumbee:before{content:"\EFF4"}.mi-foursquare:before{content:"\EFF5"}.mi-free-code-camp:before{content:"\EFF6"}.mi-freebsd:before{content:"\EFF7"}.mi-fulcrum:before{content:"\EFF8"}.mi-galactic-republic:before{content:"\EFF9"}.mi-galactic-senate:before{content:"\EFFA"}.mi-get-pocket:before{content:"\EFFB"}.mi-gg-circle:before{content:"\EFFC"}.mi-gg:before{content:"\EFFD"}.mi-git-square:before{content:"\EFFE"}.mi-github-alt:before{content:"\EFFF"}.mi-github-square:before{content:"\F000"}.mi-github:before{content:"\F001"}.mi-gitkraken:before{content:"\F002"}.mi-gitlab:before{content:"\F003"}.mi-gitter:before{content:"\F004"}.mi-glide-g:before{content:"\F005"}.mi-glide:before{content:"\F006"}.mi-gofore:before{content:"\F007"}.mi-goodreads-g:before{content:"\F008"}.mi-goodreads:before{content:"\F009"}.mi-google-drive:before{content:"\F00A"}.mi-google-play:before{content:"\F00B"}.mi-google-plus-g:before{content:"\F00C"}.mi-google-plus-square:before{content:"\F00D"}.mi-google-plus:before{content:"\F00E"}.mi-google-wallet:before{content:"\F00F"}.mi-google:before{content:"\F010"}.mi-gratipay:before{content:"\F011"}.mi-grav:before{content:"\F012"}.mi-gripfire:before{content:"\F013"}.mi-grunt:before{content:"\F014"}.mi-gulp:before{content:"\F015"}.mi-hacker-news-square:before{content:"\F016"}.mi-hacker-news:before{content:"\F017"}.mi-hackerrank:before{content:"\F018"}.mi-hire-a-helper:before{content:"\F019"}.mi-hooli:before{content:"\F01A"}.mi-hornbill:before{content:"\F01B"}.mi-hotjar:before{content:"\F01C"}.mi-houzz:before{content:"\F01D"}.mi-html5:before{content:"\F01E"}.mi-hubspot:before{content:"\F01F"}.mi-imdb:before{content:"\F020"}.mi-instagram:before{content:"\F021"}.mi-intercom:before{content:"\F022"}.mi-internet-explorer:before{content:"\F023"}.mi-invision:before{content:"\F024"}.mi-ioxhost:before{content:"\F025"}.mi-itunes-note:before{content:"\F026"}.mi-itunes:before{content:"\F027"}.mi-java:before{content:"\F028"}.mi-jedi-order:before{content:"\F029"}.mi-jenkins:before{content:"\F02A"}.mi-jira:before{content:"\F02B"}.mi-joget:before{content:"\F02C"}.mi-joomla:before{content:"\F02D"}.mi-js-square:before{content:"\F02E"}.mi-js:before{content:"\F02F"}.mi-jsfiddle:before{content:"\F030"}.mi-kaggle:before{content:"\F031"}.mi-keybase:before{content:"\F032"}.mi-keycdn:before{content:"\F033"}.mi-kickstarter-k:before{content:"\F034"}.mi-kickstarter:before{content:"\F035"}.mi-korvue:before{content:"\F036"}.mi-laravel:before{content:"\F037"}.mi-lastfm-square:before{content:"\F038"}.mi-lastfm:before{content:"\F039"}.mi-leanpub:before{content:"\F03A"}.mi-less:before{content:"\F03B"}.mi-line:before{content:"\F03C"}.mi-linkedin-in:before{content:"\F03D"}.mi-linkedin:before{content:"\F03E"}.mi-linode:before{content:"\F03F"}.mi-linux:before{content:"\F040"}.mi-lyft:before{content:"\F041"}.mi-magento:before{content:"\F042"}.mi-mailchimp:before{content:"\F043"}.mi-mandalorian:before{content:"\F044"}.mi-markdown:before{content:"\F045"}.mi-mastodon:before{content:"\F046"}.mi-maxcdn:before{content:"\F047"}.mi-medapps:before{content:"\F048"}.mi-medium-m:before{content:"\F049"}.mi-medium:before{content:"\F04A"}.mi-medrt:before{content:"\F04B"}.mi-meetup:before{content:"\F04C"}.mi-megaport:before{content:"\F04D"}.mi-mendeley:before{content:"\F04E"}.mi-microsoft:before{content:"\F04F"}.mi-mix:before{content:"\F050"}.mi-mixcloud:before{content:"\F051"}.mi-mizuni:before{content:"\F052"}.mi-modx:before{content:"\F053"}.mi-monero:before{content:"\F054"}.mi-napster:before{content:"\F055"}.mi-neos:before{content:"\F056"}.mi-nimblr:before{content:"\F057"}.mi-nintendo-switch:before{content:"\F058"}.mi-node-js:before{content:"\F059"}.mi-node:before{content:"\F05A"}.mi-npm:before{content:"\F05B"}.mi-ns8:before{content:"\F05C"}.mi-nutritionix:before{content:"\F05D"}.mi-odnoklassniki-square:before{content:"\F05E"}.mi-odnoklassniki:before{content:"\F05F"}.mi-old-republic:before{content:"\F060"}.mi-opencart:before{content:"\F061"}.mi-openid:before{content:"\F062"}.mi-opera:before{content:"\F063"}.mi-optin-monster:before{content:"\F064"}.mi-osi:before{content:"\F065"}.mi-page4:before{content:"\F066"}.mi-pagelines:before{content:"\F067"}.mi-palfed:before{content:"\F068"}.mi-patreon:before{content:"\F069"}.mi-paypal:before{content:"\F06A"}.mi-penny-arcade:before{content:"\F06B"}.mi-periscope:before{content:"\F06C"}.mi-phabricator:before{content:"\F06D"}.mi-phoenix-framework:before{content:"\F06E"}.mi-phoenix-squadron:before{content:"\F06F"}.mi-php:before{content:"\F070"}.mi-pied-piper-alt:before{content:"\F071"}.mi-pied-piper-hat:before{content:"\F072"}.mi-pied-piper-pp:before{content:"\F073"}.mi-pied-piper:before{content:"\F074"}.mi-pinterest-p:before{content:"\F075"}.mi-pinterest-square:before{content:"\F076"}.mi-pinterest:before{content:"\F077"}.mi-playstation:before{content:"\F078"}.mi-product-hunt:before{content:"\F079"}.mi-pushed:before{content:"\F07A"}.mi-python:before{content:"\F07B"}.mi-qq:before{content:"\F07C"}.mi-quinscape:before{content:"\F07D"}.mi-quora:before{content:"\F07E"}.mi-r-project:before{content:"\F07F"}.mi-raspberry-pi:before{content:"\F080"}.mi-ravelry:before{content:"\F081"}.mi-react:before{content:"\F082"}.mi-reacteurope:before{content:"\F083"}.mi-readme:before{content:"\F084"}.mi-rebel:before{content:"\F085"}.mi-red-river:before{content:"\F086"}.mi-reddit-alien:before{content:"\F087"}.mi-reddit-square:before{content:"\F088"}.mi-reddit:before{content:"\F089"}.mi-redhat:before{content:"\F08A"}.mi-renren:before{content:"\F08B"}.mi-replyd:before{content:"\F08C"}.mi-researchgate:before{content:"\F08D"}.mi-resolving:before{content:"\F08E"}.mi-rev:before{content:"\F08F"}.mi-rocketchat:before{content:"\F090"}.mi-rockrms:before{content:"\F091"}.mi-safari:before{content:"\F092"}.mi-sass:before{content:"\F093"}.mi-schlix:before{content:"\F094"}.mi-scribd:before{content:"\F095"}.mi-searchengin:before{content:"\F096"}.mi-sellcast:before{content:"\F097"}.mi-sellsy:before{content:"\F098"}.mi-servicestack:before{content:"\F099"}.mi-shirtsinbulk:before{content:"\F09A"}.mi-shopware:before{content:"\F09B"}.mi-simplybuilt:before{content:"\F09C"}.mi-sistrix:before{content:"\F09D"}.mi-sith:before{content:"\F09E"}.mi-sketch:before{content:"\F09F"}.mi-skyatlas:before{content:"\F0A0"}.mi-skype:before{content:"\F0A1"}.mi-slack-hash:before{content:"\F0A2"}.mi-slack:before{content:"\F0A3"}.mi-slideshare:before{content:"\F0A4"}.mi-snapchat-ghost:before{content:"\F0A5"}.mi-snapchat-square:before{content:"\F0A6"}.mi-snapchat:before{content:"\F0A7"}.mi-soundcloud:before{content:"\F0A8"}.mi-sourcetree:before{content:"\F0A9"}.mi-speakap:before{content:"\F0AA"}.mi-spotify:before{content:"\F0AB"}.mi-squarespace:before{content:"\F0AC"}.mi-stack-exchange:before{content:"\F0AD"}.mi-stack-overflow:before{content:"\F0AE"}.mi-staylinked:before{content:"\F0AF"}.mi-steam-square:before{content:"\F0B0"}.mi-steam:before{content:"\F0B1"}.mi-sticker-mule:before{content:"\F0B2"}.mi-strava:before{content:"\F0B3"}.mi-stripe-s:before{content:"\F0B4"}.mi-stripe:before{content:"\F0B5"}.mi-studiovinari:before{content:"\F0B6"}.mi-stumbleupon-circle:before{content:"\F0B7"}.mi-stumbleupon:before{content:"\F0B8"}.mi-superpowers:before{content:"\F0B9"}.mi-supple:before{content:"\F0BA"}.mi-suse:before{content:"\F0BB"}.mi-teamspeak:before{content:"\F0BC"}.mi-telegram-plane:before{content:"\F0BD"}.mi-telegram:before{content:"\F0BE"}.mi-tencent-weibo:before{content:"\F0BF"}.mi-the-red-yeti:before{content:"\F0C0"}.mi-themeco:before{content:"\F0C1"}.mi-themeisle:before{content:"\F0C2"}.mi-think-peaks:before{content:"\F0C3"}.mi-trade-federation:before{content:"\F0C4"}.mi-trello:before{content:"\F0C5"}.mi-tripadvisor:before{content:"\F0C6"}.mi-tumblr-square:before{content:"\F0C7"}.mi-tumblr:before{content:"\F0C8"}.mi-twitch:before{content:"\F0C9"}.mi-twitter-square:before{content:"\F0CA"}.mi-typo3:before{content:"\F0CB"}.mi-ubuntu:before{content:"\F0CC"}.mi-uikit:before{content:"\F0CD"}.mi-uniregistry:before{content:"\F0CE"}.mi-untappd:before{content:"\F0CF"}.mi-ups:before{content:"\F0D0"}.mi-usb:before{content:"\F0D1"}.mi-usps:before{content:"\F0D2"}.mi-ussunnah:before{content:"\F0D3"}.mi-vaadin:before{content:"\F0D4"}.mi-viacoin:before{content:"\F0D5"}.mi-viadeo-square:before{content:"\F0D6"}.mi-viadeo:before{content:"\F0D7"}.mi-viber:before{content:"\F0D8"}.mi-vimeo-square:before{content:"\F0D9"}.mi-vimeo-v:before{content:"\F0DA"}.mi-vimeo:before{content:"\F0DB"}.mi-vine:before{content:"\F0DC"}.mi-vk:before{content:"\F0DD"}.mi-vnv:before{content:"\F0DE"}.mi-vuejs:before{content:"\F0DF"}.mi-weebly:before{content:"\F0E0"}.mi-weibo:before{content:"\F0E1"}.mi-weixin:before{content:"\F0E2"}.mi-whatsapp-square:before{content:"\F0E3"}.mi-whatsapp:before{content:"\F0E4"}.mi-whmcs:before{content:"\F0E5"}.mi-wikipedia-w:before{content:"\F0E6"}.mi-windows:before{content:"\F0E7"}.mi-wix:before{content:"\F0E8"}.mi-wizards-of-the-coast:before{content:"\F0E9"}.mi-wolf-pack-battalion:before{content:"\F0EA"}.mi-wordpress-simple:before{content:"\F0EB"}.mi-wordpress:before{content:"\F0EC"}.mi-wpbeginner:before{content:"\F0ED"}.mi-wpexplorer:before{content:"\F0EE"}.mi-wpforms:before{content:"\F0EF"}.mi-wpressr:before{content:"\F0F0"}.mi-xbox:before{content:"\F0F1"}.mi-xing-square:before{content:"\F0F2"}.mi-xing:before{content:"\F0F3"}.mi-y-combinator:before{content:"\F0F4"}.mi-yahoo:before{content:"\F0F5"}.mi-yandex-international:before{content:"\F0F6"}.mi-yandex:before{content:"\F0F7"}.mi-yarn:before{content:"\F0F8"}.mi-yelp:before{content:"\F0F9"}.mi-yoast:before{content:"\F0FA"}.mi-youtube-square:before{content:"\F0FB"}.mi-youtube:before{content:"\F0FC"}.mi-zhihu:before{content:"\F0FD"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.uib-datepicker .uib-title,.uib-left,.uib-right{width:100%}.ng-animate.item:not(.left):not(.right){-webkit-transition:0s ease-in-out left;transition:0s ease-in-out left}.uib-day button,.uib-month button,.uib-year button{min-width:100%}.uib-position-measure{display:block!important;visibility:hidden!important;position:absolute!important;top:-9999px!important;left:-9999px!important}.uib-position-scrollbar-measure{position:absolute!important;top:-9999px!important;width:50px!important;height:50px!important;overflow:scroll!important}.uib-position-body-scrollbar-measure{overflow:scroll!important}.uib-datepicker-popup.dropdown-menu{display:block;float:none;margin:0}.uib-button-bar{padding:10px 9px 2px}[uib-popover-html-popup].popover.bottom-left>.arrow,[uib-popover-html-popup].popover.bottom-right>.arrow,[uib-popover-html-popup].popover.left-bottom>.arrow,[uib-popover-html-popup].popover.left-top>.arrow,[uib-popover-html-popup].popover.right-bottom>.arrow,[uib-popover-html-popup].popover.right-top>.arrow,[uib-popover-html-popup].popover.top-left>.arrow,[uib-popover-html-popup].popover.top-right>.arrow,[uib-popover-popup].popover.bottom-left>.arrow,[uib-popover-popup].popover.bottom-right>.arrow,[uib-popover-popup].popover.left-bottom>.arrow,[uib-popover-popup].popover.left-top>.arrow,[uib-popover-popup].popover.right-bottom>.arrow,[uib-popover-popup].popover.right-top>.arrow,[uib-popover-popup].popover.top-left>.arrow,[uib-popover-popup].popover.top-right>.arrow,[uib-popover-template-popup].popover.bottom-left>.arrow,[uib-popover-template-popup].popover.bottom-right>.arrow,[uib-popover-template-popup].popover.left-bottom>.arrow,[uib-popover-template-popup].popover.left-top>.arrow,[uib-popover-template-popup].popover.right-bottom>.arrow,[uib-popover-template-popup].popover.right-top>.arrow,[uib-popover-template-popup].popover.top-left>.arrow,[uib-popover-template-popup].popover.top-right>.arrow,[uib-tooltip-html-popup].tooltip.bottom-left>.tooltip-arrow,[uib-tooltip-html-popup].tooltip.bottom-right>.tooltip-arrow,[uib-tooltip-html-popup].tooltip.left-bottom>.tooltip-arrow,[uib-tooltip-html-popup].tooltip.left-top>.tooltip-arrow,[uib-tooltip-html-popup].tooltip.right-bottom>.tooltip-arrow,[uib-tooltip-html-popup].tooltip.right-top>.tooltip-arrow,[uib-tooltip-html-popup].tooltip.top-left>.tooltip-arrow,[uib-tooltip-html-popup].tooltip.top-right>.tooltip-arrow,[uib-tooltip-popup].tooltip.bottom-left>.tooltip-arrow,[uib-tooltip-popup].tooltip.bottom-right>.tooltip-arrow,[uib-tooltip-popup].tooltip.left-bottom>.tooltip-arrow,[uib-tooltip-popup].tooltip.left-top>.tooltip-arrow,[uib-tooltip-popup].tooltip.right-bottom>.tooltip-arrow,[uib-tooltip-popup].tooltip.right-top>.tooltip-arrow,[uib-tooltip-popup].tooltip.top-left>.tooltip-arrow,[uib-tooltip-popup].tooltip.top-right>.tooltip-arrow,[uib-tooltip-template-popup].tooltip.bottom-left>.tooltip-arrow,[uib-tooltip-template-popup].tooltip.bottom-right>.tooltip-arrow,[uib-tooltip-template-popup].tooltip.left-bottom>.tooltip-arrow,[uib-tooltip-template-popup].tooltip.left-top>.tooltip-arrow,[uib-tooltip-template-popup].tooltip.right-bottom>.tooltip-arrow,[uib-tooltip-template-popup].tooltip.right-top>.tooltip-arrow,[uib-tooltip-template-popup].tooltip.top-left>.tooltip-arrow,[uib-tooltip-template-popup].tooltip.top-right>.tooltip-arrow{top:auto;bottom:auto;left:auto;right:auto;margin:0}[uib-popover-html-popup].popover,[uib-popover-popup].popover,[uib-popover-template-popup].popover{display:block!important}.uib-time input{width:50px}[uib-typeahead-popup].dropdown-menu{display:block} \ No newline at end of file + */@font-face{font-family:micon;font-style:normal;font-weight:400;src:url(../fonts/micon.eot);src:url(../fonts/micon.eot?#iefix) format("embedded-opentype"),url(../fonts/micon.woff2) format("woff2"),url(../fonts/micon.woff) format("woff"),url(../fonts/micon.ttf) format("truetype"),url(../fonts/micon.svg#micon) format("svg")}.mi{font-family:micon;font-weight:400;line-height:1}.mi-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.mi-xs{font-size:.75em}.mi-sm{font-size:.875em}.mi-1x{font-size:1em}.mi-2x{font-size:2em}.mi-3x{font-size:3em}.mi-4x{font-size:4em}.mi-5x{font-size:5em}.mi-6x{font-size:6em}.mi-7x{font-size:7em}.mi-8x{font-size:8em}.mi-9x{font-size:9em}.mi-10x{font-size:10em}.mi-fw{width:1.25em}.mi-ul{margin-left:2.5em;padding-left:0}.mi-ul>li{position:relative}.mi-li{left:-2em;position:absolute;width:2em;line-height:inherit}.mi-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.mi-pull-left{float:left}.mi-pull-right{float:right}.mi.mi-pull-right{margin-left:.3em}.mi-spin{animation:mi-spin 2s infinite linear}.mi-pulse{animation:mi-spin 1s infinite steps(8)}@keyframes mi-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.mi-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.mi-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.mi-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.mi-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scale(-1,1)}.mi-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";transform:scale(1,-1)}.mi-flip-horizontal.mi-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";transform:scale(-1,-1)}:root .mi-flip-horizontal,:root .mi-flip-vertical,:root .mi-rotate-180,:root .mi-rotate-270,:root .mi-rotate-90{filter:none}.mi-stack{height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.mi-stack-1x,.mi-stack-2x{left:0;position:absolute;width:100%}.mi-stack-1x{line-height:inherit}.mi-stack-2x{font-size:2em}.mi-Accept:before,.mi-AcceptLegacy:before,.mi-CheckmarkListviewLegacy:before,.mi-CheckmarkMenuLegacy:before{content:"\EA01"}.mi-Accident:before{content:"\EA02"}.mi-AccidentSolid:before{content:"\EA03"}.mi-Accounts:before,.mi-AccountsLegacy:before{content:"\EA04"}.mi-ActionCenter:before{content:"\EA05"}.mi-ActionCenterAsterisk:before{content:"\EA06"}.mi-ActionCenterMirrored:before{content:"\EA07"}.mi-ActionCenterNotification:before{content:"\EA08"}.mi-ActionCenterNotificationMirrored:before{content:"\EA09"}.mi-ActionCenterQuiet:before{content:"\EA0A"}.mi-ActionCenterQuietNotification:before{content:"\EA0B"}.mi-Add:before,.mi-AddLegacy:before{content:"\EA0C"}.mi-AddFriend:before,.mi-AddFriendLegacy:before{content:"\EA0D"}.mi-AddRemoteDevice:before{content:"\EA0E"}.mi-AddSurfaceHub:before{content:"\EA0F"}.mi-AddTo:before{content:"\EA10"}.mi-AdjustHologram:before{content:"\EA11"}.mi-Admin:before,.mi-AdminLegacy:before{content:"\EA12"}.mi-Airplane:before{content:"\EA13"}.mi-AirplaneSolid:before{content:"\EA14"}.mi-AlignCenter:before,.mi-AlignCenterLegacy:before{content:"\EA15"}.mi-AlignLeft:before,.mi-AlignLeftLegacy:before{content:"\EA16"}.mi-AlignRight:before,.mi-AlignRightLegacy:before{content:"\EA17"}.mi-AllApps:before,.mi-AllAppsLegacy:before{content:"\EA18"}.mi-AllAppsLegacyMirrored:before,.mi-AllAppsMirrored:before{content:"\EA19"}.mi-Annotation:before{content:"\EA1A"}.mi-AppIconDefault:before{content:"\EA1B"}.mi-Apps:before{content:"\EA1C"}.mi-AreaChart:before{content:"\EA1D"}.mi-ArrowDown8:before{content:"\EA1E"}.mi-ArrowLeft8:before{content:"\EA1F"}.mi-ArrowRight8:before{content:"\EA20"}.mi-ArrowUp8:before{content:"\EA21"}.mi-AspectRatio:before{content:"\EA22"}.mi-Asterisk:before{content:"\EA23"}.mi-AsteriskBadge12:before{content:"\EA24"}.mi-Attach:before,.mi-AttachLegacy:before{content:"\EA25"}.mi-AttachCamera:before,.mi-AttachCameraLegacy:before{content:"\EA26"}.mi-Audio:before,.mi-AudioLegacy:before{content:"\EA27"}.mi-ArrowHTMLLegacy:before,.mi-Back:before,.mi-BackBttnArrow20Legacy:before,.mi-BackBttnArrow42Legacy:before,.mi-BackLegacy:before{content:"\EA28"}.mi-BackMirrored:before{content:"\EA29"}.mi-BackSpaceQWERTYLg:before{content:"\EA2B"}.mi-BackSpaceQWERTYMd:before{content:"\EA2C"}.mi-BackSpaceQWERTYSm:before{content:"\EA2D"}.mi-BackToWindow:before,.mi-BackToWindowLegacy:before{content:"\EA2E"}.mi-BackgroundToggle:before{content:"\EA2F"}.mi-Badge:before{content:"\EA30"}.mi-BandBattery0:before{content:"\EA31"}.mi-BandBattery1:before{content:"\EA32"}.mi-BandBattery2:before{content:"\EA33"}.mi-BandBattery3:before{content:"\EA34"}.mi-BandBattery4:before{content:"\EA35"}.mi-BandBattery5:before{content:"\EA36"}.mi-BandBattery6:before{content:"\EA37"}.mi-Bank:before{content:"\EA38"}.mi-BarcodeScanner:before{content:"\EA39"}.mi-Battery0:before{content:"\EA3A"}.mi-Battery1:before{content:"\EA3B"}.mi-Battery10:before{content:"\EA3C"}.mi-Battery2:before{content:"\EA3D"}.mi-Battery3:before{content:"\EA3E"}.mi-Battery4:before{content:"\EA3F"}.mi-Battery5:before{content:"\EA40"}.mi-Battery6:before{content:"\EA41"}.mi-Battery7:before{content:"\EA42"}.mi-Battery8:before{content:"\EA43"}.mi-Battery9:before{content:"\EA44"}.mi-BatteryCharging0:before{content:"\EA45"}.mi-BatteryCharging1:before{content:"\EA46"}.mi-BatteryCharging10:before{content:"\EA47"}.mi-BatteryCharging2:before{content:"\EA48"}.mi-BatteryCharging3:before{content:"\EA49"}.mi-BatteryCharging4:before{content:"\EA4A"}.mi-BatteryCharging5:before{content:"\EA4B"}.mi-BatteryCharging6:before{content:"\EA4C"}.mi-BatteryCharging7:before{content:"\EA4D"}.mi-BatteryCharging8:before{content:"\EA4E"}.mi-BatteryCharging9:before{content:"\EA4F"}.mi-BatterySaver0:before{content:"\EA50"}.mi-BatterySaver1:before{content:"\EA51"}.mi-BatterySaver10:before{content:"\EA52"}.mi-BatterySaver2:before{content:"\EA53"}.mi-BatterySaver3:before{content:"\EA54"}.mi-BatterySaver4:before{content:"\EA55"}.mi-BatterySaver5:before{content:"\EA56"}.mi-BatterySaver6:before{content:"\EA57"}.mi-BatterySaver7:before{content:"\EA58"}.mi-BatterySaver8:before{content:"\EA59"}.mi-BatterySaver9:before{content:"\EA5A"}.mi-BatteryUnknown:before{content:"\EA5B"}.mi-Beta:before{content:"\EA5C"}.mi-BidiLtr:before{content:"\EA5D"}.mi-BidiRtl:before{content:"\EA5E"}.mi-BlockContact:before,.mi-BlockContactLegacy:before{content:"\EA5F"}.mi-Blocked:before,.mi-BlockedLegacy:before{content:"\EA61"}.mi-BlueLight:before{content:"\EA62"}.mi-Bluetooth:before{content:"\EA63"}.mi-BodyCam:before{content:"\EA64"}.mi-Bold:before,.mi-BoldLegacy:before{content:"\EA65"}.mi-BoldF:before,.mi-BoldFLegacy:before{content:"\EA67"}.mi-BoldG:before,.mi-BoldGLegacy:before{content:"\EA69"}.mi-BoldKorean:before,.mi-BoldKoreanLegacy:before{content:"\EA6B"}.mi-BoldN:before,.mi-BoldNLegacy:before{content:"\EA6D"}.mi-BoldRussion:before,.mi-BoldRussionLegacy:before{content:"\EA6F"}.mi-Bookmarks:before,.mi-BookmarksLegacy:before{content:"\EA70"}.mi-BookmarksLegacyMirrored:before,.mi-BookmarksMirrored:before{content:"\EA71"}.mi-Brightness:before{content:"\EA72"}.mi-Broom:before{content:"\EA73"}.mi-BrowsePhotos:before,.mi-BrowsePhotosLegacy:before{content:"\EA74"}.mi-BrushSize:before{content:"\EA75"}.mi-Bug:before{content:"\EA76"}.mi-BuildingEnergy:before{content:"\EA77"}.mi-BulletedList:before,.mi-BulletedListLegacy:before,.mi-ListLegacy:before{content:"\EA78"}.mi-BulletedListLegacyMirrored:before,.mi-BulletedListMirrored:before,.mi-ListLegacyMirrored:before{content:"\EA79"}.mi-Bullseye:before{content:"\EA7A"}.mi-BumperLeft:before{content:"\EA7B"}.mi-BumperRight:before{content:"\EA7C"}.mi-Bus:before{content:"\EA7D"}.mi-BusSolid:before{content:"\EA7E"}.mi-ButtonA:before{content:"\EA7F"}.mi-ButtonB:before{content:"\EA80"}.mi-ButtonMenu:before{content:"\EA81"}.mi-ButtonView2:before{content:"\EA82"}.mi-ButtonX:before{content:"\EA83"}.mi-ButtonY:before{content:"\EA84"}.mi-CC:before,.mi-CCLegacy:before{content:"\EA85"}.mi-CCEuro:before,.mi-CCEuroLegacy:before{content:"\EA87"}.mi-CCJapan:before,.mi-CCJapanLegacy:before{content:"\EA89"}.mi-Cafe:before{content:"\EA8A"}.mi-Calculator:before,.mi-CalculatorLegacy:before{content:"\EA8B"}.mi-CalculatorAddition:before{content:"\EA8C"}.mi-BackSpaceQWERTY:before,.mi-CalculatorBackspace:before{content:"\EA8D"}.mi-CalculatorDivide:before{content:"\EA8E"}.mi-CalculatorEqualTo:before{content:"\EA8F"}.mi-CalculatorMultiply:before{content:"\EA90"}.mi-CalculatorNegate:before{content:"\EA91"}.mi-CalculatorPercentage:before{content:"\EA92"}.mi-CalculatorSquareroot:before{content:"\EA93"}.mi-CalculatorSubtract:before{content:"\EA94"}.mi-Calendar:before,.mi-CalendarLegacy:before{content:"\EA95"}.mi-CalendarDay:before,.mi-CalendarDayLegacy:before{content:"\EA96"}.mi-CalendarLegacyMirrored:before,.mi-CalendarMirrored:before{content:"\EA97"}.mi-CalendarReply:before,.mi-CalendarReplyLegacy:before{content:"\EA98"}.mi-CalendarSolid:before{content:"\EA99"}.mi-CalendarWeek:before,.mi-CalendarWeekLegacy:before{content:"\EA9A"}.mi-CallForwardInternational:before{content:"\EA9B"}.mi-CallForwardInternationalMirrored:before{content:"\EA9C"}.mi-CallForwardRoaming:before{content:"\EA9D"}.mi-CallForwardRoamingMirrored:before{content:"\EA9E"}.mi-CallForwarding:before{content:"\EA9F"}.mi-CallForwardingMirrored:before{content:"\EAA0"}.mi-CalligraphyFill:before{content:"\EAA1"}.mi-CalligraphyPen:before{content:"\EAA2"}.mi-Calories:before{content:"\EAA3"}.mi-Camera:before,.mi-CameraLegacy:before{content:"\EAA4"}.mi-Cancel:before,.mi-CancelLegacy:before{content:"\EAA5"}.mi-Caption:before,.mi-CaptionLegacy:before{content:"\EAA6"}.mi-Car:before,.mi-DrivingMode:before{content:"\EAA7"}.mi-CaretBottomRightSolidCenter8:before{content:"\EAA8"}.mi-CaretDownSolid8:before{content:"\EAA9"}.mi-CaretLeftSolid8:before{content:"\EAAA"}.mi-CaretRight8:before{content:"\EAAB"}.mi-CaretRightSolid8:before{content:"\EAAC"}.mi-CaretUpSolid8:before{content:"\EAAD"}.mi-CashDrawer:before{content:"\EAAE"}.mi-CellPhone:before,.mi-CellPhoneLegacy:before,.mi-MobileContactLegacy:before{content:"\EAAF"}.mi-Certificate:before{content:"\EAB0"}.mi-CharacterAppearance:before{content:"\EAB1"}.mi-Characters:before,.mi-CharactersLegacy:before{content:"\EAB2"}.mi-ChatBubbles:before{content:"\EAB3"}.mi-CheckList:before{content:"\EAB4"}.mi-CheckMark:before,.mi-CheckMarkLegacy:before,.mi-CheckMarkZeroWidthLegacy:before{content:"\EAB5"}.mi-Checkbox:before,.mi-CheckboxLegacy:before{content:"\EAB6"}.mi-Checkbox14:before{content:"\EAB7"}.mi-CheckboxComposite:before,.mi-CheckboxCompositeLegacy:before{content:"\EAB8"}.mi-CheckboxComposite14:before{content:"\EAB9"}.mi-CheckboxCompositeReversed:before,.mi-CheckboxCompositeReversedLegacy:before{content:"\EABA"}.mi-CheckboxIndeterminate:before,.mi-CheckboxIndeterminateLegacy:before{content:"\EABC"}.mi-CheckboxIndeterminateCombo:before{content:"\EABD"}.mi-CheckboxIndeterminateCombo14:before{content:"\EABE"}.mi-ChecklistMirrored:before{content:"\EABF"}.mi-ChevronDown1Legacy:before,.mi-ChevronDown2Legacy:before,.mi-ChevronDown3Legacy:before,.mi-ChevronDown4Legacy:before,.mi-ChevronDown:before,.mi-ChevronFlipDownLegacy:before,.mi-ScrollChevronDownBoldLegacy:before,.mi-ScrollChevronDownLegacy:before{content:"\EAC0"}.mi-ChevronDownMed:before{content:"\EAC1"}.mi-ChevronDownSmLegacy:before,.mi-ChevronDownSmall:before{content:"\EAC2"}.mi-ChevronFlipLeftLegacy:before,.mi-ChevronLeft1Legacy:before,.mi-ChevronLeft2Legacy:before,.mi-ChevronLeft3Legacy:before,.mi-ChevronLeft4Legacy:before,.mi-ChevronLeft:before,.mi-ScrollChevronLeftBoldLegacy:before,.mi-ScrollChevronLeftLegacy:before{content:"\EAC3"}.mi-ChevronLeftMed:before{content:"\EAC4"}.mi-ChevronLeftSmLegacy:before,.mi-ChevronLeftSmall:before{content:"\EAC5"}.mi-ChevronFlipRightLegacy:before,.mi-ChevronRight1Legacy:before,.mi-ChevronRight2Legacy:before,.mi-ChevronRight3Legacy:before,.mi-ChevronRight4Legacy:before,.mi-ChevronRight:before,.mi-ScrollChevronRightBoldLegacy:before,.mi-ScrollChevronRightLegacy:before{content:"\EAC6"}.mi-ChevronRightMed:before{content:"\EAC7"}.mi-ChevronRightSmLegacy:before,.mi-ChevronRightSmall:before{content:"\EAC8"}.mi-ChevronFlipUpLegacy:before,.mi-ChevronUp1Legacy:before,.mi-ChevronUp2Legacy:before,.mi-ChevronUp3Legacy:before,.mi-ChevronUp4Legacy:before,.mi-ChevronUp:before,.mi-ScrollChevronUpBoldLegacy:before,.mi-ScrollChevronUpLegacy:before{content:"\EAC9"}.mi-ChevronUpMed:before{content:"\EACA"}.mi-ChevronUpSmall:before{content:"\EACB"}.mi-ChineseBoPoMoFo:before{content:"\EACC"}.mi-ChineseChangjie:before{content:"\EACD"}.mi-ChinesePinyin:before{content:"\EACE"}.mi-ChinesePunctuation:before{content:"\EACF"}.mi-ChineseQuick:before{content:"\EAD0"}.mi-ChipCardCreditCardReader:before{content:"\EAD1"}.mi-ChromeAnnotate:before{content:"\EAD2"}.mi-ChromeAnnotateContrast:before{content:"\EAD3"}.mi-ChromeBack:before{content:"\EAD4"}.mi-ChromeBackContrast:before{content:"\EAD5"}.mi-ChromeBackContrastMirrored:before{content:"\EAD6"}.mi-ChromeBackMirrored:before{content:"\EAD7"}.mi-ChromeBackToWindow:before{content:"\EAD8"}.mi-ChromeBackToWindowContrast:before{content:"\EAD9"}.mi-ChromeClose:before{content:"\EADA"}.mi-ChromeCloseContrast:before{content:"\EADB"}.mi-ChromeFullScreen:before{content:"\EADC"}.mi-ChromeFullScreenContrast:before{content:"\EADD"}.mi-ChromeMaximize:before{content:"\EADE"}.mi-ChromeMaximizeContrast:before{content:"\EADF"}.mi-ChromeMinimize:before{content:"\EAE0"}.mi-ChromeMinimizeContrast:before{content:"\EAE1"}.mi-ChromeRestore:before{content:"\EAE2"}.mi-ChromeRestoreContrast:before{content:"\EAE3"}.mi-ChromeSwitch:before{content:"\EAE4"}.mi-ChromeSwitchContast:before{content:"\EAE5"}.mi-CircleFill:before{content:"\EAE6"}.mi-CircleFillBadge12:before{content:"\EAE7"}.mi-CircleRing:before{content:"\EAE8"}.mi-CircleRingBadge12:before{content:"\EAE9"}.mi-CityNext:before{content:"\EAEA"}.mi-CityNext2:before{content:"\EAEB"}.mi-Clear:before,.mi-ClearLegacy:before{content:"\EAEC"}.mi-ClearAllInk:before{content:"\EAED"}.mi-ClearAllInkMirrored:before{content:"\EAEE"}.mi-ClearSelection:before,.mi-ClearSelectionLegacy:before{content:"\EAEF"}.mi-ClearSelectionLegacyMirrored:before,.mi-ClearSelectionMirrored:before{content:"\EAF0"}.mi-Click:before{content:"\EAF1"}.mi-ClipboardList:before{content:"\EAF2"}.mi-ClipboardListMirrored:before{content:"\EAF3"}.mi-ClippingTool:before{content:"\EAF4"}.mi-Clock:before,.mi-ClockLegacy:before{content:"\EAF6"}.mi-ClosePane:before,.mi-ClosePaneLegacy:before{content:"\EAF7"}.mi-ClosePaneLegacyMirrored:before,.mi-ClosePaneMirrored:before{content:"\EAF8"}.mi-Cloud:before{content:"\EAF9"}.mi-CloudPrinter:before{content:"\EAFA"}.mi-CloudSeach:before{content:"\EAFB"}.mi-Code:before{content:"\EAFC"}.mi-CollapseContent:before{content:"\EAFD"}.mi-CollapseContentSingle:before{content:"\EAFE"}.mi-CollateLandscape:before{content:"\EAFF"}.mi-CollateLandscapeSeparated:before{content:"\EB00"}.mi-CollatePortrait:before{content:"\EB01"}.mi-CollatePortraitSeparated:before{content:"\EB02"}.mi-Color:before,.mi-ColorLegacy:before{content:"\EB03"}.mi-ColorOff:before{content:"\EB04"}.mi-CommaKey:before{content:"\EB05"}.mi-CommandPrompt:before{content:"\EB06"}.mi-Comment:before,.mi-CommentLegacy:before{content:"\EB07"}.mi-Communications:before{content:"\EB08"}.mi-CompanionApp:before{content:"\EB09"}.mi-CompanionDeviceFramework:before{content:"\EB0A"}.mi-Completed:before{content:"\EB0B"}.mi-CompletedSolid:before{content:"\EB0C"}.mi-Component:before{content:"\EB0D"}.mi-Connect:before{content:"\EB0E"}.mi-ConnectApp:before,.mi-MiracastLogoLarge:before{content:"\EB0F"}.mi-Connected:before{content:"\EB10"}.mi-Construction:before{content:"\EB11"}.mi-ConstructionCone:before{content:"\EB12"}.mi-ConstructionSolid:before{content:"\EB13"}.mi-Contact3Legacy:before,.mi-Contact:before,.mi-ContactLegacy:before{content:"\EB14"}.mi-Contact2:before,.mi-Contact2Legacy:before{content:"\EB15"}.mi-ContactInfo:before,.mi-ContactInfoLegacy:before{content:"\EB16"}.mi-ContactInfoMirrored:before{content:"\EB17"}.mi-ContactPresence:before,.mi-ContactPresenceLegacy:before{content:"\EB18"}.mi-ContactSolid:before{content:"\EB19"}.mi-Copy:before,.mi-CopyLegacy:before{content:"\EB1A"}.mi-CopyTo:before{content:"\EB1B"}.mi-Courthouse:before{content:"\EB1C"}.mi-Crop:before,.mi-CropLegacy:before{content:"\EB1D"}.mi-CtrlSpatialLeft:before{content:"\EB1E"}.mi-CtrlSpatialRight:before{content:"\EB1F"}.mi-Cut:before,.mi-CutLegacy:before{content:"\EB20"}.mi-DMC:before{content:"\EB21"}.mi-DashKey:before{content:"\EB22"}.mi-DataSense:before{content:"\EB23"}.mi-DataSenseBar:before{content:"\EB24"}.mi-DateTime:before{content:"\EB25"}.mi-DateTimeMirrored:before{content:"\EB26"}.mi-DecreaseIndent:before,.mi-DecreaseIndentLegacy:before{content:"\EB28"}.mi-DecreaseIndentLegacyMirrored:before,.mi-DecreaseIndentMirrored:before{content:"\EB2A"}.mi-DefaultAPN:before{content:"\EB2B"}.mi-DefenderApp:before{content:"\EB2C"}.mi-DefenderBadge12:before{content:"\EB2D"}.mi-Delete:before,.mi-DeleteLegacy:before{content:"\EB2E"}.mi-Design:before{content:"\EB2F"}.mi-DetachablePC:before{content:"\EB30"}.mi-DevUpdate:before{content:"\EB31"}.mi-DeveloperTools:before{content:"\EB32"}.mi-DeviceDiscovery:before{content:"\EB33"}.mi-DeviceLaptopNoPic:before{content:"\EB34"}.mi-DeviceLaptopPic:before{content:"\EB35"}.mi-DeviceMonitorLeftPic:before{content:"\EB36"}.mi-DeviceMonitorNoPic:before{content:"\EB37"}.mi-DeviceMonitorRightPic:before{content:"\EB38"}.mi-Devices:before{content:"\EB39"}.mi-Devices3:before{content:"\EB3B"}.mi-Devices4:before{content:"\EB3C"}.mi-Devices2:before,.mi-DevicesLegacy:before{content:"\EB3D"}.mi-Diagnostic:before{content:"\EB3E"}.mi-Dial1:before{content:"\EB3F"}.mi-Dial10:before{content:"\EB40"}.mi-Dial11:before{content:"\EB41"}.mi-Dial12:before{content:"\EB42"}.mi-Dial13:before{content:"\EB43"}.mi-Dial14:before{content:"\EB44"}.mi-Dial15:before{content:"\EB45"}.mi-Dial16:before{content:"\EB46"}.mi-Dial2:before{content:"\EB47"}.mi-Dial3:before{content:"\EB48"}.mi-Dial4:before{content:"\EB49"}.mi-Dial5:before{content:"\EB4A"}.mi-Dial6:before{content:"\EB4B"}.mi-Dial7:before{content:"\EB4C"}.mi-Dial8:before{content:"\EB4D"}.mi-Dial9:before{content:"\EB4E"}.mi-DialShape1:before{content:"\EB4F"}.mi-DialShape2:before{content:"\EB50"}.mi-DialShape3:before{content:"\EB51"}.mi-DialShape4:before{content:"\EB52"}.mi-DialUp:before{content:"\EB53"}.mi-Dialpad:before{content:"\EB54"}.mi-Dictionary:before{content:"\EB55"}.mi-DictionaryAdd:before{content:"\EB56"}.mi-DictionaryCloud:before{content:"\EB57"}.mi-DirectAccess:before{content:"\EB58"}.mi-Directions:before,.mi-DirectionsLegacy:before{content:"\EB59"}.mi-DisableUpdates:before,.mi-DisableUpdatesLegacy:before{content:"\EB5A"}.mi-DisconnectDisplay:before{content:"\EB5B"}.mi-DisconnectDrive:before,.mi-DisconnectDriveLegacy:before{content:"\EB5C"}.mi-Dislike:before,.mi-DislikeLegacy:before{content:"\EB5D"}.mi-Dock:before{content:"\EB5E"}.mi-DockBottom:before,.mi-DockBottomLegacy:before{content:"\EB5F"}.mi-DockLeft:before,.mi-DockLeftLegacy:before{content:"\EB60"}.mi-DockLeftLegacyMirrored:before,.mi-DockLeftMirrored:before{content:"\EB61"}.mi-DockRight:before,.mi-DockRightLegacy:before{content:"\EB62"}.mi-DockRightLegacyMirrored:before,.mi-DockRightMirrored:before{content:"\EB63"}.mi-Document:before,.mi-DocumentLegacy:before{content:"\EB64"}.mi-DoublePinyin:before{content:"\EB65"}.mi-Down:before,.mi-DownLegacy:before{content:"\EB66"}.mi-DownShiftKey:before{content:"\EB67"}.mi-Download:before,.mi-DownloadLegacy:before{content:"\EB68"}.mi-DownloadMap:before{content:"\EB69"}.mi-Dpad:before{content:"\EB6A"}.mi-Draw:before{content:"\EB6B"}.mi-DrawSolid:before{content:"\EB6C"}.mi-Drop:before{content:"\EB6D"}.mi-DullSound:before{content:"\EB6E"}.mi-DullSoundKey:before{content:"\EB6F"}.mi-DuplexLandscapeOneSided:before{content:"\EB70"}.mi-DuplexLandscapeOneSidedMirrored:before{content:"\EB71"}.mi-DuplexLandscapeTwoSidedLongEdge:before{content:"\EB72"}.mi-DuplexLandscapeTwoSidedLongEdgeMirrored:before{content:"\EB73"}.mi-DuplexLandscapeTwoSidedShortEdge:before{content:"\EB74"}.mi-DuplexLandscapeTwoSidedShortEdgeMirrored:before{content:"\EB75"}.mi-DuplexPortraitOneSided:before{content:"\EB76"}.mi-DuplexPortraitOneSidedMirrored:before{content:"\EB77"}.mi-DuplexPortraitTwoSidedLongEdge:before{content:"\EB78"}.mi-DuplexPortraitTwoSidedLongEdgeMirrored:before{content:"\EB79"}.mi-DuplexPortraitTwoSidedShortEdge:before{content:"\EB7A"}.mi-DuplexPortraitTwoSidedShortEdgeMirrored:before{content:"\EB7B"}.mi-DynamicLock:before{content:"\EB7C"}.mi-EMI:before{content:"\EB7D"}.mi-Ear:before{content:"\EB7E"}.mi-Earbud:before{content:"\EB7F"}.mi-EaseOfAccess:before,.mi-EaseOfAccessLegacy:before{content:"\EB80"}.mi-Edit:before,.mi-EditLegacy:before{content:"\EB81"}.mi-EditLegacyMirrored:before,.mi-EditMirrored:before{content:"\EB82"}.mi-Education:before{content:"\EB83"}.mi-Emoji:before,.mi-EmojiLegacy:before{content:"\EB84"}.mi-Emoji2:before,.mi-Emoji2Legacy:before{content:"\EB85"}.mi-EmojiSwatch:before{content:"\EB86"}.mi-EmojiTabCelebrationObjects:before{content:"\EB87"}.mi-EmojiTabFavorites:before{content:"\EB88"}.mi-EmojiTabFoodPlants:before{content:"\EB89"}.mi-EmojiTabPeople:before{content:"\EB8A"}.mi-EmojiTabSmilesAnimals:before{content:"\EB8B"}.mi-EmojiTabSymbols:before{content:"\EB8C"}.mi-EmojiTabTextSmiles:before{content:"\EB8D"}.mi-EmojiTabTransitPlaces:before{content:"\EB8E"}.mi-EndPointSolid:before{content:"\EB90"}.mi-EnglishPunctuation:before{content:"\EB91"}.mi-Equalizer:before{content:"\EB92"}.mi-EraseTool:before{content:"\EB93"}.mi-EraseToolFill:before{content:"\EB94"}.mi-EraseToolFill2:before{content:"\EB95"}.mi-Error:before{content:"\EB96"}.mi-ErrorBadge:before{content:"\EB97"}.mi-ErrorBadge12:before{content:"\EB98"}.mi-Ethernet:before{content:"\EB99"}.mi-EthernetError:before{content:"\EB9A"}.mi-EthernetWarning:before{content:"\EB9B"}.mi-ExpandTile:before,.mi-ExpandTileLegacy:before{content:"\EB9C"}.mi-ExpandTileLegacyMirrored:before,.mi-ExpandTileMirrored:before{content:"\EB9D"}.mi-ExploitProtectionSettings:before{content:"\EB9E"}.mi-ExploreContent:before{content:"\EB9F"}.mi-ExploreContentSingle:before{content:"\EBA0"}.mi-Export:before,.mi-ImportLegacyMirrored:before,.mi-ImportMirrored:before{content:"\EBA1"}.mi-EyeGaze:before{content:"\EBA2"}.mi-Eyedropper:before{content:"\EBA3"}.mi-Family:before{content:"\EBA4"}.mi-FastForward:before{content:"\EBA5"}.mi-Favicon:before{content:"\EBA6"}.mi-FavoriteList:before{content:"\EBA8"}.mi-FavoriteInlineLegacy:before,.mi-FavoriteStar:before,.mi-OutlineStarLegacy:before,.mi-RatingStarLegacy:before,.mi-Unfavorite2Legacy:before{content:"\EBA9"}.mi-Favorite2Legacy:before,.mi-FavoriteLegacy:before,.mi-FavoriteStarFill:before,.mi-RatingStarFillLegacy:before,.mi-RatingStarFillReducedPaddingHTMLLegacy:before,.mi-RatingStarFillSmallLegacy:before,.mi-RatingStarFillZeroWidthLegacy:before,.mi-SolidStarLegacy:before{content:"\EBAA"}.mi-Feedback:before{content:"\EBAB"}.mi-FeedbackApp:before{content:"\EBAC"}.mi-Ferry:before{content:"\EBAD"}.mi-FerrySolid:before{content:"\EBAE"}.mi-FileExplorer:before{content:"\EBAF"}.mi-FileExplorerApp:before{content:"\EBB0"}.mi-Filter:before,.mi-FilterLegacy:before{content:"\EBB1"}.mi-FingerInking:before{content:"\EBB2"}.mi-Fingerprint:before{content:"\EBB3"}.mi-FitPage:before{content:"\EBB4"}.mi-EndPoint:before,.mi-Flag:before,.mi-FlagLegacy:before{content:"\EBB5"}.mi-Flashlight:before{content:"\EBB6"}.mi-FlickDown:before{content:"\EBB7"}.mi-FlickLeft:before{content:"\EBB8"}.mi-FlickRight:before{content:"\EBB9"}.mi-FlickUp:before{content:"\EBBA"}.mi-Folder:before{content:"\EBBB"}.mi-FolderFill:before,.mi-FolderLegacy:before{content:"\EBBC"}.mi-FolderHorizontal:before{content:"\EBBD"}.mi-FolderOpen:before{content:"\EBBE"}.mi-Font:before,.mi-FontLegacy:before{content:"\EBBF"}.mi-FontColor:before,.mi-FontColorLegacy:before{content:"\EBC0"}.mi-FontColorKorean:before,.mi-FontColorKoreanLegacy:before{content:"\EBC2"}.mi-FontDecrease:before,.mi-FontDecreaseLegacy:before{content:"\EBC3"}.mi-FontIncrease:before,.mi-FontIncreaseLegacy:before{content:"\EBC4"}.mi-FontSize:before,.mi-FontSizeLegacy:before{content:"\EBC5"}.mi-FontStyleKorean:before,.mi-FontStyleKoreanLegacy:before{content:"\EBC7"}.mi-ArrowHTMLLegacyMirrored:before,.mi-BackBttnMirroredArrow20Legacy:before,.mi-BackBttnMirroredArrow42Legacy:before,.mi-Forward:before,.mi-ForwardLegacy:before{content:"\EBC8"}.mi-ForwardMirrored:before{content:"\EBC9"}.mi-ForwardSm:before{content:"\EBCA"}.mi-FourBars:before,.mi-FourBarsLegacy:before{content:"\EBCB"}.mi-FreeFormClipping:before{content:"\EBCC"}.mi-Frigid:before{content:"\EBCD"}.mi-FullAlpha:before{content:"\EBCE"}.mi-FullCircleMask:before{content:"\EBCF"}.mi-FullHiragana:before{content:"\EBD0"}.mi-FullKatakana:before{content:"\EBD1"}.mi-FullScreen:before,.mi-FullScreenLegacy:before{content:"\EBD2"}.mi-FuzzyReading:before{content:"\EBD3"}.mi-GIF:before{content:"\EBD4"}.mi-Game:before{content:"\EBD5"}.mi-GameConsole:before{content:"\EBD6"}.mi-GiftboxOpen:before{content:"\EBD7"}.mi-GlobalNavigationButton:before{content:"\EBD8"}.mi-Globe:before,.mi-GlobeLegacy:before{content:"\EBD9"}.mi-Go:before,.mi-GoLegacy:before{content:"\EBDA"}.mi-GoLegacyMirrored:before,.mi-GoMirrored:before{content:"\EBDB"}.mi-GoToStart:before,.mi-GoToStartLegacy:before{content:"\EBDC"}.mi-GotoToday:before,.mi-GotoTodayLegacy:before{content:"\EBDD"}.mi-GridView:before{content:"\EBDE"}.mi-GripperBarHorizontal:before{content:"\EBDF"}.mi-GripperBarVertical:before{content:"\EBE0"}.mi-GripperResize:before{content:"\EBE1"}.mi-GripperResizeMirrored:before{content:"\EBE2"}.mi-GripperTool:before{content:"\EBE3"}.mi-Groceries:before{content:"\EBE4"}.mi-Group:before{content:"\EBE5"}.mi-GroupList:before{content:"\EBE6"}.mi-GuestUser:before{content:"\EBE7"}.mi-HMD:before{content:"\EBE8"}.mi-HWPInsert:before{content:"\EBE9"}.mi-HWPJoin:before{content:"\EBEA"}.mi-HWPNewLine:before{content:"\EBEB"}.mi-HWPOverwrite:before{content:"\EBEC"}.mi-HWPScratchOut:before{content:"\EBED"}.mi-HWPSplit:before{content:"\EBEE"}.mi-HWPStrikeThrough:before{content:"\EBEF"}.mi-HalfAlpha:before{content:"\EBF0"}.mi-HalfDullSound:before{content:"\EBF1"}.mi-HalfKatakana:before{content:"\EBF2"}.mi-HalfStarLeft:before{content:"\EBF3"}.mi-HalfStarRight:before{content:"\EBF4"}.mi-Handwriting:before{content:"\EBF5"}.mi-HangUp:before,.mi-HangUpLegacy:before{content:"\EBF6"}.mi-HardDrive:before{content:"\EBF7"}.mi-HeadlessDevice:before{content:"\EBF8"}.mi-Headphone:before{content:"\EBF9"}.mi-Headphone0:before{content:"\EBFA"}.mi-Headphone1:before{content:"\EBFB"}.mi-Headphone2:before{content:"\EBFC"}.mi-Headphone3:before{content:"\EBFD"}.mi-Headset:before{content:"\EBFE"}.mi-Health:before{content:"\EBFF"}.mi-Heart:before,.mi-HeartLegacy:before{content:"\EC00"}.mi-HeartBroken:before{content:"\EC01"}.mi-HeartBrokenLegacy:before,.mi-HeartBrokenZeroWidthLegacy:before{content:"\EC02"}.mi-HeartFill:before,.mi-HeartFillLegacy:before,.mi-HeartFillZeroWidthLegacy:before{content:"\EC03"}.mi-Help:before,.mi-HelpLegacy:before{content:"\EC04"}.mi-HelpLegacyMirrored:before,.mi-HelpMirrored:before{content:"\EC05"}.mi-HideBcc:before,.mi-HideBccLegacy:before{content:"\EC06"}.mi-Highlight:before,.mi-HighlightLegacy:before{content:"\EC07"}.mi-HighlightFill:before{content:"\EC08"}.mi-HighlightFill2:before{content:"\EC09"}.mi-History:before{content:"\EC0A"}.mi-HolePunchLandscapeBottom:before{content:"\EC0B"}.mi-HolePunchLandscapeLeft:before{content:"\EC0C"}.mi-HolePunchLandscapeRight:before{content:"\EC0D"}.mi-HolePunchLandscapeTop:before{content:"\EC0E"}.mi-HolePunchOff:before{content:"\EC0F"}.mi-HolePunchPortraitBottom:before{content:"\EC10"}.mi-HolePunchPortraitLeft:before{content:"\EC11"}.mi-HolePunchPortraitRight:before{content:"\EC12"}.mi-HolePunchPortraitTop:before{content:"\EC13"}.mi-HoloLensSelected:before{content:"\EC14"}.mi-Home:before,.mi-HomeLegacy:before{content:"\EC15"}.mi-HomeGroup:before{content:"\EC16"}.mi-HomeSolid:before{content:"\EC17"}.mi-HorizontalTabKey:before{content:"\EC18"}.mi-IBeam:before{content:"\EC19"}.mi-IBeamOutline:before{content:"\EC1A"}.mi-IOT:before{content:"\EC1B"}.mi-ImageExport:before{content:"\EC1C"}.mi-ExportMirrored:before,.mi-Import:before,.mi-ImportLegacy:before{content:"\EC1D"}.mi-ImportAll:before,.mi-ImportAllLegacy:before{content:"\EC1E"}.mi-ImportAllLegacyMirrored:before,.mi-ImportAllMirrored:before{content:"\EC1F"}.mi-Important:before,.mi-ImportantLegacy:before{content:"\EC20"}.mi-ImportantBadge12:before{content:"\EC21"}.mi-InPrivate:before{content:"\EC22"}.mi-IncidentTriangle:before{content:"\EC23"}.mi-IncreaseIndent:before,.mi-IncreaseIndentLegacy:before{content:"\EC25"}.mi-IncreaseIndentLegacyMirrored:before,.mi-IncreaseIndentMirrored:before{content:"\EC27"}.mi-Info:before{content:"\EC28"}.mi-Info2:before{content:"\EC29"}.mi-InfoSolid:before{content:"\EC2A"}.mi-InkingCaret:before{content:"\EC2B"}.mi-InkingColorFill:before{content:"\EC2C"}.mi-InkingColorOutline:before{content:"\EC2D"}.mi-InkingTool:before{content:"\EC2E"}.mi-InkingToolFill:before{content:"\EC2F"}.mi-InkingToolFill2:before{content:"\EC30"}.mi-Input:before{content:"\EC31"}.mi-InsiderHubApp:before{content:"\EC32"}.mi-InteractiveDashboard:before{content:"\EC33"}.mi-Italic:before,.mi-ItalicLegacy:before{content:"\EC34"}.mi-ItalicC:before,.mi-ItalicCLegacy:before{content:"\EC36"}.mi-ItalicI:before,.mi-ItalicILegacy:before{content:"\EC38"}.mi-ItalicK:before,.mi-ItalicKLegacy:before{content:"\EC3A"}.mi-ItalicKorean:before,.mi-ItalicKoreanLegacy:before{content:"\EC3C"}.mi-ItalicRussian:before,.mi-ItalicRussianLegacy:before{content:"\EC3E"}.mi-Japanese:before{content:"\EC3F"}.mi-JpnRomanji:before{content:"\EC40"}.mi-JpnRomanjiLock:before{content:"\EC41"}.mi-JpnRomanjiShift:before{content:"\EC42"}.mi-JpnRomanjiShiftLock:before{content:"\EC43"}.mi-Key12On:before{content:"\EC44"}.mi-Keyboard12Key:before{content:"\EC46"}.mi-KeyboardBrightness:before{content:"\EC47"}.mi-KeyBoardLegacy:before,.mi-KeyboardClassic:before{content:"\EC48"}.mi-KeyboardDismiss:before{content:"\EC49"}.mi-KeyboardDock:before{content:"\EC4A"}.mi-KeyboardFull:before{content:"\EC4B"}.mi-KeyboardLeftAligned:before{content:"\EC4C"}.mi-KeyboardLeftDock:before{content:"\EC4D"}.mi-KeyboardLeftHanded:before{content:"\EC4E"}.mi-KeyboardLowerBrightness:before{content:"\EC4F"}.mi-KeyboardNarrow:before{content:"\EC50"}.mi-KeyboardOneHanded:before{content:"\EC51"}.mi-KeyboardRightAligned:before{content:"\EC52"}.mi-KeyboardRightDock:before{content:"\EC53"}.mi-KeyboardRightHanded:before{content:"\EC54"}.mi-KeyboardSettings:before{content:"\EC55"}.mi-KeyboardShortcut:before{content:"\EC56"}.mi-KeyboardSplit:before,.mi-KeyboardSplitLegacy:before{content:"\EC57"}.mi-KeyboardStandard:before,.mi-KeyboardStandardLegacy:before{content:"\EC58"}.mi-KeyboardUndock:before{content:"\EC59"}.mi-KnowledgeArticle:before{content:"\EC5A"}.mi-Korean:before{content:"\EC5B"}.mi-LEDLight:before{content:"\EC5C"}.mi-Label:before{content:"\EC5D"}.mi-LandscapeOrientation:before{content:"\EC5E"}.mi-LandscapeOrientationMirrored:before{content:"\EC5F"}.mi-LangJPN:before{content:"\EC60"}.mi-LanguageChs:before{content:"\EC61"}.mi-LanguageCht:before{content:"\EC62"}.mi-LanguageJpn:before{content:"\EC63"}.mi-LanguageKor:before{content:"\EC64"}.mi-LaptopSecure:before{content:"\EC65"}.mi-LaptopSelected:before{content:"\EC66"}.mi-LargeErase:before{content:"\EC67"}.mi-Layout:before,.mi-LayoutLegacy:before{content:"\EC69"}.mi-Leaf:before{content:"\EC6A"}.mi-LeaveChat:before,.mi-LeaveChatLegacy:before{content:"\EC6B"}.mi-LeaveChatMirrored:before{content:"\EC6C"}.mi-LeftArrowKeyTime0:before{content:"\EC6D"}.mi-LeftDoubleQuote:before{content:"\EC6E"}.mi-LeftQuote:before{content:"\EC6F"}.mi-LeftStick:before{content:"\EC70"}.mi-Lexicon:before{content:"\EC71"}.mi-Library:before,.mi-LibraryLegacy:before{content:"\EC72"}.mi-Light:before{content:"\EC73"}.mi-LightningBolt:before{content:"\EC75"}.mi-Like:before,.mi-LikeInlineLegacy:before,.mi-LikeLegacy:before{content:"\EC76"}.mi-LikeDislike:before,.mi-LikeDislikeLegacy:before{content:"\EC77"}.mi-LineDisplay:before{content:"\EC78"}.mi-Link:before,.mi-LinkLegacy:before{content:"\EC79"}.mi-List:before{content:"\EC7A"}.mi-ListMirrored:before{content:"\EC7B"}.mi-Location:before,.mi-LocationLegacy:before{content:"\EC7C"}.mi-Lock:before,.mi-LockLegacy:before{content:"\EC7D"}.mi-LockFeedback:before{content:"\EC7E"}.mi-LockScreenGlance:before{content:"\EC7F"}.mi-LockscreenDesktop:before{content:"\EC80"}.mi-LowerBrightness:before{content:"\EC81"}.mi-MagStripeReader:before{content:"\EC82"}.mi-Mail:before,.mi-MailLegacy:before{content:"\EC83"}.mi-MailBadge12:before{content:"\EC84"}.mi-MailFill:before,.mi-MailFillLegacy:before,.mi-MailMessageLegacy:before{content:"\EC85"}.mi-MailForward:before,.mi-MailForwardLegacy:before{content:"\EC86"}.mi-MailForwardLegacyMirrored:before,.mi-MailForwardMirrored:before{content:"\EC87"}.mi-MailReply:before,.mi-MailReplyLegacy:before{content:"\EC88"}.mi-MailReplyAll:before,.mi-MailReplyAllLegacy:before{content:"\EC89"}.mi-MailReplyAllLegacyMirrored:before,.mi-MailReplyAllMirrored:before{content:"\EC8A"}.mi-MailReplyLegacyMirrored:before,.mi-MailReplyMirrored:before{content:"\EC8B"}.mi-Manage:before,.mi-ManageLegacy:before{content:"\EC8C"}.mi-MapCompassBottom:before{content:"\EC8D"}.mi-MapCompassTop:before{content:"\EC8E"}.mi-MapDirections:before{content:"\EC8F"}.mi-MapDrive:before,.mi-MapDriveLegacy:before{content:"\EC90"}.mi-MapLayers:before{content:"\EC91"}.mi-MapLegacy:before,.mi-MapPin:before{content:"\EC92"}.mi-MapPin2:before,.mi-MapPinLegacy:before{content:"\EC94"}.mi-Marker:before{content:"\EC95"}.mi-Marquee:before{content:"\EC96"}.mi-Media:before{content:"\EC97"}.mi-MediaStorageTower:before{content:"\EC98"}.mi-Megaphone:before{content:"\EC99"}.mi-Memo:before,.mi-MemoLegacy:before{content:"\EC9A"}.mi-CommentInlineLegacy:before,.mi-Message:before,.mi-MessageLegacy:before{content:"\EC9B"}.mi-MicClipping:before{content:"\EC9C"}.mi-MicError:before{content:"\EC9D"}.mi-MicOff:before{content:"\EC9E"}.mi-MicOn:before{content:"\EC9F"}.mi-MicSleep:before{content:"\ECA0"}.mi-Microphone:before,.mi-MicrophoneLegacy:before{content:"\ECA1"}.mi-MicrophoneListening:before{content:"\ECA2"}.mi-MiracastLogoSmall:before{content:"\ECA3"}.mi-MixVolumes:before{content:"\ECA4"}.mi-MobActionCenter:before{content:"\ECA5"}.mi-MobAirplane:before{content:"\ECA6"}.mi-MobBattery0:before{content:"\ECA7"}.mi-MobBattery1:before{content:"\ECA8"}.mi-MobBattery10:before{content:"\ECA9"}.mi-MobBattery2:before{content:"\ECAA"}.mi-MobBattery3:before{content:"\ECAB"}.mi-MobBattery4:before{content:"\ECAC"}.mi-MobBattery5:before{content:"\ECAD"}.mi-MobBattery6:before{content:"\ECAE"}.mi-MobBattery7:before{content:"\ECAF"}.mi-MobBattery8:before{content:"\ECB0"}.mi-MobBattery9:before{content:"\ECB1"}.mi-MobBatteryCharging0:before{content:"\ECB2"}.mi-MobBatteryCharging1:before{content:"\ECB3"}.mi-MobBatteryCharging10:before{content:"\ECB4"}.mi-MobBatteryCharging2:before{content:"\ECB5"}.mi-MobBatteryCharging3:before{content:"\ECB6"}.mi-MobBatteryCharging4:before{content:"\ECB7"}.mi-MobBatteryCharging5:before{content:"\ECB8"}.mi-MobBatteryCharging6:before{content:"\ECB9"}.mi-MobBatteryCharging7:before{content:"\ECBA"}.mi-MobBatteryCharging8:before{content:"\ECBB"}.mi-MobBatteryCharging9:before{content:"\ECBC"}.mi-MobBatterySaver0:before{content:"\ECBD"}.mi-MobBatterySaver1:before{content:"\ECBE"}.mi-MobBatterySaver10:before{content:"\ECBF"}.mi-MobBatterySaver2:before{content:"\ECC0"}.mi-MobBatterySaver3:before{content:"\ECC1"}.mi-MobBatterySaver4:before{content:"\ECC2"}.mi-MobBatterySaver5:before{content:"\ECC3"}.mi-MobBatterySaver6:before{content:"\ECC4"}.mi-MobBatterySaver7:before{content:"\ECC5"}.mi-MobBatterySaver8:before{content:"\ECC6"}.mi-MobBatterySaver9:before{content:"\ECC7"}.mi-MobBatteryUnknown:before{content:"\ECC8"}.mi-MobBluetooth:before{content:"\ECC9"}.mi-MobCallForwarding:before{content:"\ECCA"}.mi-MobCallForwardingMirrored:before{content:"\ECCB"}.mi-MobDrivingMode:before{content:"\ECCC"}.mi-MobLocation:before{content:"\ECCD"}.mi-MobQuietHours:before{content:"\ECCE"}.mi-MobSIMError:before{content:"\ECCF"}.mi-MobSIMLock:before{content:"\ECD0"}.mi-MobSIMMissing:before{content:"\ECD1"}.mi-MobSignal1:before{content:"\ECD2"}.mi-MobSignal2:before{content:"\ECD3"}.mi-MobSignal3:before{content:"\ECD4"}.mi-MobSignal4:before{content:"\ECD5"}.mi-MobSignal5:before{content:"\ECD6"}.mi-MobWifi1:before{content:"\ECD7"}.mi-MobWifi2:before{content:"\ECD8"}.mi-MobWifi3:before{content:"\ECD9"}.mi-MobWifi4:before{content:"\ECDA"}.mi-MobWifiHotspot:before{content:"\ECDB"}.mi-MobWifiWarning1:before{content:"\ECDC"}.mi-MobWifiWarning2:before{content:"\ECDD"}.mi-MobWifiWarning3:before{content:"\ECDE"}.mi-MobWifiWarning4:before{content:"\ECDF"}.mi-MobeSIM:before{content:"\ECE0"}.mi-MobeSIMBusy:before{content:"\ECE1"}.mi-MobeSIMLocked:before{content:"\ECE2"}.mi-MobeSIMNoProfile:before{content:"\ECE3"}.mi-MobileLocked:before{content:"\ECE4"}.mi-MobileSelected:before{content:"\ECE5"}.mi-MobileTablet:before{content:"\ECE6"}.mi-More:before,.mi-MoreLegacy:before{content:"\ECE7"}.mi-Mouse:before{content:"\ECE8"}.mi-MoveToFolder:before,.mi-MoveToFolderLegacy:before{content:"\ECE9"}.mi-Movies:before{content:"\ECEA"}.mi-MultiSelect:before,.mi-MultiSelectLegacy:before{content:"\ECEB"}.mi-MultiSelectLegacyMirrored:before,.mi-MultiSelectMirrored:before{content:"\ECEC"}.mi-MultimediaDMP:before{content:"\ECED"}.mi-MultimediaDMS:before{content:"\ECEE"}.mi-MultimediaDVR:before{content:"\ECEF"}.mi-MultimediaPMP:before{content:"\ECF0"}.mi-Multitask:before{content:"\ECF1"}.mi-Multitask16:before{content:"\ECF2"}.mi-MultitaskExpanded:before{content:"\ECF3"}.mi-MusicAlbum:before{content:"\ECF4"}.mi-MusicInfo:before,.mi-MusicInfoLegacy:before{content:"\ECF5"}.mi-MusicNote:before{content:"\ECF6"}.mi-MusicSharing:before{content:"\ECF7"}.mi-MusicSharingOff:before{content:"\ECF8"}.mi-Mute:before,.mi-MuteLegacy:before{content:"\ECF9"}.mi-MyNetwork:before{content:"\ECFA"}.mi-NUIFPContinueSlideAction:before{content:"\ECFB"}.mi-NUIFPContinueSlideHand:before{content:"\ECFC"}.mi-NUIFPPressAction:before{content:"\ECFD"}.mi-NUIFPPressHand:before{content:"\ECFE"}.mi-NUIFPPressRepeatAction:before{content:"\ECFF"}.mi-NUIFPRollLeftAction:before{content:"\ED00"}.mi-NUIFPRollLeftHand:before{content:"\ED01"}.mi-NUIFPRollRightHand:before{content:"\ED02"}.mi-NUIFPRollRightHandAction:before{content:"\ED03"}.mi-NUIFPStartSlideAction:before{content:"\ED04"}.mi-NUIFPPressRepeatHand:before,.mi-NUIFPStartSlideHand:before{content:"\ED05"}.mi-NUIFace:before{content:"\ED06"}.mi-NUIIris:before{content:"\ED07"}.mi-Narrator:before{content:"\ED08"}.mi-NarratorForward:before{content:"\ED09"}.mi-NarratorForwardMirrored:before{content:"\ED0A"}.mi-NearbySharing:before{content:"\ED0B"}.mi-Network:before{content:"\ED0C"}.mi-NetworkAdapter:before{content:"\ED0D"}.mi-NetworkConnected:before{content:"\ED0E"}.mi-NetworkConnectedCheckmark:before{content:"\ED0F"}.mi-NetworkOffline:before{content:"\ED10"}.mi-NetworkPrinter:before{content:"\ED11"}.mi-NetworkSharing:before{content:"\ED12"}.mi-NetworkTower:before{content:"\ED13"}.mi-NewFolder:before,.mi-NewFolderLegacy:before{content:"\ED14"}.mi-NewWindow:before,.mi-NewWindowLegacy:before{content:"\ED15"}.mi-Next:before,.mi-NextLegacy:before{content:"\ED16"}.mi-NoiseCancelation:before{content:"\ED17"}.mi-NoiseCancelationOff:before{content:"\ED18"}.mi-OEM:before{content:"\ED19"}.mi-OneBar:before,.mi-OneBarLegacy:before{content:"\ED1A"}.mi-OpenFile:before,.mi-OpenFileLegacy:before{content:"\ED1B"}.mi-OpenFolderHorizontal:before{content:"\ED1C"}.mi-OpenInNewWindow:before,.mi-OpenInNewWindowLegacy:before{content:"\ED1D"}.mi-OpenLocal:before,.mi-OpenLocalLegacy:before{content:"\ED1E"}.mi-OpenPane:before,.mi-OpenPaneLegacy:before{content:"\ED1F"}.mi-OpenPaneLegacyMirrored:before,.mi-OpenPaneMirrored:before{content:"\ED20"}.mi-OpenWith:before,.mi-OpenWithLegacy:before{content:"\ED21"}.mi-OpenWithLegacyMirrored:before,.mi-OpenWithMirrored:before{content:"\ED22"}.mi-Orientation:before,.mi-OrientationLegacy:before{content:"\ED23"}.mi-OtherUser:before,.mi-OtherUserLegacy:before{content:"\ED24"}.mi-OutlineHalfStarLeft:before{content:"\ED25"}.mi-OutlineHalfStarRight:before{content:"\ED26"}.mi-OutlineQuarterStarLeft:before{content:"\ED27"}.mi-OutlineQuarterStarRight:before{content:"\ED28"}.mi-OutlineStarLeftHalf:before{content:"\ED29"}.mi-OutlineStarRightHalf:before{content:"\ED2A"}.mi-OutlineThreeQuarterStarLeft:before{content:"\ED2B"}.mi-OutlineThreeQuarterStarRight:before{content:"\ED2C"}.mi-PC1:before,.mi-PC1Legacy:before{content:"\ED2D"}.mi-PINPad:before{content:"\ED2E"}.mi-PLAP:before{content:"\ED2F"}.mi-PPSFourLandscape:before{content:"\ED30"}.mi-PPSFourPortrait:before{content:"\ED31"}.mi-PPSOneLandscape:before{content:"\ED32"}.mi-PPSOnePortrait:before{content:"\ED33"}.mi-PPSTwoLandscape:before{content:"\ED34"}.mi-PPSTwoPortrait:before{content:"\ED35"}.mi-Package:before{content:"\ED36"}.mi-Page:before,.mi-PageLegacy:before{content:"\ED37"}.mi-PageLeft:before{content:"\ED38"}.mi-PageMarginLandscapeModerate:before{content:"\ED39"}.mi-PageMarginLandscapeNarrow:before{content:"\ED3A"}.mi-PageMarginLandscapeNormal:before{content:"\ED3B"}.mi-PageMarginLandscapeWide:before{content:"\ED3C"}.mi-PageMarginPortraitModerate:before{content:"\ED3D"}.mi-PageMarginPortraitNarrow:before{content:"\ED3E"}.mi-PageMarginPortraitNormal:before{content:"\ED3F"}.mi-PageMarginPortraitWide:before{content:"\ED40"}.mi-PageMirrored:before{content:"\ED41"}.mi-PageRight:before{content:"\ED42"}.mi-PageFillLegacy:before,.mi-PageSolid:before{content:"\ED43"}.mi-PaginationDotOutline10:before{content:"\ED44"}.mi-PaginationDotSolid10:before{content:"\ED45"}.mi-PanMode:before{content:"\ED46"}.mi-ParkingLocation:before{content:"\ED47"}.mi-ParkingLocationMirrored:before{content:"\ED48"}.mi-ParkingLocationSolid:before{content:"\ED49"}.mi-PartyLeader:before{content:"\ED4A"}.mi-PassiveAuthentication:before{content:"\ED4B"}.mi-PasswordKeyHide:before{content:"\ED4C"}.mi-PasswordKeyShow:before{content:"\ED4D"}.mi-Paste:before,.mi-PasteLegacy:before{content:"\ED4E"}.mi-Pause:before,.mi-PauseLegacy:before{content:"\ED4F"}.mi-PauseBadge12:before{content:"\ED50"}.mi-PaymentCard:before{content:"\ED51"}.mi-PenPalette:before{content:"\ED52"}.mi-PenPaletteMirrored:before{content:"\ED53"}.mi-PenTips:before{content:"\ED54"}.mi-PenTipsMirrored:before{content:"\ED55"}.mi-PenWorkspace:before{content:"\ED56"}.mi-PenWorkspaceMirrored:before{content:"\ED57"}.mi-Pencil:before{content:"\ED58"}.mi-PencilFill:before{content:"\ED59"}.mi-People:before,.mi-PeopleLegacy:before{content:"\ED5A"}.mi-PeriodKey:before{content:"\ED5B"}.mi-Permissions:before,.mi-PermissionsLegacy:before{content:"\ED5C"}.mi-PersonalFolder:before{content:"\ED5D"}.mi-Personalize:before{content:"\ED5E"}.mi-Phone:before,.mi-PhoneLegacy:before{content:"\ED5F"}.mi-PhoneBook:before,.mi-PhoneBookLegacy:before{content:"\ED60"}.mi-Photo:before{content:"\ED61"}.mi-Photo2:before{content:"\ED62"}.mi-Picture:before,.mi-PictureLegacy:before{content:"\ED63"}.mi-PieSingle:before{content:"\ED64"}.mi-Pin:before,.mi-PinLegacy:before{content:"\ED65"}.mi-PinFill:before{content:"\ED66"}.mi-Pinned:before{content:"\ED67"}.mi-PinnedFill:before{content:"\ED68"}.mi-PinyinIMELogo:before{content:"\ED69"}.mi-PlaceFolder:before,.mi-PlaceFolderLegacy:before{content:"\ED6B"}.mi-Play:before,.mi-PlayLegacy:before{content:"\ED6C"}.mi-Play36:before{content:"\ED6D"}.mi-PlayBadge12:before{content:"\ED6E"}.mi-PlayOn:before,.mi-PlayOnLegacy:before{content:"\ED70"}.mi-PlaySolid:before{content:"\ED71"}.mi-PlaybackRate1x:before{content:"\ED72"}.mi-PlaybackRateOther:before{content:"\ED73"}.mi-PlayerSettings:before{content:"\ED74"}.mi-PointErase:before{content:"\ED75"}.mi-PointEraseMirrored:before{content:"\ED76"}.mi-PointerHand:before{content:"\ED77"}.mi-PoliceCar:before{content:"\ED78"}.mi-PostUpdate:before,.mi-PostUpdateLegacy:before{content:"\ED79"}.mi-PowerButton:before{content:"\ED7A"}.mi-CheckboxFill:before,.mi-CheckboxFillLegacy:before,.mi-CheckboxFillZeroWidthLegacy:before,.mi-PresenceChicklet:before,.mi-PresenceChickletLegacy:before,.mi-ResizeMouseLarge:before{content:"\ED7B"}.mi-PresenceChickletVideo:before,.mi-PresenceChickletVideoLegacy:before{content:"\ED7C"}.mi-Preview:before,.mi-PreviewLegacy:before{content:"\ED7D"}.mi-PreviewLink:before,.mi-PreviewLinkLegacy:before{content:"\ED7E"}.mi-Previous:before,.mi-PreviousLegacy:before{content:"\ED7F"}.mi-Print:before,.mi-PrintLegacy:before{content:"\ED80"}.mi-PrintAllPages:before{content:"\ED81"}.mi-PrintCustomRange:before{content:"\ED82"}.mi-PrintDefault:before{content:"\ED83"}.mi-Printer3D:before{content:"\ED84"}.mi-Printer3DLegacy:before{content:"\ED85"}.mi-PrintfaxPrinterFile:before{content:"\ED86"}.mi-Priority:before,.mi-PriorityLegacy:before{content:"\ED87"}.mi-Process:before{content:"\ED88"}.mi-Processing:before{content:"\ED89"}.mi-ProgressRingDots:before{content:"\ED8A"}.mi-Project:before{content:"\ED8B"}.mi-Projector:before{content:"\ED8C"}.mi-ProtectedDocument:before,.mi-ProtectedDocumentLegacy:before{content:"\ED8D"}.mi-Protractor:before{content:"\ED8E"}.mi-ProvisioningPackage:before{content:"\ED8F"}.mi-PuncKey:before{content:"\ED90"}.mi-PuncKey0:before{content:"\ED91"}.mi-PuncKey1:before{content:"\ED92"}.mi-PuncKey2:before{content:"\ED93"}.mi-PuncKey3:before{content:"\ED94"}.mi-PuncKey4:before{content:"\ED95"}.mi-PuncKey5:before{content:"\ED96"}.mi-PuncKey6:before{content:"\ED97"}.mi-PuncKey7:before{content:"\ED98"}.mi-PuncKey8:before{content:"\ED99"}.mi-PuncKey9:before{content:"\ED9A"}.mi-PuncKeyLeftBottom:before{content:"\ED9B"}.mi-PuncKeyRightBottom:before{content:"\ED9C"}.mi-Puzzle:before{content:"\ED9D"}.mi-QWERTYOff:before{content:"\ED9E"}.mi-QWERTYOn:before{content:"\ED9F"}.mi-QuarentinedItems:before{content:"\EDA0"}.mi-QuarentinedItemsMirrored:before{content:"\EDA1"}.mi-QuarterStarLeft:before{content:"\EDA2"}.mi-QuarterStarRight:before{content:"\EDA3"}.mi-QuickNote:before{content:"\EDA4"}.mi-QuietHours:before{content:"\EDA5"}.mi-QuietHoursBadge12:before{content:"\EDA6"}.mi-Radar:before{content:"\EDA7"}.mi-RadioBtnOff:before{content:"\EDA8"}.mi-RadioBtnOn:before{content:"\EDA9"}.mi-RadioBullet:before{content:"\EDAA"}.mi-RadioBullet2:before{content:"\EDAB"}.mi-Read:before,.mi-ReadLegacy:before{content:"\EDAC"}.mi-ReadingList:before{content:"\EDAD"}.mi-ReceiptPrinter:before{content:"\EDAE"}.mi-LengthLegacy:before,.mi-Recent:before{content:"\EDAF"}.mi-Record:before,.mi-RecordLegacy:before{content:"\EDB0"}.mi-RectangularClipping:before{content:"\EDB1"}.mi-RedEye:before{content:"\EDB2"}.mi-Redo:before,.mi-RedoLegacy:before{content:"\EDB3"}.mi-ReduceTile:before,.mi-ReduceTileLegacy:before{content:"\EDB5"}.mi-ReduceTileLegacyMirrored:before,.mi-ReduceTileMirrored:before{content:"\EDB7"}.mi-Refresh:before,.mi-RefreshLegacy:before,.mi-RepeatAll:before,.mi-RepeatAllLegacy:before{content:"\EDB8"}.mi-Relationship:before{content:"\EDB9"}.mi-RememberedDevice:before{content:"\EDBA"}.mi-Reminder:before{content:"\EDBB"}.mi-ReminderFill:before{content:"\EDBC"}.mi-Remote:before,.mi-RemoteLegacy:before{content:"\EDBD"}.mi-Remove:before,.mi-RemoveLegacy:before{content:"\EDBE"}.mi-RemoveFrom:before{content:"\EDBF"}.mi-Rename:before,.mi-RenameLegacy:before{content:"\EDC0"}.mi-Repair:before,.mi-RepairLegacy:before{content:"\EDC1"}.mi-RepeatOne:before,.mi-RepeatOneLegacy:before{content:"\EDC2"}.mi-Replay:before{content:"\EDC3"}.mi-Reply:before,.mi-ReplyLegacy:before{content:"\EDC4"}.mi-ReplyMirrored:before{content:"\EDC5"}.mi-ReportDocument:before{content:"\EDC6"}.mi-ReportHacked:before,.mi-ReportHackedLegacy:before{content:"\EDC7"}.mi-ResetDevice:before{content:"\EDC8"}.mi-ResetDrive:before{content:"\EDC9"}.mi-Reshare:before,.mi-ReshareLegacy:before{content:"\EDCA"}.mi-ResizeMouseMedium:before{content:"\EDCB"}.mi-ResizeMouseMediumMirrored:before{content:"\EDCC"}.mi-ResizeMouseSmall:before{content:"\EDCD"}.mi-ResizeMouseSmallMirrored:before{content:"\EDCE"}.mi-ResizeMouseTall:before{content:"\EDCF"}.mi-ResizeMouseTallMirrored:before{content:"\EDD0"}.mi-ResizeMouseWide:before{content:"\EDD1"}.mi-ResizeTouchLarger:before{content:"\EDD2"}.mi-ResizeTouchNarrower:before{content:"\EDD3"}.mi-ResizeTouchNarrowerMirrored:before{content:"\EDD4"}.mi-ResizeTouchShorter:before{content:"\EDD5"}.mi-ResizeTouchSmaller:before{content:"\EDD6"}.mi-Resolution:before,.mi-ResolutionLegacy:before{content:"\EDD8"}.mi-ReturnKey:before{content:"\EDD9"}.mi-ReturnKeyLg:before{content:"\EDDA"}.mi-ReturnKeySm:before{content:"\EDDB"}.mi-ReturnToWindow:before,.mi-ReturnToWindowLegacy:before{content:"\EDDC"}.mi-RevToggleKey:before{content:"\EDDD"}.mi-Rewind:before{content:"\EDDE"}.mi-RightArrowKeyTime0:before{content:"\EDDF"}.mi-RightArrowKeyTime1:before{content:"\EDE0"}.mi-RightArrowKeyTime2:before{content:"\EDE1"}.mi-RightArrowKeyTime3:before{content:"\EDE2"}.mi-RightArrowKeyTime4:before{content:"\EDE3"}.mi-RightDoubleQuote:before{content:"\EDE4"}.mi-RightQuote:before{content:"\EDE5"}.mi-RightStick:before{content:"\EDE6"}.mi-Ringer:before{content:"\EDE7"}.mi-RingerBadge12:before{content:"\EDE8"}.mi-RingerSilent:before{content:"\EDE9"}.mi-RoamingDomestic:before{content:"\EDEA"}.mi-RoamingInternational:before{content:"\EDEB"}.mi-Robot:before{content:"\EDEC"}.mi-Rotate:before{content:"\EDED"}.mi-RotateCamera:before,.mi-RotateCameraLegacy:before{content:"\EDEE"}.mi-RotateLegacy:before{content:"\EDEF"}.mi-RotateMapLeft:before{content:"\EDF0"}.mi-RotateMapRight:before{content:"\EDF1"}.mi-RotationLock:before{content:"\EDF2"}.mi-Ruler:before{content:"\EDF3"}.mi-SDCard:before{content:"\EDF4"}.mi-SIMError:before{content:"\EDF5"}.mi-SIMLock:before{content:"\EDF6"}.mi-SIMMissing:before{content:"\EDF7"}.mi-SIPMove:before{content:"\EDF8"}.mi-SIPRedock:before{content:"\EDF9"}.mi-SIPUndock:before{content:"\EDFA"}.mi-Safe:before{content:"\EDFB"}.mi-Save:before,.mi-SaveLegacy:before{content:"\EDFC"}.mi-SaveAs:before,.mi-SaveAsLegacy:before{content:"\EDFD"}.mi-SaveCopy:before{content:"\EDFE"}.mi-SaveLocal:before,.mi-SaveLocalLegacy:before{content:"\EDFF"}.mi-Scan:before,.mi-ScanLegacy:before{content:"\EE00"}.mi-ScreenTime:before{content:"\EE01"}.mi-ScrollMode:before{content:"\EE02"}.mi-ScrollUpDown:before{content:"\EE03"}.mi-FindLegacy:before,.mi-Search:before,.mi-SearchboxLegacy:before{content:"\EE04"}.mi-SearchAndApps:before{content:"\EE05"}.mi-SelectAll:before,.mi-SelectAllLegacy:before{content:"\EE06"}.mi-SemanticZoom:before,.mi-SemanticZoomLegacy:before{content:"\EE08"}.mi-Send:before,.mi-SendLegacy:before{content:"\EE09"}.mi-SendFill:before{content:"\EE0A"}.mi-SendFillMirrored:before{content:"\EE0B"}.mi-SendMirrored:before{content:"\EE0C"}.mi-Sensor:before{content:"\EE0D"}.mi-Set:before{content:"\EE0E"}.mi-SetSolid:before{content:"\EE0F"}.mi-SetTile:before,.mi-SetTileLegacy:before{content:"\EE10"}.mi-SetlockScreen:before,.mi-SetlockScreenLegacy:before{content:"\EE11"}.mi-Settings:before,.mi-SettingsLegacy:before{content:"\EE12"}.mi-SettingsBattery:before{content:"\EE13"}.mi-SettingsDisplaySound:before{content:"\EE14"}.mi-Share:before{content:"\EE15"}.mi-ShareBroadband:before{content:"\EE16"}.mi-Shield:before{content:"\EE17"}.mi-Shop:before,.mi-ShopLegacy:before{content:"\EE18"}.mi-ShoppingCart:before{content:"\EE19"}.mi-ShowAllFiles1:before,.mi-ShowAllFiles1Legacy:before{content:"\EE1B"}.mi-ShowAllFiles3:before,.mi-ShowAllFiles3Legacy:before{content:"\EE1D"}.mi-ShowBcc:before,.mi-ShowBccLegacy:before{content:"\EE1E"}.mi-ShowResults:before,.mi-ShowResultsLegacy:before{content:"\EE1F"}.mi-ShowResultsLegacyMirrored:before,.mi-ShowResultsMirrored:before{content:"\EE20"}.mi-Shuffle:before,.mi-ShuffleLegacy:before{content:"\EE21"}.mi-SignalBars1:before{content:"\EE22"}.mi-SignalBars2:before{content:"\EE23"}.mi-SignalBars3:before{content:"\EE24"}.mi-SignalBars4:before{content:"\EE25"}.mi-SignalBars5:before{content:"\EE26"}.mi-SignalError:before{content:"\EE27"}.mi-SignalNotConnected:before{content:"\EE28"}.mi-SignalRoaming:before{content:"\EE29"}.mi-SignatureCapture:before{content:"\EE2A"}.mi-Size:before{content:"\EE2B"}.mi-SkipBack10:before{content:"\EE2C"}.mi-SkipForward30:before{content:"\EE2D"}.mi-SliderThumb:before{content:"\EE2E"}.mi-Slideshow:before,.mi-SlideshowLegacy:before{content:"\EE2F"}.mi-SlowMotionOn:before{content:"\EE30"}.mi-SmallErase:before{content:"\EE31"}.mi-Smartcard:before{content:"\EE32"}.mi-SmartcardVirtual:before{content:"\EE33"}.mi-Sort:before,.mi-SortLegacy:before{content:"\EE34"}.mi-SpatialVolume0:before{content:"\EE35"}.mi-SpatialVolume1:before{content:"\EE36"}.mi-SpatialVolume2:before{content:"\EE37"}.mi-SpatialVolume3:before{content:"\EE38"}.mi-Speakers:before{content:"\EE39"}.mi-Speech:before{content:"\EE3A"}.mi-SpeedHigh:before{content:"\EE3B"}.mi-SpeedMedium:before{content:"\EE3C"}.mi-SpeedOff:before{content:"\EE3D"}.mi-StaplingLandscapeBookBinding:before{content:"\EE3E"}.mi-StaplingLandscapeBottomLeft:before{content:"\EE3F"}.mi-StaplingLandscapeBottomRight:before{content:"\EE40"}.mi-StaplingLandscapeTopLeft:before{content:"\EE41"}.mi-StaplingLandscapeTopRight:before{content:"\EE42"}.mi-StaplingLandscapeTwoBottom:before{content:"\EE43"}.mi-StaplingLandscapeTwoLeft:before{content:"\EE44"}.mi-StaplingLandscapeTwoRight:before{content:"\EE45"}.mi-StaplingLandscapeTwoTop:before{content:"\EE46"}.mi-StaplingOff:before{content:"\EE47"}.mi-StaplingPortraitBookBinding:before{content:"\EE48"}.mi-StaplingPortraitBottomLeft:before{content:"\EE49"}.mi-StaplingPortraitBottomRight:before{content:"\EE4A"}.mi-StaplingPortraitTopLeft:before{content:"\EE4B"}.mi-StaplingPortraitTopRight:before{content:"\EE4C"}.mi-StaplingPortraitTwoBottom:before{content:"\EE4D"}.mi-StaplingPortraitTwoLeft:before{content:"\EE4E"}.mi-StaplingPortraitTwoRight:before{content:"\EE4F"}.mi-StaplingPortraitTwoTop:before{content:"\EE50"}.mi-StartPoint:before{content:"\EE51"}.mi-StartPointSolid:before{content:"\EE52"}.mi-StatusCheckmark:before{content:"\EE53"}.mi-StatusCheckmark7:before{content:"\EE54"}.mi-StatusCheckmarkLeft:before{content:"\EE55"}.mi-StatusCircle:before{content:"\EE56"}.mi-StatusCircle7:before{content:"\EE57"}.mi-StatusCircleBlock:before{content:"\EE58"}.mi-StatusCircleBlock2:before{content:"\EE59"}.mi-StatusCircleCheckmark:before{content:"\EE5A"}.mi-StatusCircleErrorX:before{content:"\EE5B"}.mi-StatusCircleExclamation:before{content:"\EE5C"}.mi-StatusCircleInfo:before{content:"\EE5D"}.mi-StatusCircleInner:before{content:"\EE5E"}.mi-StatusCircleLeft:before{content:"\EE5F"}.mi-StatusCircleOuter:before{content:"\EE60"}.mi-StatusCircleQuestionMark:before{content:"\EE61"}.mi-StatusCircleRing:before{content:"\EE62"}.mi-StatusCircleSync:before{content:"\EE63"}.mi-StatusConnecting1:before{content:"\EE64"}.mi-StatusConnecting2:before{content:"\EE65"}.mi-StatusDataTransfer:before{content:"\EE66"}.mi-StatusDataTransferVPN:before{content:"\EE67"}.mi-StatusDualSIM1:before{content:"\EE68"}.mi-StatusDualSIM1VPN:before{content:"\EE69"}.mi-StatusDualSIM2:before{content:"\EE6A"}.mi-StatusDualSIM2VPN:before{content:"\EE6B"}.mi-StatusError:before{content:"\EE6C"}.mi-StatusErrorCircle7:before{content:"\EE6D"}.mi-StatusErrorFull:before{content:"\EE6E"}.mi-StatusErrorLeft:before{content:"\EE6F"}.mi-StatusExclamationCircle7:before{content:"\EE70"}.mi-StatusInfo:before{content:"\EE71"}.mi-StatusInfoLeft:before{content:"\EE72"}.mi-StatusPause7:before{content:"\EE73"}.mi-StatusSGLTE:before{content:"\EE74"}.mi-StatusSGLTECell:before{content:"\EE75"}.mi-StatusSGLTEDataVPN:before{content:"\EE76"}.mi-StatusTriangle:before{content:"\EE77"}.mi-StatusTriangleExclamation:before{content:"\EE78"}.mi-StatusTriangleInner:before{content:"\EE79"}.mi-StatusTriangleLeft:before{content:"\EE7A"}.mi-StatusTriangleOuter:before{content:"\EE7B"}.mi-StatusUnsecure:before{content:"\EE7C"}.mi-StatusVPN:before{content:"\EE7D"}.mi-StatusWarning:before{content:"\EE7E"}.mi-StatusWarningLeft:before{content:"\EE7F"}.mi-Sticker2:before{content:"\EE80"}.mi-StockDown:before{content:"\EE81"}.mi-StockUp:before{content:"\EE82"}.mi-Stop:before,.mi-StopLegacy:before{content:"\EE83"}.mi-StopPoint:before{content:"\EE84"}.mi-StopPointSolid:before{content:"\EE85"}.mi-StopSlideshow:before,.mi-StopSlideshowLegacy:before{content:"\EE87"}.mi-Stopwatch:before{content:"\EE88"}.mi-StorageNetworkWireless:before{content:"\EE89"}.mi-StorageOptical:before{content:"\EE8A"}.mi-StorageTape:before{content:"\EE8B"}.mi-Streaming:before{content:"\EE8C"}.mi-StreamingEnterprise:before{content:"\EE8D"}.mi-Street:before,.mi-StreetLegacy:before{content:"\EE8E"}.mi-StreetsideSplitExpand:before{content:"\EE8F"}.mi-StreetsideSplitMinimize:before{content:"\EE90"}.mi-StrokeErase:before{content:"\EE91"}.mi-StrokeErase2:before{content:"\EE92"}.mi-StrokeEraseMirrored:before{content:"\EE93"}.mi-Subtitles:before{content:"\EE94"}.mi-SubtitlesAudio:before{content:"\EE95"}.mi-SurfaceHub:before{content:"\EE96"}.mi-SurfaceHubSelected:before{content:"\EE97"}.mi-Sustainable:before{content:"\EE98"}.mi-Swipe:before{content:"\EE99"}.mi-SwipeRevealArt:before{content:"\EE9A"}.mi-Switch:before,.mi-SwitchLegacy:before{content:"\EE9B"}.mi-SwitchApps:before,.mi-SwitchAppsLegacy:before{content:"\EE9C"}.mi-SwitchUser:before{content:"\EE9D"}.mi-Sync:before,.mi-SyncLegacy:before{content:"\EE9E"}.mi-SyncBadge12:before{content:"\EE9F"}.mi-SyncError:before{content:"\EEA0"}.mi-SyncFolder:before,.mi-SyncFolderLegacy:before{content:"\EEA1"}.mi-System:before{content:"\EEA2"}.mi-TVMonitor:before{content:"\EEA3"}.mi-TVMonitorSelected:before{content:"\EEA4"}.mi-Tablet:before{content:"\EEA5"}.mi-TabletMode:before{content:"\EEA6"}.mi-TabletSelected:before{content:"\EEA7"}.mi-Tag:before,.mi-TagLegacy:before{content:"\EEA8"}.mi-TapAndSend:before{content:"\EEA9"}.mi-TaskView:before{content:"\EEAA"}.mi-TaskViewExpanded:before{content:"\EEAB"}.mi-TaskViewSettings:before{content:"\EEAC"}.mi-TaskbarPhone:before{content:"\EEAD"}.mi-ThisPC:before{content:"\EEAE"}.mi-ThoughtBubble:before{content:"\EEAF"}.mi-ThreeBars:before,.mi-ThreeBarsLegacy:before{content:"\EEB0"}.mi-ThreeQuarterStarLeft:before{content:"\EEB1"}.mi-ThreeQuarterStarRight:before{content:"\EEB2"}.mi-Tiles:before{content:"\EEB3"}.mi-TiltDown:before{content:"\EEB4"}.mi-TiltUp:before{content:"\EEB5"}.mi-TimeLanguage:before{content:"\EEB6"}.mi-ToggleBorder:before{content:"\EEB7"}.mi-ToggleFilled:before{content:"\EEB8"}.mi-ToggleThumb:before{content:"\EEB9"}.mi-TollSolid:before{content:"\EEBA"}.mi-Lightbulb:before,.mi-ToolTip:before{content:"\EEBB"}.mi-Touch:before{content:"\EEBC"}.mi-TouchPointer:before,.mi-TouchPointerLegacy:before{content:"\EEBD"}.mi-Touchpad:before{content:"\EEBE"}.mi-Touchscreen:before{content:"\EEBF"}.mi-Trackers:before{content:"\EEC0"}.mi-TrackersMirrored:before{content:"\EEC1"}.mi-TrafficCongestionSolid:before{content:"\EEC2"}.mi-TrafficLight:before{content:"\EEC3"}.mi-Train:before{content:"\EEC4"}.mi-TrainSolid:before{content:"\EEC5"}.mi-TreeFolderFolder:before{content:"\EEC6"}.mi-TreeFolderFolderFill:before{content:"\EEC7"}.mi-TreeFolderFolderOpen:before{content:"\EEC8"}.mi-TreeFolderFolderOpenFill:before{content:"\EEC9"}.mi-TriggerLeft:before{content:"\EECA"}.mi-TriggerRight:before{content:"\EECB"}.mi-Trim:before,.mi-TrimLegacy:before{content:"\EECC"}.mi-TwoBars:before,.mi-TwoBarsLegacy:before{content:"\EECD"}.mi-TwoPage:before,.mi-TwoPageLegacy:before{content:"\EECE"}.mi-Type:before,.mi-TypeLegacy:before{content:"\EECF"}.mi-TypingIndicatorLegacy:before{content:"\EED0"}.mi-USB:before{content:"\EED1"}.mi-USBSafeConnect:before{content:"\EED2"}.mi-Underline:before,.mi-UnderlineLegacy:before{content:"\EED3"}.mi-UnderlineLKorean:before,.mi-UnderlineLKoreanLegacy:before{content:"\EED5"}.mi-UnderlineRussian:before,.mi-UnderlineRussianLegacy:before{content:"\EED7"}.mi-UnderlineS:before,.mi-UnderlineSLegacy:before{content:"\EED9"}.mi-UnderlineU:before,.mi-UnderlineULegacy:before{content:"\EEDB"}.mi-UnderscoreSpace:before{content:"\EEDC"}.mi-Undo:before,.mi-UndoLegacy:before{content:"\EEDD"}.mi-Unfavorite:before,.mi-UnfavoriteLegacy:before{content:"\EEDE"}.mi-Unit:before{content:"\EEDF"}.mi-Unknown:before{content:"\EEE0"}.mi-UnknownMirrored:before{content:"\EEE1"}.mi-Unlock:before,.mi-UnlockLegacy:before{content:"\EEE2"}.mi-Unpin:before,.mi-UnpinLegacy:before{content:"\EEE3"}.mi-UnsyncFolder:before,.mi-UnsyncFolderLegacy:before{content:"\EEE4"}.mi-Up:before,.mi-UpLegacy:before{content:"\EEE5"}.mi-UpArrowShiftKey:before{content:"\EEE6"}.mi-UpShiftKey:before{content:"\EEE7"}.mi-UpdateRestore:before{content:"\EEE8"}.mi-Upload:before,.mi-UploadLegacy:before,.mi-UploadSkyDriveLegacy:before{content:"\EEE9"}.mi-UserAPN:before{content:"\EEEA"}.mi-VPN:before{content:"\EEEB"}.mi-VerticalBattery0:before{content:"\EEEC"}.mi-VerticalBattery1:before{content:"\EEED"}.mi-VerticalBattery10:before{content:"\EEEE"}.mi-VerticalBattery2:before{content:"\EEEF"}.mi-VerticalBattery3:before{content:"\EEF0"}.mi-VerticalBattery4:before{content:"\EEF1"}.mi-VerticalBattery5:before{content:"\EEF2"}.mi-VerticalBattery6:before{content:"\EEF3"}.mi-VerticalBattery7:before{content:"\EEF4"}.mi-VerticalBattery8:before{content:"\EEF5"}.mi-VerticalBattery9:before{content:"\EEF6"}.mi-VerticalBatteryCharging0:before{content:"\EEF7"}.mi-VerticalBatteryCharging1:before{content:"\EEF8"}.mi-VerticalBatteryCharging10:before{content:"\EEF9"}.mi-VerticalBatteryCharging2:before{content:"\EEFA"}.mi-VerticalBatteryCharging3:before{content:"\EEFB"}.mi-VerticalBatteryCharging4:before{content:"\EEFC"}.mi-VerticalBatteryCharging5:before{content:"\EEFD"}.mi-VerticalBatteryCharging6:before{content:"\EEFE"}.mi-VerticalBatteryCharging7:before{content:"\EEFF"}.mi-VerticalBatteryCharging8:before{content:"\EF00"}.mi-VerticalBatteryCharging9:before{content:"\EF01"}.mi-VerticalBatteryUnknown:before{content:"\EF02"}.mi-Vibrate:before{content:"\EF03"}.mi-Video:before,.mi-VideoInlineLegacy:before,.mi-VideoLegacy:before{content:"\EF04"}.mi-Video360:before{content:"\EF05"}.mi-VideoChat:before,.mi-VideoChatLegacy:before{content:"\EF06"}.mi-VideoSolid:before{content:"\EF07"}.mi-RevealPasswordLegacy:before,.mi-View:before,.mi-ViewLegacy:before{content:"\EF08"}.mi-ShowAllFilesLegacy:before,.mi-ViewAll:before,.mi-ViewAllLegacy:before{content:"\EF09"}.mi-ViewDashboard:before{content:"\EF0A"}.mi-Volume:before,.mi-VolumeLegacy:before{content:"\EF0B"}.mi-Volume0:before{content:"\EF0C"}.mi-Volume1:before{content:"\EF0D"}.mi-Volume2:before{content:"\EF0E"}.mi-Volume3:before{content:"\EF0F"}.mi-VolumeBars:before{content:"\EF10"}.mi-Walk:before{content:"\EF11"}.mi-WalkSolid:before{content:"\EF12"}.mi-Warning:before{content:"\EF13"}.mi-Webcam:before,.mi-WebcamLegacy:before{content:"\EF14"}.mi-Webcam2:before{content:"\EF15"}.mi-Website:before{content:"\EF16"}.mi-Wheel:before{content:"\EF17"}.mi-Wifi:before{content:"\EF18"}.mi-Wifi1:before{content:"\EF19"}.mi-Wifi2:before{content:"\EF1A"}.mi-Wifi3:before{content:"\EF1B"}.mi-WifiAttentionOverlay:before{content:"\EF1C"}.mi-WifiCall0:before{content:"\EF1D"}.mi-WifiCall1:before{content:"\EF1E"}.mi-WifiCall2:before{content:"\EF1F"}.mi-WifiCall3:before{content:"\EF20"}.mi-WifiCall4:before{content:"\EF21"}.mi-WifiCallBars:before{content:"\EF22"}.mi-WifiError0:before{content:"\EF23"}.mi-WifiError1:before{content:"\EF24"}.mi-WifiError2:before{content:"\EF25"}.mi-WifiError3:before{content:"\EF26"}.mi-WifiError4:before{content:"\EF27"}.mi-WifiEthernet:before{content:"\EF28"}.mi-InternetSharing:before,.mi-WifiHotspot:before{content:"\EF29"}.mi-WifiWarning0:before{content:"\EF2A"}.mi-WifiWarning1:before{content:"\EF2B"}.mi-WifiWarning2:before{content:"\EF2C"}.mi-WifiWarning3:before{content:"\EF2D"}.mi-WifiWarning4:before{content:"\EF2E"}.mi-WindDirection:before{content:"\EF2F"}.mi-WindowsInsider:before{content:"\EF30"}.mi-WiredUSB:before{content:"\EF31"}.mi-WirelessUSB:before{content:"\EF32"}.mi-Work:before{content:"\EF33"}.mi-WorkSolid:before{content:"\EF34"}.mi-World:before,.mi-WorldLegacy:before{content:"\EF35"}.mi-XboxOneConsole:before{content:"\EF36"}.mi-ZeroBars:before,.mi-ZeroBarsLegacy:before{content:"\EF37"}.mi-Zoom:before,.mi-ZoomLegacy:before{content:"\EF38"}.mi-ZoomIn:before,.mi-ZoomInLegacy:before{content:"\EF39"}.mi-ZoomMode:before{content:"\EF3A"}.mi-ZoomOut:before,.mi-ZoomOutLegacy:before{content:"\EF3B"}.mi-eSIM:before{content:"\EF3C"}.mi-eSIMBusy:before{content:"\EF3D"}.mi-eSIMLocked:before{content:"\EF3E"}.mi-eSIMNoProfile:before{content:"\EF3F"}.mi-E80B:before,.mi-uniE80B:before{content:"\EF40"}.mi-EA0D:before,.mi-uniEA0D:before{content:"\EF41"}.mi-EA3F:before,.mi-uniEA3F:before{content:"\EF42"}.mi-EA90:before,.mi-uniEA90:before{content:"\EF43"}.mi-EAC2:before,.mi-uniEAC2:before{content:"\EF44"}.mi-EC6C:before,.mi-uniEC6C:before{content:"\EF45"}.mi-EEA3:before,.mi-uniEEA3:before{content:"\EF46"}.mi-F2B7:before,.mi-uniF2B7:before{content:"\EF47"}.mi-F5AA:before,.mi-uniF5AA:before{content:"\EF48"}.mi-F614:before,.mi-uniF614:before{content:"\EF49"}.mi-F615:before,.mi-uniF615:before{content:"\EF4A"}.mi-F616:before,.mi-uniF616:before{content:"\EF4B"}.mi-F617:before,.mi-uniF617:before{content:"\EF4C"}.mi-F657:before,.mi-uniF657:before{content:"\EF4D"}.mi-F658:before,.mi-uniF658:before{content:"\EF4E"}.mi-F659:before,.mi-uniF659:before{content:"\EF4F"}.mi-F65A:before,.mi-uniF65A:before{content:"\EF50"}.mi-F65B:before,.mi-uniF65B:before{content:"\EF51"}.mi-F65C:before,.mi-uniF65C:before{content:"\EF52"}.mi-F69E:before,.mi-uniF69E:before{content:"\EF53"}.mi-F6FA:before,.mi-uniF6FA:before{content:"\EF54"}.mi-F712:before,.mi-uniF712:before{content:"\EF55"}.mi-F71C:before,.mi-uniF71C:before{content:"\EF56"}.mi-F71D:before,.mi-uniF71D:before{content:"\EF57"}.mi-F71E:before,.mi-uniF71E:before{content:"\EF58"}.mi-F738:before,.mi-uniF738:before{content:"\EF59"}.mi-F739:before,.mi-uniF739:before{content:"\EF5A"}.mi-F73D:before,.mi-uniF73D:before{content:"\EF5B"}.mi-F73E:before,.mi-uniF73E:before{content:"\EF5C"}.mi-F73F:before,.mi-uniF73F:before{content:"\EF5D"}.mi-F740:before,.mi-uniF740:before{content:"\EF5E"}.mi-F741:before,.mi-uniF741:before{content:"\EF5F"}.mi-F742:before,.mi-uniF742:before{content:"\EF60"}.mi-F743:before,.mi-uniF743:before{content:"\EF61"}.mi-F744:before,.mi-uniF744:before{content:"\EF62"}.mi-F745:before,.mi-uniF745:before{content:"\EF63"}.mi-F746:before,.mi-uniF746:before{content:"\EF64"}.mi-F785:before,.mi-uniF785:before{content:"\EF65"}.mi-500px:before{content:"\EF66"}.mi-accessible-icon:before{content:"\EF67"}.mi-accusoft:before{content:"\EF68"}.mi-acquisitions-incorporated:before{content:"\EF69"}.mi-adn:before{content:"\EF6A"}.mi-adobe:before{content:"\EF6B"}.mi-adversal:before{content:"\EF6C"}.mi-affiliatetheme:before{content:"\EF6D"}.mi-algolia:before{content:"\EF6E"}.mi-alipay:before{content:"\EF6F"}.mi-amazon-pay:before{content:"\EF70"}.mi-amazon:before{content:"\EF71"}.mi-amilia:before{content:"\EF72"}.mi-android:before{content:"\EF73"}.mi-angellist:before{content:"\EF74"}.mi-angrycreative:before{content:"\EF75"}.mi-angular:before{content:"\EF76"}.mi-app-store-ios:before{content:"\EF77"}.mi-app-store:before{content:"\EF78"}.mi-apper:before{content:"\EF79"}.mi-apple-pay:before{content:"\EF7A"}.mi-apple:before{content:"\EF7B"}.mi-artstation:before{content:"\EF7C"}.mi-asymmetrik:before{content:"\EF7D"}.mi-atlassian:before{content:"\EF7E"}.mi-audible:before{content:"\EF7F"}.mi-autoprefixer:before{content:"\EF80"}.mi-avianex:before{content:"\EF81"}.mi-aviato:before{content:"\EF82"}.mi-aws:before{content:"\EF83"}.mi-bandcamp:before{content:"\EF84"}.mi-behance-square:before{content:"\EF85"}.mi-behance:before{content:"\EF86"}.mi-bimobject:before{content:"\EF87"}.mi-bitbucket:before{content:"\EF88"}.mi-bitcoin:before{content:"\EF89"}.mi-bity:before{content:"\EF8A"}.mi-black-tie:before{content:"\EF8B"}.mi-blackberry:before{content:"\EF8C"}.mi-blogger-b:before{content:"\EF8D"}.mi-blogger:before{content:"\EF8E"}.mi-bluetooth-b:before{content:"\EF8F"}.mi-bluetooth:before{content:"\EF90"}.mi-btc:before{content:"\EF91"}.mi-buromobelexperte:before{content:"\EF92"}.mi-buysellads:before{content:"\EF93"}.mi-canadian-maple-leaf:before{content:"\EF94"}.mi-cc-amazon-pay:before{content:"\EF95"}.mi-cc-amex:before{content:"\EF96"}.mi-cc-apple-pay:before{content:"\EF97"}.mi-cc-diners-club:before{content:"\EF98"}.mi-cc-discover:before{content:"\EF99"}.mi-cc-jcb:before{content:"\EF9A"}.mi-cc-mastercard:before{content:"\EF9B"}.mi-cc-paypal:before{content:"\EF9C"}.mi-cc-stripe:before{content:"\EF9D"}.mi-cc-visa:before{content:"\EF9E"}.mi-centercode:before{content:"\EF9F"}.mi-centos:before{content:"\EFA0"}.mi-chrome:before{content:"\EFA1"}.mi-cloudscale:before{content:"\EFA2"}.mi-cloudsmith:before{content:"\EFA3"}.mi-cloudversify:before{content:"\EFA4"}.mi-codepen:before{content:"\EFA5"}.mi-codiepie:before{content:"\EFA6"}.mi-confluence:before{content:"\EFA7"}.mi-connectdevelop:before{content:"\EFA8"}.mi-contao:before{content:"\EFA9"}.mi-cpanel:before{content:"\EFAA"}.mi-creative-commons-by:before{content:"\EFAB"}.mi-creative-commons-nc-eu:before{content:"\EFAC"}.mi-creative-commons-nc-jp:before{content:"\EFAD"}.mi-creative-commons-nc:before{content:"\EFAE"}.mi-creative-commons-nd:before{content:"\EFAF"}.mi-creative-commons-pd-alt:before{content:"\EFB0"}.mi-creative-commons-pd:before{content:"\EFB1"}.mi-creative-commons-remix:before{content:"\EFB2"}.mi-creative-commons-sa:before{content:"\EFB3"}.mi-creative-commons-sampling-plus:before{content:"\EFB4"}.mi-creative-commons-sampling:before{content:"\EFB5"}.mi-creative-commons-share:before{content:"\EFB6"}.mi-creative-commons-zero:before{content:"\EFB7"}.mi-creative-commons:before{content:"\EFB8"}.mi-critical-role:before{content:"\EFB9"}.mi-css3-alt:before{content:"\EFBA"}.mi-css3:before{content:"\EFBB"}.mi-cuttlefish:before{content:"\EFBC"}.mi-d-and-d-beyond:before{content:"\EFBD"}.mi-d-and-d:before{content:"\EFBE"}.mi-dashcube:before{content:"\EFBF"}.mi-delicious:before{content:"\EFC0"}.mi-deploydog:before{content:"\EFC1"}.mi-deskpro:before{content:"\EFC2"}.mi-dev:before{content:"\EFC3"}.mi-deviantart:before{content:"\EFC4"}.mi-dhl:before{content:"\EFC5"}.mi-diaspora:before{content:"\EFC6"}.mi-digg:before{content:"\EFC7"}.mi-digital-ocean:before{content:"\EFC8"}.mi-discord:before{content:"\EFC9"}.mi-discourse:before{content:"\EFCA"}.mi-dochub:before{content:"\EFCB"}.mi-docker:before{content:"\EFCC"}.mi-draft2digital:before{content:"\EFCD"}.mi-dribbble-square:before{content:"\EFCE"}.mi-dribbble:before{content:"\EFCF"}.mi-dropbox:before{content:"\EFD0"}.mi-drupal:before{content:"\EFD1"}.mi-dyalog:before{content:"\EFD2"}.mi-earlybirds:before{content:"\EFD3"}.mi-ebay:before{content:"\EFD4"}.mi-edge:before{content:"\EFD5"}.mi-elementor:before{content:"\EFD6"}.mi-ello:before{content:"\EFD7"}.mi-ember:before{content:"\EFD8"}.mi-empire:before{content:"\EFD9"}.mi-envira:before{content:"\EFDA"}.mi-erlang:before{content:"\EFDB"}.mi-ethereum:before{content:"\EFDC"}.mi-etsy:before{content:"\EFDD"}.mi-expeditedssl:before{content:"\EFDE"}.mi-facebook-f:before{content:"\EFDF"}.mi-facebook-messenger:before{content:"\EFE0"}.mi-facebook-square:before{content:"\EFE1"}.mi-facebook:before{content:"\EFE2"}.mi-fedex:before{content:"\EFE3"}.mi-fedora:before{content:"\EFE4"}.mi-figma:before{content:"\EFE5"}.mi-firefox:before{content:"\EFE6"}.mi-first-order-alt:before{content:"\EFE7"}.mi-first-order:before{content:"\EFE8"}.mi-firstdraft:before{content:"\EFE9"}.mi-flickr:before{content:"\EFEA"}.mi-flipboard:before{content:"\EFEB"}.mi-fly:before{content:"\EFEC"}.mi-font-awesome-alt:before{content:"\EFED"}.mi-font-awesome-flag:before{content:"\EFEE"}.mi-font-awesome:before{content:"\EFEF"}.mi-fonticons-fi:before{content:"\EFF0"}.mi-fonticons:before{content:"\EFF1"}.mi-fort-awesome-alt:before{content:"\EFF2"}.mi-fort-awesome:before{content:"\EFF3"}.mi-forumbee:before{content:"\EFF4"}.mi-foursquare:before{content:"\EFF5"}.mi-free-code-camp:before{content:"\EFF6"}.mi-freebsd:before{content:"\EFF7"}.mi-fulcrum:before{content:"\EFF8"}.mi-galactic-republic:before{content:"\EFF9"}.mi-galactic-senate:before{content:"\EFFA"}.mi-get-pocket:before{content:"\EFFB"}.mi-gg-circle:before{content:"\EFFC"}.mi-gg:before{content:"\EFFD"}.mi-git-square:before{content:"\EFFE"}.mi-github-alt:before{content:"\EFFF"}.mi-github-square:before{content:"\F000"}.mi-github:before{content:"\F001"}.mi-gitkraken:before{content:"\F002"}.mi-gitlab:before{content:"\F003"}.mi-gitter:before{content:"\F004"}.mi-glide-g:before{content:"\F005"}.mi-glide:before{content:"\F006"}.mi-gofore:before{content:"\F007"}.mi-goodreads-g:before{content:"\F008"}.mi-goodreads:before{content:"\F009"}.mi-google-drive:before{content:"\F00A"}.mi-google-play:before{content:"\F00B"}.mi-google-plus-g:before{content:"\F00C"}.mi-google-plus-square:before{content:"\F00D"}.mi-google-plus:before{content:"\F00E"}.mi-google-wallet:before{content:"\F00F"}.mi-google:before{content:"\F010"}.mi-gratipay:before{content:"\F011"}.mi-grav:before{content:"\F012"}.mi-gripfire:before{content:"\F013"}.mi-grunt:before{content:"\F014"}.mi-gulp:before{content:"\F015"}.mi-hacker-news-square:before{content:"\F016"}.mi-hacker-news:before{content:"\F017"}.mi-hackerrank:before{content:"\F018"}.mi-hire-a-helper:before{content:"\F019"}.mi-hooli:before{content:"\F01A"}.mi-hornbill:before{content:"\F01B"}.mi-hotjar:before{content:"\F01C"}.mi-houzz:before{content:"\F01D"}.mi-html5:before{content:"\F01E"}.mi-hubspot:before{content:"\F01F"}.mi-imdb:before{content:"\F020"}.mi-instagram:before{content:"\F021"}.mi-intercom:before{content:"\F022"}.mi-internet-explorer:before{content:"\F023"}.mi-invision:before{content:"\F024"}.mi-ioxhost:before{content:"\F025"}.mi-itunes-note:before{content:"\F026"}.mi-itunes:before{content:"\F027"}.mi-java:before{content:"\F028"}.mi-jedi-order:before{content:"\F029"}.mi-jenkins:before{content:"\F02A"}.mi-jira:before{content:"\F02B"}.mi-joget:before{content:"\F02C"}.mi-joomla:before{content:"\F02D"}.mi-js-square:before{content:"\F02E"}.mi-js:before{content:"\F02F"}.mi-jsfiddle:before{content:"\F030"}.mi-kaggle:before{content:"\F031"}.mi-keybase:before{content:"\F032"}.mi-keycdn:before{content:"\F033"}.mi-kickstarter-k:before{content:"\F034"}.mi-kickstarter:before{content:"\F035"}.mi-korvue:before{content:"\F036"}.mi-laravel:before{content:"\F037"}.mi-lastfm-square:before{content:"\F038"}.mi-lastfm:before{content:"\F039"}.mi-leanpub:before{content:"\F03A"}.mi-less:before{content:"\F03B"}.mi-line:before{content:"\F03C"}.mi-linkedin-in:before{content:"\F03D"}.mi-linkedin:before{content:"\F03E"}.mi-linode:before{content:"\F03F"}.mi-linux:before{content:"\F040"}.mi-lyft:before{content:"\F041"}.mi-magento:before{content:"\F042"}.mi-mailchimp:before{content:"\F043"}.mi-mandalorian:before{content:"\F044"}.mi-markdown:before{content:"\F045"}.mi-mastodon:before{content:"\F046"}.mi-maxcdn:before{content:"\F047"}.mi-medapps:before{content:"\F048"}.mi-medium-m:before{content:"\F049"}.mi-medium:before{content:"\F04A"}.mi-medrt:before{content:"\F04B"}.mi-meetup:before{content:"\F04C"}.mi-megaport:before{content:"\F04D"}.mi-mendeley:before{content:"\F04E"}.mi-microsoft:before{content:"\F04F"}.mi-mix:before{content:"\F050"}.mi-mixcloud:before{content:"\F051"}.mi-mizuni:before{content:"\F052"}.mi-modx:before{content:"\F053"}.mi-monero:before{content:"\F054"}.mi-napster:before{content:"\F055"}.mi-neos:before{content:"\F056"}.mi-nimblr:before{content:"\F057"}.mi-nintendo-switch:before{content:"\F058"}.mi-node-js:before{content:"\F059"}.mi-node:before{content:"\F05A"}.mi-npm:before{content:"\F05B"}.mi-ns8:before{content:"\F05C"}.mi-nutritionix:before{content:"\F05D"}.mi-odnoklassniki-square:before{content:"\F05E"}.mi-odnoklassniki:before{content:"\F05F"}.mi-old-republic:before{content:"\F060"}.mi-opencart:before{content:"\F061"}.mi-openid:before{content:"\F062"}.mi-opera:before{content:"\F063"}.mi-optin-monster:before{content:"\F064"}.mi-osi:before{content:"\F065"}.mi-page4:before{content:"\F066"}.mi-pagelines:before{content:"\F067"}.mi-palfed:before{content:"\F068"}.mi-patreon:before{content:"\F069"}.mi-paypal:before{content:"\F06A"}.mi-penny-arcade:before{content:"\F06B"}.mi-periscope:before{content:"\F06C"}.mi-phabricator:before{content:"\F06D"}.mi-phoenix-framework:before{content:"\F06E"}.mi-phoenix-squadron:before{content:"\F06F"}.mi-php:before{content:"\F070"}.mi-pied-piper-alt:before{content:"\F071"}.mi-pied-piper-hat:before{content:"\F072"}.mi-pied-piper-pp:before{content:"\F073"}.mi-pied-piper:before{content:"\F074"}.mi-pinterest-p:before{content:"\F075"}.mi-pinterest-square:before{content:"\F076"}.mi-pinterest:before{content:"\F077"}.mi-playstation:before{content:"\F078"}.mi-product-hunt:before{content:"\F079"}.mi-pushed:before{content:"\F07A"}.mi-python:before{content:"\F07B"}.mi-qq:before{content:"\F07C"}.mi-quinscape:before{content:"\F07D"}.mi-quora:before{content:"\F07E"}.mi-r-project:before{content:"\F07F"}.mi-raspberry-pi:before{content:"\F080"}.mi-ravelry:before{content:"\F081"}.mi-react:before{content:"\F082"}.mi-reacteurope:before{content:"\F083"}.mi-readme:before{content:"\F084"}.mi-rebel:before{content:"\F085"}.mi-red-river:before{content:"\F086"}.mi-reddit-alien:before{content:"\F087"}.mi-reddit-square:before{content:"\F088"}.mi-reddit:before{content:"\F089"}.mi-redhat:before{content:"\F08A"}.mi-renren:before{content:"\F08B"}.mi-replyd:before{content:"\F08C"}.mi-researchgate:before{content:"\F08D"}.mi-resolving:before{content:"\F08E"}.mi-rev:before{content:"\F08F"}.mi-rocketchat:before{content:"\F090"}.mi-rockrms:before{content:"\F091"}.mi-safari:before{content:"\F092"}.mi-sass:before{content:"\F093"}.mi-schlix:before{content:"\F094"}.mi-scribd:before{content:"\F095"}.mi-searchengin:before{content:"\F096"}.mi-sellcast:before{content:"\F097"}.mi-sellsy:before{content:"\F098"}.mi-servicestack:before{content:"\F099"}.mi-shirtsinbulk:before{content:"\F09A"}.mi-shopware:before{content:"\F09B"}.mi-simplybuilt:before{content:"\F09C"}.mi-sistrix:before{content:"\F09D"}.mi-sith:before{content:"\F09E"}.mi-sketch:before{content:"\F09F"}.mi-skyatlas:before{content:"\F0A0"}.mi-skype:before{content:"\F0A1"}.mi-slack-hash:before{content:"\F0A2"}.mi-slack:before{content:"\F0A3"}.mi-slideshare:before{content:"\F0A4"}.mi-snapchat-ghost:before{content:"\F0A5"}.mi-snapchat-square:before{content:"\F0A6"}.mi-snapchat:before{content:"\F0A7"}.mi-soundcloud:before{content:"\F0A8"}.mi-sourcetree:before{content:"\F0A9"}.mi-speakap:before{content:"\F0AA"}.mi-spotify:before{content:"\F0AB"}.mi-squarespace:before{content:"\F0AC"}.mi-stack-exchange:before{content:"\F0AD"}.mi-stack-overflow:before{content:"\F0AE"}.mi-staylinked:before{content:"\F0AF"}.mi-steam-square:before{content:"\F0B0"}.mi-steam:before{content:"\F0B1"}.mi-sticker-mule:before{content:"\F0B2"}.mi-strava:before{content:"\F0B3"}.mi-stripe-s:before{content:"\F0B4"}.mi-stripe:before{content:"\F0B5"}.mi-studiovinari:before{content:"\F0B6"}.mi-stumbleupon-circle:before{content:"\F0B7"}.mi-stumbleupon:before{content:"\F0B8"}.mi-superpowers:before{content:"\F0B9"}.mi-supple:before{content:"\F0BA"}.mi-suse:before{content:"\F0BB"}.mi-teamspeak:before{content:"\F0BC"}.mi-telegram-plane:before{content:"\F0BD"}.mi-telegram:before{content:"\F0BE"}.mi-tencent-weibo:before{content:"\F0BF"}.mi-the-red-yeti:before{content:"\F0C0"}.mi-themeco:before{content:"\F0C1"}.mi-themeisle:before{content:"\F0C2"}.mi-think-peaks:before{content:"\F0C3"}.mi-trade-federation:before{content:"\F0C4"}.mi-trello:before{content:"\F0C5"}.mi-tripadvisor:before{content:"\F0C6"}.mi-tumblr-square:before{content:"\F0C7"}.mi-tumblr:before{content:"\F0C8"}.mi-twitch:before{content:"\F0C9"}.mi-twitter-square:before{content:"\F0CA"}.mi-typo3:before{content:"\F0CB"}.mi-ubuntu:before{content:"\F0CC"}.mi-uikit:before{content:"\F0CD"}.mi-uniregistry:before{content:"\F0CE"}.mi-untappd:before{content:"\F0CF"}.mi-ups:before{content:"\F0D0"}.mi-usb:before{content:"\F0D1"}.mi-usps:before{content:"\F0D2"}.mi-ussunnah:before{content:"\F0D3"}.mi-vaadin:before{content:"\F0D4"}.mi-viacoin:before{content:"\F0D5"}.mi-viadeo-square:before{content:"\F0D6"}.mi-viadeo:before{content:"\F0D7"}.mi-viber:before{content:"\F0D8"}.mi-vimeo-square:before{content:"\F0D9"}.mi-vimeo-v:before{content:"\F0DA"}.mi-vimeo:before{content:"\F0DB"}.mi-vine:before{content:"\F0DC"}.mi-vk:before{content:"\F0DD"}.mi-vnv:before{content:"\F0DE"}.mi-vuejs:before{content:"\F0DF"}.mi-weebly:before{content:"\F0E0"}.mi-weibo:before{content:"\F0E1"}.mi-weixin:before{content:"\F0E2"}.mi-whatsapp-square:before{content:"\F0E3"}.mi-whatsapp:before{content:"\F0E4"}.mi-whmcs:before{content:"\F0E5"}.mi-wikipedia-w:before{content:"\F0E6"}.mi-windows:before{content:"\F0E7"}.mi-wix:before{content:"\F0E8"}.mi-wizards-of-the-coast:before{content:"\F0E9"}.mi-wolf-pack-battalion:before{content:"\F0EA"}.mi-wordpress-simple:before{content:"\F0EB"}.mi-wordpress:before{content:"\F0EC"}.mi-wpbeginner:before{content:"\F0ED"}.mi-wpexplorer:before{content:"\F0EE"}.mi-wpforms:before{content:"\F0EF"}.mi-wpressr:before{content:"\F0F0"}.mi-xbox:before{content:"\F0F1"}.mi-xing-square:before{content:"\F0F2"}.mi-xing:before{content:"\F0F3"}.mi-y-combinator:before{content:"\F0F4"}.mi-yahoo:before{content:"\F0F5"}.mi-yandex-international:before{content:"\F0F6"}.mi-yandex:before{content:"\F0F7"}.mi-yarn:before{content:"\F0F8"}.mi-yelp:before{content:"\F0F9"}.mi-yoast:before{content:"\F0FA"}.mi-youtube-square:before{content:"\F0FB"}.mi-youtube:before{content:"\F0FC"}.mi-zhihu:before{content:"\F0FD"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.uib-datepicker .uib-title,.uib-left,.uib-right{width:100%}.ng-animate.item:not(.left):not(.right){-webkit-transition:0s ease-in-out left;transition:0s ease-in-out left}.uib-day button,.uib-month button,.uib-year button{min-width:100%}.uib-position-measure{display:block!important;visibility:hidden!important;position:absolute!important;top:-9999px!important;left:-9999px!important}.uib-position-scrollbar-measure{position:absolute!important;top:-9999px!important;width:50px!important;height:50px!important;overflow:scroll!important}.uib-position-body-scrollbar-measure{overflow:scroll!important}.uib-datepicker-popup.dropdown-menu{display:block;float:none;margin:0}.uib-button-bar{padding:10px 9px 2px}[uib-popover-html-popup].popover.bottom-left>.arrow,[uib-popover-html-popup].popover.bottom-right>.arrow,[uib-popover-html-popup].popover.left-bottom>.arrow,[uib-popover-html-popup].popover.left-top>.arrow,[uib-popover-html-popup].popover.right-bottom>.arrow,[uib-popover-html-popup].popover.right-top>.arrow,[uib-popover-html-popup].popover.top-left>.arrow,[uib-popover-html-popup].popover.top-right>.arrow,[uib-popover-popup].popover.bottom-left>.arrow,[uib-popover-popup].popover.bottom-right>.arrow,[uib-popover-popup].popover.left-bottom>.arrow,[uib-popover-popup].popover.left-top>.arrow,[uib-popover-popup].popover.right-bottom>.arrow,[uib-popover-popup].popover.right-top>.arrow,[uib-popover-popup].popover.top-left>.arrow,[uib-popover-popup].popover.top-right>.arrow,[uib-popover-template-popup].popover.bottom-left>.arrow,[uib-popover-template-popup].popover.bottom-right>.arrow,[uib-popover-template-popup].popover.left-bottom>.arrow,[uib-popover-template-popup].popover.left-top>.arrow,[uib-popover-template-popup].popover.right-bottom>.arrow,[uib-popover-template-popup].popover.right-top>.arrow,[uib-popover-template-popup].popover.top-left>.arrow,[uib-popover-template-popup].popover.top-right>.arrow,[uib-tooltip-html-popup].tooltip.bottom-left>.tooltip-arrow,[uib-tooltip-html-popup].tooltip.bottom-right>.tooltip-arrow,[uib-tooltip-html-popup].tooltip.left-bottom>.tooltip-arrow,[uib-tooltip-html-popup].tooltip.left-top>.tooltip-arrow,[uib-tooltip-html-popup].tooltip.right-bottom>.tooltip-arrow,[uib-tooltip-html-popup].tooltip.right-top>.tooltip-arrow,[uib-tooltip-html-popup].tooltip.top-left>.tooltip-arrow,[uib-tooltip-html-popup].tooltip.top-right>.tooltip-arrow,[uib-tooltip-popup].tooltip.bottom-left>.tooltip-arrow,[uib-tooltip-popup].tooltip.bottom-right>.tooltip-arrow,[uib-tooltip-popup].tooltip.left-bottom>.tooltip-arrow,[uib-tooltip-popup].tooltip.left-top>.tooltip-arrow,[uib-tooltip-popup].tooltip.right-bottom>.tooltip-arrow,[uib-tooltip-popup].tooltip.right-top>.tooltip-arrow,[uib-tooltip-popup].tooltip.top-left>.tooltip-arrow,[uib-tooltip-popup].tooltip.top-right>.tooltip-arrow,[uib-tooltip-template-popup].tooltip.bottom-left>.tooltip-arrow,[uib-tooltip-template-popup].tooltip.bottom-right>.tooltip-arrow,[uib-tooltip-template-popup].tooltip.left-bottom>.tooltip-arrow,[uib-tooltip-template-popup].tooltip.left-top>.tooltip-arrow,[uib-tooltip-template-popup].tooltip.right-bottom>.tooltip-arrow,[uib-tooltip-template-popup].tooltip.right-top>.tooltip-arrow,[uib-tooltip-template-popup].tooltip.top-left>.tooltip-arrow,[uib-tooltip-template-popup].tooltip.top-right>.tooltip-arrow{top:auto;bottom:auto;left:auto;right:auto;margin:0}[uib-popover-html-popup].popover,[uib-popover-popup].popover,[uib-popover-template-popup].popover{display:block!important}.uib-time input{width:50px}[uib-typeahead-popup].dropdown-menu{display:block} \ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/css/portal.min.css b/src/Mix.Cms.Web/wwwroot/mix-app/css/portal.min.css index 17e93fa32..02680a452 100644 --- a/src/Mix.Cms.Web/wwwroot/mix-app/css/portal.min.css +++ b/src/Mix.Cms.Web/wwwroot/mix-app/css/portal.min.css @@ -1,9 +1,9 @@ -/* Sun Feb 14 2021 18:37:16 GMT+0700 (Indochina Time) */@charset "UTF-8";/*! - * Bootstrap v5.0.0-beta1 (https://getbootstrap.com/) - * Copyright 2011-2020 The Bootstrap Authors - * Copyright 2011-2020 Twitter, Inc. +/* Wed Feb 24 2021 09:23:11 GMT+0700 (Indochina Time) */@charset "UTF-8";/*! + * Bootstrap v5.0.0-beta2 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors + * Copyright 2011-2021 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */.popover,.tooltip,body{font-family:var(--bs-font-sans-serif)}.table,body{color:#212529}.CodeMirror pre,body{-webkit-tap-highlight-color:transparent}.popover,.tooltip,address{font-style:normal}.CodeMirror-wrap pre,.popover,.tooltip,pre code{word-break:normal}.card,.popover,.tooltip,code{word-wrap:break-word}.form-select,img,svg{vertical-align:middle}.CodeMirror pre,select{word-wrap:normal}label,output{display:inline-block}progress,sub,sup{vertical-align:baseline}.form-check-input:focus,.form-control:focus,.form-select:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0))}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-size:1rem;font-weight:400;line-height:1.5;background-color:#fff;-webkit-text-size-adjust:100%}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}.img-fluid,.img-thumbnail{max-width:100%;height:auto}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}address,dl,ol,p,pre,ul{margin-bottom:1rem}blockquote,figure{margin:0 0 1rem}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}dl,ol,p,ul{margin-top:0}abbr[data-bs-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}.btn,.carousel-indicators li,.form-control-color:not(:disabled):not([readonly]),.form-control[type=file]:not(:disabled):not([readonly]),[role=button],[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled),summary{cursor:pointer}address{line-height:inherit}ol,ul{padding-left:2rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}b,strong{font-weight:bolder}.alert-link,.badge,kbd kbd{font-weight:700}.small,small{font-size:.875em}.mark,mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit}code,kbd{font-size:.875em}code{color:#d63384}a>code{color:inherit}kbd{padding:.2rem .4rem;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}button{border-radius:0}fieldset,iframe{border:0}button:focus{outline:dotted 1px;outline:-webkit-focus-ring-color auto 5px}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}.display-1,.display-2,.display-3,.display-4,.display-5,.display-6{font-weight:300;line-height:1.2}.form-control,.form-select{-webkit-appearance:none;-moz-appearance:none}summary{display:list-item}[hidden]{display:none!important}.btn,.figure,.form-check-inline,.list-inline-item{display:inline-block}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw)}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw)}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw)}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw)}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw)}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer,.figure-caption{font-size:.875em;color:#6c757d}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem}.blockquote-footer::before{content:"— "}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem}.figure-img{margin-bottom:.5rem;line-height:1}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{width:100%;padding-right:var(--bs-gutter-x,.75rem);padding-left:var(--bs-gutter-x,.75rem);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.bootstrap-tagsinput,.img-container>img,.img-preview>img,.invalid-tooltip,.row>*,.toast,.toast-container,.trumbowyg-editor embed,.trumbowyg-editor img,.trumbowyg-editor object,.trumbowyg-editor video,.tui-editor-contents img,.valid-tooltip{max-width:100%}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(var(--bs-gutter-y) * -1);margin-right:calc(var(--bs-gutter-x)/ -2);margin-left:calc(var(--bs-gutter-x)/ -2)}.row>*{flex-shrink:0;width:100%;padding-right:calc(var(--bs-gutter-x)/ 2);padding-left:calc(var(--bs-gutter-x)/ 2);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.3333333333%}.col-2,.col-3{flex:0 0 auto}.col-2{width:16.6666666667%}.col-3{width:25%}.col-4,.col-5{flex:0 0 auto}.col-4{width:33.3333333333%}.col-5{width:41.6666666667%}.col-6,.col-7{flex:0 0 auto}.col-6{width:50%}.col-7{width:58.3333333333%}.col-8,.col-9{flex:0 0 auto}.col-8{width:66.6666666667%}.col-9{width:75%}.col-10{flex:0 0 auto;width:83.3333333333%}.col-11{flex:0 0 auto;width:91.6666666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.3333333333%}.offset-2{margin-left:16.6666666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.3333333333%}.offset-5{margin-left:41.6666666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.3333333333%}.offset-8{margin-left:66.6666666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.3333333333%}.offset-11{margin-left:91.6666666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.3333333333%}.col-sm-2{flex:0 0 auto;width:16.6666666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.3333333333%}.col-sm-5{flex:0 0 auto;width:41.6666666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.3333333333%}.col-sm-8{flex:0 0 auto;width:66.6666666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.3333333333%}.col-sm-11{flex:0 0 auto;width:91.6666666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.3333333333%}.offset-sm-2{margin-left:16.6666666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.3333333333%}.offset-sm-5{margin-left:41.6666666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.3333333333%}.offset-sm-8{margin-left:66.6666666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.3333333333%}.offset-sm-11{margin-left:91.6666666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.3333333333%}.col-md-2{flex:0 0 auto;width:16.6666666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.3333333333%}.col-md-5{flex:0 0 auto;width:41.6666666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.3333333333%}.col-md-8{flex:0 0 auto;width:66.6666666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.3333333333%}.col-md-11{flex:0 0 auto;width:91.6666666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.3333333333%}.offset-md-2{margin-left:16.6666666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.3333333333%}.offset-md-5{margin-left:41.6666666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.3333333333%}.offset-md-8{margin-left:66.6666666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.3333333333%}.offset-md-11{margin-left:91.6666666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.3333333333%}.col-lg-2{flex:0 0 auto;width:16.6666666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.3333333333%}.col-lg-5{flex:0 0 auto;width:41.6666666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.3333333333%}.col-lg-8{flex:0 0 auto;width:66.6666666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.3333333333%}.col-lg-11{flex:0 0 auto;width:91.6666666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.3333333333%}.offset-lg-2{margin-left:16.6666666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.3333333333%}.offset-lg-5{margin-left:41.6666666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.3333333333%}.offset-lg-8{margin-left:66.6666666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.3333333333%}.offset-lg-11{margin-left:91.6666666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.3333333333%}.col-xl-2{flex:0 0 auto;width:16.6666666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.3333333333%}.col-xl-5{flex:0 0 auto;width:41.6666666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.3333333333%}.col-xl-8{flex:0 0 auto;width:66.6666666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.3333333333%}.col-xl-11{flex:0 0 auto;width:91.6666666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.3333333333%}.offset-xl-2{margin-left:16.6666666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.3333333333%}.offset-xl-5{margin-left:41.6666666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.3333333333%}.offset-xl-8{margin-left:66.6666666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.3333333333%}.offset-xl-11{margin-left:91.6666666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.3333333333%}.col-xxl-2{flex:0 0 auto;width:16.6666666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.3333333333%}.col-xxl-5{flex:0 0 auto;width:41.6666666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.3333333333%}.col-xxl-8{flex:0 0 auto;width:66.6666666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.3333333333%}.col-xxl-11{flex:0 0 auto;width:91.6666666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.3333333333%}.offset-xxl-2{margin-left:16.6666666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.3333333333%}.offset-xxl-5{margin-left:41.6666666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.3333333333%}.offset-xxl-8{margin-left:66.6666666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.3333333333%}.offset-xxl-11{margin-left:91.6666666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-bg:transparent;--bs-table-striped-color:#212529;--bs-table-striped-bg:rgba(0, 0, 0, 0.05);--bs-table-active-color:#212529;--bs-table-active-bg:rgba(0, 0, 0, 0.1);--bs-table-hover-color:#212529;--bs-table-hover-bg:rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:#dee2e6}.table>:not(caption)>*>*{padding:.5rem;background-color:var(--bs-table-bg);background-image:linear-gradient(var(--bs-table-accent-bg),var(--bs-table-accent-bg));border-bottom-width:1px}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:last-child)>:last-child>*{border-bottom-color:currentColor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-striped>tbody>tr:nth-of-type(odd){--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg:var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover{--bs-table-accent-bg:var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg:#cfe2ff;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:#000;border-color:#bacbe6}.table-secondary{--bs-table-bg:#e2e3e5;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:#000;border-color:#cbccce}.table-success{--bs-table-bg:#d1e7dd;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:#000;border-color:#bcd0c7}.table-info{--bs-table-bg:#cff4fc;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:#000;border-color:#badce3}.table-warning{--bs-table-bg:#fff3cd;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:#000;border-color:#e6dbb9}.table-danger{--bs-table-bg:#f8d7da;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:#000;border-color:#dfc2c4}.table-light{--bs-table-bg:#f8f9fa;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:#000;border-color:#dfe0e1}.table-dark{--bs-table-bg:#212529;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:#fff;border-color:#373b3e}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.collapsing,.dropdown-divider,.form-control[type=file],.modal-open,.progress,.progress-bar{overflow:hidden}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:#6c757d}.form-control,.form-control:focus{color:#212529;background-color:#fff}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;background-clip:padding-box;border:1px solid #ced4da;appearance:none;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.btn,.form-control::file-selector-button{transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control:focus{border-color:#86b7fe;outline:0}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0}@media (prefers-reduced-motion:reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.form-select,.input-group-text{font-size:1rem;font-weight:400;line-height:1.5}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + .5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{max-width:3rem;height:auto;padding:.375rem}.form-control-color::-moz-color-swatch{height:1.5em;border-radius:.25rem}.form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.25rem}.form-select{display:block;width:100%;padding:.375rem 1.75rem .375rem .75rem;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.25rem;appearance:none}.form-check-input,.navbar-toggler-icon,.tui-editor-contents .task-list-item:before{background-repeat:no-repeat;background-position:center}.form-check-input,.form-range{-webkit-appearance:none;-moz-appearance:none}.form-select:focus{border-color:#86b7fe;outline:0}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{color:#6c757d;background-color:#e9ecef}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-size:contain;border:1px solid rgba(0,0,0,.25);appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;transition:background-color .15s ease-in-out,background-position .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-check-input{transition:none}}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-check-inline{margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-select{height:calc(3.5rem + 2px);padding:1rem .75rem}.form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}.form-floating>.form-control::-webkit-input-placeholder{color:transparent}.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;color:#212529;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:1.75rem}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.invalid-tooltip,.valid-tooltip{z-index:5;border-radius:.25rem;top:100%}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}.valid-tooltip{position:absolute;display:none;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(25,135,84,.9)}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#198754;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:#198754;padding-right:calc(.75em + 2.3125rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 1.75rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:#198754}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:#198754}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#198754}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;display:none;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(220,53,69,.9)}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 1.75rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:#dc3545}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:#dc3545}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.btn,.btn:hover{color:#212529}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.btn{font-weight:400;line-height:1.5;text-align:center;text-decoration:none;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;border-radius:.25rem}.dropdown-toggle::after,.dropup .dropdown-toggle::after{vertical-align:.255em;content:""}@media (prefers-reduced-motion:reduce){.btn,.form-floating>label{transition:none}}.btn-check:focus+.btn,.btn:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.btn-check:active+.btn-primary:focus,.btn-check:checked+.btn-primary:focus,.btn-check:focus+.btn-primary,.btn-primary.active:focus,.btn-primary:active:focus,.btn-primary:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(49,132,253,.5)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{pointer-events:none;opacity:.65}.btn-primary{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:focus+.btn-primary,.btn-primary:focus,.btn-primary:hover{background-color:#0b5ed7;border-color:#0a58ca;color:#fff}.btn-check:active+.btn-primary,.btn-check:checked+.btn-primary,.btn-primary.active,.btn-primary:active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0a58ca;border-color:#0a53be}.btn-check:active+.btn-secondary:focus,.btn-check:checked+.btn-secondary:focus,.btn-check:focus+.btn-secondary,.btn-secondary.active:focus,.btn-secondary:active:focus,.btn-secondary:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:focus+.btn-secondary,.btn-secondary:focus,.btn-secondary:hover{background-color:#5c636a;border-color:#565e64;color:#fff}.btn-check:active+.btn-secondary,.btn-check:checked+.btn-secondary,.btn-secondary.active,.btn-secondary:active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#565e64;border-color:#51585e}.btn-check:active+.btn-success:focus,.btn-check:checked+.btn-success:focus,.btn-check:focus+.btn-success,.btn-success.active:focus,.btn-success:active:focus,.btn-success:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(60,153,110,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-success{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+.btn-success,.btn-success:focus,.btn-success:hover{background-color:#157347;border-color:#146c43;color:#fff}.btn-check:active+.btn-success,.btn-check:checked+.btn-success,.btn-success.active,.btn-success:active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:active+.btn-info:focus,.btn-check:checked+.btn-info:focus,.btn-check:focus+.btn-info,.btn-info.active:focus,.btn-info:active:focus,.btn-info:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(11,172,204,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#198754;border-color:#198754}.btn-info{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+.btn-info,.btn-info:focus,.btn-info:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:active+.btn-info,.btn-check:checked+.btn-info,.btn-info.active,.btn-info:active,.show>.btn-info.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-info.disabled,.btn-info:disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-warning{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+.btn-warning,.btn-warning:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem rgba(217,164,6,.5)}.btn-check:active+.btn-warning,.btn-check:checked+.btn-warning,.btn-warning.active,.btn-warning:active,.show>.btn-warning.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:active+.btn-warning:focus,.btn-check:checked+.btn-warning:focus,.btn-warning.active:focus,.btn-warning:active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(217,164,6,.5)}.btn-check:active+.btn-danger:focus,.btn-check:checked+.btn-danger:focus,.btn-check:focus+.btn-danger,.btn-danger.active:focus,.btn-danger:active:focus,.btn-danger:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(225,83,97,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+.btn-danger,.btn-danger:focus,.btn-danger:hover{background-color:#bb2d3b;border-color:#b02a37;color:#fff}.btn-check:active+.btn-danger,.btn-check:checked+.btn-danger,.btn-danger.active,.btn-danger:active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:active+.btn-light:focus,.btn-check:checked+.btn-light:focus,.btn-check:focus+.btn-light,.btn-light.active:focus,.btn-light:active:focus,.btn-light:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(211,212,213,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-light{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:active+.btn-light,.btn-check:checked+.btn-light,.btn-check:focus+.btn-light,.btn-light.active,.btn-light:active,.btn-light:focus,.btn-light:hover,.show>.btn-light.dropdown-toggle{background-color:#f9fafb;border-color:#f9fafb;color:#000}.btn-check:active+.btn-dark:focus,.btn-check:checked+.btn-dark:focus,.btn-check:focus+.btn-dark,.btn-dark.active:focus,.btn-dark:active:focus,.btn-dark:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(66,70,73,.5)}.btn-light.disabled,.btn-light:disabled{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-dark{color:#fff;background-color:#212529;border-color:#212529}.btn-check:focus+.btn-dark,.btn-dark:focus,.btn-dark:hover{background-color:#1c1f23;border-color:#1a1e21;color:#fff}.btn-check:active+.btn-dark,.btn-check:checked+.btn-dark,.btn-dark.active,.btn-dark:active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1a1e21;border-color:#191c1f}.btn-check:active+.btn-outline-primary:focus,.btn-check:checked+.btn-outline-primary:focus,.btn-check:focus+.btn-outline-primary,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus,.btn-outline-primary:active:focus,.btn-outline-primary:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#212529;border-color:#212529}.btn-outline-primary{color:#0d6efd;border-color:#0d6efd}.btn-check:active+.btn-outline-primary,.btn-check:checked+.btn-outline-primary,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show,.btn-outline-primary:active,.btn-outline-primary:hover{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:active+.btn-outline-secondary:focus,.btn-check:checked+.btn-outline-secondary:focus,.btn-check:focus+.btn-outline-secondary,.btn-outline-secondary.active:focus,.btn-outline-secondary.dropdown-toggle.show:focus,.btn-outline-secondary:active:focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#0d6efd;background-color:transparent}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-check:active+.btn-outline-secondary,.btn-check:checked+.btn-outline-secondary,.btn-outline-secondary.active,.btn-outline-secondary.dropdown-toggle.show,.btn-outline-secondary:active,.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:active+.btn-outline-success:focus,.btn-check:checked+.btn-outline-success:focus,.btn-check:focus+.btn-outline-success,.btn-outline-success.active:focus,.btn-outline-success.dropdown-toggle.show:focus,.btn-outline-success:active:focus,.btn-outline-success:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-success{color:#198754;border-color:#198754}.btn-check:active+.btn-outline-success,.btn-check:checked+.btn-outline-success,.btn-outline-success.active,.btn-outline-success.dropdown-toggle.show,.btn-outline-success:active,.btn-outline-success:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:active+.btn-outline-info:focus,.btn-check:checked+.btn-outline-info:focus,.btn-check:focus+.btn-outline-info,.btn-outline-info.active:focus,.btn-outline-info.dropdown-toggle.show:focus,.btn-outline-info:active:focus,.btn-outline-info:focus{box-shadow:0 0 0 .25rem rgba(13,202,240,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#198754;background-color:transparent}.btn-outline-info{color:#0dcaf0;border-color:#0dcaf0}.btn-check:active+.btn-outline-info,.btn-check:checked+.btn-outline-info,.btn-outline-info.active,.btn-outline-info.dropdown-toggle.show,.btn-outline-info:active,.btn-outline-info:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:active+.btn-outline-warning:focus,.btn-check:checked+.btn-outline-warning:focus,.btn-check:focus+.btn-outline-warning,.btn-outline-warning.active:focus,.btn-outline-warning.dropdown-toggle.show:focus,.btn-outline-warning:active:focus,.btn-outline-warning:focus{box-shadow:0 0 0 .25rem rgba(255,193,7,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#0dcaf0;background-color:transparent}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-check:active+.btn-outline-warning,.btn-check:checked+.btn-outline-warning,.btn-outline-warning.active,.btn-outline-warning.dropdown-toggle.show,.btn-outline-warning:active,.btn-outline-warning:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:active+.btn-outline-danger:focus,.btn-check:checked+.btn-outline-danger:focus,.btn-check:focus+.btn-outline-danger,.btn-outline-danger.active:focus,.btn-outline-danger.dropdown-toggle.show:focus,.btn-outline-danger:active:focus,.btn-outline-danger:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-check:active+.btn-outline-danger,.btn-check:checked+.btn-outline-danger,.btn-outline-danger.active,.btn-outline-danger.dropdown-toggle.show,.btn-outline-danger:active,.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:active+.btn-outline-light:focus,.btn-check:checked+.btn-outline-light:focus,.btn-check:focus+.btn-outline-light,.btn-outline-light.active:focus,.btn-outline-light.dropdown-toggle.show:focus,.btn-outline-light:active:focus,.btn-outline-light:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-check:active+.btn-outline-light,.btn-check:checked+.btn-outline-light,.btn-outline-light.active,.btn-outline-light.dropdown-toggle.show,.btn-outline-light:active,.btn-outline-light:hover{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:active+.btn-outline-dark:focus,.btn-check:checked+.btn-outline-dark:focus,.btn-check:focus+.btn-outline-dark,.btn-outline-dark.active:focus,.btn-outline-dark.dropdown-toggle.show:focus,.btn-outline-dark:active:focus,.btn-outline-dark:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-dark{color:#212529;border-color:#212529}.btn-check:active+.btn-outline-dark,.btn-check:checked+.btn-outline-dark,.btn-outline-dark.active,.btn-outline-dark.dropdown-toggle.show,.btn-outline-dark:active,.btn-outline-dark:hover{color:#fff;background-color:#212529;border-color:#212529}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#212529;background-color:transparent}.btn-link{font-weight:400;color:#0d6efd;text-decoration:underline}.btn-link:hover{color:#0a58ca}.btn-link.disabled,.btn-link:disabled{color:#6c757d}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropend,.dropstart,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu[style]{right:auto!important}.dropdown-menu-start{--bs-position:start;right:auto;left:0}.dropdown-menu-end{--bs-position:end;right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start;right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end;right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start;right:auto;left:0}.dropdown-menu-md-end{--bs-position:end;right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start;right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end;right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start;right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end;right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start;right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end;right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid;vertical-align:0}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropstart .dropdown-toggle::after{margin-left:.255em;vertical-align:.255em;content:"";display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent;vertical-align:0}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropdown-divider{height:0;margin:.5rem 0;border-top:1px solid rgba(0,0,0,.15)}.dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#212529;text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#1e2125;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#0d6efd}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1rem;color:#212529}.dropdown-menu-dark{color:#dee2e6;background-color:#343a40;border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item{color:#dee2e6}.dropdown-menu-dark .dropdown-item:focus,.dropdown-menu-dark .dropdown-item:hover{color:#fff;background-color:rgba(255,255,255,.15)}.dropdown-menu-dark .dropdown-item.active,.dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#0d6efd}.dropdown-menu-dark .dropdown-item.disabled,.dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}.dropdown-menu-dark .dropdown-divider{border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item-text{color:#dee2e6}.dropdown-menu-dark .dropdown-header{color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.card>hr,.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#0d6efd}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;white-space:nowrap}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{align-items:center;width:100%}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem;transition:box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}.accordion-button:focus,.btn-close:focus,.page-link:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.25);outline:0}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-size:100%}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm .navbar-collapse{display:flex!important}.navbar-expand-sm .navbar-toggler{display:none}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md .navbar-collapse{display:flex!important}.navbar-expand-md .navbar-toggler{display:none}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg .navbar-collapse{display:flex!important}.navbar-expand-lg .navbar-toggler{display:none}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl .navbar-collapse{display:flex!important}.navbar-expand-xl .navbar-toggler{display:none}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xxl .navbar-collapse{display:flex!important}.navbar-expand-xxl .navbar-toggler{display:none}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.list-group-horizontal,.navbar-expand .navbar-nav{flex-direction:row}.card,.progress-bar{flex-direction:column}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand .navbar-collapse{display:flex!important}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand,.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.55)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.55);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.55)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand,.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.55)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.55);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.55)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:flex;min-width:0;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:1rem}.card-footer,.card-header{padding:.5rem 1rem;background-color:rgba(0,0,0,.03)}.card-title{margin-bottom:.5rem}.card-header,.card-subtitle,.card-text:last-child{margin-bottom:0}.card-subtitle{margin-top:-.25rem}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1rem}.card-header-pills,.card-header-tabs{margin-right:-.5rem;margin-left:-.5rem}.card-header{border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-bottom:-.5rem;border-bottom:0}.card-group>.card,.toast-container>:not(:last-child){margin-bottom:.75rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(.25rem - 1px)}.accordion-button,.alert,.btn .badge,.list-group-item,.page-link{position:relative}.accordion-body,.accordion-button{padding:1rem 1.25rem}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion-button{display:flex;align-items:center;width:100%;font-size:1rem;color:#212529;background-color:transparent;border:1px solid rgba(0,0,0,.125);border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button.collapsed{border-bottom-width:0}.accordion-button:not(.collapsed){color:#0c63e4;background-color:#e7f1ff}.accordion-button:not(.collapsed)::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(180deg)}.accordion-button::after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#86b7fe}.accordion-header{margin-bottom:0}.alert,.breadcrumb{margin-bottom:1rem}.accordion-item:first-of-type .accordion-button{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.accordion-item:last-of-type .accordion-button.collapsed,.accordion-item:last-of-type .accordion-collapse{border-bottom-width:1px;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-collapse{border:solid rgba(0,0,0,.125);border-width:0 1px}.accordion-flush .accordion-button{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item:first-of-type .accordion-button{border-top-width:0;border-top-left-radius:0;border-top-right-radius:0}.accordion-flush .accordion-item:last-of-type .accordion-button.collapsed{border-bottom-width:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.breadcrumb{display:flex;flex-wrap:wrap;padding:0;list-style:none}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:var(--bs-breadcrumb-divider,"/")}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none}.page-link{display:block;color:#0d6efd;text-decoration:none;background-color:#fff;border:1px solid #dee2e6;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;padding:.375rem .75rem}.page-link:focus,.page-link:hover{color:#0a58ca;background-color:#e9ecef}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;border-color:#dee2e6}.page-link:focus{z-index:3}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item.active .page-link{z-index:3;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;background-color:#fff;border-color:#dee2e6}.page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-sm .page-link,.popover,.toast,.tooltip{font-size:.875rem}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.35em .65em;font-size:.75em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty,.toast.hide{display:none}.btn .badge{top:-1px}.alert{padding:1rem;border:1px solid transparent;border-radius:.25rem}.list-group,.progress,.tooltip-inner{border-radius:.25rem}.alert-heading{color:inherit}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{color:#084298;background-color:#cfe2ff;border-color:#b6d4fe}.alert-primary .alert-link{color:#06357a}.alert-secondary{color:#41464b;background-color:#e2e3e5;border-color:#d3d6d8}.alert-secondary .alert-link{color:#34383c}.alert-success{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}.alert-success .alert-link{color:#0c4128}.alert-info{color:#055160;background-color:#cff4fc;border-color:#b6effb}.alert-info .alert-link{color:#04414d}.alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}.alert-warning .alert-link{color:#523e02}.alert-danger{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}.alert-danger .alert-link{color:#6a1a21}.alert-light{color:#636464;background-color:#fefefe;border-color:#fdfdfe}.alert-light .alert-link{color:#4f5050}.alert-dark{color:#141619;background-color:#d3d3d4;border-color:#bcbebf}.alert-dark .alert-link{color:#101214}@-webkit-keyframes progress-bar-stripes{0%{background-position-x:1rem}}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{display:flex;height:1rem;font-size:.75rem;background-color:#e9ecef}.progress-bar{display:flex;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#0d6efd;transition:width .6s ease}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:1s linear infinite progress-bar-stripes;animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}.progress-bar-animated{-webkit-animation:none;animation:none}}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{display:block;padding:.5rem 1rem;text-decoration:none;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#084298;background-color:#cfe2ff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#084298;background-color:#bacbe6}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}.list-group-item-secondary{color:#41464b;background-color:#e2e3e5}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#41464b;background-color:#cbccce}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}.list-group-item-success{color:#0f5132;background-color:#d1e7dd}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#0f5132;background-color:#bcd0c7}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-info{color:#055160;background-color:#cff4fc}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#055160;background-color:#badce3}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-warning{color:#664d03;background-color:#fff3cd}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#664d03;background-color:#e6dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-danger{color:#842029;background-color:#f8d7da}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#842029;background-color:#dfc2c4}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-light{color:#636464;background-color:#fefefe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#636464;background-color:#e5e5e5}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}.list-group-item-dark{color:#141619;background-color:#d3d3d4}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#141619;background-color:#bebebf}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em;color:#000;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.25rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{opacity:1}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:.25}.modal-content,.toast{pointer-events:auto;background-clip:padding-box}.modal-backdrop.fade,.toast:not(.showing):not(.show){opacity:0}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{width:350px;background-color:rgba(255,255,255,.85);border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem rgba(0,0,0,.15);border-radius:.25rem}.toast-container{width:-webkit-max-content;width:-moz-max-content;width:max-content;pointer-events:none}.toast-header{display:flex;align-items:center;padding:.5rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-header .btn-close{margin-right:-.375rem;margin-left:.75rem}.toast-body{padding:.75rem}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;background-color:#fff;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .btn-close{padding:.5rem;margin:-.5rem -.5rem -.5rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-footer,.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-footer,.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-footer,.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-footer,.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-footer,.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-footer,.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-spacing:normal;white-space:normal;line-break:auto;opacity:0}.tooltip.show{opacity:.9}.tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[data-popper-placement^=right],.bs-tooltip-end{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[data-popper-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[data-popper-placement^=left],.bs-tooltip-start{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-spacing:normal;white-space:normal;line-break:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[data-popper-placement^=top],.bs-popover-top{margin-bottom:.5rem!important}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[data-popper-placement^=right],.bs-popover-end{margin-left:.5rem!important}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[data-popper-placement^=bottom],.bs-popover-bottom{margin-top:.5rem!important}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-width:0 .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:1px;border-width:0 .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f0f0f0}.carousel,.carousel-inner,.carousel-item{position:relative}.bs-popover-auto[data-popper-placement^=left],.bs-popover-start{margin-right:.5rem!important}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#f0f0f0;border-bottom:1px solid #d8d8d8;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:1rem;color:#212529}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.ace_punctuation.ace_block.ace_razor,.ace_punctuation.ace_short.ace_razor,.carousel-dark .carousel-caption{color:#000}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators li{background-color:#000}@-webkit-keyframes spinner-border{to{transform:rotate(360deg)}}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:.75s linear infinite spinner-border;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:.75s linear infinite spinner-grow;animation:.75s linear infinite spinner-grow}.clearfix::after,.ratio::before{display:block;content:""}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}.spinner-border,.spinner-grow{-webkit-animation-duration:1.5s;animation-duration:1.5s}}.clearfix::after{clear:both}.link-primary{color:#0d6efd}.link-primary:focus,.link-primary:hover{color:#0a58ca}.link-secondary{color:#6c757d}.link-secondary:focus,.link-secondary:hover{color:#565e64}.link-success{color:#198754}.link-success:focus,.link-success:hover{color:#146c43}.link-info{color:#0dcaf0}.link-info:focus,.link-info:hover{color:#3dd5f3}.link-warning{color:#ffc107}.link-warning:focus,.link-warning:hover{color:#ffcd39}.link-danger{color:#dc3545}.link-danger:focus,.link-danger:hover{color:#b02a37}.link-light{color:#f8f9fa}.link-light:focus,.link-light:hover{color:#f9fafb}.link-dark{color:#212529}.link-dark:focus,.link-dark:hover{color:#1a1e21}.ratio{position:relative;width:100%}.ratio::before{padding-top:var(--aspect-ratio)}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.fixed-bottom,.fixed-top{position:fixed;z-index:1030;left:0;right:0}.ratio-1x1{--aspect-ratio:100%}.ratio-4x3{--aspect-ratio:calc(3 / 4 * 100%)}.ratio-16x9{--aspect-ratio:calc(9 / 16 * 100%)}.ratio-21x9{--aspect-ratio:calc(9 / 21 * 100%)}.fixed-top{top:0}.fixed-bottom{bottom:0}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.visually-hidden,.visually-hidden-focusable:not(:focus){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:1px solid #dee2e6!important}.border-0{border:0!important}.border-top{border-top:1px solid #dee2e6!important}.border-top-0{border-top:0!important}.border-end{border-right:1px solid #dee2e6!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:1px solid #dee2e6!important}.border-start-0{border-left:0!important}.border-primary{border-color:#0d6efd!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#198754!important}.border-info{border-color:#0dcaf0!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#212529!important}.border-white{border-color:#fff!important}.border-0{border-width:0!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:lighter!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-primary{color:#0d6efd!important}.text-secondary{color:#6c757d!important}.text-success{color:#198754!important}.text-info{color:#0dcaf0!important}.text-warning{color:#ffc107!important}.text-danger{color:#dc3545!important}.text-light{color:#f8f9fa!important}.text-dark{color:#212529!important}.text-white{color:#fff!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-reset{color:inherit!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.bg-primary{background-color:#0d6efd!important}.bg-secondary{background-color:#6c757d!important}.bg-success{background-color:#198754!important}.bg-info{background-color:#0dcaf0!important}.bg-warning{background-color:#ffc107!important}.bg-danger{background-color:#dc3545!important}.bg-light{background-color:#f8f9fa!important}.bg-dark{background-color:#212529!important}.bg-body,.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.bg-gradient{background-image:var(--bs-gradient)!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:.25rem!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:.2rem!important}.rounded-2{border-radius:.25rem!important}.rounded-3{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-end,.rounded-top{border-top-right-radius:.25rem!important}.rounded-bottom,.rounded-end{border-bottom-right-radius:.25rem!important}.rounded-bottom,.rounded-start{border-bottom-left-radius:.25rem!important}.rounded-start,.rounded-top{border-top-left-radius:.25rem!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}.fs-sm-1{font-size:2.5rem!important}.fs-sm-2{font-size:2rem!important}.fs-sm-3{font-size:1.75rem!important}.fs-sm-4{font-size:1.5rem!important}.fs-md-1{font-size:2.5rem!important}.fs-md-2{font-size:2rem!important}.fs-md-3{font-size:1.75rem!important}.fs-md-4{font-size:1.5rem!important}.fs-lg-1{font-size:2.5rem!important}.fs-lg-2{font-size:2rem!important}.fs-lg-3{font-size:1.75rem!important}.fs-lg-4{font-size:1.5rem!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}.img-container,.img-preview{background-color:#f7f7f7;text-align:center;width:100%}.img-container{margin-bottom:1rem;max-height:497px;min-height:200px}@media (min-width:768px){.img-container{min-height:497px}}.docs-preview{margin-right:-1rem}.img-preview{float:left;margin-bottom:.5rem;margin-right:.5rem;overflow:hidden}.preview-lg{height:9rem;width:16rem}.preview-md{height:4.5rem;width:8rem}.preview-sm{height:2.25rem;width:4rem}.preview-xs{height:1.125rem;margin-right:0;width:2rem}.docs-data>.input-group{margin-bottom:.5rem}.docs-data>.input-group>label{justify-content:center;min-width:5rem}.docs-data>.input-group>span{justify-content:center;min-width:3rem}.docs-buttons>.btn,.docs-buttons>.btn-group,.docs-buttons>.form-control{margin-bottom:.5rem;margin-right:.25rem}.docs-toggles>.btn,.docs-toggles>.btn-group,.docs-toggles>.dropdown{margin-bottom:.5rem}.custom-file-val{position:absolute;bottom:0}.sw-content{width:100%!important}input[type=date]::-webkit-inner-spin-button{display:none}.ace_razor{background-color:#ff0}.loader-container{top:0;left:0;width:100%;height:100%;position:fixed;background-color:#041323;opacity:.2;z-index:9999}#loader{position:absolute;left:50%;top:50%;z-index:1;margin:-75px 0 0 -75px;border:16px solid #f3f3f3;border-radius:50%;border-top:16px solid #3498db;width:120px;height:120px;-webkit-animation:spin 2s linear infinite;animation:spin 2s linear infinite}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0)}100%{-webkit-transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@media screen and (max-width:580px){.hide-on-mb{display:none}}#modal-files img{height:30px}#modal-files img.preview{width:100%;height:auto}@media screen and (min-width:580px){.hide-on-desktop{display:none}}.bootstrap-tagsinput,.cm-tab,.fa,.fa-stack,.fab,.fad,.fal,.far,.fas,.now-ui-icons{display:inline-block}@media screen and (max-width:991px){.navbar .navbar-nav{min-height:unset}}@font-face{font-family:'Nucleo Outline';src:url(../fonts/nucleo-outline.eot);src:url(../fonts/nucleo-outline.eot) format("embedded-opentype"),url(../fonts/nucleo-outline.woff2) format("woff2"),url(../fonts/nucleo-outline.woff) format("woff"),url(../fonts/nucleo-outline.ttf) format("truetype"),url(../fonts/nucleo-outline.svg) format("svg");font-weight:400;font-style:normal}.now-ui-icons{font:normal normal normal 14px/1 'Nucleo Outline';font-size:inherit;speak:none;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.now-ui-icons.circle{padding:.33333333em;vertical-align:-16%;background-color:#eee;border-radius:50%}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler,.bootstrap-tagsinput{background-color:#fff}.nc-icon-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.nc-icon-ul>li{position:relative}.nc-icon-ul>li>.now-ui-icons{position:absolute;left:-1.57142857em;top:.14285714em;text-align:center}.fa-stack,.fa-ul>li{position:relative}.nc-icon-ul>li>.now-ui-icons.circle{top:-.19047619em;left:-1.9047619em}.now-ui-icons.spin{-webkit-animation:nc-icon-spin 2s infinite linear;-moz-animation:nc-icon-spin 2s infinite linear;animation:nc-icon-spin 2s infinite linear}@-webkit-keyframes nc-icon-spin{0%{-webkit-transform:rotate(0)}100%{-webkit-transform:rotate(360deg)}}@-moz-keyframes nc-icon-spin{0%{-moz-transform:rotate(0)}100%{-moz-transform:rotate(360deg)}}@keyframes nc-icon-spin{0%{-webkit-transform:rotate(0);-moz-transform:rotate(0);-ms-transform:rotate(0);-o-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}.now-ui-icons.ui-1_check:before{content:"\ea22"}.now-ui-icons.ui-1_email-85:before{content:"\ea2a"}.now-ui-icons.arrows-1_cloud-download-93:before{content:"\ea21"}.now-ui-icons.arrows-1_cloud-upload-94:before{content:"\ea24"}.now-ui-icons.arrows-1_minimal-down:before{content:"\ea39"}.now-ui-icons.arrows-1_minimal-left:before{content:"\ea3a"}.now-ui-icons.arrows-1_minimal-right:before{content:"\ea3b"}.now-ui-icons.arrows-1_minimal-up:before{content:"\ea3c"}.now-ui-icons.arrows-1_refresh-69:before{content:"\ea44"}.now-ui-icons.arrows-1_share-66:before{content:"\ea4c"}.now-ui-icons.business_badge:before{content:"\ea09"}.now-ui-icons.business_bank:before{content:"\ea0a"}.now-ui-icons.business_briefcase-24:before{content:"\ea13"}.now-ui-icons.business_bulb-63:before{content:"\ea15"}.now-ui-icons.business_chart-bar-32:before{content:"\ea1e"}.now-ui-icons.business_chart-pie-36:before{content:"\ea1f"}.now-ui-icons.business_globe:before{content:"\ea2f"}.now-ui-icons.business_money-coins:before{content:"\ea40"}.now-ui-icons.clothes_tie-bow:before{content:"\ea5b"}.now-ui-icons.design_vector:before{content:"\ea61"}.now-ui-icons.design_app:before{content:"\ea08"}.now-ui-icons.design_bullet-list-67:before{content:"\ea14"}.now-ui-icons.design_image:before{content:"\ea33"}.now-ui-icons.design_palette:before{content:"\ea41"}.now-ui-icons.design_scissors:before{content:"\ea4a"}.now-ui-icons.design-2_html5:before{content:"\ea32"}.now-ui-icons.design-2_ruler-pencil:before{content:"\ea48"}.now-ui-icons.emoticons_satisfied:before{content:"\ea49"}.now-ui-icons.files_box:before{content:"\ea12"}.now-ui-icons.files_paper:before{content:"\ea43"}.now-ui-icons.files_single-copy-04:before{content:"\ea52"}.now-ui-icons.health_ambulance:before{content:"\ea07"}.now-ui-icons.loader_gear:before{content:"\ea4e"}.now-ui-icons.loader_refresh:before{content:"\ea44"}.now-ui-icons.location_bookmark:before{content:"\ea10"}.now-ui-icons.location_compass-05:before{content:"\ea25"}.now-ui-icons.location_map-big:before{content:"\ea3d"}.now-ui-icons.location_pin:before{content:"\ea47"}.now-ui-icons.location_world:before{content:"\ea63"}.now-ui-icons.media-1_album:before{content:"\ea02"}.now-ui-icons.media-1_button-pause:before{content:"\ea16"}.now-ui-icons.media-1_button-play:before{content:"\ea18"}.now-ui-icons.media-1_button-power:before{content:"\ea19"}.now-ui-icons.media-1_camera-compact:before{content:"\ea1c"}.now-ui-icons.media-2_note-03:before{content:"\ea3f"}.now-ui-icons.media-2_sound-wave:before{content:"\ea57"}.now-ui-icons.objects_diamond:before{content:"\ea29"}.now-ui-icons.objects_globe:before{content:"\ea2f"}.now-ui-icons.objects_key-25:before{content:"\ea38"}.now-ui-icons.objects_planet:before{content:"\ea46"}.now-ui-icons.objects_spaceship:before{content:"\ea55"}.now-ui-icons.objects_support-17:before{content:"\ea56"}.now-ui-icons.objects_umbrella-13:before{content:"\ea5f"}.now-ui-icons.education_agenda-bookmark:before{content:"\ea01"}.now-ui-icons.education_atom:before{content:"\ea0c"}.now-ui-icons.education_glasses:before{content:"\ea2d"}.now-ui-icons.education_hat:before{content:"\ea30"}.now-ui-icons.education_paper:before{content:"\ea42"}.now-ui-icons.shopping_bag-16:before{content:"\ea0d"}.now-ui-icons.shopping_basket:before{content:"\ea0b"}.now-ui-icons.shopping_box:before{content:"\ea11"}.now-ui-icons.shopping_cart-simple:before{content:"\ea1d"}.now-ui-icons.shopping_credit-card:before{content:"\ea28"}.now-ui-icons.shopping_delivery-fast:before{content:"\ea27"}.now-ui-icons.shopping_shop:before{content:"\ea50"}.now-ui-icons.shopping_tag-content:before{content:"\ea59"}.now-ui-icons.sport_trophy:before{content:"\ea5d"}.now-ui-icons.sport_user-run:before{content:"\ea60"}.now-ui-icons.tech_controller-modern:before{content:"\ea26"}.now-ui-icons.tech_headphones:before{content:"\ea31"}.now-ui-icons.tech_laptop:before{content:"\ea36"}.now-ui-icons.tech_mobile:before{content:"\ea3e"}.now-ui-icons.tech_tablet:before{content:"\ea58"}.now-ui-icons.tech_tv:before{content:"\ea5e"}.now-ui-icons.tech_watch-time:before{content:"\ea62"}.now-ui-icons.text_align-center:before{content:"\ea05"}.now-ui-icons.text_align-left:before{content:"\ea06"}.now-ui-icons.text_bold:before{content:"\ea0e"}.now-ui-icons.text_caps-small:before{content:"\ea1b"}.now-ui-icons.gestures_tap-01:before{content:"\ea5a"}.now-ui-icons.transportation_air-baloon:before{content:"\ea03"}.now-ui-icons.transportation_bus-front-12:before{content:"\ea17"}.now-ui-icons.travel_info:before{content:"\ea04"}.now-ui-icons.travel_istanbul:before{content:"\ea34"}.now-ui-icons.ui-1_bell-53:before{content:"\ea0f"}.now-ui-icons.ui-1_calendar-60:before{content:"\ea1a"}.now-ui-icons.ui-1_lock-circle-open:before{content:"\ea35"}.now-ui-icons.ui-1_send:before{content:"\ea4d"}.now-ui-icons.ui-1_settings-gear-63:before{content:"\ea4e"}.now-ui-icons.ui-1_simple-add:before{content:"\ea4f"}.now-ui-icons.ui-1_simple-delete:before{content:"\ea54"}.now-ui-icons.ui-1_simple-remove:before{content:"\ea53"}.now-ui-icons.ui-1_zoom-bold:before{content:"\ea64"}.now-ui-icons.ui-2_chat-round:before{content:"\ea20"}.now-ui-icons.ui-2_favourite-28:before{content:"\ea2b"}.now-ui-icons.ui-2_like:before{content:"\ea37"}.now-ui-icons.ui-2_settings-90:before{content:"\ea4b"}.now-ui-icons.ui-2_time-alarm:before{content:"\ea5c"}.now-ui-icons.users_circle-08:before{content:"\ea23"}.now-ui-icons.users_single-02:before{content:"\ea51"}.bootstrap-tagsinput{border:1px solid #ccc;box-shadow:inset 0 1px 1px rgba(0,0,0,.075);padding:4px 6px;color:#555;vertical-align:middle;border-radius:4px;line-height:22px;cursor:text}.bootstrap-tagsinput input,.bootstrap-tagsinput input:focus{border:none;box-shadow:none}.bootstrap-tagsinput input{outline:0;background-color:transparent;padding:0 6px;margin:0;width:auto;max-width:inherit}.bootstrap-tagsinput.form-control input::-moz-placeholder{color:#777;opacity:1}.bootstrap-tagsinput.form-control input:-ms-input-placeholder{color:#777}.bootstrap-tagsinput.form-control input::-webkit-input-placeholder{color:#777}.bootstrap-tagsinput .tag{margin-right:2px;color:#fff}.bootstrap-tagsinput .tag [data-role=remove]{margin-left:8px;cursor:pointer}.bootstrap-tagsinput .tag [data-role=remove]:after{content:"x";padding:0 2px}.bootstrap-tagsinput .tag [data-role=remove]:hover{box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05)}.bootstrap-tagsinput .tag [data-role=remove]:hover:active{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}/*! + */.CodeMirror pre,body{-webkit-tap-highlight-color:transparent}dl,ol,p,pre,ul{margin-top:0}hr,pre code{color:inherit}.card,code{word-wrap:break-word}dd,legend{margin-bottom:.5rem}label,output{display:inline-block}.badge,progress,sub,sup{vertical-align:baseline}.dropdown-header,.dropdown-item,.dropdown-toggle,.input-group-text,.navbar-brand{white-space:nowrap}.fa-ul,.nc-icon-ul{list-style-type:none}.breadcrumb,.carousel-indicators,.dropdown-menu,.list-inline,.list-unstyled,.nav,.navbar-nav,.pagination,.te-heading-add ul{list-style:none}:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0))}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-font-sans-serif);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;-webkit-text-size-adjust:100%}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{margin:1rem 0;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}.img-fluid,.img-thumbnail{max-width:100%;height:auto}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}address,dl,ol,p,pre,ul{margin-bottom:1rem}blockquote,figure{margin:0 0 1rem}address,legend{line-height:inherit}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}abbr[data-bs-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}.btn,.form-control-color:not(:disabled):not([readonly]),.form-control[type=file]:not(:disabled):not([readonly]),[role=button],[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled),summary{cursor:pointer}address{font-style:normal}ol,ul{padding-left:2rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-left:0}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;overflow:auto;font-size:.875em}pre code{font-size:inherit;word-break:normal}code,kbd{font-size:.875em}code{color:#d63384}a>code{color:inherit}kbd{padding:.2rem .4rem;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}button{border-radius:0}fieldset,iframe{border:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}select{word-wrap:normal}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0}legend{float:left;width:100%;padding:0;font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}.display-1,.display-2,.display-3,.display-4,.display-5,.display-6{font-weight:300;line-height:1.2}summary{display:list-item}[hidden]{display:none!important}.figure,.list-inline-item{display:inline-block}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw)}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw)}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw)}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw)}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw)}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw)}.btn,.btn-link,.dropdown-item,.form-control,.form-select{font-weight:400}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-inline,.list-unstyled{padding-left:0}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer,.figure-caption{font-size:.875em;color:#6c757d}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem}.blockquote-footer::before{content:"— "}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem}.figure-img{margin-bottom:.5rem;line-height:1}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{width:100%;padding-right:var(--bs-gutter-x,.75rem);padding-left:var(--bs-gutter-x,.75rem);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(var(--bs-gutter-y) * -1);margin-right:calc(var(--bs-gutter-x)/ -2);margin-left:calc(var(--bs-gutter-x)/ -2)}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x)/ 2);padding-left:calc(var(--bs-gutter-x)/ 2);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.3333333333%}.col-2,.col-3{flex:0 0 auto}.col-2{width:16.6666666667%}.col-3{width:25%}.col-4,.col-5{flex:0 0 auto}.col-4{width:33.3333333333%}.col-5{width:41.6666666667%}.col-6,.col-7{flex:0 0 auto}.col-6{width:50%}.col-7{width:58.3333333333%}.col-8,.col-9{flex:0 0 auto}.col-8{width:66.6666666667%}.col-9{width:75%}.col-10{flex:0 0 auto;width:83.3333333333%}.col-11{flex:0 0 auto;width:91.6666666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.3333333333%}.offset-2{margin-left:16.6666666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.3333333333%}.offset-5{margin-left:41.6666666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.3333333333%}.offset-8{margin-left:66.6666666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.3333333333%}.offset-11{margin-left:91.6666666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.3333333333%}.col-sm-2{flex:0 0 auto;width:16.6666666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.3333333333%}.col-sm-5{flex:0 0 auto;width:41.6666666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.3333333333%}.col-sm-8{flex:0 0 auto;width:66.6666666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.3333333333%}.col-sm-11{flex:0 0 auto;width:91.6666666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.3333333333%}.offset-sm-2{margin-left:16.6666666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.3333333333%}.offset-sm-5{margin-left:41.6666666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.3333333333%}.offset-sm-8{margin-left:66.6666666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.3333333333%}.offset-sm-11{margin-left:91.6666666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.3333333333%}.col-md-2{flex:0 0 auto;width:16.6666666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.3333333333%}.col-md-5{flex:0 0 auto;width:41.6666666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.3333333333%}.col-md-8{flex:0 0 auto;width:66.6666666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.3333333333%}.col-md-11{flex:0 0 auto;width:91.6666666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.3333333333%}.offset-md-2{margin-left:16.6666666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.3333333333%}.offset-md-5{margin-left:41.6666666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.3333333333%}.offset-md-8{margin-left:66.6666666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.3333333333%}.offset-md-11{margin-left:91.6666666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.3333333333%}.col-lg-2{flex:0 0 auto;width:16.6666666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.3333333333%}.col-lg-5{flex:0 0 auto;width:41.6666666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.3333333333%}.col-lg-8{flex:0 0 auto;width:66.6666666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.3333333333%}.col-lg-11{flex:0 0 auto;width:91.6666666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.3333333333%}.offset-lg-2{margin-left:16.6666666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.3333333333%}.offset-lg-5{margin-left:41.6666666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.3333333333%}.offset-lg-8{margin-left:66.6666666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.3333333333%}.offset-lg-11{margin-left:91.6666666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.3333333333%}.col-xl-2{flex:0 0 auto;width:16.6666666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.3333333333%}.col-xl-5{flex:0 0 auto;width:41.6666666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.3333333333%}.col-xl-8{flex:0 0 auto;width:66.6666666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.3333333333%}.col-xl-11{flex:0 0 auto;width:91.6666666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.3333333333%}.offset-xl-2{margin-left:16.6666666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.3333333333%}.offset-xl-5{margin-left:41.6666666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.3333333333%}.offset-xl-8{margin-left:66.6666666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.3333333333%}.offset-xl-11{margin-left:91.6666666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.3333333333%}.col-xxl-2{flex:0 0 auto;width:16.6666666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.3333333333%}.col-xxl-5{flex:0 0 auto;width:41.6666666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.3333333333%}.col-xxl-8{flex:0 0 auto;width:66.6666666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.3333333333%}.col-xxl-11{flex:0 0 auto;width:91.6666666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.3333333333%}.offset-xxl-2{margin-left:16.6666666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.3333333333%}.offset-xxl-5{margin-left:41.6666666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.3333333333%}.offset-xxl-8{margin-left:66.6666666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.3333333333%}.offset-xxl-11{margin-left:91.6666666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-bg:transparent;--bs-table-striped-color:#212529;--bs-table-striped-bg:rgba(0, 0, 0, 0.05);--bs-table-active-color:#212529;--bs-table-active-bg:rgba(0, 0, 0, 0.1);--bs-table-hover-color:#212529;--bs-table-hover-bg:rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;color:#212529;vertical-align:top;border-color:#dee2e6}.table>:not(caption)>*>*{padding:.5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.form-check-input:focus,.form-control:focus,.form-select:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.25);outline:0}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:last-child)>:last-child>*{border-bottom-color:currentColor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-striped>tbody>tr:nth-of-type(odd){--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg:var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover{--bs-table-accent-bg:var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg:#cfe2ff;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:#000;border-color:#bacbe6}.table-secondary{--bs-table-bg:#e2e3e5;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:#000;border-color:#cbccce}.table-success{--bs-table-bg:#d1e7dd;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:#000;border-color:#bcd0c7}.table-info{--bs-table-bg:#cff4fc;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:#000;border-color:#badce3}.table-warning{--bs-table-bg:#fff3cd;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:#000;border-color:#e6dbb9}.table-danger{--bs-table-bg:#f8d7da;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:#000;border-color:#dfc2c4}.table-light{--bs-table-bg:#f8f9fa;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:#000;border-color:#dfe0e1}.table-dark{--bs-table-bg:#212529;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:#fff;border-color:#373b3e}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.collapsing,.form-control[type=file]{overflow:hidden}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:#6c757d}.form-control,.form-control:focus{color:#212529;background-color:#fff}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;line-height:1.5;background-clip:padding-box;border:1px solid #ced4da;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-check-input,.form-select{-moz-appearance:none;background-repeat:no-repeat}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control:focus{border-color:#86b7fe}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + .5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{max-width:3rem;height:auto;padding:.375rem}.form-control-color::-moz-color-swatch{height:1.5em;border-radius:.25rem}.form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.25rem}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;appearance:none}.form-select:focus{border-color:#86b7fe}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{color:#6c757d;background-color:#e9ecef}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);-webkit-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-select{height:calc(3.5rem + 2px);padding:1rem .75rem}.form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control::-webkit-input-placeholder{color:transparent}.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.form-check-inline .form-check-input~.invalid-feedback,.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.invalid-tooltip,.valid-tooltip{position:absolute;z-index:5;border-radius:.25rem;top:100%;max-width:100%}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}.valid-tooltip{display:none;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(25,135,84,.9)}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#198754;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:#198754;padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:#198754}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:#198754}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#198754}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{display:none;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(220,53,69,.9)}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:#dc3545;padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:#dc3545}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:#dc3545}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.btn,.btn:hover{color:#212529}.btn{display:inline-block;line-height:1.5;text-align:center;text-decoration:none;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.dropdown-toggle::after,.dropup .dropdown-toggle::after{vertical-align:.255em;content:""}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn-check:focus+.btn,.btn:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.btn-check:active+.btn-primary:focus,.btn-check:checked+.btn-primary:focus,.btn-check:focus+.btn-primary,.btn-primary.active:focus,.btn-primary:active:focus,.btn-primary:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(49,132,253,.5)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{pointer-events:none;opacity:.65}.btn-primary{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:focus+.btn-primary,.btn-primary:focus,.btn-primary:hover{background-color:#0b5ed7;border-color:#0a58ca;color:#fff}.btn-check:active+.btn-primary,.btn-check:checked+.btn-primary,.btn-primary.active,.btn-primary:active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0a58ca;border-color:#0a53be}.btn-check:active+.btn-secondary:focus,.btn-check:checked+.btn-secondary:focus,.btn-check:focus+.btn-secondary,.btn-secondary.active:focus,.btn-secondary:active:focus,.btn-secondary:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:focus+.btn-secondary,.btn-secondary:focus,.btn-secondary:hover{background-color:#5c636a;border-color:#565e64;color:#fff}.btn-check:active+.btn-secondary,.btn-check:checked+.btn-secondary,.btn-secondary.active,.btn-secondary:active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#565e64;border-color:#51585e}.btn-check:active+.btn-success:focus,.btn-check:checked+.btn-success:focus,.btn-check:focus+.btn-success,.btn-success.active:focus,.btn-success:active:focus,.btn-success:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(60,153,110,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-success{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+.btn-success,.btn-success:focus,.btn-success:hover{background-color:#157347;border-color:#146c43;color:#fff}.btn-check:active+.btn-success,.btn-check:checked+.btn-success,.btn-success.active,.btn-success:active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:active+.btn-info:focus,.btn-check:checked+.btn-info:focus,.btn-check:focus+.btn-info,.btn-info.active:focus,.btn-info:active:focus,.btn-info:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(11,172,204,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#198754;border-color:#198754}.btn-info{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+.btn-info,.btn-info:focus,.btn-info:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:active+.btn-info,.btn-check:checked+.btn-info,.btn-info.active,.btn-info:active,.show>.btn-info.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-info.disabled,.btn-info:disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-warning{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+.btn-warning,.btn-warning:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem rgba(217,164,6,.5)}.btn-check:active+.btn-warning,.btn-check:checked+.btn-warning,.btn-warning.active,.btn-warning:active,.show>.btn-warning.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:active+.btn-warning:focus,.btn-check:checked+.btn-warning:focus,.btn-warning.active:focus,.btn-warning:active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(217,164,6,.5)}.btn-check:active+.btn-danger:focus,.btn-check:checked+.btn-danger:focus,.btn-check:focus+.btn-danger,.btn-danger.active:focus,.btn-danger:active:focus,.btn-danger:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(225,83,97,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+.btn-danger,.btn-danger:focus,.btn-danger:hover{background-color:#bb2d3b;border-color:#b02a37;color:#fff}.btn-check:active+.btn-danger,.btn-check:checked+.btn-danger,.btn-danger.active,.btn-danger:active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:active+.btn-light:focus,.btn-check:checked+.btn-light:focus,.btn-check:focus+.btn-light,.btn-light.active:focus,.btn-light:active:focus,.btn-light:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(211,212,213,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-light{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:active+.btn-light,.btn-check:checked+.btn-light,.btn-check:focus+.btn-light,.btn-light.active,.btn-light:active,.btn-light:focus,.btn-light:hover,.show>.btn-light.dropdown-toggle{background-color:#f9fafb;border-color:#f9fafb;color:#000}.btn-check:active+.btn-dark:focus,.btn-check:checked+.btn-dark:focus,.btn-check:focus+.btn-dark,.btn-dark.active:focus,.btn-dark:active:focus,.btn-dark:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(66,70,73,.5)}.btn-light.disabled,.btn-light:disabled{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-dark{color:#fff;background-color:#212529;border-color:#212529}.btn-check:focus+.btn-dark,.btn-dark:focus,.btn-dark:hover{background-color:#1c1f23;border-color:#1a1e21;color:#fff}.btn-check:active+.btn-dark,.btn-check:checked+.btn-dark,.btn-dark.active,.btn-dark:active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1a1e21;border-color:#191c1f}.btn-check:active+.btn-outline-primary:focus,.btn-check:checked+.btn-outline-primary:focus,.btn-check:focus+.btn-outline-primary,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus,.btn-outline-primary:active:focus,.btn-outline-primary:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#212529;border-color:#212529}.btn-outline-primary{color:#0d6efd;border-color:#0d6efd}.btn-check:active+.btn-outline-primary,.btn-check:checked+.btn-outline-primary,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show,.btn-outline-primary:active,.btn-outline-primary:hover{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:active+.btn-outline-secondary:focus,.btn-check:checked+.btn-outline-secondary:focus,.btn-check:focus+.btn-outline-secondary,.btn-outline-secondary.active:focus,.btn-outline-secondary.dropdown-toggle.show:focus,.btn-outline-secondary:active:focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#0d6efd;background-color:transparent}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-check:active+.btn-outline-secondary,.btn-check:checked+.btn-outline-secondary,.btn-outline-secondary.active,.btn-outline-secondary.dropdown-toggle.show,.btn-outline-secondary:active,.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:active+.btn-outline-success:focus,.btn-check:checked+.btn-outline-success:focus,.btn-check:focus+.btn-outline-success,.btn-outline-success.active:focus,.btn-outline-success.dropdown-toggle.show:focus,.btn-outline-success:active:focus,.btn-outline-success:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-success{color:#198754;border-color:#198754}.btn-check:active+.btn-outline-success,.btn-check:checked+.btn-outline-success,.btn-outline-success.active,.btn-outline-success.dropdown-toggle.show,.btn-outline-success:active,.btn-outline-success:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:active+.btn-outline-info:focus,.btn-check:checked+.btn-outline-info:focus,.btn-check:focus+.btn-outline-info,.btn-outline-info.active:focus,.btn-outline-info.dropdown-toggle.show:focus,.btn-outline-info:active:focus,.btn-outline-info:focus{box-shadow:0 0 0 .25rem rgba(13,202,240,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#198754;background-color:transparent}.btn-outline-info{color:#0dcaf0;border-color:#0dcaf0}.btn-check:active+.btn-outline-info,.btn-check:checked+.btn-outline-info,.btn-outline-info.active,.btn-outline-info.dropdown-toggle.show,.btn-outline-info:active,.btn-outline-info:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:active+.btn-outline-warning:focus,.btn-check:checked+.btn-outline-warning:focus,.btn-check:focus+.btn-outline-warning,.btn-outline-warning.active:focus,.btn-outline-warning.dropdown-toggle.show:focus,.btn-outline-warning:active:focus,.btn-outline-warning:focus{box-shadow:0 0 0 .25rem rgba(255,193,7,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#0dcaf0;background-color:transparent}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-check:active+.btn-outline-warning,.btn-check:checked+.btn-outline-warning,.btn-outline-warning.active,.btn-outline-warning.dropdown-toggle.show,.btn-outline-warning:active,.btn-outline-warning:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:active+.btn-outline-danger:focus,.btn-check:checked+.btn-outline-danger:focus,.btn-check:focus+.btn-outline-danger,.btn-outline-danger.active:focus,.btn-outline-danger.dropdown-toggle.show:focus,.btn-outline-danger:active:focus,.btn-outline-danger:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-check:active+.btn-outline-danger,.btn-check:checked+.btn-outline-danger,.btn-outline-danger.active,.btn-outline-danger.dropdown-toggle.show,.btn-outline-danger:active,.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:active+.btn-outline-light:focus,.btn-check:checked+.btn-outline-light:focus,.btn-check:focus+.btn-outline-light,.btn-outline-light.active:focus,.btn-outline-light.dropdown-toggle.show:focus,.btn-outline-light:active:focus,.btn-outline-light:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-check:active+.btn-outline-light,.btn-check:checked+.btn-outline-light,.btn-outline-light.active,.btn-outline-light.dropdown-toggle.show,.btn-outline-light:active,.btn-outline-light:hover{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:active+.btn-outline-dark:focus,.btn-check:checked+.btn-outline-dark:focus,.btn-check:focus+.btn-outline-dark,.btn-outline-dark.active:focus,.btn-outline-dark.dropdown-toggle.show:focus,.btn-outline-dark:active:focus,.btn-outline-dark:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-dark{color:#212529;border-color:#212529}.btn-check:active+.btn-outline-dark,.btn-check:checked+.btn-outline-dark,.btn-outline-dark.active,.btn-outline-dark.dropdown-toggle.show,.btn-outline-dark:active,.btn-outline-dark:hover{color:#fff;background-color:#212529;border-color:#212529}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#212529;background-color:transparent}.btn-link{color:#0d6efd;text-decoration:underline}.card-link:hover,.dropdown-item,.nav-link,.navbar-brand,.navbar-toggler:focus,.navbar-toggler:hover,.page-link{text-decoration:none}.btn-link:hover{color:#0a58ca}.btn-link.disabled,.btn-link:disabled{color:#6c757d}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropend,.dropstart,.dropup{position:relative}.dropdown-toggle::after{display:inline-block;margin-left:.255em;border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#212529;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu[data-bs-popper]{left:0;margin-top:.125rem}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%}.dropup .dropdown-menu[data-bs-popper]{margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropend .dropdown-toggle::after,.dropstart .dropdown-toggle::before{border-top:.3em solid transparent;border-bottom:.3em solid transparent;content:""}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu{top:0;right:auto;left:100%}.dropend .dropdown-menu[data-bs-popper]{margin-top:0;margin-left:.125rem}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;border-right:0;border-left:.3em solid;vertical-align:0}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-menu{top:0;right:100%;left:auto}.dropstart .dropdown-menu[data-bs-popper]{margin-top:0;margin-right:.125rem}.dropstart .dropdown-toggle::after{margin-left:.255em;vertical-align:.255em;content:"";display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;border-right:.3em solid;vertical-align:0}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}.dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;color:#212529;text-align:inherit;background-color:transparent;border:0}.alert-link,.badge{font-weight:700}.dropdown-menu-dark,.dropdown-menu-dark .dropdown-divider{border-color:rgba(0,0,0,.15)}.dropdown-item:focus,.dropdown-item:hover{color:#1e2125;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#0d6efd}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:.875rem;color:#6c757d}.dropdown-item-text{display:block;padding:.25rem 1rem;color:#212529}.dropdown-menu-dark{color:#dee2e6;background-color:#343a40}.dropdown-menu-dark .dropdown-item{color:#dee2e6}.dropdown-menu-dark .dropdown-item:focus,.dropdown-menu-dark .dropdown-item:hover{color:#fff;background-color:rgba(255,255,255,.15)}.dropdown-menu-dark .dropdown-item.active,.dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#0d6efd}.dropdown-menu-dark .dropdown-item.disabled,.dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}.dropdown-menu-dark .dropdown-item-text{color:#dee2e6}.dropdown-menu-dark .dropdown-header{color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.card>hr,.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0}.nav-link{display:block;padding:.5rem 1rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;background:0 0;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6;isolation:isolate}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{background:0 0;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#0d6efd}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem;transition:box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:focus{outline:0;box-shadow:0 0 0 .25rem}.accordion-button:focus,.btn-close:focus,.page-link:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.25);outline:0}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.card,.progress-bar{flex-direction:column}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand,.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.55)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.55);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.55)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand,.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.55)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.55);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.55)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:flex;min-width:0;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:1rem}.card-footer,.card-header{padding:.5rem 1rem;background-color:rgba(0,0,0,.03)}.card-title{margin-bottom:.5rem}.accordion-header,.card-header,.card-subtitle,.card-text:last-child{margin-bottom:0}.card-subtitle{margin-top:-.25rem}.card-link+.card-link{margin-left:1rem}.card-header-pills,.card-header-tabs{margin-right:-.5rem;margin-left:-.5rem}.card-header{border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-bottom:-.5rem;border-bottom:0}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(.25rem - 1px)}.accordion-button,.alert,.btn .badge,.page-link{position:relative}.accordion-body,.accordion-button{padding:1rem 1.25rem}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-group>.card{margin-bottom:.75rem}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion-button{display:flex;align-items:center;width:100%;font-size:1rem;color:#212529;text-align:left;background-color:transparent;border:1px solid rgba(0,0,0,.125);border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}.badge,.progress-bar{text-align:center;white-space:nowrap}.modal-open,.progress,.progress-bar{overflow:hidden}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button.collapsed{border-bottom-width:0}.accordion-button:not(.collapsed){color:#0c63e4;background-color:#e7f1ff}.accordion-button:not(.collapsed)::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(180deg)}.accordion-button::after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#86b7fe}.alert,.breadcrumb{margin-bottom:1rem}.accordion-item:first-of-type .accordion-button{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.accordion-item:last-of-type .accordion-button.collapsed,.accordion-item:last-of-type .accordion-collapse{border-bottom-width:1px;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-collapse{border:solid rgba(0,0,0,.125);border-width:0 1px}.accordion-flush .accordion-button{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item:first-of-type .accordion-button{border-top-width:0;border-top-left-radius:0;border-top-right-radius:0}.accordion-flush .accordion-item:last-of-type .accordion-button.collapsed{border-bottom-width:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.breadcrumb{display:flex;flex-wrap:wrap;padding:0}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:var(--bs-breadcrumb-divider,"/")}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0}.page-link{display:block;color:#0d6efd;background-color:#fff;border:1px solid #dee2e6;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;padding:.375rem .75rem}.page-link:focus,.page-link:hover{color:#0a58ca;background-color:#e9ecef}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;border-color:#dee2e6}.page-link:focus{z-index:3}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item.active .page-link{z-index:3;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;background-color:#fff;border-color:#dee2e6}.page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.35em .65em;font-size:.75em;line-height:1;color:#fff;border-radius:.25rem}.badge:empty{display:none}.btn .badge{top:-1px}.alert{padding:1rem;border:1px solid transparent;border-radius:.25rem}.list-group,.progress{display:flex;border-radius:.25rem}.alert-heading{color:inherit}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{color:#084298;background-color:#cfe2ff;border-color:#b6d4fe}.alert-primary .alert-link{color:#06357a}.alert-secondary{color:#41464b;background-color:#e2e3e5;border-color:#d3d6d8}.alert-secondary .alert-link{color:#34383c}.alert-success{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}.alert-success .alert-link{color:#0c4128}.alert-info{color:#055160;background-color:#cff4fc;border-color:#b6effb}.alert-info .alert-link{color:#04414d}.alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}.alert-warning .alert-link{color:#523e02}.alert-danger{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}.alert-danger .alert-link{color:#6a1a21}.alert-light{color:#636464;background-color:#fefefe;border-color:#fdfdfe}.alert-light .alert-link{color:#4f5050}.alert-dark{color:#141619;background-color:#d3d3d4;border-color:#bcbebf}.alert-dark .alert-link{color:#101214}@-webkit-keyframes progress-bar-stripes{0%{background-position-x:1rem}}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{height:1rem;font-size:.75rem;background-color:#e9ecef}.progress-bar{display:flex;justify-content:center;color:#fff;background-color:#0d6efd;transition:width .6s ease}.popover,.tooltip{font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;text-decoration:none}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:1s linear infinite progress-bar-stripes;animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}.progress-bar-animated{-webkit-animation:none;animation:none}}.list-group{flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.5rem 1rem;text-decoration:none;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#084298;background-color:#cfe2ff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#084298;background-color:#bacbe6}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}.list-group-item-secondary{color:#41464b;background-color:#e2e3e5}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#41464b;background-color:#cbccce}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}.list-group-item-success{color:#0f5132;background-color:#d1e7dd}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#0f5132;background-color:#bcd0c7}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-info{color:#055160;background-color:#cff4fc}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#055160;background-color:#badce3}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-warning{color:#664d03;background-color:#fff3cd}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#664d03;background-color:#e6dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-danger{color:#842029;background-color:#f8d7da}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#842029;background-color:#dfc2c4}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-light{color:#636464;background-color:#fefefe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#636464;background-color:#e5e5e5}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}.list-group-item-dark{color:#141619;background-color:#d3d3d4}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#141619;background-color:#bebebf}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em;color:#000;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.25rem;opacity:.5}.toast,.toast-header{background-color:rgba(255,255,255,.85)}.modal-content,.popover,.toast,.toast-header{background-clip:padding-box}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{opacity:1}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:.25}.modal-backdrop.fade,.toast:not(.showing):not(.show){opacity:0}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{width:350px;max-width:100%;font-size:.875rem;pointer-events:auto;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem rgba(0,0,0,.15);border-radius:.25rem}.toast.hide{display:none}.toast-container{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:.75rem}.toast-header{display:flex;align-items:center;padding:.5rem .75rem;color:#6c757d;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-header .btn-close{margin-right:-.375rem;margin-left:.75rem}.toast-body{padding:.75rem;word-wrap:break-word}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .btn-close{padding:.5rem;margin:-.5rem -.5rem -.5rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-footer,.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-footer,.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-footer,.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-footer,.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-footer,.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-footer,.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;text-align:left;text-align:start;opacity:0}.tooltip.show{opacity:.9}.tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[data-popper-placement^=right],.bs-tooltip-end{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[data-popper-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[data-popper-placement^=left],.bs-tooltip-start{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;text-align:left;text-align:start;background-color:#fff;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-width:0 .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:1px;border-width:0 .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f0f0f0}.carousel,.carousel-inner,.carousel-item{position:relative}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#f0f0f0;border-bottom:1px solid #d8d8d8;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:1rem;color:#212529}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.spinner-border,.spinner-grow{display:inline-block;vertical-align:text-bottom}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}@-webkit-keyframes spinner-border{to{transform:rotate(360deg)}}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{width:2rem;height:2rem;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:.75s linear infinite spinner-border;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{width:2rem;height:2rem;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:.75s linear infinite spinner-grow;animation:.75s linear infinite spinner-grow}.clearfix::after,.ratio::before{display:block;content:""}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}.spinner-border,.spinner-grow{-webkit-animation-duration:1.5s;animation-duration:1.5s}}.clearfix::after{clear:both}.link-primary{color:#0d6efd}.link-primary:focus,.link-primary:hover{color:#0a58ca}.link-secondary{color:#6c757d}.link-secondary:focus,.link-secondary:hover{color:#565e64}.link-success{color:#198754}.link-success:focus,.link-success:hover{color:#146c43}.link-info{color:#0dcaf0}.link-info:focus,.link-info:hover{color:#3dd5f3}.link-warning{color:#ffc107}.link-warning:focus,.link-warning:hover{color:#ffcd39}.link-danger{color:#dc3545}.link-danger:focus,.link-danger:hover{color:#b02a37}.link-light{color:#f8f9fa}.link-light:focus,.link-light:hover{color:#f9fafb}.link-dark{color:#212529}.link-dark:focus,.link-dark:hover{color:#1a1e21}.ratio{position:relative;width:100%}.ratio::before{padding-top:var(--bs-aspect-ratio)}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.fixed-bottom,.fixed-top{position:fixed;z-index:1030;right:0;left:0}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:calc(3 / 4 * 100%)}.ratio-16x9{--bs-aspect-ratio:calc(9 / 16 * 100%)}.ratio-21x9{--bs-aspect-ratio:calc(9 / 21 * 100%)}.fixed-top{top:0}.fixed-bottom{bottom:0}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:1px solid #dee2e6!important}.border-0{border:0!important}.border-top{border-top:1px solid #dee2e6!important}.border-top-0{border-top:0!important}.border-end{border-right:1px solid #dee2e6!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:1px solid #dee2e6!important}.border-start-0{border-left:0!important}.border-primary{border-color:#0d6efd!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#198754!important}.border-info{border-color:#0dcaf0!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#212529!important}.border-white{border-color:#fff!important}.border-0{border-width:0!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.img-container>img,.img-preview>img{max-width:100%}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:lighter!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-primary{color:#0d6efd!important}.text-secondary{color:#6c757d!important}.text-success{color:#198754!important}.text-info{color:#0dcaf0!important}.text-warning{color:#ffc107!important}.text-danger{color:#dc3545!important}.text-light{color:#f8f9fa!important}.text-dark{color:#212529!important}.text-white{color:#fff!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-reset{color:inherit!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.bg-primary{background-color:#0d6efd!important}.bg-secondary{background-color:#6c757d!important}.bg-success{background-color:#198754!important}.bg-info{background-color:#0dcaf0!important}.bg-warning{background-color:#ffc107!important}.bg-danger{background-color:#dc3545!important}.bg-light{background-color:#f8f9fa!important}.bg-dark{background-color:#212529!important}.bg-body,.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.bg-gradient{background-image:var(--bs-gradient)!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:.25rem!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:.2rem!important}.rounded-2{border-radius:.25rem!important}.rounded-3{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-end,.rounded-top{border-top-right-radius:.25rem!important}.rounded-bottom,.rounded-end{border-bottom-right-radius:.25rem!important}.rounded-bottom,.rounded-start{border-bottom-left-radius:.25rem!important}.rounded-start,.rounded-top{border-top-left-radius:.25rem!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}.img-container,.img-preview{background-color:#f7f7f7;text-align:center;width:100%}.img-container{margin-bottom:1rem;max-height:497px;min-height:200px}.docs-data>.input-group,.docs-toggles>.btn,.docs-toggles>.btn-group,.docs-toggles>.dropdown,.img-preview{margin-bottom:.5rem}@media (min-width:768px){.img-container{min-height:497px}}.docs-preview{margin-right:-1rem}.img-preview{float:left;margin-right:.5rem;overflow:hidden}.preview-lg{height:9rem;width:16rem}.preview-md{height:4.5rem;width:8rem}.preview-sm{height:2.25rem;width:4rem}.preview-xs{height:1.125rem;margin-right:0;width:2rem}.docs-data>.input-group>label{justify-content:center;min-width:5rem}.docs-data>.input-group>span{justify-content:center;min-width:3rem}.docs-buttons>.btn,.docs-buttons>.btn-group,.docs-buttons>.form-control{margin-bottom:.5rem;margin-right:.25rem}.custom-file-val{position:absolute;bottom:0}.sw-content{width:100%!important}input[type=date]::-webkit-inner-spin-button{display:none}.ace_razor{background-color:#ff0}.ace_punctuation.ace_block.ace_razor,.ace_punctuation.ace_short.ace_razor{color:#000}.loader-container{top:0;left:0;width:100%;height:100%;position:fixed;background-color:#041323;opacity:.2;z-index:9999}#loader,.cm-fat-cursor div.CodeMirror-cursors{z-index:1}#loader{position:absolute;left:50%;top:50%;margin:-75px 0 0 -75px;border:16px solid #f3f3f3;border-radius:50%;border-top:16px solid #3498db;width:120px;height:120px;-webkit-animation:spin 2s linear infinite;animation:spin 2s linear infinite}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0)}100%{-webkit-transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@media screen and (max-width:580px){.hide-on-mb{display:none}}#modal-files img{height:30px}#modal-files img.preview{width:100%;height:auto}@media screen and (min-width:580px){.hide-on-desktop{display:none}}.bootstrap-tagsinput,.cm-tab,.fa-stack,.now-ui-icons{display:inline-block}@media screen and (max-width:991px){.navbar .navbar-nav{min-height:unset}}@font-face{font-family:'Nucleo Outline';src:url(../fonts/nucleo-outline.eot);src:url(../fonts/nucleo-outline.eot) format("embedded-opentype"),url(../fonts/nucleo-outline.woff2) format("woff2"),url(../fonts/nucleo-outline.woff) format("woff"),url(../fonts/nucleo-outline.ttf) format("truetype"),url(../fonts/nucleo-outline.svg) format("svg");font-weight:400;font-style:normal}.now-ui-icons{font:normal normal normal 14px/1 'Nucleo Outline';font-size:inherit;speak:none;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.now-ui-icons.circle{padding:.33333333em;vertical-align:-16%;background-color:#eee;border-radius:50%}.nc-icon-ul{padding-left:0;margin-left:2.14285714em}.nc-icon-ul>li{position:relative}.nc-icon-ul>li>.now-ui-icons{position:absolute;left:-1.57142857em;top:.14285714em;text-align:center}.nc-icon-ul>li>.now-ui-icons.circle{top:-.19047619em;left:-1.9047619em}.now-ui-icons.spin{-webkit-animation:nc-icon-spin 2s infinite linear;-moz-animation:nc-icon-spin 2s infinite linear;animation:nc-icon-spin 2s infinite linear}@-webkit-keyframes nc-icon-spin{0%{-webkit-transform:rotate(0)}100%{-webkit-transform:rotate(360deg)}}@-moz-keyframes nc-icon-spin{0%{-moz-transform:rotate(0)}100%{-moz-transform:rotate(360deg)}}@keyframes nc-icon-spin{0%{-webkit-transform:rotate(0);-moz-transform:rotate(0);-ms-transform:rotate(0);-o-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}.now-ui-icons.ui-1_check:before{content:"\ea22"}.now-ui-icons.ui-1_email-85:before{content:"\ea2a"}.now-ui-icons.arrows-1_cloud-download-93:before{content:"\ea21"}.now-ui-icons.arrows-1_cloud-upload-94:before{content:"\ea24"}.now-ui-icons.arrows-1_minimal-down:before{content:"\ea39"}.now-ui-icons.arrows-1_minimal-left:before{content:"\ea3a"}.now-ui-icons.arrows-1_minimal-right:before{content:"\ea3b"}.now-ui-icons.arrows-1_minimal-up:before{content:"\ea3c"}.now-ui-icons.arrows-1_refresh-69:before{content:"\ea44"}.now-ui-icons.arrows-1_share-66:before{content:"\ea4c"}.now-ui-icons.business_badge:before{content:"\ea09"}.now-ui-icons.business_bank:before{content:"\ea0a"}.now-ui-icons.business_briefcase-24:before{content:"\ea13"}.now-ui-icons.business_bulb-63:before{content:"\ea15"}.now-ui-icons.business_chart-bar-32:before{content:"\ea1e"}.now-ui-icons.business_chart-pie-36:before{content:"\ea1f"}.now-ui-icons.business_globe:before{content:"\ea2f"}.now-ui-icons.business_money-coins:before{content:"\ea40"}.now-ui-icons.clothes_tie-bow:before{content:"\ea5b"}.now-ui-icons.design_vector:before{content:"\ea61"}.now-ui-icons.design_app:before{content:"\ea08"}.now-ui-icons.design_bullet-list-67:before{content:"\ea14"}.now-ui-icons.design_image:before{content:"\ea33"}.now-ui-icons.design_palette:before{content:"\ea41"}.now-ui-icons.design_scissors:before{content:"\ea4a"}.now-ui-icons.design-2_html5:before{content:"\ea32"}.now-ui-icons.design-2_ruler-pencil:before{content:"\ea48"}.now-ui-icons.emoticons_satisfied:before{content:"\ea49"}.now-ui-icons.files_box:before{content:"\ea12"}.now-ui-icons.files_paper:before{content:"\ea43"}.now-ui-icons.files_single-copy-04:before{content:"\ea52"}.now-ui-icons.health_ambulance:before{content:"\ea07"}.now-ui-icons.loader_gear:before{content:"\ea4e"}.now-ui-icons.loader_refresh:before{content:"\ea44"}.now-ui-icons.location_bookmark:before{content:"\ea10"}.now-ui-icons.location_compass-05:before{content:"\ea25"}.now-ui-icons.location_map-big:before{content:"\ea3d"}.now-ui-icons.location_pin:before{content:"\ea47"}.now-ui-icons.location_world:before{content:"\ea63"}.now-ui-icons.media-1_album:before{content:"\ea02"}.now-ui-icons.media-1_button-pause:before{content:"\ea16"}.now-ui-icons.media-1_button-play:before{content:"\ea18"}.now-ui-icons.media-1_button-power:before{content:"\ea19"}.now-ui-icons.media-1_camera-compact:before{content:"\ea1c"}.now-ui-icons.media-2_note-03:before{content:"\ea3f"}.now-ui-icons.media-2_sound-wave:before{content:"\ea57"}.now-ui-icons.objects_diamond:before{content:"\ea29"}.now-ui-icons.objects_globe:before{content:"\ea2f"}.now-ui-icons.objects_key-25:before{content:"\ea38"}.now-ui-icons.objects_planet:before{content:"\ea46"}.now-ui-icons.objects_spaceship:before{content:"\ea55"}.now-ui-icons.objects_support-17:before{content:"\ea56"}.now-ui-icons.objects_umbrella-13:before{content:"\ea5f"}.now-ui-icons.education_agenda-bookmark:before{content:"\ea01"}.now-ui-icons.education_atom:before{content:"\ea0c"}.now-ui-icons.education_glasses:before{content:"\ea2d"}.now-ui-icons.education_hat:before{content:"\ea30"}.now-ui-icons.education_paper:before{content:"\ea42"}.now-ui-icons.shopping_bag-16:before{content:"\ea0d"}.now-ui-icons.shopping_basket:before{content:"\ea0b"}.now-ui-icons.shopping_box:before{content:"\ea11"}.now-ui-icons.shopping_cart-simple:before{content:"\ea1d"}.now-ui-icons.shopping_credit-card:before{content:"\ea28"}.now-ui-icons.shopping_delivery-fast:before{content:"\ea27"}.now-ui-icons.shopping_shop:before{content:"\ea50"}.now-ui-icons.shopping_tag-content:before{content:"\ea59"}.now-ui-icons.sport_trophy:before{content:"\ea5d"}.now-ui-icons.sport_user-run:before{content:"\ea60"}.now-ui-icons.tech_controller-modern:before{content:"\ea26"}.now-ui-icons.tech_headphones:before{content:"\ea31"}.now-ui-icons.tech_laptop:before{content:"\ea36"}.now-ui-icons.tech_mobile:before{content:"\ea3e"}.now-ui-icons.tech_tablet:before{content:"\ea58"}.now-ui-icons.tech_tv:before{content:"\ea5e"}.now-ui-icons.tech_watch-time:before{content:"\ea62"}.now-ui-icons.text_align-center:before{content:"\ea05"}.now-ui-icons.text_align-left:before{content:"\ea06"}.now-ui-icons.text_bold:before{content:"\ea0e"}.now-ui-icons.text_caps-small:before{content:"\ea1b"}.now-ui-icons.gestures_tap-01:before{content:"\ea5a"}.now-ui-icons.transportation_air-baloon:before{content:"\ea03"}.now-ui-icons.transportation_bus-front-12:before{content:"\ea17"}.now-ui-icons.travel_info:before{content:"\ea04"}.now-ui-icons.travel_istanbul:before{content:"\ea34"}.now-ui-icons.ui-1_bell-53:before{content:"\ea0f"}.now-ui-icons.ui-1_calendar-60:before{content:"\ea1a"}.now-ui-icons.ui-1_lock-circle-open:before{content:"\ea35"}.now-ui-icons.ui-1_send:before{content:"\ea4d"}.now-ui-icons.ui-1_settings-gear-63:before{content:"\ea4e"}.now-ui-icons.ui-1_simple-add:before{content:"\ea4f"}.now-ui-icons.ui-1_simple-delete:before{content:"\ea54"}.now-ui-icons.ui-1_simple-remove:before{content:"\ea53"}.now-ui-icons.ui-1_zoom-bold:before{content:"\ea64"}.now-ui-icons.ui-2_chat-round:before{content:"\ea20"}.now-ui-icons.ui-2_favourite-28:before{content:"\ea2b"}.now-ui-icons.ui-2_like:before{content:"\ea37"}.now-ui-icons.ui-2_settings-90:before{content:"\ea4b"}.now-ui-icons.ui-2_time-alarm:before{content:"\ea5c"}.now-ui-icons.users_circle-08:before{content:"\ea23"}.now-ui-icons.users_single-02:before{content:"\ea51"}.bootstrap-tagsinput{background-color:#fff;border:1px solid #ccc;box-shadow:inset 0 1px 1px rgba(0,0,0,.075);padding:4px 6px;color:#555;vertical-align:middle;border-radius:4px;max-width:100%;line-height:22px;cursor:text}.bootstrap-tagsinput input,.bootstrap-tagsinput input:focus{border:none;box-shadow:none}.bootstrap-tagsinput input{outline:0;background-color:transparent;padding:0 6px;margin:0;width:auto;max-width:inherit}.bootstrap-tagsinput.form-control input::-moz-placeholder{color:#777;opacity:1}.bootstrap-tagsinput.form-control input:-ms-input-placeholder{color:#777}.bootstrap-tagsinput.form-control input::-webkit-input-placeholder{color:#777}.bootstrap-tagsinput .tag{margin-right:2px;color:#fff}.bootstrap-tagsinput .tag [data-role=remove]{margin-left:8px;cursor:pointer}.bootstrap-tagsinput .tag [data-role=remove]:after{content:"x";padding:0 2px}.bootstrap-tagsinput .tag [data-role=remove]:hover{box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05)}.bootstrap-tagsinput .tag [data-role=remove]:hover:active{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}/*! * Font Awesome Free 5.12.1 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) - */.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{height:2em;line-height:2em;vertical-align:middle;width:2.5em}.CodeMirror pre,.fa-stack-1x{line-height:inherit}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adobe:before{content:"\f778"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-bahai:before{content:"\f666"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-alt:before{content:"\f422"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\f952"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-alt:before{content:"\f424"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\f907"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-handshake:before{content:"\f2b5"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-hdd:before{content:"\f0a0"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-ideal:before{content:"\f913"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-instagram-square:before{content:"\f955"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microblog:before{content:"\f91a"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\f956"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\f91e"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopify:before{content:"\f957"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\f941"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\f949"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:auto;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:auto;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:auto;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900}.CodeMirror{height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre{padding:0 4px}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor-mark{background-color:rgba(20,255,20,.5);-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite}.cm-animate-fat-cursor{width:auto;border:0;-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite;background-color:#7e7}@-moz-keyframes blink{50%{background-color:transparent}}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{text-decoration:inherit}.cm-link,.tui-editor-contents a{text-decoration:underline}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:-20px;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-type,.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-invalidchar,.cm-s-default .cm-error{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-30px;margin-right:-30px;padding-bottom:30px;height:100%;outline:0;position:relative}.CodeMirror-sizer{position:relative;border-right:30px solid transparent}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{position:absolute;z-index:6;display:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-30px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:0 0!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:0 0;font-family:inherit;font-size:inherit;margin:0;white-space:pre;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre{word-wrap:break-word;white-space:pre-wrap}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:0}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}.CodeMirror-focused div.CodeMirror-cursors,div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:''}span.CodeMirror-selectedtext{background:0 0}.hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#f8f8f8}.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:700}.hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable{color:teal}.hljs-doctag,.hljs-string{color:#d14}.hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:700}.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type{color:#458;font-weight:700}.hljs-attribute,.hljs-name,.hljs-tag{color:navy;font-weight:400}.hljs-link,.hljs-regexp{color:#009926}.hljs-bullet,.hljs-symbol{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.CodeMirror{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif}.tui-editor-contents :not(table){line-height:160%;box-sizing:content-box}.tui-editor-contents address,.tui-editor-contents cite,.tui-editor-contents dfn,.tui-editor-contents em,.tui-editor-contents i,.tui-editor-contents var{font-style:italic}.tui-editor-contents strong{font-weight:700}.tui-editor-contents p{margin:10px 0;color:#555}.tui-editor-contents>div>div:first-of-type h1,.tui-editor-contents>h1:first-of-type{margin-top:14px}.tui-editor-contents h1,.tui-editor-contents h2,.tui-editor-contents h3,.tui-editor-contents h5{font-weight:700}.tui-editor-contents h1{font-size:1.6rem;line-height:28px;border-bottom:3px double #999;margin:52px 0 15px;padding-bottom:7px;color:#000}.tui-editor-contents h2{font-size:1.3rem;line-height:23px;border-bottom:1px solid #dbdbdb;margin:30px 0 13px;padding-bottom:7px;color:#333}.tui-editor-contents h3,.tui-editor-contents h4{font-size:1.2rem;line-height:18px;margin:20px 0 2px;color:#333}.tui-editor-contents h5,.tui-editor-contents h6{font-size:1rem;line-height:17px;margin:10px 0 -4px;color:#333}.tui-editor-contents blockquote{margin:15px 0;border-left:4px solid #ddd;padding:0 15px;color:#777}.tui-editor-contents blockquote>:first-child{margin-top:0}.tui-editor-contents blockquote>:last-child{margin-bottom:0}.tui-editor-contents code,.tui-editor-contents pre{font-family:Consolas,Courier,"Apple SD 산돌고딕 Neo",-apple-system,"Lucida Grande","Apple SD Gothic Neo","맑은 고딕","Malgun Gothic","Segoe UI","돋움",dotum,sans-serif;border:0;border-radius:0}.te-input-language input,.te-ww-block-overlay.code-block-header,.tui-editor-defaultUI{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif}.tui-editor-contents pre{margin:2px 0 8px;padding:18px;background-color:#f5f7f8}.tui-editor-contents code{color:#c1788b;padding:4px 4px 2px 0;letter-spacing:-.3px}.tui-editor-contents pre code{padding:0;color:inherit;white-space:pre-wrap;background-color:transparent}.tui-editor-contents pre.addon{border:1px solid #e8ebed;background-color:#fff}.tui-editor-contents img{margin:4px 0 10px;box-sizing:border-box;vertical-align:top}.tui-editor-contents table{margin:2px 0 14px;color:#555;width:auto;border-collapse:collapse;box-sizing:border-box}.tui-editor-contents table td,.tui-editor-contents table th{height:32px;padding:5px 14px 5px 12px}.tui-editor-contents table td{border:1px solid #eaeaea}.tui-editor-contents table th{border:1px solid #72777b;border-top:0;background-color:#7b8184;font-weight:300;color:#fff;padding-top:6px}.tui-editor-contents dir,.tui-editor-contents menu,.tui-editor-contents ol,.tui-editor-contents ul{display:block;list-style-type:disc;padding-left:17px;margin:6px 0 10px;color:#555}.tui-editor-contents ol{list-style-type:decimal}.tui-editor-contents ol ol,.tui-editor-contents ol ul,.tui-editor-contents ul ol,.tui-editor-contents ul ul{margin-top:0!important;margin-bottom:0!important}.tui-editor-contents ol li,.tui-editor-contents ul li{position:relative}.tui-editor-contents ul p,ol p{margin:0}.tui-editor-contents ol li.task-list-item:before,.tui-editor-contents pre ul li:before,.tui-editor-contents ul li.task-list-item:before{content:""}.tui-editor-contents hr{border-top:1px solid #eee;margin:16px 0}.tui-editor-contents a{color:#5286bc}.tui-editor-contents a:hover{color:#007cff}.tui-editor-contents{font-size:13px;margin:0;padding:0}.tui-editor-contents .task-list-item{border:0;list-style:none;padding-left:22px;margin-left:-22px}.tui-editor-contents .task-list-item:before{background-size:16px 16px;content:"";height:18px;width:18px;position:absolute;left:0;top:1px;cursor:pointer;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAADdJREFUKBVjvHv37n8GMgALSI+SkhJJWu/du8fARJIOJMWjGpECA505GjjoIYLEB6dVUNojFQAA/1MJUFWet/4AAAAASUVORK5CYII=)}.tui-editor-contents .task-list-item.checked:before{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAMpJREFUKBVjjJ/64D8DGYCJDD1gLbTVyM3OxJDiJMzAxcYIdyALnIWDAdJU7i/OICfCxsDMxMgwc88bwk5F1vTs/W+GFUffwY2H+1FBlI2hLliCQYCbGSyJrqlzwwuGj9//YWoMtRBgUBJnZ6gMEGeQFWaFOw9kE7omkG5GWDyCPF7mJ86gIMbO8P//fwZGRkYGXJpAGuFO/fbrP0PXppcMD179JKgJRSOIA9N8/NZXrM4DqYEBjOgAaYYFOUwRNhruVGyS+MTI1ggAx8NTGcUtFVQAAAAASUVORK5CYII=)}.tui-editor-contents .task-list-item .task-list-item-checkbox,.tui-editor-contents .task-list-item input[type=checkbox]{margin-left:-17px;margin-right:3.8px;margin-top:3px}.tui-editor-contents-placeholder:before{content:attr(data-placeholder);color:grey;line-height:160%;position:absolute}.auto-height,.auto-height .tui-editor-defaultUI{height:auto}.auto-height .tui-editor{position:relative}:not(.auto-height)>.tui-editor-defaultUI,:not(.auto-height)>.tui-editor-defaultUI>.te-editor-section{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}:not(.auto-height)>.tui-editor-defaultUI>.te-editor-section{-ms-flex:1;flex:1}.tui-editor-defaultUI-toolbar:after,.tui-editor:after{content:"";display:block;height:0;clear:both}.tui-editor{position:absolute;line-height:1;color:#181818;width:100%;height:inherit}.te-editor-section{min-height:0;position:relative;height:inherit}.te-md-container{display:none;overflow:hidden;height:100%}.te-md-container .te-editor{line-height:1.5}.te-md-container .te-editor,.te-md-container .te-preview{box-sizing:border-box;padding:0;height:inherit}.te-md-container .CodeMirror{font-size:13px;height:inherit}.te-md-container .te-preview{overflow:auto;padding:0 25px;height:100%}.te-md-container .te-preview>p:first-child{margin-top:0!important}.te-md-container .te-preview .tui-editor-contents{padding-top:11px}.tui-editor .te-preview-style-tab>.te-editor,.tui-editor .te-preview-style-tab>.te-preview{float:left;width:100%;display:none}.tui-editor .te-preview-style-tab>.te-tab-active{display:block}.tui-editor .te-preview-style-vertical>.te-tab-section{display:none}.tui-editor .te-preview-style-tab>.te-tab-section{display:block}.tui-editor .te-preview-style-vertical .te-editor,.tui-editor .te-preview-style-vertical .te-preview{float:left;width:50%}.tui-editor .te-md-splitter{display:none;position:absolute;left:50%;top:0;height:100%;width:1px;border-left:1px solid #e5e5e5}.tui-editor .te-preview-style-vertical .te-md-splitter{display:block}.te-ww-container{display:none;overflow:hidden;z-index:10;height:inherit;background-color:#fff}.te-ww-container>.te-editor{overflow:auto;height:inherit}.te-ww-container .tui-editor-contents:focus{outline:0}.te-ww-container .tui-editor-contents{padding:0 25px}.te-ww-container .tui-editor-contents:first-child{box-sizing:border-box;margin:0;padding:16px 25px 0;height:inherit}.te-ww-container .tui-editor-contents:last-child{margin-bottom:16px}.te-md-mode .te-md-container,.te-ww-mode .te-ww-container{display:block;z-index:100}.tui-editor-defaultUI.te-hide,.tui-editor.te-hide{display:none}.tui-editor-defaultUI .CodeMirror-lines{padding-top:13px;padding-bottom:13px}.tui-editor-defaultUI .CodeMirror-line{padding-left:25px;padding-right:25px}.tui-editor-defaultUI .CodeMirror pre.CodeMirror-placeholder{padding-left:25px;color:grey}.tui-editor-defaultUI .CodeMirror-scroll{cursor:text}.tui-editor-contents td.te-cell-selected{background-color:#d8dfec}.tui-editor-contents td.te-cell-selected::selection{background-color:#d8dfec}.tui-editor-contents th.te-cell-selected{background-color:#908f8f}.tui-editor-contents th.te-cell-selected::selection{background-color:#908f8f}.tui-editor-defaultUI{position:relative;border:1px solid #e5e5e5;height:100%}.tui-editor-defaultUI button{color:#fff;padding:0 14px 0 15px;height:28px;font-size:12px;border:none;cursor:pointer;outline:0}.tui-editor-defaultUI button.te-ok-button{background-color:#4b96e6}.tui-editor-defaultUI button.te-close-button{background-color:#777}.tui-editor-defaultUI-toolbar{padding:0 25px;height:31px;background-color:#fff;border:0;overflow:hidden}.tui-toolbar-divider{float:left;display:inline-block;width:1px;height:14px;background-color:#ddd;margin:9px 6px}.tui-toolbar-button-group{height:28px;border-right:1px solid #d9d9d9;float:left}.te-toolbar-section{height:32px;box-sizing:border-box;border-bottom:1px solid #e5e5e5}.tui-editor-defaultUI-toolbar button{float:left;box-sizing:border-box;outline:0;cursor:pointer;background-color:#fff;width:22px;height:22px;padding:3px;border-radius:0;margin:5px 3px;border:1px solid #fff}.tui-editor-defaultUI-toolbar button.active,.tui-editor-defaultUI-toolbar button:active,.tui-editor-defaultUI-toolbar button:hover{border:1px solid #aaa;background-color:#fff}.tui-editor-defaultUI-toolbar button:first-child{margin-left:0}.tui-editor-defaultUI-toolbar button:last-child{margin-right:0}.tui-editor-defaultUI-toolbar button.tui-scrollsync{width:auto;color:#777;border:0}.tui-editor-defaultUI button.tui-scrollsync:after{content:"Scroll off"}.tui-editor-defaultUI button.tui-scrollsync.active{color:#125de6;font-weight:700}.tui-editor-defaultUI button.tui-scrollsync.active:after{content:"Scroll on"}.tui-editor-defaultUI .te-mode-switch-section{background-color:#f9f9f9;border-top:1px solid #e5e5e5;height:20px;font-size:12px}.tui-editor-defaultUI .te-mode-switch{float:right;height:100%}.tui-editor-defaultUI .te-switch-button{width:92px;height:inherit;background:#e5e5e5;outline:0;color:#a0aabf;cursor:pointer;border:0;border-left:1px solid #ddd;border-right:1px solid #ddd}.tui-editor-defaultUI .te-switch-button.active{background-color:#fff;color:#000}.tui-editor-defaultUI .te-markdown-tab-section{float:left;height:31px;background:#fff}.te-markdown-tab-section .te-tab{margin:0 -7px 0 24px;background:#fff}.tui-editor-defaultUI .te-tab button{box-sizing:border-box;line-height:100%;position:relative;cursor:pointer;z-index:1;font-size:13px;background-color:#f9f9f9;border:1px solid #e5e5e5;border-top:0;padding:0 9px;color:#777;border-radius:0;outline:0}.te-markdown-tab-section .te-tab button:last-child{margin-left:-1px}.te-markdown-tab-section .te-tab button.te-tab-active,.te-markdown-tab-section .te-tab button:hover.te-tab-active{background-color:#fff;color:#333;border-bottom:1px solid #fff;z-index:2}.te-markdown-tab-section .te-tab button:hover{background-color:#fff;color:#333}.tui-popup-modal-background{background-color:rgba(202,202,202,.6);position:fixed;margin:0;left:0;top:0;width:100%;height:100%;z-index:9999}.tui-popup-modal-background.fit-window .tui-popup-wrapper,.tui-popup-wrapper.fit-window{width:100%;height:100%}.tui-popup-wrapper{width:500px;margin-right:auto;border:1px solid #cacaca;background:#fff;z-index:9999}.tui-popup-modal-background .tui-popup-wrapper{position:absolute;margin:auto;top:0;right:0;bottom:0;left:0}.tui-popup-header{padding:10px;height:auto;line-height:normal;position:relative;border-bottom:1px solid #cacaca}.tui-popup-header .tui-popup-header-buttons{float:right}.tui-popup-header .tui-popup-header-buttons button{padding:0;background-color:transparent;background-size:cover;float:left}.trumbowyg-button-pane .trumbowyg-right,.tui-popup-color .te-apply-button,.tui-popup-color .tui-colorpicker-palette-hex{float:right}.tui-popup-header .tui-popup-close-button{margin:3px;width:13px;height:13px;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxMHB4IiBoZWlnaHQ9IjEwcHgiIHZpZXdCb3g9IjAgMCAxMCAxMCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT5GMjc2Qzc4MC0zM0JBLTQ3MTItQTM3OC04RkQwQUNDOTFDRTk8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImxuYi1mb2xkZXItZGVsIiBmaWxsLXJ1bGU9Im5vbnplcm8iIGZpbGw9IiM3Nzc3NzciPiAgICAgICAgICAgIDxwYXRoIGQ9Ik01LDMuNTg1Nzg2NDQgTDEuNzA3MTA2NzgsMC4yOTI4OTMyMTkgTDAuMjkyODkzMjE5LDEuNzA3MTA2NzggTDMuNTg1Nzg2NDQsNSBMMC4yOTI4OTMyMTksOC4yOTI4OTMyMiBMMS43MDcxMDY3OCw5LjcwNzEwNjc4IEw1LDYuNDE0MjEzNTYgTDguMjkyODkzMjIsOS43MDcxMDY3OCBMOS43MDcxMDY3OCw4LjI5Mjg5MzIyIEw2LjQxNDIxMzU2LDUgTDkuNzA3MTA2NzgsMS43MDcxMDY3OCBMOC4yOTI4OTMyMiwwLjI5Mjg5MzIxOSBMNSwzLjU4NTc4NjQ0IFoiIGlkPSJDb21iaW5lZC1TaGFwZSI+PC9wYXRoPiAgICAgICAgPC9nPiAgICA8L2c+PC9zdmc+)}.tui-popup-header .tui-popup-title{font-size:13px;font-weight:700;color:#333;vertical-align:bottom}.tui-popup-body{padding:15px;font-size:12px}.tui-editor-popup{position:absolute;top:30px;left:50%;margin-left:-250px}.tui-editor-popup.tui-popup-modal-background{position:fixed;top:0;left:0;margin:0}.tui-editor-popup .tui-popup-body label{font-weight:700;color:#666;display:block;margin:10px 0 5px}.tui-editor-popup .tui-popup-body .te-button-section{margin-top:15px}.tui-editor-popup .tui-popup-body input[type=file],.tui-editor-popup .tui-popup-body input[type=text]{padding:4px 10px;border:1px solid #bfbfbf;box-sizing:border-box;width:100%}.tui-editor-popup .tui-popup-body input.wrong{border-color:red}.te-popup-add-link .tui-popup-wrapper{height:219px}.te-popup-add-image .tui-popup-wrapper{height:243px}.te-popup-add-image .te-tab{display:block;background:0 0;border-bottom:1px solid #ebebeb;margin-bottom:8px}.te-dropdown-toolbar .tui-toolbar-divider,.te-popup-add-image .te-file-type,.te-popup-add-image .te-url-type,.tui-popup-color .tui-colorpicker-container .tui-colorpicker-palette-toggle-slider{display:none}.te-popup-add-image div.te-tab-active,.te-popup-add-image form.te-tab-active{display:block}.te-popup-add-image .te-tab button{border:1px solid #ccc;background:#eee;min-width:100px;margin-left:-1px;border-bottom:0;border-radius:3px 3px 0 0}.te-popup-add-image .te-tab button.te-tab-active{background:#fff}.te-popup-add-table .te-table-selection{position:relative}.te-popup-add-table .te-table-body{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAARCAYAAAAougcOAAAC7mlDQ1BJQ0MgUHJvZmlsZQAAeAGFVM9rE0EU/jZuqdAiCFprDrJ4kCJJWatoRdQ2/RFiawzbH7ZFkGQzSdZuNuvuJrWliOTi0SreRe2hB/+AHnrwZC9KhVpFKN6rKGKhFy3xzW5MtqXqwM5+8943731vdt8ADXLSNPWABOQNx1KiEWlsfEJq/IgAjqIJQTQlVdvsTiQGQYNz+Xvn2HoPgVtWw3v7d7J3rZrStpoHhP1A4Eea2Sqw7xdxClkSAog836Epx3QI3+PY8uyPOU55eMG1Dys9xFkifEA1Lc5/TbhTzSXTQINIOJT1cVI+nNeLlNcdB2luZsbIEL1PkKa7zO6rYqGcTvYOkL2d9H5Os94+wiHCCxmtP0a4jZ71jNU/4mHhpObEhj0cGDX0+GAVtxqp+DXCFF8QTSeiVHHZLg3xmK79VvJKgnCQOMpkYYBzWkhP10xu+LqHBX0m1xOv4ndWUeF5jxNn3tTd70XaAq8wDh0MGgyaDUhQEEUEYZiwUECGPBoxNLJyPyOrBhuTezJ1JGq7dGJEsUF7Ntw9t1Gk3Tz+KCJxlEO1CJL8Qf4qr8lP5Xn5y1yw2Fb3lK2bmrry4DvF5Zm5Gh7X08jjc01efJXUdpNXR5aseXq8muwaP+xXlzHmgjWPxHOw+/EtX5XMlymMFMXjVfPqS4R1WjE3359sfzs94i7PLrXWc62JizdWm5dn/WpI++6qvJPmVflPXvXx/GfNxGPiKTEmdornIYmXxS7xkthLqwviYG3HCJ2VhinSbZH6JNVgYJq89S9dP1t4vUZ/DPVRlBnM0lSJ93/CKmQ0nbkOb/qP28f8F+T3iuefKAIvbODImbptU3HvEKFlpW5zrgIXv9F98LZua6N+OPwEWDyrFq1SNZ8gvAEcdod6HugpmNOWls05Uocsn5O66cpiUsxQ20NSUtcl12VLFrOZVWLpdtiZ0x1uHKE5QvfEp0plk/qv8RGw/bBS+fmsUtl+ThrWgZf6b8C8/UXAeIuJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAOklEQVQ4EWO8e/fuPwYGBkYgphlgAZmspKREMwtABjPR1HSo4aOWkBTKo8E1GlwkhQBJikdT1wgNLgAMSwQgckFvTgAAAABJRU5ErkJggg==)}.te-popup-add-table .te-table-header{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAARCAYAAAAougcOAAAC7mlDQ1BJQ0MgUHJvZmlsZQAAeAGFVM9rE0EU/jZuqdAiCFprDrJ4kCJJWatoRdQ2/RFiawzbH7ZFkGQzSdZuNuvuJrWliOTi0SreRe2hB/+AHnrwZC9KhVpFKN6rKGKhFy3xzW5MtqXqwM5+8943731vdt8ADXLSNPWABOQNx1KiEWlsfEJq/IgAjqIJQTQlVdvsTiQGQYNz+Xvn2HoPgVtWw3v7d7J3rZrStpoHhP1A4Eea2Sqw7xdxClkSAog836Epx3QI3+PY8uyPOU55eMG1Dys9xFkifEA1Lc5/TbhTzSXTQINIOJT1cVI+nNeLlNcdB2luZsbIEL1PkKa7zO6rYqGcTvYOkL2d9H5Os94+wiHCCxmtP0a4jZ71jNU/4mHhpObEhj0cGDX0+GAVtxqp+DXCFF8QTSeiVHHZLg3xmK79VvJKgnCQOMpkYYBzWkhP10xu+LqHBX0m1xOv4ndWUeF5jxNn3tTd70XaAq8wDh0MGgyaDUhQEEUEYZiwUECGPBoxNLJyPyOrBhuTezJ1JGq7dGJEsUF7Ntw9t1Gk3Tz+KCJxlEO1CJL8Qf4qr8lP5Xn5y1yw2Fb3lK2bmrry4DvF5Zm5Gh7X08jjc01efJXUdpNXR5aseXq8muwaP+xXlzHmgjWPxHOw+/EtX5XMlymMFMXjVfPqS4R1WjE3359sfzs94i7PLrXWc62JizdWm5dn/WpI++6qvJPmVflPXvXx/GfNxGPiKTEmdornIYmXxS7xkthLqwviYG3HCJ2VhinSbZH6JNVgYJq89S9dP1t4vUZ/DPVRlBnM0lSJ93/CKmQ0nbkOb/qP28f8F+T3iuefKAIvbODImbptU3HvEKFlpW5zrgIXv9F98LZua6N+OPwEWDyrFq1SNZ8gvAEcdod6HugpmNOWls05Uocsn5O66cpiUsxQ20NSUtcl12VLFrOZVWLpdtiZ0x1uHKE5QvfEp0plk/qv8RGw/bBS+fmsUtl+ThrWgZf6b8C8/UXAeIuJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAOklEQVQ4EWO8e/fuPwYGBkYgphlgAZksLCxMMwtABjPR1HSo4aOWkBTKo8E1GlwkhQBJikdT1wgNLgDxKwPzTeWPdAAAAABJRU5ErkJggg==)}.te-popup-add-table .te-selection-area{position:absolute;top:0;left:0;background:#80d2ff;opacity:.3;z-index:999}.te-popup-add-table .te-description{margin:10px 0 0;text-align:center}.te-popup-table-utils{width:120px}.te-popup-table-utils .tui-popup-body{padding:0}.te-popup-table-utils button{width:100%;background-color:#fff;border:none;outline:0;padding:0 10px;font-size:12px;line-height:28px;text-align:left;color:#777}.te-popup-table-utils button:hover{background-color:#f4f4f4}.te-popup-table-utils hr{background-color:#cacaca;border-style:none;height:1px}.te-heading-add{width:auto}.te-heading-add .tui-popup-body{padding:0}.te-heading-add h1,.te-heading-add h2,.te-heading-add h3,.te-heading-add h4,.te-heading-add h5,.te-heading-add h6,.te-heading-add p,.te-heading-add ul{padding:0;margin:0}.te-heading-add ul{list-style:none}.te-heading-add ul li{padding:2px 10px;cursor:pointer}.te-dropdown-toolbar .tui-popup-body,.tui-popup-color{padding:0}.te-heading-add ul li:hover{background-color:#eee}.te-heading-add h1{font-size:24px}.te-heading-add h2{font-size:22px}.te-heading-add h3{font-size:20px}.te-heading-add h4{font-size:18px}.te-heading-add h5{font-size:16px}.te-heading-add h6{font-size:14px}.te-dropdown-toolbar{position:absolute;width:auto}.tui-popup-color .tui-colorpicker-container,.tui-popup-color .tui-colorpicker-palette-container{width:144px}.tui-popup-color .tui-colorpicker-container ul{width:144px;margin-bottom:8px}.tui-popup-color .tui-colorpicker-container li{padding:0 1px 1px 0}.tui-popup-color .tui-colorpicker-container li .tui-colorpicker-palette-button{border:0;width:17px;height:17px}.tui-popup-color .tui-popup-body{padding:10px}.tui-popup-color .te-apply-button{height:21px;width:35px;background:#fff;border:1px solid #efefef;position:absolute;bottom:141px;right:10px}.tui-tooltip,.tui-tooltip .arrow{background-color:#222;position:absolute}.tui-popup-color .tui-colorpicker-container .tui-colorpicker-palette-hex{border:1px solid #E1E1E1;padding:3px 14px;margin-left:-1px}.tui-popup-color .tui-colorpicker-container div.tui-colorpicker-clearfix{display:inline-block}.tui-popup-color .tui-colorpicker-container .tui-colorpicker-palette-preview{width:19px;height:19px}.tui-popup-color .tui-colorpicker-slider-container .tui-colorpicker-slider-right{width:22px}.tui-popup-color .tui-colorpicker-slider-container .tui-colorpicker-huebar-handle{display:none}.tui-tooltip{z-index:999;opacity:.8;color:#fff;padding:2px 5px;font-size:10px}.tui-tooltip .arrow{content:"";display:inline-block;width:10px;height:10px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg);top:-3px;left:6px;z-index:-1}.tui-toolbar-icons{background:url(tui-editor.png);background-size:218px 188px;display:inline-block}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min--moz-device-pixel-ratio:2),only screen and (-o-min-device-pixel-ratio:2/1),only screen and (min-device-pixel-ratio:2),only screen and (min-resolution:192dpi),only screen and (min-resolution:2dppx){.tui-toolbar-icons{background:url(tui-editor-2x.png);background-size:218px 188px;display:inline-block}}.tui-toolbar-icons.tui-heading{background-position:-172px -48px}.tui-toolbar-icons.tui-heading:disabled{background-position:-193px -48px}.tui-toolbar-icons.tui-bold{background-position:-4px -4px}.tui-toolbar-icons.tui-bold:disabled{background-position:-25px -4px}.tui-toolbar-icons.tui-italic{background-position:-4px -48px}.tui-toolbar-icons.tui-italic:disabled{background-position:-25px -48px}.tui-toolbar-icons.tui-color{background-position:-172px -70px}.tui-toolbar-icons.tui-color:disabled{background-position:-193px -70px}.tui-toolbar-icons.tui-strike{background-position:-4px -26px}.tui-toolbar-icons.tui-strike:disabled{background-position:-25px -26px}.tui-toolbar-icons.tui-hrline{background-position:-46px -92px}.tui-toolbar-icons.tui-hrline:disabled{background-position:-67px -92px}.tui-toolbar-icons.tui-quote{background-position:-4px -114px}.tui-toolbar-icons.tui-quote:disabled{background-position:-25px -114px}.tui-toolbar-icons.tui-ul{background-position:-46px -4px}.tui-toolbar-icons.tui-ul:disabled{background-position:-67px -4px}.tui-toolbar-icons.tui-ol{background-position:-46px -26px}.tui-toolbar-icons.tui-ol:disabled{background-position:-67px -26px}.tui-toolbar-icons.tui-task{background-position:-130px -48px}.tui-toolbar-icons.tui-task:disabled{background-position:-151px -48px}.tui-toolbar-icons.tui-indent{background-position:-46px -48px}.tui-toolbar-icons.tui-indent:disabled{background-position:-67px -48px}.tui-toolbar-icons.tui-outdent{background-position:-46px -70px}.tui-toolbar-icons.tui-outdent:disabled{background-position:-67px -70px}.tui-toolbar-icons.tui-table{background-position:-88px -92px}.tui-toolbar-icons.tui-table:disabled{background-position:-109px -92px}.tui-toolbar-icons.tui-image{background-position:-130px -4px}.tui-toolbar-icons.tui-image:disabled{background-position:-151px -4px}.tui-toolbar-icons.tui-link{background-position:-130px -26px}.tui-toolbar-icons.tui-link:disabled{background-position:-151px -26px}.tui-toolbar-icons.tui-code{background-position:-130px -92px}.tui-toolbar-icons.tui-code:disabled{background-position:-151px -92px}.tui-toolbar-icons.tui-codeblock{background-position:-130px -70px}.tui-toolbar-icons.tui-codeblock:disabled{background-position:-151px -70px}.tui-toolbar-icons.tui-more{background-position:-172px -92px}.tui-toolbar-icons.tui-more:disabled{background-position:-193px -92px}.tui-colorpicker-svg-huebar,.tui-colorpicker-svg-slider,.tui-colorpicker-vml-slider{border:1px solid #ebebeb}.CodeMirror-sizer{margin-top:6px}.CodeMirror .cm-header{font-weight:700;color:inherit}.CodeMirror .cm-header-1{font-size:24px}.CodeMirror .cm-header-2{font-size:22px}.CodeMirror .cm-header-3{font-size:20px}.CodeMirror .cm-header-4{font-size:18px}.CodeMirror .cm-header-5{font-size:16px}.CodeMirror .cm-header-6{font-size:14px}.CodeMirror .cm-variable-2{color:inherit}.tui-editor-pseudo-clipboard{position:fixed;left:-1000px;top:-1000px;width:100px;height:100px}.te-ww-block-overlay.code-block-header{text-align:right}.te-ww-block-overlay.code-block-header span{font-size:10px;font-weight:600;padding:0 10px;color:#333;cursor:default}.te-ww-block-overlay.code-block-header button{margin:8px;font-size:10px;color:#333;background-color:#f9f9f9;border:1px solid #ddd;padding:4px;height:auto}.te-popup-code-block-languages{position:fixed;box-sizing:border-box;width:130px}.te-popup-code-block-languages .tui-popup-body{max-height:169px;overflow:auto;padding:0}.te-popup-code-block-languages button{width:100%;background-color:#fff;border:none;outline:0;padding:0 10px;font-size:12px;line-height:24px;text-align:left;color:#777}.te-popup-code-block-languages button.active{background-color:#f4f4f4}.tui-popup-code-block-editor .tui-popup-wrapper{width:70%;height:70%;margin:auto;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.te-input-language{position:relative;margin-left:15px;cursor:pointer}.te-input-language input{font-size:10px;padding:3px 5px;border:1px solid #ddd;background-color:#f9f9f9;box-sizing:border-box;width:130px;outline:0}.te-input-language input::-ms-clear{display:none}.te-input-language::after{content:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjE0cHgiIHZpZXdCb3g9IjAgMCAxMiAxNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT42Q0NBRDk2QS0yMjYxLTRFNDAtOTk1RC1DRUUyQUREQUQ3NkQ8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImNvbS10cmFuZ2xlLWQtc2lkZSIgZmlsbD0iIzU1NTU1NSI+ICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlJlY3RhbmdsZS03IiBwb2ludHM9IjIgNSAxMCA1IDYgMTAiPjwvcG9seWdvbj4gICAgICAgIDwvZz4gICAgPC9nPjwvc3ZnPg==);position:absolute;top:1px;right:3px}.te-input-language.active::after{content:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjE0cHgiIHZpZXdCb3g9IjAgMCAxMiAxNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT5BNEZDRkIzMy0zNjdBLTREMjAtOEEyNC1DQ0I2ODFBMDZDODg8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImNvbS10cmFuZ2xlLXVwLXNpZGUiIGZpbGw9IiM1NTU1NTUiPiAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJSZWN0YW5nbGUtNyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNi4wMDAwMDAsIDYuNTAwMDAwKSBzY2FsZSgxLCAtMSkgdHJhbnNsYXRlKC02LjAwMDAwMCwgLTYuNTAwMDAwKSAiIHBvaW50cz0iMiA0IDEwIDQgNiA5Ij48L3BvbHlnb24+ICAgICAgICA8L2c+ICAgIDwvZz48L3N2Zz4=)}.tui-popup-code-block-editor button{margin:-1px 3px}.tui-popup-code-block-editor .tui-popup-header-buttons{height:20px}.tui-popup-code-block-editor .popup-editor-toggle-preview::after{content:'Preview off';color:#777;margin-right:22px}.tui-popup-code-block-editor .popup-editor-toggle-preview.active::after{content:'Preview on';color:#4b96e6}.tui-popup-code-block-editor .popup-editor-toggle-scroll::after{content:'Scroll off';color:#777;margin-right:16px}.tui-popup-code-block-editor .popup-editor-toggle-scroll.active::after{content:'Scroll on';color:#4b96e6}.tui-popup-code-block-editor .popup-editor-toggle-fit{width:18px;height:18px;margin-top:4px;margin-right:14px;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxOHB4IiBoZWlnaHQ9IjE4cHgiIHZpZXdCb3g9IjAgMCAxOCAxOCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT40OUQ4RTYyMy1GRTAyLTQ1RUUtQkQ5Ri0xMjUyQjEzRTU1MkQ8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImNvbnRlbnRzLWV4cGFuZCIgZmlsbD0iIzU1NTU1NSI+ICAgICAgICAgICAgPHBhdGggZD0iTTMsMyBMOSwzIEw5LDUgTDUsNSBMNSw5IEwzLDkgTDMsMyBaIE0xNSwxNSBMOSwxNSBMOSwxMyBMMTMsMTMgTDEzLDkgTDE1LDkgTDE1LDE1IFoiIGlkPSJDb21iaW5lZC1TaGFwZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOS4wMDAwMDAsIDkuMDAwMDAwKSBzY2FsZSgtMSwgMSkgdHJhbnNsYXRlKC05LjAwMDAwMCwgLTkuMDAwMDAwKSAiPjwvcGF0aD4gICAgICAgICAgICA8cG9seWdvbiBpZD0iTGluZSIgZmlsbC1ydWxlPSJub256ZXJvIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMS41MDAwMDAsIDYuNTAwMDAwKSBzY2FsZSgtMSwgMSkgdHJhbnNsYXRlKC0xMS41MDAwMDAsIC02LjUwMDAwMCkgIiBwb2ludHM9IjkuMDg1Nzg2NDQgNS41IDEyLjUgOC45MTQyMTM1NiAxMy45MTQyMTM2IDcuNSAxMC41IDQuMDg1Nzg2NDQiPjwvcG9seWdvbj4gICAgICAgICAgICA8cG9seWdvbiBpZD0iTGluZS1Db3B5IiBmaWxsLXJ1bGU9Im5vbnplcm8iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYuNTAwMDAwLCAxMS41MDAwMDApIHNjYWxlKC0xLCAxKSB0cmFuc2xhdGUoLTYuNTAwMDAwLCAtMTEuNTAwMDAwKSAiIHBvaW50cz0iNC4wODU3ODY0NCAxMC41IDcuNSAxMy45MTQyMTM2IDguOTE0MjEzNTYgMTIuNSA1LjUgOS4wODU3ODY0NCI+PC9wb2x5Z29uPiAgICAgICAgPC9nPiAgICA8L2c+PC9zdmc+)}.tui-popup-code-block-editor .popup-editor-toggle-fit.active{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxOHB4IiBoZWlnaHQ9IjE4cHgiIHZpZXdCb3g9IjAgMCAxOCAxOCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT4wN0Q1MjlCRi1GNTIzLTREN0EtQTlGNi05NTUzNTU5RDNEMUE8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImNvbnRlbnRzLXJlZHVjZSIgZmlsbD0iIzU1NTU1NSI+ICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgtMzIiIGZpbGwtcnVsZT0ibm9uemVybyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNS41MDAwMDAsIDEyLjUwMDAwMCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtNS41MDAwMDAsIC0xMi41MDAwMDApICIgcG9pbnRzPSIzLjA4NTc4NjQ0IDExLjUgNi41IDE0LjkxNDIxMzYgNy45MTQyMTM1NiAxMy41IDQuNSAxMC4wODU3ODY0Ij48L3BvbHlnb24+ICAgICAgICAgICAgPHBhdGggZD0iTTksOSBMMTUsOSBMMTUsMTEgTDExLDExIEwxMSwxNSBMOSwxNSBMOSw5IFogTTksOSBMMyw5IEwzLDcgTDcsNyBMNywzIEw5LDMgTDksOSBaIiBpZD0iQ29tYmluZWQtU2hhcGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDkuMDAwMDAwLCA5LjAwMDAwMCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtOS4wMDAwMDAsIC05LjAwMDAwMCkgIj48L3BhdGg+ICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgtMzMiIGZpbGwtcnVsZT0ibm9uemVybyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTIuNTAwMDAwLCA1LjUwMDAwMCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtMTIuNTAwMDAwLCAtNS41MDAwMDApICIgcG9pbnRzPSIxNC45MTQyMTM2IDYuNSAxMS41IDMuMDg1Nzg2NDQgMTAuMDg1Nzg2NCA0LjUgMTMuNSA3LjkxNDIxMzU2Ij48L3BvbHlnb24+ICAgICAgICA8L2c+ICAgIDwvZz48L3N2Zz4=)}.tui-popup-code-block-editor .tui-popup-close-button{margin-top:6px}.tui-popup-code-block-editor .tui-popup-body{z-index:-1;padding:0;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex:1;flex:1}.tui-split-scroll.single-content .tui-split-content-right,.tui-split-scroll.single-content .tui-splitter,.tui-split-scroll.single-content button.tui-scrollsync{display:none}.tui-popup-code-block-editor .popup-editor-body{position:relative;-ms-flex:1;flex:1;border-bottom:1px solid #cacaca}.tui-popup-code-block-editor .te-button-section{padding:15px}.tui-popup-code-block-editor .te-button-section button{float:left}.tui-popup-code-block-editor .tui-editor-contents pre{margin:0;background-color:transparent}.tui-popup-code-block-editor .CodeMirror{height:auto}.tui-popup-code-block-editor .CodeMirror-line{font-family:Consolas,Courier,"Apple SD 산돌고딕 Neo",-apple-system,"Lucida Grande","Apple SD Gothic Neo","맑은 고딕","Malgun Gothic","Segoe UI","돋움",dotum,sans-serif;font-size:13px;line-height:160%;letter-spacing:-.3px}.tui-popup-code-block-editor .popup-editor-editor-wrapper{min-height:100%}.tui-split-scroll-wrapper{position:relative}.tui-split-scroll{position:absolute}.tui-split-scroll,.tui-split-scroll-wrapper{width:100%;height:100%}.tui-split-scroll .tui-split-content-left,.tui-split-scroll .tui-split-content-right{position:absolute;top:0;width:50%;box-sizing:border-box}.tui-split-scroll .tui-split-content-left{left:0}.tui-split-scroll .tui-split-content-right{left:50%}.tui-split-scroll .tui-splitter{position:absolute;left:50%;top:0;height:100%;width:1px;border-left:1px solid #cacaca}.tui-split-scroll .tui-split-scroll-content{width:100%;height:100%;overflow:hidden;position:relative}.tui-split-scroll .tui-split-content-left,.tui-split-scroll .tui-split-content-right{height:100%;overflow-x:hidden;overflow-y:auto}.tui-split-scroll button.tui-scrollsync{top:10px;opacity:.2}.tui-split-scroll button.tui-scrollsync::after{content:"scroll off"}.tui-split-scroll.scroll-sync button.tui-scrollsync{opacity:.5}.tui-split-scroll.scroll-sync .tui-split-content-left,.tui-split-scroll.scroll-sync .tui-split-content-right{height:auto;overflow:initial}.tui-split-scroll.scroll-sync button.tui-scrollsync::after{content:"scroll on"}.tui-split-scroll.scroll-sync .tui-split-scroll-content{overflow-y:auto}.tui-split-scroll.single-content .tui-split-content-left{width:100%}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.tui-split-scroll-wrapper .tui-splitter{left:calc(50% - 9px)}}@media screen and (max-width:480px){.tui-popup-wrapper{max-width:300px}.tui-editor-popup{margin-left:-150px}.te-dropdown-toolbar{max-width:none}}#trumbowyg-icons,#trumbowyg-icons svg{height:0;width:0}#trumbowyg-icons{overflow:hidden;visibility:hidden}.trumbowyg-box *,.trumbowyg-box ::after,.trumbowyg-box ::before,.trumbowyg-modal *,.trumbowyg-modal ::after,.trumbowyg-modal ::before{box-sizing:border-box}.trumbowyg-box svg,.trumbowyg-modal svg{width:17px;height:100%;fill:#222}.trumbowyg-box,.trumbowyg-editor{display:block;position:relative;border:1px solid #DDD;width:100%;min-height:300px;margin:17px auto}.trumbowyg-box .trumbowyg-editor{margin:0 auto}.trumbowyg-box.trumbowyg-fullscreen{background:#FEFEFE;border:none!important}.trumbowyg-editor,.trumbowyg-textarea{position:relative;box-sizing:border-box;padding:20px;min-height:300px;width:100%;border-style:none;resize:none;outline:0;overflow:auto}.trumbowyg-editor.trumbowyg-autogrow-on-enter,.trumbowyg-textarea.trumbowyg-autogrow-on-enter{transition:height .3s ease-out}.trumbowyg-box-blur .trumbowyg-editor *,.trumbowyg-box-blur .trumbowyg-editor::before{color:transparent!important;text-shadow:0 0 7px #333}@media screen and (min-width:0 \0){.trumbowyg-box-blur .trumbowyg-editor *,.trumbowyg-box-blur .trumbowyg-editor::before{color:rgba(200,200,200,.6)!important}}@supports (-ms-accelerator:true){.tui-split-scroll-wrapper .tui-splitter{left:calc(50% - 9px)}.trumbowyg-box-blur .trumbowyg-editor *,.trumbowyg-box-blur .trumbowyg-editor::before{color:rgba(200,200,200,.6)!important}}.trumbowyg-box-blur .trumbowyg-editor hr,.trumbowyg-box-blur .trumbowyg-editor img{opacity:.2}.trumbowyg-textarea{position:relative;display:block;overflow:auto;border:none;font-size:14px;font-family:Inconsolata,Consolas,Courier,"Courier New",sans-serif;line-height:18px}.trumbowyg-box.trumbowyg-editor-visible .trumbowyg-textarea{height:1px!important;width:25%;min-height:0!important;padding:0!important;background:0 0;opacity:0!important}.trumbowyg-box.trumbowyg-editor-hidden .trumbowyg-textarea{display:block}.trumbowyg-box.trumbowyg-editor-hidden .trumbowyg-editor{display:none}.trumbowyg-box.trumbowyg-disabled .trumbowyg-textarea{opacity:.8;background:0 0}.trumbowyg-editor[contenteditable=true]:empty:not(:focus)::before{content:attr(placeholder);color:#999;pointer-events:none}.trumbowyg-button-pane{width:100%;min-height:36px;background:#ecf0f1;border-bottom:1px solid #d7e0e2;margin:0;padding:0 5px;position:relative;list-style-type:none;line-height:10px;backface-visibility:hidden;z-index:11}.trumbowyg-button-pane::after{content:" ";display:block;position:absolute;top:36px;left:0;right:0;width:100%;height:1px;background:#d7e0e2}.trumbowyg-button-pane .trumbowyg-button-group{display:inline-block}.trumbowyg-button-pane .trumbowyg-button-group .trumbowyg-fullscreen-button svg{color:transparent}.trumbowyg-button-pane .trumbowyg-button-group::after{content:" ";display:inline-block;width:1px;background:#d7e0e2;margin:0 5px;height:35px;vertical-align:top}.trumbowyg-button-pane .trumbowyg-button-group:last-child::after{content:none}.trumbowyg-button-pane button{display:inline-block;position:relative;width:35px;height:35px;padding:1px 6px!important;margin-bottom:1px;overflow:hidden;border:none;cursor:pointer;background:0 0;vertical-align:middle;transition:background-color 150ms,opacity 150ms}.trumbowyg-button-pane button.trumbowyg-textual-button{width:auto;line-height:35px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.trumbowyg-button-pane button.trumbowyg-disable,.trumbowyg-button-pane.trumbowyg-disable button:not(.trumbowyg-not-disable):not(.trumbowyg-active),.trumbowyg-disabled .trumbowyg-button-pane button:not(.trumbowyg-not-disable):not(.trumbowyg-viewHTML-button){opacity:.2;cursor:default}.trumbowyg-button-pane.trumbowyg-disable .trumbowyg-button-group::before,.trumbowyg-disabled .trumbowyg-button-pane .trumbowyg-button-group::before{background:#e3e9eb}.trumbowyg-button-pane button.trumbowyg-active,.trumbowyg-button-pane button:not(.trumbowyg-disable):focus,.trumbowyg-button-pane button:not(.trumbowyg-disable):hover{background-color:#FFF;outline:0}.trumbowyg-button-pane .trumbowyg-open-dropdown::after{display:block;content:" ";position:absolute;top:25px;right:3px;height:0;width:0;border:3px solid transparent;border-top-color:#555}.trumbowyg-button-pane .trumbowyg-open-dropdown.trumbowyg-textual-button{padding-left:10px!important;padding-right:18px!important}.trumbowyg-button-pane .trumbowyg-open-dropdown.trumbowyg-textual-button::after{top:17px;right:7px}.trumbowyg-modal,.trumbowyg-modal-box{top:0;left:50%;transform:translateX(-50%);backface-visibility:hidden;position:absolute}.trumbowyg-dropdown{width:200px;border:1px solid #ecf0f1;padding:5px 0;border-top:none;background:#FFF;margin-left:-1px;box-shadow:rgba(0,0,0,.1) 0 2px 3px;z-index:12}.trumbowyg-dropdown button{display:block;width:100%;height:35px;line-height:35px;text-decoration:none;background:#FFF;padding:0 10px;color:#333!important;border:none;cursor:pointer;text-align:left;font-size:15px;transition:all 150ms}.trumbowyg-dropdown button:focus,.trumbowyg-dropdown button:hover{background:#ecf0f1}.trumbowyg-dropdown button svg{float:left;margin-right:14px}.trumbowyg-modal{max-width:520px;width:100%;height:350px;z-index:12;overflow:hidden}.trumbowyg-modal-box{max-width:500px;width:calc(100% - 20px);padding-bottom:45px;z-index:1;background-color:#FFF;text-align:center;font-size:14px;box-shadow:rgba(0,0,0,.2) 0 2px 3px}.trumbowyg-modal-box .trumbowyg-modal-title{font-size:24px;font-weight:700;margin:0 0 20px;padding:15px 0 13px;display:block;border-bottom:1px solid #EEE;color:#333;background:#fbfcfc}.trumbowyg-modal-box .trumbowyg-progress{width:100%;height:3px;position:absolute;top:58px}.trumbowyg-modal-box .trumbowyg-progress .trumbowyg-progress-bar{background:#2BC06A;width:0;height:100%;transition:width 150ms linear}.trumbowyg-modal-box label{display:block;position:relative;margin:15px 12px;height:29px;line-height:29px;overflow:hidden}.trumbowyg-modal-box label .trumbowyg-input-infos{display:block;text-align:left;height:25px;line-height:25px;transition:all 150ms}.trumbowyg-modal-box label .trumbowyg-input-infos span{display:block;color:#69878f;background-color:#fbfcfc;border:1px solid #DEDEDE;padding:0 7px;width:150px}.trumbowyg-modal-box label .trumbowyg-input-infos span.trumbowyg-msg-error{color:#e74c3c}.trumbowyg-modal-box label.trumbowyg-input-error input,.trumbowyg-modal-box label.trumbowyg-input-error textarea{border:1px solid #e74c3c}.trumbowyg-modal-box label.trumbowyg-input-error .trumbowyg-input-infos{margin-top:-27px}.trumbowyg-modal-box label input{position:absolute;top:0;right:0;height:27px;line-height:27px;border:1px solid #DEDEDE;background:#fff;font-size:14px;max-width:330px;width:70%;padding:0 7px;transition:all 150ms}.trumbowyg-modal-box label input:focus,.trumbowyg-modal-box label input:hover{outline:0;border:1px solid #95a5a6}.trumbowyg-modal-box label input:focus{background:#fbfcfc}.trumbowyg-modal-box label input[type=checkbox]{left:5px;top:5px;right:auto}.trumbowyg-modal-box label input[type=checkbox]+.trumbowyg-input-infos span{width:auto;padding-left:25px}.trumbowyg-modal-box .error{margin-top:25px;display:block;color:red}.trumbowyg-modal-box .trumbowyg-modal-button{position:absolute;bottom:10px;right:0;text-decoration:none;color:#FFF;display:block;width:100px;height:35px;line-height:33px;margin:0 10px;background-color:#333;border:none;cursor:pointer;font-family:"Trebuchet MS",Helvetica,Verdana,sans-serif;font-size:16px;transition:all 150ms}.trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-submit{right:110px;background:#2bc06a}.trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-submit:focus,.trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-submit:hover{background:#40d47e;outline:0}.trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-submit:active{background:#25a25a}.trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-reset{color:#555;background:#e6e6e6}.trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-reset:focus,.trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-reset:hover{background:#fbfbfb;outline:0}.trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-reset:active{background:#d5d5d5}.trumbowyg-overlay{position:absolute;background-color:rgba(255,255,255,.5);height:100%;width:100%;left:0;display:none;top:0;z-index:10}body.trumbowyg-body-fullscreen{overflow:hidden}.trumbowyg-fullscreen{position:fixed;top:0;left:0;width:100%;height:100%;margin:0;padding:0;z-index:99999}.trumbowyg-fullscreen .trumbowyg-editor,.trumbowyg-fullscreen.trumbowyg-box{border:none}.trumbowyg-fullscreen .trumbowyg-editor,.trumbowyg-fullscreen .trumbowyg-textarea{height:calc(100% - 37px)!important;overflow:auto}.trumbowyg-fullscreen .trumbowyg-overlay{height:100%!important}.trumbowyg-fullscreen .trumbowyg-button-group .trumbowyg-fullscreen-button svg{color:#222;fill:transparent}.trumbowyg-editor img,.trumbowyg-editor video{height:auto}.trumbowyg-editor img{cursor:move}.trumbowyg-editor.trumbowyg-reset-css{background:#FEFEFE!important;font-family:"Trebuchet MS",Helvetica,Verdana,sans-serif!important;font-size:14px!important;line-height:1.45em!important;color:#333}.trumbowyg-editor.trumbowyg-reset-css a{color:#15c!important;text-decoration:underline!important}.trumbowyg-editor.trumbowyg-reset-css blockquote,.trumbowyg-editor.trumbowyg-reset-css div,.trumbowyg-editor.trumbowyg-reset-css ol,.trumbowyg-editor.trumbowyg-reset-css p,.trumbowyg-editor.trumbowyg-reset-css ul{box-shadow:none!important;background:0 0!important;margin:0 0 15px!important;line-height:1.4em!important;font-family:"Trebuchet MS",Helvetica,Verdana,sans-serif!important;font-size:14px!important;border:none}.trumbowyg-editor.trumbowyg-reset-css hr,.trumbowyg-editor.trumbowyg-reset-css iframe,.trumbowyg-editor.trumbowyg-reset-css object{margin-bottom:15px!important}.trumbowyg-editor.trumbowyg-reset-css blockquote{margin-left:32px!important;font-style:italic!important;color:#555}.trumbowyg-editor.trumbowyg-reset-css ul{list-style:disc}.trumbowyg-editor.trumbowyg-reset-css ol,.trumbowyg-editor.trumbowyg-reset-css ul{padding-left:20px!important}.trumbowyg-editor.trumbowyg-reset-css ol ol,.trumbowyg-editor.trumbowyg-reset-css ol ul,.trumbowyg-editor.trumbowyg-reset-css ul ol,.trumbowyg-editor.trumbowyg-reset-css ul ul{border:none;margin:2px!important;padding:0 0 0 24px!important}.trumbowyg-editor.trumbowyg-reset-css hr{display:block;height:1px;border:none;border-top:1px solid #CCC}.trumbowyg-editor.trumbowyg-reset-css h1,.trumbowyg-editor.trumbowyg-reset-css h2,.trumbowyg-editor.trumbowyg-reset-css h3,.trumbowyg-editor.trumbowyg-reset-css h4{color:#111;background:0 0;margin:0!important;padding:0!important;font-weight:700}.trumbowyg-editor.trumbowyg-reset-css h1{font-size:32px!important;line-height:38px!important;margin-bottom:20px!important}.trumbowyg-editor.trumbowyg-reset-css h2{font-size:26px!important;line-height:34px!important;margin-bottom:15px!important}.trumbowyg-editor.trumbowyg-reset-css h3{font-size:22px!important;line-height:28px!important;margin-bottom:7px!important}.trumbowyg-editor.trumbowyg-reset-css h4{font-size:16px!important;line-height:22px!important;margin-bottom:7px!important}.trumbowyg-dark .trumbowyg-textarea{background:#111;color:#ddd}.trumbowyg-dark .trumbowyg-box{border:1px solid #343434}.trumbowyg-dark .trumbowyg-box.trumbowyg-fullscreen{background:#111}.trumbowyg-dark .trumbowyg-box.trumbowyg-box-blur .trumbowyg-editor *,.trumbowyg-dark .trumbowyg-box.trumbowyg-box-blur .trumbowyg-editor::before{text-shadow:0 0 7px #ccc}@media screen and (min-width:0 \0){.trumbowyg-dark .trumbowyg-box.trumbowyg-box-blur .trumbowyg-editor *,.trumbowyg-dark .trumbowyg-box.trumbowyg-box-blur .trumbowyg-editor::before{color:rgba(20,20,20,.6)!important}}@supports (-ms-accelerator:true){.trumbowyg-dark .trumbowyg-box.trumbowyg-box-blur .trumbowyg-editor *,.trumbowyg-dark .trumbowyg-box.trumbowyg-box-blur .trumbowyg-editor::before{color:rgba(20,20,20,.6)!important}}.trumbowyg-dark .trumbowyg-box svg{fill:#ecf0f1;color:#ecf0f1}.trumbowyg-dark .trumbowyg-button-pane{background-color:#222;border-bottom-color:#343434}.trumbowyg-dark .trumbowyg-button-pane::after{background:#343434}.trumbowyg-dark .trumbowyg-button-pane .trumbowyg-button-group:not(:empty)::after{background-color:#343434}.trumbowyg-dark .trumbowyg-button-pane .trumbowyg-button-group:not(:empty) .trumbowyg-fullscreen-button svg{color:transparent}.trumbowyg-dark .trumbowyg-button-pane.trumbowyg-disable .trumbowyg-button-group::after{background-color:#2a2a2a}.trumbowyg-dark .trumbowyg-button-pane button.trumbowyg-active,.trumbowyg-dark .trumbowyg-button-pane button:not(.trumbowyg-disable):focus,.trumbowyg-dark .trumbowyg-button-pane button:not(.trumbowyg-disable):hover{background-color:#333}.trumbowyg-dark .trumbowyg-button-pane .trumbowyg-open-dropdown::after{border-top-color:#fff}.trumbowyg-dark .trumbowyg-fullscreen .trumbowyg-button-group .trumbowyg-fullscreen-button svg{color:#ecf0f1;fill:transparent}.trumbowyg-dark .trumbowyg-dropdown{border-color:#222;background:#333;box-shadow:rgba(0,0,0,.3) 0 2px 3px}.trumbowyg-dark .trumbowyg-dropdown button{background:#333;color:#fff!important}.trumbowyg-dark .trumbowyg-dropdown button:focus,.trumbowyg-dark .trumbowyg-dropdown button:hover{background:#222}.trumbowyg-dark .trumbowyg-modal-box{background-color:#222}.trumbowyg-dark .trumbowyg-modal-box .trumbowyg-modal-title{border-bottom:1px solid #555;color:#fff;background:#3c3c3c}.trumbowyg-dark .trumbowyg-modal-box label{display:block;position:relative;margin:15px 12px;height:27px;line-height:27px;overflow:hidden}.trumbowyg-dark .trumbowyg-modal-box label .trumbowyg-input-infos span{color:#eee;background-color:#2f2f2f;border-color:#222}.trumbowyg-dark .trumbowyg-modal-box label .trumbowyg-input-infos span.trumbowyg-msg-error{color:#e74c3c}.trumbowyg-dark .trumbowyg-modal-box label.trumbowyg-input-error input,.trumbowyg-dark .trumbowyg-modal-box label.trumbowyg-input-error textarea{border-color:#e74c3c}.trumbowyg-dark .trumbowyg-modal-box label input{border-color:#222;color:#eee;background:#333}.trumbowyg-dark .trumbowyg-modal-box label input:focus,.trumbowyg-dark .trumbowyg-modal-box label input:hover{border-color:#626262}.trumbowyg-dark .trumbowyg-modal-box label input:focus{background-color:#2f2f2f}.trumbowyg-dark .trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-submit{background:#1b7943}.trumbowyg-dark .trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-submit:focus,.trumbowyg-dark .trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-submit:hover{background:#25a25a}.trumbowyg-dark .trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-submit:active{background:#176437}.trumbowyg-dark .trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-reset{background:#333;color:#ccc}.trumbowyg-dark .trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-reset:focus,.trumbowyg-dark .trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-reset:hover{background:#444}.trumbowyg-dark .trumbowyg-modal-box .trumbowyg-modal-button.trumbowyg-modal-reset:active{background:#111}.trumbowyg-dark .trumbowyg-overlay{background-color:rgba(15,15,15,.6)}.trumbowyg-dropdown-emoji{width:265px;padding:7px 0 7px 5px;height:200px;overflow-y:scroll;overflow-x:hidden}.trumbowyg-dropdown-emoji svg{display:none!important}.trumbowyg-dropdown-emoji button{display:block;position:relative;float:left;height:26px;width:26px;padding:0;margin:2px;line-height:24px;text-align:center}.trumbowyg-dropdown-emoji button:focus::after,.trumbowyg-dropdown-emoji button:hover::after{display:block;position:absolute;top:-5px;left:-5px;height:27px;width:27px;background:inherit;box-shadow:#000 0 0 2px;z-index:10;background-color:transparent}.trumbowyg .emoji{width:22px;height:22px;display:inline-block}.trumbowyg-highlight-mb-3{margin:15px 10px}.trumbowyg-highlight-mb-3 .trumbowyg-highlight-form-control{width:100%;border:1px solid #DEDEDE;font-size:14px;padding:7px}.trumbowyg-highlight-mb-3 .trumbowyg-highlight-form-control.code{height:200px}.trumbowyg-editor table{width:100%}.trumbowyg-editor table td{border:1px dotted #e7eaec;padding:8px}.trumbowyg-dropdown-table table{margin:10px;display:inline-block}.trumbowyg-dropdown-table table td{display:inline-block;height:20px;width:20px;margin:1px;padding:0;background-color:#fff;box-shadow:0 0 0 1px #cecece inset}.trumbowyg-dropdown-table table td.active{background-color:#00b393;box-shadow:none;cursor:pointer} \ No newline at end of file + */.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.cm-em,.hljs-emphasis,.tui-editor-contents address,.tui-editor-contents cite,.tui-editor-contents dfn,.tui-editor-contents em,.tui-editor-contents i,.tui-editor-contents var{font-style:italic}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.CodeMirror pre,.fa-stack-1x{line-height:inherit}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adobe:before{content:"\f778"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-bahai:before{content:"\f666"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-alt:before{content:"\f422"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\f952"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-alt:before{content:"\f424"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\f907"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-handshake:before{content:"\f2b5"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-hdd:before{content:"\f0a0"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-ideal:before{content:"\f913"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-instagram-square:before{content:"\f955"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microblog:before{content:"\f91a"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\f956"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\f91e"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopify:before{content:"\f957"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\f941"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\f949"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:auto;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:auto;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:auto;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900}.CodeMirror{height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor-mark{background-color:rgba(20,255,20,.5);-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite}.cm-animate-fat-cursor{width:auto;border:0;-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite;background-color:#7e7}@-moz-keyframes blink{50%{background-color:transparent}}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:-20px;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-type,.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-invalidchar,.cm-s-default .cm-error{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-30px;margin-right:-30px;padding-bottom:30px;height:100%;outline:0;position:relative}.CodeMirror-sizer{position:relative;border-right:30px solid transparent}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{position:absolute;z-index:6;display:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-30px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:0 0!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:0 0;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:0}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}.CodeMirror-focused div.CodeMirror-cursors,div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:''}span.CodeMirror-selectedtext{background:0 0}.hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#f8f8f8}.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:700}.hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable{color:teal}.hljs-doctag,.hljs-string{color:#d14}.hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:700}.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type{color:#458;font-weight:700}.hljs-attribute,.hljs-name,.hljs-tag{color:navy;font-weight:400}.hljs-meta,.hljs-strong,.tui-editor-contents h1,.tui-editor-contents h2,.tui-editor-contents h3,.tui-editor-contents h5,.tui-editor-contents strong{font-weight:700}.hljs-link,.hljs-regexp{color:#009926}.hljs-bullet,.hljs-symbol{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.CodeMirror{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif}.tui-editor-contents :not(table){line-height:160%;box-sizing:content-box}.tui-editor-contents p{margin:10px 0;color:#555}.tui-editor-contents>div>div:first-of-type h1,.tui-editor-contents>h1:first-of-type{margin-top:14px}.tui-editor-contents h1{font-size:1.6rem;line-height:28px;border-bottom:3px double #999;margin:52px 0 15px;padding-bottom:7px;color:#000}.tui-editor-contents h2{font-size:1.3rem;line-height:23px;border-bottom:1px solid #dbdbdb;margin:30px 0 13px;padding-bottom:7px;color:#333}.tui-editor-contents h3,.tui-editor-contents h4{font-size:1.2rem;line-height:18px;margin:20px 0 2px;color:#333}.tui-editor-contents h5,.tui-editor-contents h6{font-size:1rem;line-height:17px;margin:10px 0 -4px;color:#333}.tui-editor-contents blockquote{margin:15px 0;border-left:4px solid #ddd;padding:0 15px;color:#777}.tui-editor-contents blockquote>:first-child{margin-top:0}.tui-editor-contents blockquote>:last-child{margin-bottom:0}.tui-editor-contents code,.tui-editor-contents pre{font-family:Consolas,Courier,"Apple SD 산돌고딕 Neo",-apple-system,"Lucida Grande","Apple SD Gothic Neo","맑은 고딕","Malgun Gothic","Segoe UI","돋움",dotum,sans-serif;border:0;border-radius:0}.te-input-language input,.te-ww-block-overlay.code-block-header,.tui-editor-defaultUI{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif}.tui-editor-contents pre{margin:2px 0 8px;padding:18px;background-color:#f5f7f8}.tui-editor-contents code{color:#c1788b;padding:4px 4px 2px 0;letter-spacing:-.3px}.tui-editor-contents pre code{padding:0;color:inherit;white-space:pre-wrap;background-color:transparent}.tui-editor-contents pre.addon{border:1px solid #e8ebed;background-color:#fff}.tui-editor-contents img{margin:4px 0 10px;box-sizing:border-box;vertical-align:top;max-width:100%}.tui-editor-contents table{margin:2px 0 14px;color:#555;width:auto;border-collapse:collapse;box-sizing:border-box}.tui-editor-contents table td,.tui-editor-contents table th{height:32px;padding:5px 14px 5px 12px}.tui-editor-contents table td{border:1px solid #eaeaea}.tui-editor-contents table th{border:1px solid #72777b;border-top:0;background-color:#7b8184;font-weight:300;color:#fff;padding-top:6px}.tui-editor-contents dir,.tui-editor-contents menu,.tui-editor-contents ol,.tui-editor-contents ul{display:block;list-style-type:disc;padding-left:17px;margin:6px 0 10px;color:#555}.tui-editor-contents ol{list-style-type:decimal}.tui-editor-contents ol ol,.tui-editor-contents ol ul,.tui-editor-contents ul ol,.tui-editor-contents ul ul{margin-top:0!important;margin-bottom:0!important}.tui-editor-contents ol li,.tui-editor-contents ul li{position:relative}.tui-editor-contents ul p,ol p{margin:0}.tui-editor-contents ol li.task-list-item:before,.tui-editor-contents pre ul li:before,.tui-editor-contents ul li.task-list-item:before{content:""}.tui-editor-contents hr{border-top:1px solid #eee;margin:16px 0}.tui-editor-contents a{text-decoration:underline;color:#5286bc}.tui-editor-contents a:hover{color:#007cff}.tui-editor-contents{font-size:13px;margin:0;padding:0}.tui-editor-contents .task-list-item{border:0;list-style:none;padding-left:22px;margin-left:-22px}.tui-editor-contents .task-list-item:before{background-repeat:no-repeat;background-size:16px 16px;background-position:center;content:"";height:18px;width:18px;position:absolute;left:0;top:1px;cursor:pointer;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAADdJREFUKBVjvHv37n8GMgALSI+SkhJJWu/du8fARJIOJMWjGpECA505GjjoIYLEB6dVUNojFQAA/1MJUFWet/4AAAAASUVORK5CYII=)}.tui-editor-contents .task-list-item.checked:before{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAMpJREFUKBVjjJ/64D8DGYCJDD1gLbTVyM3OxJDiJMzAxcYIdyALnIWDAdJU7i/OICfCxsDMxMgwc88bwk5F1vTs/W+GFUffwY2H+1FBlI2hLliCQYCbGSyJrqlzwwuGj9//YWoMtRBgUBJnZ6gMEGeQFWaFOw9kE7omkG5GWDyCPF7mJ86gIMbO8P//fwZGRkYGXJpAGuFO/fbrP0PXppcMD179JKgJRSOIA9N8/NZXrM4DqYEBjOgAaYYFOUwRNhruVGyS+MTI1ggAx8NTGcUtFVQAAAAASUVORK5CYII=)}.tui-editor-contents .task-list-item .task-list-item-checkbox,.tui-editor-contents .task-list-item input[type=checkbox]{margin-left:-17px;margin-right:3.8px;margin-top:3px}.tui-editor-contents-placeholder:before{content:attr(data-placeholder);color:grey;line-height:160%;position:absolute}.auto-height,.auto-height .tui-editor-defaultUI{height:auto}.auto-height .tui-editor{position:relative}:not(.auto-height)>.tui-editor-defaultUI,:not(.auto-height)>.tui-editor-defaultUI>.te-editor-section{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}:not(.auto-height)>.tui-editor-defaultUI>.te-editor-section{-ms-flex:1;flex:1}.tui-editor-defaultUI-toolbar:after,.tui-editor:after{content:"";display:block;height:0;clear:both}.tui-editor{position:absolute;line-height:1;color:#181818;width:100%;height:inherit}.te-editor-section{min-height:0;position:relative;height:inherit}.te-md-container{display:none;overflow:hidden;height:100%}.te-md-container .te-editor{line-height:1.5}.te-md-container .te-editor,.te-md-container .te-preview{box-sizing:border-box;padding:0;height:inherit}.te-md-container .CodeMirror{font-size:13px;height:inherit}.te-md-container .te-preview{overflow:auto;padding:0 25px;height:100%}.te-md-container .te-preview>p:first-child{margin-top:0!important}.te-md-container .te-preview .tui-editor-contents{padding-top:11px}.tui-editor .te-preview-style-tab>.te-editor,.tui-editor .te-preview-style-tab>.te-preview{float:left;width:100%;display:none}.tui-editor .te-preview-style-tab>.te-tab-active{display:block}.tui-editor .te-preview-style-vertical>.te-tab-section{display:none}.tui-editor .te-preview-style-tab>.te-tab-section{display:block}.tui-editor .te-preview-style-vertical .te-editor,.tui-editor .te-preview-style-vertical .te-preview{float:left;width:50%}.tui-editor .te-md-splitter{display:none;position:absolute;left:50%;top:0;height:100%;width:1px;border-left:1px solid #e5e5e5}.tui-editor .te-preview-style-vertical .te-md-splitter{display:block}.te-ww-container{display:none;overflow:hidden;z-index:10;height:inherit;background-color:#fff}.te-ww-container>.te-editor{overflow:auto;height:inherit}.te-ww-container .tui-editor-contents:focus{outline:0}.te-ww-container .tui-editor-contents{padding:0 25px}.te-ww-container .tui-editor-contents:first-child{box-sizing:border-box;margin:0;padding:16px 25px 0;height:inherit}.te-ww-container .tui-editor-contents:last-child{margin-bottom:16px}.te-md-mode .te-md-container,.te-ww-mode .te-ww-container{display:block;z-index:100}.tui-editor-defaultUI.te-hide,.tui-editor.te-hide{display:none}.tui-editor-defaultUI .CodeMirror-lines{padding-top:13px;padding-bottom:13px}.tui-editor-defaultUI .CodeMirror-line{padding-left:25px;padding-right:25px}.tui-editor-defaultUI .CodeMirror pre.CodeMirror-placeholder{padding-left:25px;color:grey}.tui-editor-defaultUI .CodeMirror-scroll{cursor:text}.tui-editor-contents td.te-cell-selected{background-color:#d8dfec}.tui-editor-contents td.te-cell-selected::selection{background-color:#d8dfec}.tui-editor-contents th.te-cell-selected{background-color:#908f8f}.tui-editor-contents th.te-cell-selected::selection{background-color:#908f8f}.tui-editor-defaultUI{position:relative;border:1px solid #e5e5e5;height:100%}.tui-editor-defaultUI button{color:#fff;padding:0 14px 0 15px;height:28px;font-size:12px;border:none;cursor:pointer;outline:0}.tui-editor-defaultUI button.te-ok-button{background-color:#4b96e6}.tui-editor-defaultUI button.te-close-button{background-color:#777}.tui-editor-defaultUI-toolbar{padding:0 25px;height:31px;background-color:#fff;border:0;overflow:hidden}.tui-toolbar-divider{float:left;display:inline-block;width:1px;height:14px;background-color:#ddd;margin:9px 6px}.tui-toolbar-button-group{height:28px;border-right:1px solid #d9d9d9;float:left}.te-toolbar-section{height:32px;box-sizing:border-box;border-bottom:1px solid #e5e5e5}.tui-editor-defaultUI-toolbar button{float:left;box-sizing:border-box;outline:0;cursor:pointer;background-color:#fff;width:22px;height:22px;padding:3px;border-radius:0;margin:5px 3px;border:1px solid #fff}.tui-editor-defaultUI-toolbar button.active,.tui-editor-defaultUI-toolbar button:active,.tui-editor-defaultUI-toolbar button:hover{border:1px solid #aaa;background-color:#fff}.tui-editor-defaultUI-toolbar button:first-child{margin-left:0}.tui-editor-defaultUI-toolbar button:last-child{margin-right:0}.tui-editor-defaultUI-toolbar button.tui-scrollsync{width:auto;color:#777;border:0}.tui-editor-defaultUI button.tui-scrollsync:after{content:"Scroll off"}.tui-editor-defaultUI button.tui-scrollsync.active{color:#125de6;font-weight:700}.tui-editor-defaultUI button.tui-scrollsync.active:after{content:"Scroll on"}.tui-editor-defaultUI .te-mode-switch-section{background-color:#f9f9f9;border-top:1px solid #e5e5e5;height:20px;font-size:12px}.tui-editor-defaultUI .te-mode-switch{float:right;height:100%}.tui-editor-defaultUI .te-switch-button{width:92px;height:inherit;background:#e5e5e5;outline:0;color:#a0aabf;cursor:pointer;border:0;border-left:1px solid #ddd;border-right:1px solid #ddd}.tui-editor-defaultUI .te-switch-button.active{background-color:#fff;color:#000}.tui-editor-defaultUI .te-markdown-tab-section{float:left;height:31px;background:#fff}.te-markdown-tab-section .te-tab{margin:0 -7px 0 24px;background:#fff}.tui-editor-defaultUI .te-tab button{box-sizing:border-box;line-height:100%;position:relative;cursor:pointer;z-index:1;font-size:13px;background-color:#f9f9f9;border:1px solid #e5e5e5;border-top:0;padding:0 9px;color:#777;border-radius:0;outline:0}.te-markdown-tab-section .te-tab button:last-child{margin-left:-1px}.te-markdown-tab-section .te-tab button.te-tab-active,.te-markdown-tab-section .te-tab button:hover.te-tab-active{background-color:#fff;color:#333;border-bottom:1px solid #fff;z-index:2}.te-markdown-tab-section .te-tab button:hover{background-color:#fff;color:#333}.tui-popup-modal-background{background-color:rgba(202,202,202,.6);position:fixed;margin:0;left:0;top:0;width:100%;height:100%;z-index:9999}.tui-popup-modal-background.fit-window .tui-popup-wrapper,.tui-popup-wrapper.fit-window{width:100%;height:100%}.tui-popup-wrapper{width:500px;margin-right:auto;border:1px solid #cacaca;background:#fff;z-index:9999}.tui-popup-modal-background .tui-popup-wrapper{position:absolute;margin:auto;top:0;right:0;bottom:0;left:0}.tui-popup-header{padding:10px;height:auto;line-height:normal;position:relative;border-bottom:1px solid #cacaca}.tui-popup-header .tui-popup-header-buttons{float:right}.tui-popup-header .tui-popup-header-buttons button{padding:0;background-color:transparent;background-size:cover;float:left}.tui-popup-header .tui-popup-close-button{margin:3px;width:13px;height:13px;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxMHB4IiBoZWlnaHQ9IjEwcHgiIHZpZXdCb3g9IjAgMCAxMCAxMCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT5GMjc2Qzc4MC0zM0JBLTQ3MTItQTM3OC04RkQwQUNDOTFDRTk8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImxuYi1mb2xkZXItZGVsIiBmaWxsLXJ1bGU9Im5vbnplcm8iIGZpbGw9IiM3Nzc3NzciPiAgICAgICAgICAgIDxwYXRoIGQ9Ik01LDMuNTg1Nzg2NDQgTDEuNzA3MTA2NzgsMC4yOTI4OTMyMTkgTDAuMjkyODkzMjE5LDEuNzA3MTA2NzggTDMuNTg1Nzg2NDQsNSBMMC4yOTI4OTMyMTksOC4yOTI4OTMyMiBMMS43MDcxMDY3OCw5LjcwNzEwNjc4IEw1LDYuNDE0MjEzNTYgTDguMjkyODkzMjIsOS43MDcxMDY3OCBMOS43MDcxMDY3OCw4LjI5Mjg5MzIyIEw2LjQxNDIxMzU2LDUgTDkuNzA3MTA2NzgsMS43MDcxMDY3OCBMOC4yOTI4OTMyMiwwLjI5Mjg5MzIxOSBMNSwzLjU4NTc4NjQ0IFoiIGlkPSJDb21iaW5lZC1TaGFwZSI+PC9wYXRoPiAgICAgICAgPC9nPiAgICA8L2c+PC9zdmc+)}.tui-popup-header .tui-popup-title{font-size:13px;font-weight:700;color:#333;vertical-align:bottom}.tui-popup-body{padding:15px;font-size:12px}.tui-editor-popup{position:absolute;top:30px;left:50%;margin-left:-250px}.tui-editor-popup.tui-popup-modal-background{position:fixed;top:0;left:0;margin:0}.tui-editor-popup .tui-popup-body label{font-weight:700;color:#666;display:block;margin:10px 0 5px}.tui-editor-popup .tui-popup-body .te-button-section{margin-top:15px}.tui-editor-popup .tui-popup-body input[type=file],.tui-editor-popup .tui-popup-body input[type=text]{padding:4px 10px;border:1px solid #bfbfbf;box-sizing:border-box;width:100%}.tui-editor-popup .tui-popup-body input.wrong{border-color:red}.te-popup-add-link .tui-popup-wrapper{height:219px}.te-popup-add-image .tui-popup-wrapper{height:243px}.te-popup-add-image .te-tab{display:block;background:0 0;border-bottom:1px solid #ebebeb;margin-bottom:8px}.te-popup-add-image .te-file-type,.te-popup-add-image .te-url-type{display:none}.te-popup-add-image div.te-tab-active,.te-popup-add-image form.te-tab-active{display:block}.te-dropdown-toolbar .tui-toolbar-divider,.tui-popup-color .tui-colorpicker-container .tui-colorpicker-palette-toggle-slider{display:none}.te-popup-add-image .te-tab button{border:1px solid #ccc;background:#eee;min-width:100px;margin-left:-1px;border-bottom:0;border-radius:3px 3px 0 0}.te-popup-add-image .te-tab button.te-tab-active{background:#fff}.te-popup-add-table .te-table-selection{position:relative}.te-popup-add-table .te-table-body{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAARCAYAAAAougcOAAAC7mlDQ1BJQ0MgUHJvZmlsZQAAeAGFVM9rE0EU/jZuqdAiCFprDrJ4kCJJWatoRdQ2/RFiawzbH7ZFkGQzSdZuNuvuJrWliOTi0SreRe2hB/+AHnrwZC9KhVpFKN6rKGKhFy3xzW5MtqXqwM5+8943731vdt8ADXLSNPWABOQNx1KiEWlsfEJq/IgAjqIJQTQlVdvsTiQGQYNz+Xvn2HoPgVtWw3v7d7J3rZrStpoHhP1A4Eea2Sqw7xdxClkSAog836Epx3QI3+PY8uyPOU55eMG1Dys9xFkifEA1Lc5/TbhTzSXTQINIOJT1cVI+nNeLlNcdB2luZsbIEL1PkKa7zO6rYqGcTvYOkL2d9H5Os94+wiHCCxmtP0a4jZ71jNU/4mHhpObEhj0cGDX0+GAVtxqp+DXCFF8QTSeiVHHZLg3xmK79VvJKgnCQOMpkYYBzWkhP10xu+LqHBX0m1xOv4ndWUeF5jxNn3tTd70XaAq8wDh0MGgyaDUhQEEUEYZiwUECGPBoxNLJyPyOrBhuTezJ1JGq7dGJEsUF7Ntw9t1Gk3Tz+KCJxlEO1CJL8Qf4qr8lP5Xn5y1yw2Fb3lK2bmrry4DvF5Zm5Gh7X08jjc01efJXUdpNXR5aseXq8muwaP+xXlzHmgjWPxHOw+/EtX5XMlymMFMXjVfPqS4R1WjE3359sfzs94i7PLrXWc62JizdWm5dn/WpI++6qvJPmVflPXvXx/GfNxGPiKTEmdornIYmXxS7xkthLqwviYG3HCJ2VhinSbZH6JNVgYJq89S9dP1t4vUZ/DPVRlBnM0lSJ93/CKmQ0nbkOb/qP28f8F+T3iuefKAIvbODImbptU3HvEKFlpW5zrgIXv9F98LZua6N+OPwEWDyrFq1SNZ8gvAEcdod6HugpmNOWls05Uocsn5O66cpiUsxQ20NSUtcl12VLFrOZVWLpdtiZ0x1uHKE5QvfEp0plk/qv8RGw/bBS+fmsUtl+ThrWgZf6b8C8/UXAeIuJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAOklEQVQ4EWO8e/fuPwYGBkYgphlgAZmspKREMwtABjPR1HSo4aOWkBTKo8E1GlwkhQBJikdT1wgNLgAMSwQgckFvTgAAAABJRU5ErkJggg==)}.te-popup-add-table .te-table-header{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAARCAYAAAAougcOAAAC7mlDQ1BJQ0MgUHJvZmlsZQAAeAGFVM9rE0EU/jZuqdAiCFprDrJ4kCJJWatoRdQ2/RFiawzbH7ZFkGQzSdZuNuvuJrWliOTi0SreRe2hB/+AHnrwZC9KhVpFKN6rKGKhFy3xzW5MtqXqwM5+8943731vdt8ADXLSNPWABOQNx1KiEWlsfEJq/IgAjqIJQTQlVdvsTiQGQYNz+Xvn2HoPgVtWw3v7d7J3rZrStpoHhP1A4Eea2Sqw7xdxClkSAog836Epx3QI3+PY8uyPOU55eMG1Dys9xFkifEA1Lc5/TbhTzSXTQINIOJT1cVI+nNeLlNcdB2luZsbIEL1PkKa7zO6rYqGcTvYOkL2d9H5Os94+wiHCCxmtP0a4jZ71jNU/4mHhpObEhj0cGDX0+GAVtxqp+DXCFF8QTSeiVHHZLg3xmK79VvJKgnCQOMpkYYBzWkhP10xu+LqHBX0m1xOv4ndWUeF5jxNn3tTd70XaAq8wDh0MGgyaDUhQEEUEYZiwUECGPBoxNLJyPyOrBhuTezJ1JGq7dGJEsUF7Ntw9t1Gk3Tz+KCJxlEO1CJL8Qf4qr8lP5Xn5y1yw2Fb3lK2bmrry4DvF5Zm5Gh7X08jjc01efJXUdpNXR5aseXq8muwaP+xXlzHmgjWPxHOw+/EtX5XMlymMFMXjVfPqS4R1WjE3359sfzs94i7PLrXWc62JizdWm5dn/WpI++6qvJPmVflPXvXx/GfNxGPiKTEmdornIYmXxS7xkthLqwviYG3HCJ2VhinSbZH6JNVgYJq89S9dP1t4vUZ/DPVRlBnM0lSJ93/CKmQ0nbkOb/qP28f8F+T3iuefKAIvbODImbptU3HvEKFlpW5zrgIXv9F98LZua6N+OPwEWDyrFq1SNZ8gvAEcdod6HugpmNOWls05Uocsn5O66cpiUsxQ20NSUtcl12VLFrOZVWLpdtiZ0x1uHKE5QvfEp0plk/qv8RGw/bBS+fmsUtl+ThrWgZf6b8C8/UXAeIuJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAOklEQVQ4EWO8e/fuPwYGBkYgphlgAZksLCxMMwtABjPR1HSo4aOWkBTKo8E1GlwkhQBJikdT1wgNLgDxKwPzTeWPdAAAAABJRU5ErkJggg==)}.te-popup-add-table .te-selection-area{position:absolute;top:0;left:0;background:#80d2ff;opacity:.3;z-index:999}.te-popup-add-table .te-description{margin:10px 0 0;text-align:center}.te-popup-table-utils{width:120px}.te-popup-table-utils .tui-popup-body{padding:0}.te-popup-table-utils button{width:100%;background-color:#fff;border:none;outline:0;padding:0 10px;font-size:12px;line-height:28px;text-align:left;color:#777}.te-popup-table-utils button:hover{background-color:#f4f4f4}.te-popup-table-utils hr{background-color:#cacaca;border-style:none;height:1px}.te-heading-add{width:auto}.te-heading-add .tui-popup-body{padding:0}.te-heading-add h1,.te-heading-add h2,.te-heading-add h3,.te-heading-add h4,.te-heading-add h5,.te-heading-add h6,.te-heading-add p,.te-heading-add ul{padding:0;margin:0}.te-heading-add ul li{padding:2px 10px;cursor:pointer}.te-dropdown-toolbar .tui-popup-body,.tui-popup-color{padding:0}.te-heading-add ul li:hover{background-color:#eee}.te-heading-add h1{font-size:24px}.te-heading-add h2{font-size:22px}.te-heading-add h3{font-size:20px}.te-heading-add h4{font-size:18px}.te-heading-add h5{font-size:16px}.te-heading-add h6{font-size:14px}.te-dropdown-toolbar{position:absolute;width:auto}.tui-popup-color .tui-colorpicker-container,.tui-popup-color .tui-colorpicker-palette-container{width:144px}.tui-popup-color .tui-colorpicker-container ul{width:144px;margin-bottom:8px}.tui-popup-color .tui-colorpicker-container li{padding:0 1px 1px 0}.tui-popup-color .tui-colorpicker-container li .tui-colorpicker-palette-button{border:0;width:17px;height:17px}.tui-popup-color .tui-popup-body{padding:10px}.tui-popup-color .te-apply-button,.tui-popup-color .tui-colorpicker-palette-hex{float:right}.tui-popup-color .te-apply-button{height:21px;width:35px;background:#fff;border:1px solid #efefef;position:absolute;bottom:141px;right:10px}.tui-tooltip,.tui-tooltip .arrow{background-color:#222;position:absolute}.tui-popup-color .tui-colorpicker-container .tui-colorpicker-palette-hex{border:1px solid #E1E1E1;padding:3px 14px;margin-left:-1px}.tui-popup-color .tui-colorpicker-container div.tui-colorpicker-clearfix{display:inline-block}.tui-popup-color .tui-colorpicker-container .tui-colorpicker-palette-preview{width:19px;height:19px}.tui-popup-color .tui-colorpicker-slider-container .tui-colorpicker-slider-right{width:22px}.tui-popup-color .tui-colorpicker-slider-container .tui-colorpicker-huebar-handle{display:none}.tui-tooltip{z-index:999;opacity:.8;color:#fff;padding:2px 5px;font-size:10px}.tui-tooltip .arrow{content:"";display:inline-block;width:10px;height:10px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg);top:-3px;left:6px;z-index:-1}.tui-toolbar-icons{background:url(tui-editor.png);background-size:218px 188px;display:inline-block}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min--moz-device-pixel-ratio:2),only screen and (-o-min-device-pixel-ratio:2/1),only screen and (min-device-pixel-ratio:2),only screen and (min-resolution:192dpi),only screen and (min-resolution:2dppx){.tui-toolbar-icons{background:url(tui-editor-2x.png);background-size:218px 188px;display:inline-block}}.tui-toolbar-icons.tui-heading{background-position:-172px -48px}.tui-toolbar-icons.tui-heading:disabled{background-position:-193px -48px}.tui-toolbar-icons.tui-bold{background-position:-4px -4px}.tui-toolbar-icons.tui-bold:disabled{background-position:-25px -4px}.tui-toolbar-icons.tui-italic{background-position:-4px -48px}.tui-toolbar-icons.tui-italic:disabled{background-position:-25px -48px}.tui-toolbar-icons.tui-color{background-position:-172px -70px}.tui-toolbar-icons.tui-color:disabled{background-position:-193px -70px}.tui-toolbar-icons.tui-strike{background-position:-4px -26px}.tui-toolbar-icons.tui-strike:disabled{background-position:-25px -26px}.tui-toolbar-icons.tui-hrline{background-position:-46px -92px}.tui-toolbar-icons.tui-hrline:disabled{background-position:-67px -92px}.tui-toolbar-icons.tui-quote{background-position:-4px -114px}.tui-toolbar-icons.tui-quote:disabled{background-position:-25px -114px}.tui-toolbar-icons.tui-ul{background-position:-46px -4px}.tui-toolbar-icons.tui-ul:disabled{background-position:-67px -4px}.tui-toolbar-icons.tui-ol{background-position:-46px -26px}.tui-toolbar-icons.tui-ol:disabled{background-position:-67px -26px}.tui-toolbar-icons.tui-task{background-position:-130px -48px}.tui-toolbar-icons.tui-task:disabled{background-position:-151px -48px}.tui-toolbar-icons.tui-indent{background-position:-46px -48px}.tui-toolbar-icons.tui-indent:disabled{background-position:-67px -48px}.tui-toolbar-icons.tui-outdent{background-position:-46px -70px}.tui-toolbar-icons.tui-outdent:disabled{background-position:-67px -70px}.tui-toolbar-icons.tui-table{background-position:-88px -92px}.tui-toolbar-icons.tui-table:disabled{background-position:-109px -92px}.tui-toolbar-icons.tui-image{background-position:-130px -4px}.tui-toolbar-icons.tui-image:disabled{background-position:-151px -4px}.tui-toolbar-icons.tui-link{background-position:-130px -26px}.tui-toolbar-icons.tui-link:disabled{background-position:-151px -26px}.tui-toolbar-icons.tui-code{background-position:-130px -92px}.tui-toolbar-icons.tui-code:disabled{background-position:-151px -92px}.tui-toolbar-icons.tui-codeblock{background-position:-130px -70px}.tui-toolbar-icons.tui-codeblock:disabled{background-position:-151px -70px}.tui-toolbar-icons.tui-more{background-position:-172px -92px}.tui-toolbar-icons.tui-more:disabled{background-position:-193px -92px}.tui-colorpicker-svg-huebar,.tui-colorpicker-svg-slider,.tui-colorpicker-vml-slider{border:1px solid #ebebeb}.CodeMirror-sizer{margin-top:6px}.CodeMirror .cm-header{font-weight:700;color:inherit}.CodeMirror .cm-header-1{font-size:24px}.CodeMirror .cm-header-2{font-size:22px}.CodeMirror .cm-header-3{font-size:20px}.CodeMirror .cm-header-4{font-size:18px}.CodeMirror .cm-header-5{font-size:16px}.CodeMirror .cm-header-6{font-size:14px}.CodeMirror .cm-variable-2{color:inherit}.tui-editor-pseudo-clipboard{position:fixed;left:-1000px;top:-1000px;width:100px;height:100px}.te-ww-block-overlay.code-block-header{text-align:right}.te-ww-block-overlay.code-block-header span{font-size:10px;font-weight:600;padding:0 10px;color:#333;cursor:default}.te-ww-block-overlay.code-block-header button{margin:8px;font-size:10px;color:#333;background-color:#f9f9f9;border:1px solid #ddd;padding:4px;height:auto}.te-popup-code-block-languages{position:fixed;box-sizing:border-box;width:130px}.te-popup-code-block-languages .tui-popup-body{max-height:169px;overflow:auto;padding:0}.te-popup-code-block-languages button{width:100%;background-color:#fff;border:none;outline:0;padding:0 10px;font-size:12px;line-height:24px;text-align:left;color:#777}.te-popup-code-block-languages button.active{background-color:#f4f4f4}.tui-popup-code-block-editor .tui-popup-wrapper{width:70%;height:70%;margin:auto;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.te-input-language{position:relative;margin-left:15px;cursor:pointer}.te-input-language input{font-size:10px;padding:3px 5px;border:1px solid #ddd;background-color:#f9f9f9;box-sizing:border-box;width:130px;outline:0}.te-input-language input::-ms-clear{display:none}.te-input-language::after{content:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjE0cHgiIHZpZXdCb3g9IjAgMCAxMiAxNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT42Q0NBRDk2QS0yMjYxLTRFNDAtOTk1RC1DRUUyQUREQUQ3NkQ8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImNvbS10cmFuZ2xlLWQtc2lkZSIgZmlsbD0iIzU1NTU1NSI+ICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlJlY3RhbmdsZS03IiBwb2ludHM9IjIgNSAxMCA1IDYgMTAiPjwvcG9seWdvbj4gICAgICAgIDwvZz4gICAgPC9nPjwvc3ZnPg==);position:absolute;top:1px;right:3px}.te-input-language.active::after{content:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjE0cHgiIHZpZXdCb3g9IjAgMCAxMiAxNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT5BNEZDRkIzMy0zNjdBLTREMjAtOEEyNC1DQ0I2ODFBMDZDODg8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImNvbS10cmFuZ2xlLXVwLXNpZGUiIGZpbGw9IiM1NTU1NTUiPiAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJSZWN0YW5nbGUtNyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNi4wMDAwMDAsIDYuNTAwMDAwKSBzY2FsZSgxLCAtMSkgdHJhbnNsYXRlKC02LjAwMDAwMCwgLTYuNTAwMDAwKSAiIHBvaW50cz0iMiA0IDEwIDQgNiA5Ij48L3BvbHlnb24+ICAgICAgICA8L2c+ICAgIDwvZz48L3N2Zz4=)}.tui-popup-code-block-editor button{margin:-1px 3px}.tui-popup-code-block-editor .tui-popup-header-buttons{height:20px}.tui-popup-code-block-editor .popup-editor-toggle-preview::after{content:'Preview off';color:#777;margin-right:22px}.tui-popup-code-block-editor .popup-editor-toggle-preview.active::after{content:'Preview on';color:#4b96e6}.tui-popup-code-block-editor .popup-editor-toggle-scroll::after{content:'Scroll off';color:#777;margin-right:16px}.tui-popup-code-block-editor .popup-editor-toggle-scroll.active::after{content:'Scroll on';color:#4b96e6}.tui-popup-code-block-editor .popup-editor-toggle-fit{width:18px;height:18px;margin-top:4px;margin-right:14px;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxOHB4IiBoZWlnaHQ9IjE4cHgiIHZpZXdCb3g9IjAgMCAxOCAxOCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT40OUQ4RTYyMy1GRTAyLTQ1RUUtQkQ5Ri0xMjUyQjEzRTU1MkQ8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImNvbnRlbnRzLWV4cGFuZCIgZmlsbD0iIzU1NTU1NSI+ICAgICAgICAgICAgPHBhdGggZD0iTTMsMyBMOSwzIEw5LDUgTDUsNSBMNSw5IEwzLDkgTDMsMyBaIE0xNSwxNSBMOSwxNSBMOSwxMyBMMTMsMTMgTDEzLDkgTDE1LDkgTDE1LDE1IFoiIGlkPSJDb21iaW5lZC1TaGFwZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOS4wMDAwMDAsIDkuMDAwMDAwKSBzY2FsZSgtMSwgMSkgdHJhbnNsYXRlKC05LjAwMDAwMCwgLTkuMDAwMDAwKSAiPjwvcGF0aD4gICAgICAgICAgICA8cG9seWdvbiBpZD0iTGluZSIgZmlsbC1ydWxlPSJub256ZXJvIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMS41MDAwMDAsIDYuNTAwMDAwKSBzY2FsZSgtMSwgMSkgdHJhbnNsYXRlKC0xMS41MDAwMDAsIC02LjUwMDAwMCkgIiBwb2ludHM9IjkuMDg1Nzg2NDQgNS41IDEyLjUgOC45MTQyMTM1NiAxMy45MTQyMTM2IDcuNSAxMC41IDQuMDg1Nzg2NDQiPjwvcG9seWdvbj4gICAgICAgICAgICA8cG9seWdvbiBpZD0iTGluZS1Db3B5IiBmaWxsLXJ1bGU9Im5vbnplcm8iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYuNTAwMDAwLCAxMS41MDAwMDApIHNjYWxlKC0xLCAxKSB0cmFuc2xhdGUoLTYuNTAwMDAwLCAtMTEuNTAwMDAwKSAiIHBvaW50cz0iNC4wODU3ODY0NCAxMC41IDcuNSAxMy45MTQyMTM2IDguOTE0MjEzNTYgMTIuNSA1LjUgOS4wODU3ODY0NCI+PC9wb2x5Z29uPiAgICAgICAgPC9nPiAgICA8L2c+PC9zdmc+)}.tui-popup-code-block-editor .popup-editor-toggle-fit.active{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxOHB4IiBoZWlnaHQ9IjE4cHgiIHZpZXdCb3g9IjAgMCAxOCAxOCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT4wN0Q1MjlCRi1GNTIzLTREN0EtQTlGNi05NTUzNTU5RDNEMUE8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImNvbnRlbnRzLXJlZHVjZSIgZmlsbD0iIzU1NTU1NSI+ICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgtMzIiIGZpbGwtcnVsZT0ibm9uemVybyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNS41MDAwMDAsIDEyLjUwMDAwMCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtNS41MDAwMDAsIC0xMi41MDAwMDApICIgcG9pbnRzPSIzLjA4NTc4NjQ0IDExLjUgNi41IDE0LjkxNDIxMzYgNy45MTQyMTM1NiAxMy41IDQuNSAxMC4wODU3ODY0Ij48L3BvbHlnb24+ICAgICAgICAgICAgPHBhdGggZD0iTTksOSBMMTUsOSBMMTUsMTEgTDExLDExIEwxMSwxNSBMOSwxNSBMOSw5IFogTTksOSBMMyw5IEwzLDcgTDcsNyBMNywzIEw5LDMgTDksOSBaIiBpZD0iQ29tYmluZWQtU2hhcGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDkuMDAwMDAwLCA5LjAwMDAwMCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtOS4wMDAwMDAsIC05LjAwMDAwMCkgIj48L3BhdGg+ICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgtMzMiIGZpbGwtcnVsZT0ibm9uemVybyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTIuNTAwMDAwLCA1LjUwMDAwMCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtMTIuNTAwMDAwLCAtNS41MDAwMDApICIgcG9pbnRzPSIxNC45MTQyMTM2IDYuNSAxMS41IDMuMDg1Nzg2NDQgMTAuMDg1Nzg2NCA0LjUgMTMuNSA3LjkxNDIxMzU2Ij48L3BvbHlnb24+ICAgICAgICA8L2c+ICAgIDwvZz48L3N2Zz4=)}.tui-popup-code-block-editor .tui-popup-close-button{margin-top:6px}.tui-popup-code-block-editor .tui-popup-body{z-index:-1;padding:0;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex:1;flex:1}.tui-split-scroll.single-content .tui-split-content-right,.tui-split-scroll.single-content .tui-splitter,.tui-split-scroll.single-content button.tui-scrollsync{display:none}.tui-popup-code-block-editor .popup-editor-body{position:relative;-ms-flex:1;flex:1;border-bottom:1px solid #cacaca}.tui-popup-code-block-editor .te-button-section{padding:15px}.tui-popup-code-block-editor .te-button-section button{float:left}.tui-popup-code-block-editor .tui-editor-contents pre{margin:0;background-color:transparent}.tui-popup-code-block-editor .CodeMirror{height:auto}.tui-popup-code-block-editor .CodeMirror-line{font-family:Consolas,Courier,"Apple SD 산돌고딕 Neo",-apple-system,"Lucida Grande","Apple SD Gothic Neo","맑은 고딕","Malgun Gothic","Segoe UI","돋움",dotum,sans-serif;font-size:13px;line-height:160%;letter-spacing:-.3px}.tui-popup-code-block-editor .popup-editor-editor-wrapper{min-height:100%}.tui-split-scroll-wrapper{position:relative}.tui-split-scroll{position:absolute}.tui-split-scroll,.tui-split-scroll-wrapper{width:100%;height:100%}.tui-split-scroll .tui-split-content-left,.tui-split-scroll .tui-split-content-right{position:absolute;top:0;width:50%;box-sizing:border-box}.tui-split-scroll .tui-split-content-left{left:0}.tui-split-scroll .tui-split-content-right{left:50%}.tui-split-scroll .tui-splitter{position:absolute;left:50%;top:0;height:100%;width:1px;border-left:1px solid #cacaca}.tui-split-scroll .tui-split-scroll-content{width:100%;height:100%;overflow:hidden;position:relative}.tui-split-scroll .tui-split-content-left,.tui-split-scroll .tui-split-content-right{height:100%;overflow-x:hidden;overflow-y:auto}.tui-split-scroll button.tui-scrollsync{top:10px;opacity:.2}.tui-split-scroll button.tui-scrollsync::after{content:"scroll off"}.tui-split-scroll.scroll-sync button.tui-scrollsync{opacity:.5}.tui-split-scroll.scroll-sync .tui-split-content-left,.tui-split-scroll.scroll-sync .tui-split-content-right{height:auto;overflow:initial}.tui-split-scroll.scroll-sync button.tui-scrollsync::after{content:"scroll on"}.tui-split-scroll.scroll-sync .tui-split-scroll-content{overflow-y:auto}.tui-split-scroll.single-content .tui-split-content-left{width:100%}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.tui-split-scroll-wrapper .tui-splitter{left:calc(50% - 9px)}}@supports (-ms-accelerator:true){.tui-split-scroll-wrapper .tui-splitter{left:calc(50% - 9px)}}@media screen and (max-width:480px){.tui-popup-wrapper{max-width:300px}.tui-editor-popup{margin-left:-150px}.te-dropdown-toolbar{max-width:none}} \ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/css/shared.min.css b/src/Mix.Cms.Web/wwwroot/mix-app/css/shared.min.css index c0a90b780..8e68d6cac 100644 --- a/src/Mix.Cms.Web/wwwroot/mix-app/css/shared.min.css +++ b/src/Mix.Cms.Web/wwwroot/mix-app/css/shared.min.css @@ -1,7 +1,7 @@ -/* Sun Feb 14 2021 18:37:17 GMT+0700 (Indochina Time) */.flag-icon,.flag-icon-background{background-size:contain;background-position:50%;background-repeat:no-repeat}.fa-fw,.fa-li,.fa-stack-1x,.fa-stack-2x,.mi-fw,.mi-li,.mi-stack-1x,.mi-stack-2x{text-align:center}.fa,.fab,.fad,.fal,.far,.fas,.mi{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-style:normal;font-variant:normal;text-rendering:auto;display:inline-block}.fa-ul,.mi-ul{list-style-type:none}.flag-icon{position:relative;display:inline-block;width:1.33333333em;line-height:1em}.flag-icon:before{content:"\00a0"}.flag-icon.flag-icon-squared{width:1em}.flag-icon-ad{background-image:url(../flags/4x3/ad.svg)}.flag-icon-ad.flag-icon-squared{background-image:url(../flags/1x1/ad.svg)}.flag-icon-ae{background-image:url(../flags/4x3/ae.svg)}.flag-icon-ae.flag-icon-squared{background-image:url(../flags/1x1/ae.svg)}.flag-icon-af{background-image:url(../flags/4x3/af.svg)}.flag-icon-af.flag-icon-squared{background-image:url(../flags/1x1/af.svg)}.flag-icon-ag{background-image:url(../flags/4x3/ag.svg)}.flag-icon-ag.flag-icon-squared{background-image:url(../flags/1x1/ag.svg)}.flag-icon-ai{background-image:url(../flags/4x3/ai.svg)}.flag-icon-ai.flag-icon-squared{background-image:url(../flags/1x1/ai.svg)}.flag-icon-al{background-image:url(../flags/4x3/al.svg)}.flag-icon-al.flag-icon-squared{background-image:url(../flags/1x1/al.svg)}.flag-icon-am{background-image:url(../flags/4x3/am.svg)}.flag-icon-am.flag-icon-squared{background-image:url(../flags/1x1/am.svg)}.flag-icon-ao{background-image:url(../flags/4x3/ao.svg)}.flag-icon-ao.flag-icon-squared{background-image:url(../flags/1x1/ao.svg)}.flag-icon-aq{background-image:url(../flags/4x3/aq.svg)}.flag-icon-aq.flag-icon-squared{background-image:url(../flags/1x1/aq.svg)}.flag-icon-ar{background-image:url(../flags/4x3/ar.svg)}.flag-icon-ar.flag-icon-squared{background-image:url(../flags/1x1/ar.svg)}.flag-icon-as{background-image:url(../flags/4x3/as.svg)}.flag-icon-as.flag-icon-squared{background-image:url(../flags/1x1/as.svg)}.flag-icon-at{background-image:url(../flags/4x3/at.svg)}.flag-icon-at.flag-icon-squared{background-image:url(../flags/1x1/at.svg)}.flag-icon-au{background-image:url(../flags/4x3/au.svg)}.flag-icon-au.flag-icon-squared{background-image:url(../flags/1x1/au.svg)}.flag-icon-aw{background-image:url(../flags/4x3/aw.svg)}.flag-icon-aw.flag-icon-squared{background-image:url(../flags/1x1/aw.svg)}.flag-icon-ax{background-image:url(../flags/4x3/ax.svg)}.flag-icon-ax.flag-icon-squared{background-image:url(../flags/1x1/ax.svg)}.flag-icon-az{background-image:url(../flags/4x3/az.svg)}.flag-icon-az.flag-icon-squared{background-image:url(../flags/1x1/az.svg)}.flag-icon-ba{background-image:url(../flags/4x3/ba.svg)}.flag-icon-ba.flag-icon-squared{background-image:url(../flags/1x1/ba.svg)}.flag-icon-bb{background-image:url(../flags/4x3/bb.svg)}.flag-icon-bb.flag-icon-squared{background-image:url(../flags/1x1/bb.svg)}.flag-icon-bd{background-image:url(../flags/4x3/bd.svg)}.flag-icon-bd.flag-icon-squared{background-image:url(../flags/1x1/bd.svg)}.flag-icon-be{background-image:url(../flags/4x3/be.svg)}.flag-icon-be.flag-icon-squared{background-image:url(../flags/1x1/be.svg)}.flag-icon-bf{background-image:url(../flags/4x3/bf.svg)}.flag-icon-bf.flag-icon-squared{background-image:url(../flags/1x1/bf.svg)}.flag-icon-bg{background-image:url(../flags/4x3/bg.svg)}.flag-icon-bg.flag-icon-squared{background-image:url(../flags/1x1/bg.svg)}.flag-icon-bh{background-image:url(../flags/4x3/bh.svg)}.flag-icon-bh.flag-icon-squared{background-image:url(../flags/1x1/bh.svg)}.flag-icon-bi{background-image:url(../flags/4x3/bi.svg)}.flag-icon-bi.flag-icon-squared{background-image:url(../flags/1x1/bi.svg)}.flag-icon-bj{background-image:url(../flags/4x3/bj.svg)}.flag-icon-bj.flag-icon-squared{background-image:url(../flags/1x1/bj.svg)}.flag-icon-bl{background-image:url(../flags/4x3/bl.svg)}.flag-icon-bl.flag-icon-squared{background-image:url(../flags/1x1/bl.svg)}.flag-icon-bm{background-image:url(../flags/4x3/bm.svg)}.flag-icon-bm.flag-icon-squared{background-image:url(../flags/1x1/bm.svg)}.flag-icon-bn{background-image:url(../flags/4x3/bn.svg)}.flag-icon-bn.flag-icon-squared{background-image:url(../flags/1x1/bn.svg)}.flag-icon-bo{background-image:url(../flags/4x3/bo.svg)}.flag-icon-bo.flag-icon-squared{background-image:url(../flags/1x1/bo.svg)}.flag-icon-bq{background-image:url(../flags/4x3/bq.svg)}.flag-icon-bq.flag-icon-squared{background-image:url(../flags/1x1/bq.svg)}.flag-icon-br{background-image:url(../flags/4x3/br.svg)}.flag-icon-br.flag-icon-squared{background-image:url(../flags/1x1/br.svg)}.flag-icon-bs{background-image:url(../flags/4x3/bs.svg)}.flag-icon-bs.flag-icon-squared{background-image:url(../flags/1x1/bs.svg)}.flag-icon-bt{background-image:url(../flags/4x3/bt.svg)}.flag-icon-bt.flag-icon-squared{background-image:url(../flags/1x1/bt.svg)}.flag-icon-bv{background-image:url(../flags/4x3/bv.svg)}.flag-icon-bv.flag-icon-squared{background-image:url(../flags/1x1/bv.svg)}.flag-icon-bw{background-image:url(../flags/4x3/bw.svg)}.flag-icon-bw.flag-icon-squared{background-image:url(../flags/1x1/bw.svg)}.flag-icon-by{background-image:url(../flags/4x3/by.svg)}.flag-icon-by.flag-icon-squared{background-image:url(../flags/1x1/by.svg)}.flag-icon-bz{background-image:url(../flags/4x3/bz.svg)}.flag-icon-bz.flag-icon-squared{background-image:url(../flags/1x1/bz.svg)}.flag-icon-ca{background-image:url(../flags/4x3/ca.svg)}.flag-icon-ca.flag-icon-squared{background-image:url(../flags/1x1/ca.svg)}.flag-icon-cc{background-image:url(../flags/4x3/cc.svg)}.flag-icon-cc.flag-icon-squared{background-image:url(../flags/1x1/cc.svg)}.flag-icon-cd{background-image:url(../flags/4x3/cd.svg)}.flag-icon-cd.flag-icon-squared{background-image:url(../flags/1x1/cd.svg)}.flag-icon-cf{background-image:url(../flags/4x3/cf.svg)}.flag-icon-cf.flag-icon-squared{background-image:url(../flags/1x1/cf.svg)}.flag-icon-cg{background-image:url(../flags/4x3/cg.svg)}.flag-icon-cg.flag-icon-squared{background-image:url(../flags/1x1/cg.svg)}.flag-icon-ch{background-image:url(../flags/4x3/ch.svg)}.flag-icon-ch.flag-icon-squared{background-image:url(../flags/1x1/ch.svg)}.flag-icon-ci{background-image:url(../flags/4x3/ci.svg)}.flag-icon-ci.flag-icon-squared{background-image:url(../flags/1x1/ci.svg)}.flag-icon-ck{background-image:url(../flags/4x3/ck.svg)}.flag-icon-ck.flag-icon-squared{background-image:url(../flags/1x1/ck.svg)}.flag-icon-cl{background-image:url(../flags/4x3/cl.svg)}.flag-icon-cl.flag-icon-squared{background-image:url(../flags/1x1/cl.svg)}.flag-icon-cm{background-image:url(../flags/4x3/cm.svg)}.flag-icon-cm.flag-icon-squared{background-image:url(../flags/1x1/cm.svg)}.flag-icon-cn{background-image:url(../flags/4x3/cn.svg)}.flag-icon-cn.flag-icon-squared{background-image:url(../flags/1x1/cn.svg)}.flag-icon-co{background-image:url(../flags/4x3/co.svg)}.flag-icon-co.flag-icon-squared{background-image:url(../flags/1x1/co.svg)}.flag-icon-cr{background-image:url(../flags/4x3/cr.svg)}.flag-icon-cr.flag-icon-squared{background-image:url(../flags/1x1/cr.svg)}.flag-icon-cu{background-image:url(../flags/4x3/cu.svg)}.flag-icon-cu.flag-icon-squared{background-image:url(../flags/1x1/cu.svg)}.flag-icon-cv{background-image:url(../flags/4x3/cv.svg)}.flag-icon-cv.flag-icon-squared{background-image:url(../flags/1x1/cv.svg)}.flag-icon-cw{background-image:url(../flags/4x3/cw.svg)}.flag-icon-cw.flag-icon-squared{background-image:url(../flags/1x1/cw.svg)}.flag-icon-cx{background-image:url(../flags/4x3/cx.svg)}.flag-icon-cx.flag-icon-squared{background-image:url(../flags/1x1/cx.svg)}.flag-icon-cy{background-image:url(../flags/4x3/cy.svg)}.flag-icon-cy.flag-icon-squared{background-image:url(../flags/1x1/cy.svg)}.flag-icon-cz{background-image:url(../flags/4x3/cz.svg)}.flag-icon-cz.flag-icon-squared{background-image:url(../flags/1x1/cz.svg)}.flag-icon-de{background-image:url(../flags/4x3/de.svg)}.flag-icon-de.flag-icon-squared{background-image:url(../flags/1x1/de.svg)}.flag-icon-dj{background-image:url(../flags/4x3/dj.svg)}.flag-icon-dj.flag-icon-squared{background-image:url(../flags/1x1/dj.svg)}.flag-icon-dk{background-image:url(../flags/4x3/dk.svg)}.flag-icon-dk.flag-icon-squared{background-image:url(../flags/1x1/dk.svg)}.flag-icon-dm{background-image:url(../flags/4x3/dm.svg)}.flag-icon-dm.flag-icon-squared{background-image:url(../flags/1x1/dm.svg)}.flag-icon-do{background-image:url(../flags/4x3/do.svg)}.flag-icon-do.flag-icon-squared{background-image:url(../flags/1x1/do.svg)}.flag-icon-dz{background-image:url(../flags/4x3/dz.svg)}.flag-icon-dz.flag-icon-squared{background-image:url(../flags/1x1/dz.svg)}.flag-icon-ec{background-image:url(../flags/4x3/ec.svg)}.flag-icon-ec.flag-icon-squared{background-image:url(../flags/1x1/ec.svg)}.flag-icon-ee{background-image:url(../flags/4x3/ee.svg)}.flag-icon-ee.flag-icon-squared{background-image:url(../flags/1x1/ee.svg)}.flag-icon-eg{background-image:url(../flags/4x3/eg.svg)}.flag-icon-eg.flag-icon-squared{background-image:url(../flags/1x1/eg.svg)}.flag-icon-eh{background-image:url(../flags/4x3/eh.svg)}.flag-icon-eh.flag-icon-squared{background-image:url(../flags/1x1/eh.svg)}.flag-icon-er{background-image:url(../flags/4x3/er.svg)}.flag-icon-er.flag-icon-squared{background-image:url(../flags/1x1/er.svg)}.flag-icon-es{background-image:url(../flags/4x3/es.svg)}.flag-icon-es.flag-icon-squared{background-image:url(../flags/1x1/es.svg)}.flag-icon-et{background-image:url(../flags/4x3/et.svg)}.flag-icon-et.flag-icon-squared{background-image:url(../flags/1x1/et.svg)}.flag-icon-fi{background-image:url(../flags/4x3/fi.svg)}.flag-icon-fi.flag-icon-squared{background-image:url(../flags/1x1/fi.svg)}.flag-icon-fj{background-image:url(../flags/4x3/fj.svg)}.flag-icon-fj.flag-icon-squared{background-image:url(../flags/1x1/fj.svg)}.flag-icon-fk{background-image:url(../flags/4x3/fk.svg)}.flag-icon-fk.flag-icon-squared{background-image:url(../flags/1x1/fk.svg)}.flag-icon-fm{background-image:url(../flags/4x3/fm.svg)}.flag-icon-fm.flag-icon-squared{background-image:url(../flags/1x1/fm.svg)}.flag-icon-fo{background-image:url(../flags/4x3/fo.svg)}.flag-icon-fo.flag-icon-squared{background-image:url(../flags/1x1/fo.svg)}.flag-icon-fr{background-image:url(../flags/4x3/fr.svg)}.flag-icon-fr.flag-icon-squared{background-image:url(../flags/1x1/fr.svg)}.flag-icon-ga{background-image:url(../flags/4x3/ga.svg)}.flag-icon-ga.flag-icon-squared{background-image:url(../flags/1x1/ga.svg)}.flag-icon-gb{background-image:url(../flags/4x3/gb.svg)}.flag-icon-gb.flag-icon-squared{background-image:url(../flags/1x1/gb.svg)}.flag-icon-gd{background-image:url(../flags/4x3/gd.svg)}.flag-icon-gd.flag-icon-squared{background-image:url(../flags/1x1/gd.svg)}.flag-icon-ge{background-image:url(../flags/4x3/ge.svg)}.flag-icon-ge.flag-icon-squared{background-image:url(../flags/1x1/ge.svg)}.flag-icon-gf{background-image:url(../flags/4x3/gf.svg)}.flag-icon-gf.flag-icon-squared{background-image:url(../flags/1x1/gf.svg)}.flag-icon-gg{background-image:url(../flags/4x3/gg.svg)}.flag-icon-gg.flag-icon-squared{background-image:url(../flags/1x1/gg.svg)}.flag-icon-gh{background-image:url(../flags/4x3/gh.svg)}.flag-icon-gh.flag-icon-squared{background-image:url(../flags/1x1/gh.svg)}.flag-icon-gi{background-image:url(../flags/4x3/gi.svg)}.flag-icon-gi.flag-icon-squared{background-image:url(../flags/1x1/gi.svg)}.flag-icon-gl{background-image:url(../flags/4x3/gl.svg)}.flag-icon-gl.flag-icon-squared{background-image:url(../flags/1x1/gl.svg)}.flag-icon-gm{background-image:url(../flags/4x3/gm.svg)}.flag-icon-gm.flag-icon-squared{background-image:url(../flags/1x1/gm.svg)}.flag-icon-gn{background-image:url(../flags/4x3/gn.svg)}.flag-icon-gn.flag-icon-squared{background-image:url(../flags/1x1/gn.svg)}.flag-icon-gp{background-image:url(../flags/4x3/gp.svg)}.flag-icon-gp.flag-icon-squared{background-image:url(../flags/1x1/gp.svg)}.flag-icon-gq{background-image:url(../flags/4x3/gq.svg)}.flag-icon-gq.flag-icon-squared{background-image:url(../flags/1x1/gq.svg)}.flag-icon-gr{background-image:url(../flags/4x3/gr.svg)}.flag-icon-gr.flag-icon-squared{background-image:url(../flags/1x1/gr.svg)}.flag-icon-gs{background-image:url(../flags/4x3/gs.svg)}.flag-icon-gs.flag-icon-squared{background-image:url(../flags/1x1/gs.svg)}.flag-icon-gt{background-image:url(../flags/4x3/gt.svg)}.flag-icon-gt.flag-icon-squared{background-image:url(../flags/1x1/gt.svg)}.flag-icon-gu{background-image:url(../flags/4x3/gu.svg)}.flag-icon-gu.flag-icon-squared{background-image:url(../flags/1x1/gu.svg)}.flag-icon-gw{background-image:url(../flags/4x3/gw.svg)}.flag-icon-gw.flag-icon-squared{background-image:url(../flags/1x1/gw.svg)}.flag-icon-gy{background-image:url(../flags/4x3/gy.svg)}.flag-icon-gy.flag-icon-squared{background-image:url(../flags/1x1/gy.svg)}.flag-icon-hk{background-image:url(../flags/4x3/hk.svg)}.flag-icon-hk.flag-icon-squared{background-image:url(../flags/1x1/hk.svg)}.flag-icon-hm{background-image:url(../flags/4x3/hm.svg)}.flag-icon-hm.flag-icon-squared{background-image:url(../flags/1x1/hm.svg)}.flag-icon-hn{background-image:url(../flags/4x3/hn.svg)}.flag-icon-hn.flag-icon-squared{background-image:url(../flags/1x1/hn.svg)}.flag-icon-hr{background-image:url(../flags/4x3/hr.svg)}.flag-icon-hr.flag-icon-squared{background-image:url(../flags/1x1/hr.svg)}.flag-icon-ht{background-image:url(../flags/4x3/ht.svg)}.flag-icon-ht.flag-icon-squared{background-image:url(../flags/1x1/ht.svg)}.flag-icon-hu{background-image:url(../flags/4x3/hu.svg)}.flag-icon-hu.flag-icon-squared{background-image:url(../flags/1x1/hu.svg)}.flag-icon-id{background-image:url(../flags/4x3/id.svg)}.flag-icon-id.flag-icon-squared{background-image:url(../flags/1x1/id.svg)}.flag-icon-ie{background-image:url(../flags/4x3/ie.svg)}.flag-icon-ie.flag-icon-squared{background-image:url(../flags/1x1/ie.svg)}.flag-icon-il{background-image:url(../flags/4x3/il.svg)}.flag-icon-il.flag-icon-squared{background-image:url(../flags/1x1/il.svg)}.flag-icon-im{background-image:url(../flags/4x3/im.svg)}.flag-icon-im.flag-icon-squared{background-image:url(../flags/1x1/im.svg)}.flag-icon-in{background-image:url(../flags/4x3/in.svg)}.flag-icon-in.flag-icon-squared{background-image:url(../flags/1x1/in.svg)}.flag-icon-io{background-image:url(../flags/4x3/io.svg)}.flag-icon-io.flag-icon-squared{background-image:url(../flags/1x1/io.svg)}.flag-icon-iq{background-image:url(../flags/4x3/iq.svg)}.flag-icon-iq.flag-icon-squared{background-image:url(../flags/1x1/iq.svg)}.flag-icon-ir{background-image:url(../flags/4x3/ir.svg)}.flag-icon-ir.flag-icon-squared{background-image:url(../flags/1x1/ir.svg)}.flag-icon-is{background-image:url(../flags/4x3/is.svg)}.flag-icon-is.flag-icon-squared{background-image:url(../flags/1x1/is.svg)}.flag-icon-it{background-image:url(../flags/4x3/it.svg)}.flag-icon-it.flag-icon-squared{background-image:url(../flags/1x1/it.svg)}.flag-icon-je{background-image:url(../flags/4x3/je.svg)}.flag-icon-je.flag-icon-squared{background-image:url(../flags/1x1/je.svg)}.flag-icon-jm{background-image:url(../flags/4x3/jm.svg)}.flag-icon-jm.flag-icon-squared{background-image:url(../flags/1x1/jm.svg)}.flag-icon-jo{background-image:url(../flags/4x3/jo.svg)}.flag-icon-jo.flag-icon-squared{background-image:url(../flags/1x1/jo.svg)}.flag-icon-jp{background-image:url(../flags/4x3/jp.svg)}.flag-icon-jp.flag-icon-squared{background-image:url(../flags/1x1/jp.svg)}.flag-icon-ke{background-image:url(../flags/4x3/ke.svg)}.flag-icon-ke.flag-icon-squared{background-image:url(../flags/1x1/ke.svg)}.flag-icon-kg{background-image:url(../flags/4x3/kg.svg)}.flag-icon-kg.flag-icon-squared{background-image:url(../flags/1x1/kg.svg)}.flag-icon-kh{background-image:url(../flags/4x3/kh.svg)}.flag-icon-kh.flag-icon-squared{background-image:url(../flags/1x1/kh.svg)}.flag-icon-ki{background-image:url(../flags/4x3/ki.svg)}.flag-icon-ki.flag-icon-squared{background-image:url(../flags/1x1/ki.svg)}.flag-icon-km{background-image:url(../flags/4x3/km.svg)}.flag-icon-km.flag-icon-squared{background-image:url(../flags/1x1/km.svg)}.flag-icon-kn{background-image:url(../flags/4x3/kn.svg)}.flag-icon-kn.flag-icon-squared{background-image:url(../flags/1x1/kn.svg)}.flag-icon-kp{background-image:url(../flags/4x3/kp.svg)}.flag-icon-kp.flag-icon-squared{background-image:url(../flags/1x1/kp.svg)}.flag-icon-kr{background-image:url(../flags/4x3/kr.svg)}.flag-icon-kr.flag-icon-squared{background-image:url(../flags/1x1/kr.svg)}.flag-icon-kw{background-image:url(../flags/4x3/kw.svg)}.flag-icon-kw.flag-icon-squared{background-image:url(../flags/1x1/kw.svg)}.flag-icon-ky{background-image:url(../flags/4x3/ky.svg)}.flag-icon-ky.flag-icon-squared{background-image:url(../flags/1x1/ky.svg)}.flag-icon-kz{background-image:url(../flags/4x3/kz.svg)}.flag-icon-kz.flag-icon-squared{background-image:url(../flags/1x1/kz.svg)}.flag-icon-la{background-image:url(../flags/4x3/la.svg)}.flag-icon-la.flag-icon-squared{background-image:url(../flags/1x1/la.svg)}.flag-icon-lb{background-image:url(../flags/4x3/lb.svg)}.flag-icon-lb.flag-icon-squared{background-image:url(../flags/1x1/lb.svg)}.flag-icon-lc{background-image:url(../flags/4x3/lc.svg)}.flag-icon-lc.flag-icon-squared{background-image:url(../flags/1x1/lc.svg)}.flag-icon-li{background-image:url(../flags/4x3/li.svg)}.flag-icon-li.flag-icon-squared{background-image:url(../flags/1x1/li.svg)}.flag-icon-lk{background-image:url(../flags/4x3/lk.svg)}.flag-icon-lk.flag-icon-squared{background-image:url(../flags/1x1/lk.svg)}.flag-icon-lr{background-image:url(../flags/4x3/lr.svg)}.flag-icon-lr.flag-icon-squared{background-image:url(../flags/1x1/lr.svg)}.flag-icon-ls{background-image:url(../flags/4x3/ls.svg)}.flag-icon-ls.flag-icon-squared{background-image:url(../flags/1x1/ls.svg)}.flag-icon-lt{background-image:url(../flags/4x3/lt.svg)}.flag-icon-lt.flag-icon-squared{background-image:url(../flags/1x1/lt.svg)}.flag-icon-lu{background-image:url(../flags/4x3/lu.svg)}.flag-icon-lu.flag-icon-squared{background-image:url(../flags/1x1/lu.svg)}.flag-icon-lv{background-image:url(../flags/4x3/lv.svg)}.flag-icon-lv.flag-icon-squared{background-image:url(../flags/1x1/lv.svg)}.flag-icon-ly{background-image:url(../flags/4x3/ly.svg)}.flag-icon-ly.flag-icon-squared{background-image:url(../flags/1x1/ly.svg)}.flag-icon-ma{background-image:url(../flags/4x3/ma.svg)}.flag-icon-ma.flag-icon-squared{background-image:url(../flags/1x1/ma.svg)}.flag-icon-mc{background-image:url(../flags/4x3/mc.svg)}.flag-icon-mc.flag-icon-squared{background-image:url(../flags/1x1/mc.svg)}.flag-icon-md{background-image:url(../flags/4x3/md.svg)}.flag-icon-md.flag-icon-squared{background-image:url(../flags/1x1/md.svg)}.flag-icon-me{background-image:url(../flags/4x3/me.svg)}.flag-icon-me.flag-icon-squared{background-image:url(../flags/1x1/me.svg)}.flag-icon-mf{background-image:url(../flags/4x3/mf.svg)}.flag-icon-mf.flag-icon-squared{background-image:url(../flags/1x1/mf.svg)}.flag-icon-mg{background-image:url(../flags/4x3/mg.svg)}.flag-icon-mg.flag-icon-squared{background-image:url(../flags/1x1/mg.svg)}.flag-icon-mh{background-image:url(../flags/4x3/mh.svg)}.flag-icon-mh.flag-icon-squared{background-image:url(../flags/1x1/mh.svg)}.flag-icon-mk{background-image:url(../flags/4x3/mk.svg)}.flag-icon-mk.flag-icon-squared{background-image:url(../flags/1x1/mk.svg)}.flag-icon-ml{background-image:url(../flags/4x3/ml.svg)}.flag-icon-ml.flag-icon-squared{background-image:url(../flags/1x1/ml.svg)}.flag-icon-mm{background-image:url(../flags/4x3/mm.svg)}.flag-icon-mm.flag-icon-squared{background-image:url(../flags/1x1/mm.svg)}.flag-icon-mn{background-image:url(../flags/4x3/mn.svg)}.flag-icon-mn.flag-icon-squared{background-image:url(../flags/1x1/mn.svg)}.flag-icon-mo{background-image:url(../flags/4x3/mo.svg)}.flag-icon-mo.flag-icon-squared{background-image:url(../flags/1x1/mo.svg)}.flag-icon-mp{background-image:url(../flags/4x3/mp.svg)}.flag-icon-mp.flag-icon-squared{background-image:url(../flags/1x1/mp.svg)}.flag-icon-mq{background-image:url(../flags/4x3/mq.svg)}.flag-icon-mq.flag-icon-squared{background-image:url(../flags/1x1/mq.svg)}.flag-icon-mr{background-image:url(../flags/4x3/mr.svg)}.flag-icon-mr.flag-icon-squared{background-image:url(../flags/1x1/mr.svg)}.flag-icon-ms{background-image:url(../flags/4x3/ms.svg)}.flag-icon-ms.flag-icon-squared{background-image:url(../flags/1x1/ms.svg)}.flag-icon-mt{background-image:url(../flags/4x3/mt.svg)}.flag-icon-mt.flag-icon-squared{background-image:url(../flags/1x1/mt.svg)}.flag-icon-mu{background-image:url(../flags/4x3/mu.svg)}.flag-icon-mu.flag-icon-squared{background-image:url(../flags/1x1/mu.svg)}.flag-icon-mv{background-image:url(../flags/4x3/mv.svg)}.flag-icon-mv.flag-icon-squared{background-image:url(../flags/1x1/mv.svg)}.flag-icon-mw{background-image:url(../flags/4x3/mw.svg)}.flag-icon-mw.flag-icon-squared{background-image:url(../flags/1x1/mw.svg)}.flag-icon-mx{background-image:url(../flags/4x3/mx.svg)}.flag-icon-mx.flag-icon-squared{background-image:url(../flags/1x1/mx.svg)}.flag-icon-my{background-image:url(../flags/4x3/my.svg)}.flag-icon-my.flag-icon-squared{background-image:url(../flags/1x1/my.svg)}.flag-icon-mz{background-image:url(../flags/4x3/mz.svg)}.flag-icon-mz.flag-icon-squared{background-image:url(../flags/1x1/mz.svg)}.flag-icon-na{background-image:url(../flags/4x3/na.svg)}.flag-icon-na.flag-icon-squared{background-image:url(../flags/1x1/na.svg)}.flag-icon-nc{background-image:url(../flags/4x3/nc.svg)}.flag-icon-nc.flag-icon-squared{background-image:url(../flags/1x1/nc.svg)}.flag-icon-ne{background-image:url(../flags/4x3/ne.svg)}.flag-icon-ne.flag-icon-squared{background-image:url(../flags/1x1/ne.svg)}.flag-icon-nf{background-image:url(../flags/4x3/nf.svg)}.flag-icon-nf.flag-icon-squared{background-image:url(../flags/1x1/nf.svg)}.flag-icon-ng{background-image:url(../flags/4x3/ng.svg)}.flag-icon-ng.flag-icon-squared{background-image:url(../flags/1x1/ng.svg)}.flag-icon-ni{background-image:url(../flags/4x3/ni.svg)}.flag-icon-ni.flag-icon-squared{background-image:url(../flags/1x1/ni.svg)}.flag-icon-nl{background-image:url(../flags/4x3/nl.svg)}.flag-icon-nl.flag-icon-squared{background-image:url(../flags/1x1/nl.svg)}.flag-icon-no{background-image:url(../flags/4x3/no.svg)}.flag-icon-no.flag-icon-squared{background-image:url(../flags/1x1/no.svg)}.flag-icon-np{background-image:url(../flags/4x3/np.svg)}.flag-icon-np.flag-icon-squared{background-image:url(../flags/1x1/np.svg)}.flag-icon-nr{background-image:url(../flags/4x3/nr.svg)}.flag-icon-nr.flag-icon-squared{background-image:url(../flags/1x1/nr.svg)}.flag-icon-nu{background-image:url(../flags/4x3/nu.svg)}.flag-icon-nu.flag-icon-squared{background-image:url(../flags/1x1/nu.svg)}.flag-icon-nz{background-image:url(../flags/4x3/nz.svg)}.flag-icon-nz.flag-icon-squared{background-image:url(../flags/1x1/nz.svg)}.flag-icon-om{background-image:url(../flags/4x3/om.svg)}.flag-icon-om.flag-icon-squared{background-image:url(../flags/1x1/om.svg)}.flag-icon-pa{background-image:url(../flags/4x3/pa.svg)}.flag-icon-pa.flag-icon-squared{background-image:url(../flags/1x1/pa.svg)}.flag-icon-pe{background-image:url(../flags/4x3/pe.svg)}.flag-icon-pe.flag-icon-squared{background-image:url(../flags/1x1/pe.svg)}.flag-icon-pf{background-image:url(../flags/4x3/pf.svg)}.flag-icon-pf.flag-icon-squared{background-image:url(../flags/1x1/pf.svg)}.flag-icon-pg{background-image:url(../flags/4x3/pg.svg)}.flag-icon-pg.flag-icon-squared{background-image:url(../flags/1x1/pg.svg)}.flag-icon-ph{background-image:url(../flags/4x3/ph.svg)}.flag-icon-ph.flag-icon-squared{background-image:url(../flags/1x1/ph.svg)}.flag-icon-pk{background-image:url(../flags/4x3/pk.svg)}.flag-icon-pk.flag-icon-squared{background-image:url(../flags/1x1/pk.svg)}.flag-icon-pl{background-image:url(../flags/4x3/pl.svg)}.flag-icon-pl.flag-icon-squared{background-image:url(../flags/1x1/pl.svg)}.flag-icon-pm{background-image:url(../flags/4x3/pm.svg)}.flag-icon-pm.flag-icon-squared{background-image:url(../flags/1x1/pm.svg)}.flag-icon-pn{background-image:url(../flags/4x3/pn.svg)}.flag-icon-pn.flag-icon-squared{background-image:url(../flags/1x1/pn.svg)}.flag-icon-pr{background-image:url(../flags/4x3/pr.svg)}.flag-icon-pr.flag-icon-squared{background-image:url(../flags/1x1/pr.svg)}.flag-icon-ps{background-image:url(../flags/4x3/ps.svg)}.flag-icon-ps.flag-icon-squared{background-image:url(../flags/1x1/ps.svg)}.flag-icon-pt{background-image:url(../flags/4x3/pt.svg)}.flag-icon-pt.flag-icon-squared{background-image:url(../flags/1x1/pt.svg)}.flag-icon-pw{background-image:url(../flags/4x3/pw.svg)}.flag-icon-pw.flag-icon-squared{background-image:url(../flags/1x1/pw.svg)}.flag-icon-py{background-image:url(../flags/4x3/py.svg)}.flag-icon-py.flag-icon-squared{background-image:url(../flags/1x1/py.svg)}.flag-icon-qa{background-image:url(../flags/4x3/qa.svg)}.flag-icon-qa.flag-icon-squared{background-image:url(../flags/1x1/qa.svg)}.flag-icon-re{background-image:url(../flags/4x3/re.svg)}.flag-icon-re.flag-icon-squared{background-image:url(../flags/1x1/re.svg)}.flag-icon-ro{background-image:url(../flags/4x3/ro.svg)}.flag-icon-ro.flag-icon-squared{background-image:url(../flags/1x1/ro.svg)}.flag-icon-rs{background-image:url(../flags/4x3/rs.svg)}.flag-icon-rs.flag-icon-squared{background-image:url(../flags/1x1/rs.svg)}.flag-icon-ru{background-image:url(../flags/4x3/ru.svg)}.flag-icon-ru.flag-icon-squared{background-image:url(../flags/1x1/ru.svg)}.flag-icon-rw{background-image:url(../flags/4x3/rw.svg)}.flag-icon-rw.flag-icon-squared{background-image:url(../flags/1x1/rw.svg)}.flag-icon-sa{background-image:url(../flags/4x3/sa.svg)}.flag-icon-sa.flag-icon-squared{background-image:url(../flags/1x1/sa.svg)}.flag-icon-sb{background-image:url(../flags/4x3/sb.svg)}.flag-icon-sb.flag-icon-squared{background-image:url(../flags/1x1/sb.svg)}.flag-icon-sc{background-image:url(../flags/4x3/sc.svg)}.flag-icon-sc.flag-icon-squared{background-image:url(../flags/1x1/sc.svg)}.flag-icon-sd{background-image:url(../flags/4x3/sd.svg)}.flag-icon-sd.flag-icon-squared{background-image:url(../flags/1x1/sd.svg)}.flag-icon-se{background-image:url(../flags/4x3/se.svg)}.flag-icon-se.flag-icon-squared{background-image:url(../flags/1x1/se.svg)}.flag-icon-sg{background-image:url(../flags/4x3/sg.svg)}.flag-icon-sg.flag-icon-squared{background-image:url(../flags/1x1/sg.svg)}.flag-icon-sh{background-image:url(../flags/4x3/sh.svg)}.flag-icon-sh.flag-icon-squared{background-image:url(../flags/1x1/sh.svg)}.flag-icon-si{background-image:url(../flags/4x3/si.svg)}.flag-icon-si.flag-icon-squared{background-image:url(../flags/1x1/si.svg)}.flag-icon-sj{background-image:url(../flags/4x3/sj.svg)}.flag-icon-sj.flag-icon-squared{background-image:url(../flags/1x1/sj.svg)}.flag-icon-sk{background-image:url(../flags/4x3/sk.svg)}.flag-icon-sk.flag-icon-squared{background-image:url(../flags/1x1/sk.svg)}.flag-icon-sl{background-image:url(../flags/4x3/sl.svg)}.flag-icon-sl.flag-icon-squared{background-image:url(../flags/1x1/sl.svg)}.flag-icon-sm{background-image:url(../flags/4x3/sm.svg)}.flag-icon-sm.flag-icon-squared{background-image:url(../flags/1x1/sm.svg)}.flag-icon-sn{background-image:url(../flags/4x3/sn.svg)}.flag-icon-sn.flag-icon-squared{background-image:url(../flags/1x1/sn.svg)}.flag-icon-so{background-image:url(../flags/4x3/so.svg)}.flag-icon-so.flag-icon-squared{background-image:url(../flags/1x1/so.svg)}.flag-icon-sr{background-image:url(../flags/4x3/sr.svg)}.flag-icon-sr.flag-icon-squared{background-image:url(../flags/1x1/sr.svg)}.flag-icon-ss{background-image:url(../flags/4x3/ss.svg)}.flag-icon-ss.flag-icon-squared{background-image:url(../flags/1x1/ss.svg)}.flag-icon-st{background-image:url(../flags/4x3/st.svg)}.flag-icon-st.flag-icon-squared{background-image:url(../flags/1x1/st.svg)}.flag-icon-sv{background-image:url(../flags/4x3/sv.svg)}.flag-icon-sv.flag-icon-squared{background-image:url(../flags/1x1/sv.svg)}.flag-icon-sx{background-image:url(../flags/4x3/sx.svg)}.flag-icon-sx.flag-icon-squared{background-image:url(../flags/1x1/sx.svg)}.flag-icon-sy{background-image:url(../flags/4x3/sy.svg)}.flag-icon-sy.flag-icon-squared{background-image:url(../flags/1x1/sy.svg)}.flag-icon-sz{background-image:url(../flags/4x3/sz.svg)}.flag-icon-sz.flag-icon-squared{background-image:url(../flags/1x1/sz.svg)}.flag-icon-tc{background-image:url(../flags/4x3/tc.svg)}.flag-icon-tc.flag-icon-squared{background-image:url(../flags/1x1/tc.svg)}.flag-icon-td{background-image:url(../flags/4x3/td.svg)}.flag-icon-td.flag-icon-squared{background-image:url(../flags/1x1/td.svg)}.flag-icon-tf{background-image:url(../flags/4x3/tf.svg)}.flag-icon-tf.flag-icon-squared{background-image:url(../flags/1x1/tf.svg)}.flag-icon-tg{background-image:url(../flags/4x3/tg.svg)}.flag-icon-tg.flag-icon-squared{background-image:url(../flags/1x1/tg.svg)}.flag-icon-th{background-image:url(../flags/4x3/th.svg)}.flag-icon-th.flag-icon-squared{background-image:url(../flags/1x1/th.svg)}.flag-icon-tj{background-image:url(../flags/4x3/tj.svg)}.flag-icon-tj.flag-icon-squared{background-image:url(../flags/1x1/tj.svg)}.flag-icon-tk{background-image:url(../flags/4x3/tk.svg)}.flag-icon-tk.flag-icon-squared{background-image:url(../flags/1x1/tk.svg)}.flag-icon-tl{background-image:url(../flags/4x3/tl.svg)}.flag-icon-tl.flag-icon-squared{background-image:url(../flags/1x1/tl.svg)}.flag-icon-tm{background-image:url(../flags/4x3/tm.svg)}.flag-icon-tm.flag-icon-squared{background-image:url(../flags/1x1/tm.svg)}.flag-icon-tn{background-image:url(../flags/4x3/tn.svg)}.flag-icon-tn.flag-icon-squared{background-image:url(../flags/1x1/tn.svg)}.flag-icon-to{background-image:url(../flags/4x3/to.svg)}.flag-icon-to.flag-icon-squared{background-image:url(../flags/1x1/to.svg)}.flag-icon-tr{background-image:url(../flags/4x3/tr.svg)}.flag-icon-tr.flag-icon-squared{background-image:url(../flags/1x1/tr.svg)}.flag-icon-tt{background-image:url(../flags/4x3/tt.svg)}.flag-icon-tt.flag-icon-squared{background-image:url(../flags/1x1/tt.svg)}.flag-icon-tv{background-image:url(../flags/4x3/tv.svg)}.flag-icon-tv.flag-icon-squared{background-image:url(../flags/1x1/tv.svg)}.flag-icon-tw{background-image:url(../flags/4x3/tw.svg)}.flag-icon-tw.flag-icon-squared{background-image:url(../flags/1x1/tw.svg)}.flag-icon-tz{background-image:url(../flags/4x3/tz.svg)}.flag-icon-tz.flag-icon-squared{background-image:url(../flags/1x1/tz.svg)}.flag-icon-ua{background-image:url(../flags/4x3/ua.svg)}.flag-icon-ua.flag-icon-squared{background-image:url(../flags/1x1/ua.svg)}.flag-icon-ug{background-image:url(../flags/4x3/ug.svg)}.flag-icon-ug.flag-icon-squared{background-image:url(../flags/1x1/ug.svg)}.flag-icon-um{background-image:url(../flags/4x3/um.svg)}.flag-icon-um.flag-icon-squared{background-image:url(../flags/1x1/um.svg)}.flag-icon-us{background-image:url(../flags/4x3/us.svg)}.flag-icon-us.flag-icon-squared{background-image:url(../flags/1x1/us.svg)}.flag-icon-uy{background-image:url(../flags/4x3/uy.svg)}.flag-icon-uy.flag-icon-squared{background-image:url(../flags/1x1/uy.svg)}.flag-icon-uz{background-image:url(../flags/4x3/uz.svg)}.flag-icon-uz.flag-icon-squared{background-image:url(../flags/1x1/uz.svg)}.flag-icon-va{background-image:url(../flags/4x3/va.svg)}.flag-icon-va.flag-icon-squared{background-image:url(../flags/1x1/va.svg)}.flag-icon-vc{background-image:url(../flags/4x3/vc.svg)}.flag-icon-vc.flag-icon-squared{background-image:url(../flags/1x1/vc.svg)}.flag-icon-ve{background-image:url(../flags/4x3/ve.svg)}.flag-icon-ve.flag-icon-squared{background-image:url(../flags/1x1/ve.svg)}.flag-icon-vg{background-image:url(../flags/4x3/vg.svg)}.flag-icon-vg.flag-icon-squared{background-image:url(../flags/1x1/vg.svg)}.flag-icon-vi{background-image:url(../flags/4x3/vi.svg)}.flag-icon-vi.flag-icon-squared{background-image:url(../flags/1x1/vi.svg)}.flag-icon-vn{background-image:url(../flags/4x3/vn.svg)}.flag-icon-vn.flag-icon-squared{background-image:url(../flags/1x1/vn.svg)}.flag-icon-vu{background-image:url(../flags/4x3/vu.svg)}.flag-icon-vu.flag-icon-squared{background-image:url(../flags/1x1/vu.svg)}.flag-icon-wf{background-image:url(../flags/4x3/wf.svg)}.flag-icon-wf.flag-icon-squared{background-image:url(../flags/1x1/wf.svg)}.flag-icon-ws{background-image:url(../flags/4x3/ws.svg)}.flag-icon-ws.flag-icon-squared{background-image:url(../flags/1x1/ws.svg)}.flag-icon-ye{background-image:url(../flags/4x3/ye.svg)}.flag-icon-ye.flag-icon-squared{background-image:url(../flags/1x1/ye.svg)}.flag-icon-yt{background-image:url(../flags/4x3/yt.svg)}.flag-icon-yt.flag-icon-squared{background-image:url(../flags/1x1/yt.svg)}.flag-icon-za{background-image:url(../flags/4x3/za.svg)}.flag-icon-za.flag-icon-squared{background-image:url(../flags/1x1/za.svg)}.flag-icon-zm{background-image:url(../flags/4x3/zm.svg)}.flag-icon-zm.flag-icon-squared{background-image:url(../flags/1x1/zm.svg)}.flag-icon-zw{background-image:url(../flags/4x3/zw.svg)}.flag-icon-zw.flag-icon-squared{background-image:url(../flags/1x1/zw.svg)}.flag-icon-es-ct{background-image:url(../flags/4x3/es-ct.svg)}.flag-icon-es-ct.flag-icon-squared{background-image:url(../flags/1x1/es-ct.svg)}.flag-icon-eu{background-image:url(../flags/4x3/eu.svg)}.flag-icon-eu.flag-icon-squared{background-image:url(../flags/1x1/eu.svg)}.flag-icon-gb-eng{background-image:url(../flags/4x3/gb-eng.svg)}.flag-icon-gb-eng.flag-icon-squared{background-image:url(../flags/1x1/gb-eng.svg)}.flag-icon-gb-nir{background-image:url(../flags/4x3/gb-nir.svg)}.flag-icon-gb-nir.flag-icon-squared{background-image:url(../flags/1x1/gb-nir.svg)}.flag-icon-gb-sct{background-image:url(../flags/4x3/gb-sct.svg)}.flag-icon-gb-sct.flag-icon-squared{background-image:url(../flags/1x1/gb-sct.svg)}.flag-icon-gb-wls{background-image:url(../flags/4x3/gb-wls.svg)}.flag-icon-gb-wls.flag-icon-squared{background-image:url(../flags/1x1/gb-wls.svg)}.flag-icon-un{background-image:url(../flags/4x3/un.svg)}.flag-icon-un.flag-icon-squared{background-image:url(../flags/1x1/un.svg)}.flag-icon-xk{background-image:url(../flags/4x3/xk.svg)}.flag-icon-xk.flag-icon-squared{background-image:url(../flags/1x1/xk.svg)}.loader-container{top:0;left:0;width:100%;height:100%;position:fixed;background-color:#000;opacity:.2;z-index:9999}#loader{position:absolute;left:50%;top:50%;z-index:1;margin:-75px 0 0 -75px;border:16px solid #f3f3f3;border-radius:50%;border-top:16px solid #3498db;width:120px;height:120px;-webkit-animation:spin 2s linear infinite;animation:spin 2s linear infinite}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0)}100%{-webkit-transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.modal-open{overflow:hidden;padding-right:0!important}/*! +/* Wed Feb 24 2021 09:23:11 GMT+0700 (Indochina Time) */.flag-icon,.flag-icon-background{background-size:contain;background-position:50%;background-repeat:no-repeat}.fa,.fab,.fad,.fal,.far,.fas,.mi{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-style:normal;font-variant:normal;text-rendering:auto}.fa-ul,.mi-ul{list-style-type:none}.fa-fw,.fa-li,.mi-fw,.mi-li,.mi-stack-1x,.mi-stack-2x{text-align:center}.fa-inverse,.mi-inverse{color:#fff}.flag-icon{position:relative;display:inline-block;width:1.33333333em;line-height:1em}.flag-icon:before{content:"\00a0"}.flag-icon.flag-icon-squared{width:1em}.flag-icon-ad{background-image:url(../flags/4x3/ad.svg)}.flag-icon-ad.flag-icon-squared{background-image:url(../flags/1x1/ad.svg)}.flag-icon-ae{background-image:url(../flags/4x3/ae.svg)}.flag-icon-ae.flag-icon-squared{background-image:url(../flags/1x1/ae.svg)}.flag-icon-af{background-image:url(../flags/4x3/af.svg)}.flag-icon-af.flag-icon-squared{background-image:url(../flags/1x1/af.svg)}.flag-icon-ag{background-image:url(../flags/4x3/ag.svg)}.flag-icon-ag.flag-icon-squared{background-image:url(../flags/1x1/ag.svg)}.flag-icon-ai{background-image:url(../flags/4x3/ai.svg)}.flag-icon-ai.flag-icon-squared{background-image:url(../flags/1x1/ai.svg)}.flag-icon-al{background-image:url(../flags/4x3/al.svg)}.flag-icon-al.flag-icon-squared{background-image:url(../flags/1x1/al.svg)}.flag-icon-am{background-image:url(../flags/4x3/am.svg)}.flag-icon-am.flag-icon-squared{background-image:url(../flags/1x1/am.svg)}.flag-icon-ao{background-image:url(../flags/4x3/ao.svg)}.flag-icon-ao.flag-icon-squared{background-image:url(../flags/1x1/ao.svg)}.flag-icon-aq{background-image:url(../flags/4x3/aq.svg)}.flag-icon-aq.flag-icon-squared{background-image:url(../flags/1x1/aq.svg)}.flag-icon-ar{background-image:url(../flags/4x3/ar.svg)}.flag-icon-ar.flag-icon-squared{background-image:url(../flags/1x1/ar.svg)}.flag-icon-as{background-image:url(../flags/4x3/as.svg)}.flag-icon-as.flag-icon-squared{background-image:url(../flags/1x1/as.svg)}.flag-icon-at{background-image:url(../flags/4x3/at.svg)}.flag-icon-at.flag-icon-squared{background-image:url(../flags/1x1/at.svg)}.flag-icon-au{background-image:url(../flags/4x3/au.svg)}.flag-icon-au.flag-icon-squared{background-image:url(../flags/1x1/au.svg)}.flag-icon-aw{background-image:url(../flags/4x3/aw.svg)}.flag-icon-aw.flag-icon-squared{background-image:url(../flags/1x1/aw.svg)}.flag-icon-ax{background-image:url(../flags/4x3/ax.svg)}.flag-icon-ax.flag-icon-squared{background-image:url(../flags/1x1/ax.svg)}.flag-icon-az{background-image:url(../flags/4x3/az.svg)}.flag-icon-az.flag-icon-squared{background-image:url(../flags/1x1/az.svg)}.flag-icon-ba{background-image:url(../flags/4x3/ba.svg)}.flag-icon-ba.flag-icon-squared{background-image:url(../flags/1x1/ba.svg)}.flag-icon-bb{background-image:url(../flags/4x3/bb.svg)}.flag-icon-bb.flag-icon-squared{background-image:url(../flags/1x1/bb.svg)}.flag-icon-bd{background-image:url(../flags/4x3/bd.svg)}.flag-icon-bd.flag-icon-squared{background-image:url(../flags/1x1/bd.svg)}.flag-icon-be{background-image:url(../flags/4x3/be.svg)}.flag-icon-be.flag-icon-squared{background-image:url(../flags/1x1/be.svg)}.flag-icon-bf{background-image:url(../flags/4x3/bf.svg)}.flag-icon-bf.flag-icon-squared{background-image:url(../flags/1x1/bf.svg)}.flag-icon-bg{background-image:url(../flags/4x3/bg.svg)}.flag-icon-bg.flag-icon-squared{background-image:url(../flags/1x1/bg.svg)}.flag-icon-bh{background-image:url(../flags/4x3/bh.svg)}.flag-icon-bh.flag-icon-squared{background-image:url(../flags/1x1/bh.svg)}.flag-icon-bi{background-image:url(../flags/4x3/bi.svg)}.flag-icon-bi.flag-icon-squared{background-image:url(../flags/1x1/bi.svg)}.flag-icon-bj{background-image:url(../flags/4x3/bj.svg)}.flag-icon-bj.flag-icon-squared{background-image:url(../flags/1x1/bj.svg)}.flag-icon-bl{background-image:url(../flags/4x3/bl.svg)}.flag-icon-bl.flag-icon-squared{background-image:url(../flags/1x1/bl.svg)}.flag-icon-bm{background-image:url(../flags/4x3/bm.svg)}.flag-icon-bm.flag-icon-squared{background-image:url(../flags/1x1/bm.svg)}.flag-icon-bn{background-image:url(../flags/4x3/bn.svg)}.flag-icon-bn.flag-icon-squared{background-image:url(../flags/1x1/bn.svg)}.flag-icon-bo{background-image:url(../flags/4x3/bo.svg)}.flag-icon-bo.flag-icon-squared{background-image:url(../flags/1x1/bo.svg)}.flag-icon-bq{background-image:url(../flags/4x3/bq.svg)}.flag-icon-bq.flag-icon-squared{background-image:url(../flags/1x1/bq.svg)}.flag-icon-br{background-image:url(../flags/4x3/br.svg)}.flag-icon-br.flag-icon-squared{background-image:url(../flags/1x1/br.svg)}.flag-icon-bs{background-image:url(../flags/4x3/bs.svg)}.flag-icon-bs.flag-icon-squared{background-image:url(../flags/1x1/bs.svg)}.flag-icon-bt{background-image:url(../flags/4x3/bt.svg)}.flag-icon-bt.flag-icon-squared{background-image:url(../flags/1x1/bt.svg)}.flag-icon-bv{background-image:url(../flags/4x3/bv.svg)}.flag-icon-bv.flag-icon-squared{background-image:url(../flags/1x1/bv.svg)}.flag-icon-bw{background-image:url(../flags/4x3/bw.svg)}.flag-icon-bw.flag-icon-squared{background-image:url(../flags/1x1/bw.svg)}.flag-icon-by{background-image:url(../flags/4x3/by.svg)}.flag-icon-by.flag-icon-squared{background-image:url(../flags/1x1/by.svg)}.flag-icon-bz{background-image:url(../flags/4x3/bz.svg)}.flag-icon-bz.flag-icon-squared{background-image:url(../flags/1x1/bz.svg)}.flag-icon-ca{background-image:url(../flags/4x3/ca.svg)}.flag-icon-ca.flag-icon-squared{background-image:url(../flags/1x1/ca.svg)}.flag-icon-cc{background-image:url(../flags/4x3/cc.svg)}.flag-icon-cc.flag-icon-squared{background-image:url(../flags/1x1/cc.svg)}.flag-icon-cd{background-image:url(../flags/4x3/cd.svg)}.flag-icon-cd.flag-icon-squared{background-image:url(../flags/1x1/cd.svg)}.flag-icon-cf{background-image:url(../flags/4x3/cf.svg)}.flag-icon-cf.flag-icon-squared{background-image:url(../flags/1x1/cf.svg)}.flag-icon-cg{background-image:url(../flags/4x3/cg.svg)}.flag-icon-cg.flag-icon-squared{background-image:url(../flags/1x1/cg.svg)}.flag-icon-ch{background-image:url(../flags/4x3/ch.svg)}.flag-icon-ch.flag-icon-squared{background-image:url(../flags/1x1/ch.svg)}.flag-icon-ci{background-image:url(../flags/4x3/ci.svg)}.flag-icon-ci.flag-icon-squared{background-image:url(../flags/1x1/ci.svg)}.flag-icon-ck{background-image:url(../flags/4x3/ck.svg)}.flag-icon-ck.flag-icon-squared{background-image:url(../flags/1x1/ck.svg)}.flag-icon-cl{background-image:url(../flags/4x3/cl.svg)}.flag-icon-cl.flag-icon-squared{background-image:url(../flags/1x1/cl.svg)}.flag-icon-cm{background-image:url(../flags/4x3/cm.svg)}.flag-icon-cm.flag-icon-squared{background-image:url(../flags/1x1/cm.svg)}.flag-icon-cn{background-image:url(../flags/4x3/cn.svg)}.flag-icon-cn.flag-icon-squared{background-image:url(../flags/1x1/cn.svg)}.flag-icon-co{background-image:url(../flags/4x3/co.svg)}.flag-icon-co.flag-icon-squared{background-image:url(../flags/1x1/co.svg)}.flag-icon-cr{background-image:url(../flags/4x3/cr.svg)}.flag-icon-cr.flag-icon-squared{background-image:url(../flags/1x1/cr.svg)}.flag-icon-cu{background-image:url(../flags/4x3/cu.svg)}.flag-icon-cu.flag-icon-squared{background-image:url(../flags/1x1/cu.svg)}.flag-icon-cv{background-image:url(../flags/4x3/cv.svg)}.flag-icon-cv.flag-icon-squared{background-image:url(../flags/1x1/cv.svg)}.flag-icon-cw{background-image:url(../flags/4x3/cw.svg)}.flag-icon-cw.flag-icon-squared{background-image:url(../flags/1x1/cw.svg)}.flag-icon-cx{background-image:url(../flags/4x3/cx.svg)}.flag-icon-cx.flag-icon-squared{background-image:url(../flags/1x1/cx.svg)}.flag-icon-cy{background-image:url(../flags/4x3/cy.svg)}.flag-icon-cy.flag-icon-squared{background-image:url(../flags/1x1/cy.svg)}.flag-icon-cz{background-image:url(../flags/4x3/cz.svg)}.flag-icon-cz.flag-icon-squared{background-image:url(../flags/1x1/cz.svg)}.flag-icon-de{background-image:url(../flags/4x3/de.svg)}.flag-icon-de.flag-icon-squared{background-image:url(../flags/1x1/de.svg)}.flag-icon-dj{background-image:url(../flags/4x3/dj.svg)}.flag-icon-dj.flag-icon-squared{background-image:url(../flags/1x1/dj.svg)}.flag-icon-dk{background-image:url(../flags/4x3/dk.svg)}.flag-icon-dk.flag-icon-squared{background-image:url(../flags/1x1/dk.svg)}.flag-icon-dm{background-image:url(../flags/4x3/dm.svg)}.flag-icon-dm.flag-icon-squared{background-image:url(../flags/1x1/dm.svg)}.flag-icon-do{background-image:url(../flags/4x3/do.svg)}.flag-icon-do.flag-icon-squared{background-image:url(../flags/1x1/do.svg)}.flag-icon-dz{background-image:url(../flags/4x3/dz.svg)}.flag-icon-dz.flag-icon-squared{background-image:url(../flags/1x1/dz.svg)}.flag-icon-ec{background-image:url(../flags/4x3/ec.svg)}.flag-icon-ec.flag-icon-squared{background-image:url(../flags/1x1/ec.svg)}.flag-icon-ee{background-image:url(../flags/4x3/ee.svg)}.flag-icon-ee.flag-icon-squared{background-image:url(../flags/1x1/ee.svg)}.flag-icon-eg{background-image:url(../flags/4x3/eg.svg)}.flag-icon-eg.flag-icon-squared{background-image:url(../flags/1x1/eg.svg)}.flag-icon-eh{background-image:url(../flags/4x3/eh.svg)}.flag-icon-eh.flag-icon-squared{background-image:url(../flags/1x1/eh.svg)}.flag-icon-er{background-image:url(../flags/4x3/er.svg)}.flag-icon-er.flag-icon-squared{background-image:url(../flags/1x1/er.svg)}.flag-icon-es{background-image:url(../flags/4x3/es.svg)}.flag-icon-es.flag-icon-squared{background-image:url(../flags/1x1/es.svg)}.flag-icon-et{background-image:url(../flags/4x3/et.svg)}.flag-icon-et.flag-icon-squared{background-image:url(../flags/1x1/et.svg)}.flag-icon-fi{background-image:url(../flags/4x3/fi.svg)}.flag-icon-fi.flag-icon-squared{background-image:url(../flags/1x1/fi.svg)}.flag-icon-fj{background-image:url(../flags/4x3/fj.svg)}.flag-icon-fj.flag-icon-squared{background-image:url(../flags/1x1/fj.svg)}.flag-icon-fk{background-image:url(../flags/4x3/fk.svg)}.flag-icon-fk.flag-icon-squared{background-image:url(../flags/1x1/fk.svg)}.flag-icon-fm{background-image:url(../flags/4x3/fm.svg)}.flag-icon-fm.flag-icon-squared{background-image:url(../flags/1x1/fm.svg)}.flag-icon-fo{background-image:url(../flags/4x3/fo.svg)}.flag-icon-fo.flag-icon-squared{background-image:url(../flags/1x1/fo.svg)}.flag-icon-fr{background-image:url(../flags/4x3/fr.svg)}.flag-icon-fr.flag-icon-squared{background-image:url(../flags/1x1/fr.svg)}.flag-icon-ga{background-image:url(../flags/4x3/ga.svg)}.flag-icon-ga.flag-icon-squared{background-image:url(../flags/1x1/ga.svg)}.flag-icon-gb{background-image:url(../flags/4x3/gb.svg)}.flag-icon-gb.flag-icon-squared{background-image:url(../flags/1x1/gb.svg)}.flag-icon-gd{background-image:url(../flags/4x3/gd.svg)}.flag-icon-gd.flag-icon-squared{background-image:url(../flags/1x1/gd.svg)}.flag-icon-ge{background-image:url(../flags/4x3/ge.svg)}.flag-icon-ge.flag-icon-squared{background-image:url(../flags/1x1/ge.svg)}.flag-icon-gf{background-image:url(../flags/4x3/gf.svg)}.flag-icon-gf.flag-icon-squared{background-image:url(../flags/1x1/gf.svg)}.flag-icon-gg{background-image:url(../flags/4x3/gg.svg)}.flag-icon-gg.flag-icon-squared{background-image:url(../flags/1x1/gg.svg)}.flag-icon-gh{background-image:url(../flags/4x3/gh.svg)}.flag-icon-gh.flag-icon-squared{background-image:url(../flags/1x1/gh.svg)}.flag-icon-gi{background-image:url(../flags/4x3/gi.svg)}.flag-icon-gi.flag-icon-squared{background-image:url(../flags/1x1/gi.svg)}.flag-icon-gl{background-image:url(../flags/4x3/gl.svg)}.flag-icon-gl.flag-icon-squared{background-image:url(../flags/1x1/gl.svg)}.flag-icon-gm{background-image:url(../flags/4x3/gm.svg)}.flag-icon-gm.flag-icon-squared{background-image:url(../flags/1x1/gm.svg)}.flag-icon-gn{background-image:url(../flags/4x3/gn.svg)}.flag-icon-gn.flag-icon-squared{background-image:url(../flags/1x1/gn.svg)}.flag-icon-gp{background-image:url(../flags/4x3/gp.svg)}.flag-icon-gp.flag-icon-squared{background-image:url(../flags/1x1/gp.svg)}.flag-icon-gq{background-image:url(../flags/4x3/gq.svg)}.flag-icon-gq.flag-icon-squared{background-image:url(../flags/1x1/gq.svg)}.flag-icon-gr{background-image:url(../flags/4x3/gr.svg)}.flag-icon-gr.flag-icon-squared{background-image:url(../flags/1x1/gr.svg)}.flag-icon-gs{background-image:url(../flags/4x3/gs.svg)}.flag-icon-gs.flag-icon-squared{background-image:url(../flags/1x1/gs.svg)}.flag-icon-gt{background-image:url(../flags/4x3/gt.svg)}.flag-icon-gt.flag-icon-squared{background-image:url(../flags/1x1/gt.svg)}.flag-icon-gu{background-image:url(../flags/4x3/gu.svg)}.flag-icon-gu.flag-icon-squared{background-image:url(../flags/1x1/gu.svg)}.flag-icon-gw{background-image:url(../flags/4x3/gw.svg)}.flag-icon-gw.flag-icon-squared{background-image:url(../flags/1x1/gw.svg)}.flag-icon-gy{background-image:url(../flags/4x3/gy.svg)}.flag-icon-gy.flag-icon-squared{background-image:url(../flags/1x1/gy.svg)}.flag-icon-hk{background-image:url(../flags/4x3/hk.svg)}.flag-icon-hk.flag-icon-squared{background-image:url(../flags/1x1/hk.svg)}.flag-icon-hm{background-image:url(../flags/4x3/hm.svg)}.flag-icon-hm.flag-icon-squared{background-image:url(../flags/1x1/hm.svg)}.flag-icon-hn{background-image:url(../flags/4x3/hn.svg)}.flag-icon-hn.flag-icon-squared{background-image:url(../flags/1x1/hn.svg)}.flag-icon-hr{background-image:url(../flags/4x3/hr.svg)}.flag-icon-hr.flag-icon-squared{background-image:url(../flags/1x1/hr.svg)}.flag-icon-ht{background-image:url(../flags/4x3/ht.svg)}.flag-icon-ht.flag-icon-squared{background-image:url(../flags/1x1/ht.svg)}.flag-icon-hu{background-image:url(../flags/4x3/hu.svg)}.flag-icon-hu.flag-icon-squared{background-image:url(../flags/1x1/hu.svg)}.flag-icon-id{background-image:url(../flags/4x3/id.svg)}.flag-icon-id.flag-icon-squared{background-image:url(../flags/1x1/id.svg)}.flag-icon-ie{background-image:url(../flags/4x3/ie.svg)}.flag-icon-ie.flag-icon-squared{background-image:url(../flags/1x1/ie.svg)}.flag-icon-il{background-image:url(../flags/4x3/il.svg)}.flag-icon-il.flag-icon-squared{background-image:url(../flags/1x1/il.svg)}.flag-icon-im{background-image:url(../flags/4x3/im.svg)}.flag-icon-im.flag-icon-squared{background-image:url(../flags/1x1/im.svg)}.flag-icon-in{background-image:url(../flags/4x3/in.svg)}.flag-icon-in.flag-icon-squared{background-image:url(../flags/1x1/in.svg)}.flag-icon-io{background-image:url(../flags/4x3/io.svg)}.flag-icon-io.flag-icon-squared{background-image:url(../flags/1x1/io.svg)}.flag-icon-iq{background-image:url(../flags/4x3/iq.svg)}.flag-icon-iq.flag-icon-squared{background-image:url(../flags/1x1/iq.svg)}.flag-icon-ir{background-image:url(../flags/4x3/ir.svg)}.flag-icon-ir.flag-icon-squared{background-image:url(../flags/1x1/ir.svg)}.flag-icon-is{background-image:url(../flags/4x3/is.svg)}.flag-icon-is.flag-icon-squared{background-image:url(../flags/1x1/is.svg)}.flag-icon-it{background-image:url(../flags/4x3/it.svg)}.flag-icon-it.flag-icon-squared{background-image:url(../flags/1x1/it.svg)}.flag-icon-je{background-image:url(../flags/4x3/je.svg)}.flag-icon-je.flag-icon-squared{background-image:url(../flags/1x1/je.svg)}.flag-icon-jm{background-image:url(../flags/4x3/jm.svg)}.flag-icon-jm.flag-icon-squared{background-image:url(../flags/1x1/jm.svg)}.flag-icon-jo{background-image:url(../flags/4x3/jo.svg)}.flag-icon-jo.flag-icon-squared{background-image:url(../flags/1x1/jo.svg)}.flag-icon-jp{background-image:url(../flags/4x3/jp.svg)}.flag-icon-jp.flag-icon-squared{background-image:url(../flags/1x1/jp.svg)}.flag-icon-ke{background-image:url(../flags/4x3/ke.svg)}.flag-icon-ke.flag-icon-squared{background-image:url(../flags/1x1/ke.svg)}.flag-icon-kg{background-image:url(../flags/4x3/kg.svg)}.flag-icon-kg.flag-icon-squared{background-image:url(../flags/1x1/kg.svg)}.flag-icon-kh{background-image:url(../flags/4x3/kh.svg)}.flag-icon-kh.flag-icon-squared{background-image:url(../flags/1x1/kh.svg)}.flag-icon-ki{background-image:url(../flags/4x3/ki.svg)}.flag-icon-ki.flag-icon-squared{background-image:url(../flags/1x1/ki.svg)}.flag-icon-km{background-image:url(../flags/4x3/km.svg)}.flag-icon-km.flag-icon-squared{background-image:url(../flags/1x1/km.svg)}.flag-icon-kn{background-image:url(../flags/4x3/kn.svg)}.flag-icon-kn.flag-icon-squared{background-image:url(../flags/1x1/kn.svg)}.flag-icon-kp{background-image:url(../flags/4x3/kp.svg)}.flag-icon-kp.flag-icon-squared{background-image:url(../flags/1x1/kp.svg)}.flag-icon-kr{background-image:url(../flags/4x3/kr.svg)}.flag-icon-kr.flag-icon-squared{background-image:url(../flags/1x1/kr.svg)}.flag-icon-kw{background-image:url(../flags/4x3/kw.svg)}.flag-icon-kw.flag-icon-squared{background-image:url(../flags/1x1/kw.svg)}.flag-icon-ky{background-image:url(../flags/4x3/ky.svg)}.flag-icon-ky.flag-icon-squared{background-image:url(../flags/1x1/ky.svg)}.flag-icon-kz{background-image:url(../flags/4x3/kz.svg)}.flag-icon-kz.flag-icon-squared{background-image:url(../flags/1x1/kz.svg)}.flag-icon-la{background-image:url(../flags/4x3/la.svg)}.flag-icon-la.flag-icon-squared{background-image:url(../flags/1x1/la.svg)}.flag-icon-lb{background-image:url(../flags/4x3/lb.svg)}.flag-icon-lb.flag-icon-squared{background-image:url(../flags/1x1/lb.svg)}.flag-icon-lc{background-image:url(../flags/4x3/lc.svg)}.flag-icon-lc.flag-icon-squared{background-image:url(../flags/1x1/lc.svg)}.flag-icon-li{background-image:url(../flags/4x3/li.svg)}.flag-icon-li.flag-icon-squared{background-image:url(../flags/1x1/li.svg)}.flag-icon-lk{background-image:url(../flags/4x3/lk.svg)}.flag-icon-lk.flag-icon-squared{background-image:url(../flags/1x1/lk.svg)}.flag-icon-lr{background-image:url(../flags/4x3/lr.svg)}.flag-icon-lr.flag-icon-squared{background-image:url(../flags/1x1/lr.svg)}.flag-icon-ls{background-image:url(../flags/4x3/ls.svg)}.flag-icon-ls.flag-icon-squared{background-image:url(../flags/1x1/ls.svg)}.flag-icon-lt{background-image:url(../flags/4x3/lt.svg)}.flag-icon-lt.flag-icon-squared{background-image:url(../flags/1x1/lt.svg)}.flag-icon-lu{background-image:url(../flags/4x3/lu.svg)}.flag-icon-lu.flag-icon-squared{background-image:url(../flags/1x1/lu.svg)}.flag-icon-lv{background-image:url(../flags/4x3/lv.svg)}.flag-icon-lv.flag-icon-squared{background-image:url(../flags/1x1/lv.svg)}.flag-icon-ly{background-image:url(../flags/4x3/ly.svg)}.flag-icon-ly.flag-icon-squared{background-image:url(../flags/1x1/ly.svg)}.flag-icon-ma{background-image:url(../flags/4x3/ma.svg)}.flag-icon-ma.flag-icon-squared{background-image:url(../flags/1x1/ma.svg)}.flag-icon-mc{background-image:url(../flags/4x3/mc.svg)}.flag-icon-mc.flag-icon-squared{background-image:url(../flags/1x1/mc.svg)}.flag-icon-md{background-image:url(../flags/4x3/md.svg)}.flag-icon-md.flag-icon-squared{background-image:url(../flags/1x1/md.svg)}.flag-icon-me{background-image:url(../flags/4x3/me.svg)}.flag-icon-me.flag-icon-squared{background-image:url(../flags/1x1/me.svg)}.flag-icon-mf{background-image:url(../flags/4x3/mf.svg)}.flag-icon-mf.flag-icon-squared{background-image:url(../flags/1x1/mf.svg)}.flag-icon-mg{background-image:url(../flags/4x3/mg.svg)}.flag-icon-mg.flag-icon-squared{background-image:url(../flags/1x1/mg.svg)}.flag-icon-mh{background-image:url(../flags/4x3/mh.svg)}.flag-icon-mh.flag-icon-squared{background-image:url(../flags/1x1/mh.svg)}.flag-icon-mk{background-image:url(../flags/4x3/mk.svg)}.flag-icon-mk.flag-icon-squared{background-image:url(../flags/1x1/mk.svg)}.flag-icon-ml{background-image:url(../flags/4x3/ml.svg)}.flag-icon-ml.flag-icon-squared{background-image:url(../flags/1x1/ml.svg)}.flag-icon-mm{background-image:url(../flags/4x3/mm.svg)}.flag-icon-mm.flag-icon-squared{background-image:url(../flags/1x1/mm.svg)}.flag-icon-mn{background-image:url(../flags/4x3/mn.svg)}.flag-icon-mn.flag-icon-squared{background-image:url(../flags/1x1/mn.svg)}.flag-icon-mo{background-image:url(../flags/4x3/mo.svg)}.flag-icon-mo.flag-icon-squared{background-image:url(../flags/1x1/mo.svg)}.flag-icon-mp{background-image:url(../flags/4x3/mp.svg)}.flag-icon-mp.flag-icon-squared{background-image:url(../flags/1x1/mp.svg)}.flag-icon-mq{background-image:url(../flags/4x3/mq.svg)}.flag-icon-mq.flag-icon-squared{background-image:url(../flags/1x1/mq.svg)}.flag-icon-mr{background-image:url(../flags/4x3/mr.svg)}.flag-icon-mr.flag-icon-squared{background-image:url(../flags/1x1/mr.svg)}.flag-icon-ms{background-image:url(../flags/4x3/ms.svg)}.flag-icon-ms.flag-icon-squared{background-image:url(../flags/1x1/ms.svg)}.flag-icon-mt{background-image:url(../flags/4x3/mt.svg)}.flag-icon-mt.flag-icon-squared{background-image:url(../flags/1x1/mt.svg)}.flag-icon-mu{background-image:url(../flags/4x3/mu.svg)}.flag-icon-mu.flag-icon-squared{background-image:url(../flags/1x1/mu.svg)}.flag-icon-mv{background-image:url(../flags/4x3/mv.svg)}.flag-icon-mv.flag-icon-squared{background-image:url(../flags/1x1/mv.svg)}.flag-icon-mw{background-image:url(../flags/4x3/mw.svg)}.flag-icon-mw.flag-icon-squared{background-image:url(../flags/1x1/mw.svg)}.flag-icon-mx{background-image:url(../flags/4x3/mx.svg)}.flag-icon-mx.flag-icon-squared{background-image:url(../flags/1x1/mx.svg)}.flag-icon-my{background-image:url(../flags/4x3/my.svg)}.flag-icon-my.flag-icon-squared{background-image:url(../flags/1x1/my.svg)}.flag-icon-mz{background-image:url(../flags/4x3/mz.svg)}.flag-icon-mz.flag-icon-squared{background-image:url(../flags/1x1/mz.svg)}.flag-icon-na{background-image:url(../flags/4x3/na.svg)}.flag-icon-na.flag-icon-squared{background-image:url(../flags/1x1/na.svg)}.flag-icon-nc{background-image:url(../flags/4x3/nc.svg)}.flag-icon-nc.flag-icon-squared{background-image:url(../flags/1x1/nc.svg)}.flag-icon-ne{background-image:url(../flags/4x3/ne.svg)}.flag-icon-ne.flag-icon-squared{background-image:url(../flags/1x1/ne.svg)}.flag-icon-nf{background-image:url(../flags/4x3/nf.svg)}.flag-icon-nf.flag-icon-squared{background-image:url(../flags/1x1/nf.svg)}.flag-icon-ng{background-image:url(../flags/4x3/ng.svg)}.flag-icon-ng.flag-icon-squared{background-image:url(../flags/1x1/ng.svg)}.flag-icon-ni{background-image:url(../flags/4x3/ni.svg)}.flag-icon-ni.flag-icon-squared{background-image:url(../flags/1x1/ni.svg)}.flag-icon-nl{background-image:url(../flags/4x3/nl.svg)}.flag-icon-nl.flag-icon-squared{background-image:url(../flags/1x1/nl.svg)}.flag-icon-no{background-image:url(../flags/4x3/no.svg)}.flag-icon-no.flag-icon-squared{background-image:url(../flags/1x1/no.svg)}.flag-icon-np{background-image:url(../flags/4x3/np.svg)}.flag-icon-np.flag-icon-squared{background-image:url(../flags/1x1/np.svg)}.flag-icon-nr{background-image:url(../flags/4x3/nr.svg)}.flag-icon-nr.flag-icon-squared{background-image:url(../flags/1x1/nr.svg)}.flag-icon-nu{background-image:url(../flags/4x3/nu.svg)}.flag-icon-nu.flag-icon-squared{background-image:url(../flags/1x1/nu.svg)}.flag-icon-nz{background-image:url(../flags/4x3/nz.svg)}.flag-icon-nz.flag-icon-squared{background-image:url(../flags/1x1/nz.svg)}.flag-icon-om{background-image:url(../flags/4x3/om.svg)}.flag-icon-om.flag-icon-squared{background-image:url(../flags/1x1/om.svg)}.flag-icon-pa{background-image:url(../flags/4x3/pa.svg)}.flag-icon-pa.flag-icon-squared{background-image:url(../flags/1x1/pa.svg)}.flag-icon-pe{background-image:url(../flags/4x3/pe.svg)}.flag-icon-pe.flag-icon-squared{background-image:url(../flags/1x1/pe.svg)}.flag-icon-pf{background-image:url(../flags/4x3/pf.svg)}.flag-icon-pf.flag-icon-squared{background-image:url(../flags/1x1/pf.svg)}.flag-icon-pg{background-image:url(../flags/4x3/pg.svg)}.flag-icon-pg.flag-icon-squared{background-image:url(../flags/1x1/pg.svg)}.flag-icon-ph{background-image:url(../flags/4x3/ph.svg)}.flag-icon-ph.flag-icon-squared{background-image:url(../flags/1x1/ph.svg)}.flag-icon-pk{background-image:url(../flags/4x3/pk.svg)}.flag-icon-pk.flag-icon-squared{background-image:url(../flags/1x1/pk.svg)}.flag-icon-pl{background-image:url(../flags/4x3/pl.svg)}.flag-icon-pl.flag-icon-squared{background-image:url(../flags/1x1/pl.svg)}.flag-icon-pm{background-image:url(../flags/4x3/pm.svg)}.flag-icon-pm.flag-icon-squared{background-image:url(../flags/1x1/pm.svg)}.flag-icon-pn{background-image:url(../flags/4x3/pn.svg)}.flag-icon-pn.flag-icon-squared{background-image:url(../flags/1x1/pn.svg)}.flag-icon-pr{background-image:url(../flags/4x3/pr.svg)}.flag-icon-pr.flag-icon-squared{background-image:url(../flags/1x1/pr.svg)}.flag-icon-ps{background-image:url(../flags/4x3/ps.svg)}.flag-icon-ps.flag-icon-squared{background-image:url(../flags/1x1/ps.svg)}.flag-icon-pt{background-image:url(../flags/4x3/pt.svg)}.flag-icon-pt.flag-icon-squared{background-image:url(../flags/1x1/pt.svg)}.flag-icon-pw{background-image:url(../flags/4x3/pw.svg)}.flag-icon-pw.flag-icon-squared{background-image:url(../flags/1x1/pw.svg)}.flag-icon-py{background-image:url(../flags/4x3/py.svg)}.flag-icon-py.flag-icon-squared{background-image:url(../flags/1x1/py.svg)}.flag-icon-qa{background-image:url(../flags/4x3/qa.svg)}.flag-icon-qa.flag-icon-squared{background-image:url(../flags/1x1/qa.svg)}.flag-icon-re{background-image:url(../flags/4x3/re.svg)}.flag-icon-re.flag-icon-squared{background-image:url(../flags/1x1/re.svg)}.flag-icon-ro{background-image:url(../flags/4x3/ro.svg)}.flag-icon-ro.flag-icon-squared{background-image:url(../flags/1x1/ro.svg)}.flag-icon-rs{background-image:url(../flags/4x3/rs.svg)}.flag-icon-rs.flag-icon-squared{background-image:url(../flags/1x1/rs.svg)}.flag-icon-ru{background-image:url(../flags/4x3/ru.svg)}.flag-icon-ru.flag-icon-squared{background-image:url(../flags/1x1/ru.svg)}.flag-icon-rw{background-image:url(../flags/4x3/rw.svg)}.flag-icon-rw.flag-icon-squared{background-image:url(../flags/1x1/rw.svg)}.flag-icon-sa{background-image:url(../flags/4x3/sa.svg)}.flag-icon-sa.flag-icon-squared{background-image:url(../flags/1x1/sa.svg)}.flag-icon-sb{background-image:url(../flags/4x3/sb.svg)}.flag-icon-sb.flag-icon-squared{background-image:url(../flags/1x1/sb.svg)}.flag-icon-sc{background-image:url(../flags/4x3/sc.svg)}.flag-icon-sc.flag-icon-squared{background-image:url(../flags/1x1/sc.svg)}.flag-icon-sd{background-image:url(../flags/4x3/sd.svg)}.flag-icon-sd.flag-icon-squared{background-image:url(../flags/1x1/sd.svg)}.flag-icon-se{background-image:url(../flags/4x3/se.svg)}.flag-icon-se.flag-icon-squared{background-image:url(../flags/1x1/se.svg)}.flag-icon-sg{background-image:url(../flags/4x3/sg.svg)}.flag-icon-sg.flag-icon-squared{background-image:url(../flags/1x1/sg.svg)}.flag-icon-sh{background-image:url(../flags/4x3/sh.svg)}.flag-icon-sh.flag-icon-squared{background-image:url(../flags/1x1/sh.svg)}.flag-icon-si{background-image:url(../flags/4x3/si.svg)}.flag-icon-si.flag-icon-squared{background-image:url(../flags/1x1/si.svg)}.flag-icon-sj{background-image:url(../flags/4x3/sj.svg)}.flag-icon-sj.flag-icon-squared{background-image:url(../flags/1x1/sj.svg)}.flag-icon-sk{background-image:url(../flags/4x3/sk.svg)}.flag-icon-sk.flag-icon-squared{background-image:url(../flags/1x1/sk.svg)}.flag-icon-sl{background-image:url(../flags/4x3/sl.svg)}.flag-icon-sl.flag-icon-squared{background-image:url(../flags/1x1/sl.svg)}.flag-icon-sm{background-image:url(../flags/4x3/sm.svg)}.flag-icon-sm.flag-icon-squared{background-image:url(../flags/1x1/sm.svg)}.flag-icon-sn{background-image:url(../flags/4x3/sn.svg)}.flag-icon-sn.flag-icon-squared{background-image:url(../flags/1x1/sn.svg)}.flag-icon-so{background-image:url(../flags/4x3/so.svg)}.flag-icon-so.flag-icon-squared{background-image:url(../flags/1x1/so.svg)}.flag-icon-sr{background-image:url(../flags/4x3/sr.svg)}.flag-icon-sr.flag-icon-squared{background-image:url(../flags/1x1/sr.svg)}.flag-icon-ss{background-image:url(../flags/4x3/ss.svg)}.flag-icon-ss.flag-icon-squared{background-image:url(../flags/1x1/ss.svg)}.flag-icon-st{background-image:url(../flags/4x3/st.svg)}.flag-icon-st.flag-icon-squared{background-image:url(../flags/1x1/st.svg)}.flag-icon-sv{background-image:url(../flags/4x3/sv.svg)}.flag-icon-sv.flag-icon-squared{background-image:url(../flags/1x1/sv.svg)}.flag-icon-sx{background-image:url(../flags/4x3/sx.svg)}.flag-icon-sx.flag-icon-squared{background-image:url(../flags/1x1/sx.svg)}.flag-icon-sy{background-image:url(../flags/4x3/sy.svg)}.flag-icon-sy.flag-icon-squared{background-image:url(../flags/1x1/sy.svg)}.flag-icon-sz{background-image:url(../flags/4x3/sz.svg)}.flag-icon-sz.flag-icon-squared{background-image:url(../flags/1x1/sz.svg)}.flag-icon-tc{background-image:url(../flags/4x3/tc.svg)}.flag-icon-tc.flag-icon-squared{background-image:url(../flags/1x1/tc.svg)}.flag-icon-td{background-image:url(../flags/4x3/td.svg)}.flag-icon-td.flag-icon-squared{background-image:url(../flags/1x1/td.svg)}.flag-icon-tf{background-image:url(../flags/4x3/tf.svg)}.flag-icon-tf.flag-icon-squared{background-image:url(../flags/1x1/tf.svg)}.flag-icon-tg{background-image:url(../flags/4x3/tg.svg)}.flag-icon-tg.flag-icon-squared{background-image:url(../flags/1x1/tg.svg)}.flag-icon-th{background-image:url(../flags/4x3/th.svg)}.flag-icon-th.flag-icon-squared{background-image:url(../flags/1x1/th.svg)}.flag-icon-tj{background-image:url(../flags/4x3/tj.svg)}.flag-icon-tj.flag-icon-squared{background-image:url(../flags/1x1/tj.svg)}.flag-icon-tk{background-image:url(../flags/4x3/tk.svg)}.flag-icon-tk.flag-icon-squared{background-image:url(../flags/1x1/tk.svg)}.flag-icon-tl{background-image:url(../flags/4x3/tl.svg)}.flag-icon-tl.flag-icon-squared{background-image:url(../flags/1x1/tl.svg)}.flag-icon-tm{background-image:url(../flags/4x3/tm.svg)}.flag-icon-tm.flag-icon-squared{background-image:url(../flags/1x1/tm.svg)}.flag-icon-tn{background-image:url(../flags/4x3/tn.svg)}.flag-icon-tn.flag-icon-squared{background-image:url(../flags/1x1/tn.svg)}.flag-icon-to{background-image:url(../flags/4x3/to.svg)}.flag-icon-to.flag-icon-squared{background-image:url(../flags/1x1/to.svg)}.flag-icon-tr{background-image:url(../flags/4x3/tr.svg)}.flag-icon-tr.flag-icon-squared{background-image:url(../flags/1x1/tr.svg)}.flag-icon-tt{background-image:url(../flags/4x3/tt.svg)}.flag-icon-tt.flag-icon-squared{background-image:url(../flags/1x1/tt.svg)}.flag-icon-tv{background-image:url(../flags/4x3/tv.svg)}.flag-icon-tv.flag-icon-squared{background-image:url(../flags/1x1/tv.svg)}.flag-icon-tw{background-image:url(../flags/4x3/tw.svg)}.flag-icon-tw.flag-icon-squared{background-image:url(../flags/1x1/tw.svg)}.flag-icon-tz{background-image:url(../flags/4x3/tz.svg)}.flag-icon-tz.flag-icon-squared{background-image:url(../flags/1x1/tz.svg)}.flag-icon-ua{background-image:url(../flags/4x3/ua.svg)}.flag-icon-ua.flag-icon-squared{background-image:url(../flags/1x1/ua.svg)}.flag-icon-ug{background-image:url(../flags/4x3/ug.svg)}.flag-icon-ug.flag-icon-squared{background-image:url(../flags/1x1/ug.svg)}.flag-icon-um{background-image:url(../flags/4x3/um.svg)}.flag-icon-um.flag-icon-squared{background-image:url(../flags/1x1/um.svg)}.flag-icon-us{background-image:url(../flags/4x3/us.svg)}.flag-icon-us.flag-icon-squared{background-image:url(../flags/1x1/us.svg)}.flag-icon-uy{background-image:url(../flags/4x3/uy.svg)}.flag-icon-uy.flag-icon-squared{background-image:url(../flags/1x1/uy.svg)}.flag-icon-uz{background-image:url(../flags/4x3/uz.svg)}.flag-icon-uz.flag-icon-squared{background-image:url(../flags/1x1/uz.svg)}.flag-icon-va{background-image:url(../flags/4x3/va.svg)}.flag-icon-va.flag-icon-squared{background-image:url(../flags/1x1/va.svg)}.flag-icon-vc{background-image:url(../flags/4x3/vc.svg)}.flag-icon-vc.flag-icon-squared{background-image:url(../flags/1x1/vc.svg)}.flag-icon-ve{background-image:url(../flags/4x3/ve.svg)}.flag-icon-ve.flag-icon-squared{background-image:url(../flags/1x1/ve.svg)}.flag-icon-vg{background-image:url(../flags/4x3/vg.svg)}.flag-icon-vg.flag-icon-squared{background-image:url(../flags/1x1/vg.svg)}.flag-icon-vi{background-image:url(../flags/4x3/vi.svg)}.flag-icon-vi.flag-icon-squared{background-image:url(../flags/1x1/vi.svg)}.flag-icon-vn{background-image:url(../flags/4x3/vn.svg)}.flag-icon-vn.flag-icon-squared{background-image:url(../flags/1x1/vn.svg)}.flag-icon-vu{background-image:url(../flags/4x3/vu.svg)}.flag-icon-vu.flag-icon-squared{background-image:url(../flags/1x1/vu.svg)}.flag-icon-wf{background-image:url(../flags/4x3/wf.svg)}.flag-icon-wf.flag-icon-squared{background-image:url(../flags/1x1/wf.svg)}.flag-icon-ws{background-image:url(../flags/4x3/ws.svg)}.flag-icon-ws.flag-icon-squared{background-image:url(../flags/1x1/ws.svg)}.flag-icon-ye{background-image:url(../flags/4x3/ye.svg)}.flag-icon-ye.flag-icon-squared{background-image:url(../flags/1x1/ye.svg)}.flag-icon-yt{background-image:url(../flags/4x3/yt.svg)}.flag-icon-yt.flag-icon-squared{background-image:url(../flags/1x1/yt.svg)}.flag-icon-za{background-image:url(../flags/4x3/za.svg)}.flag-icon-za.flag-icon-squared{background-image:url(../flags/1x1/za.svg)}.flag-icon-zm{background-image:url(../flags/4x3/zm.svg)}.flag-icon-zm.flag-icon-squared{background-image:url(../flags/1x1/zm.svg)}.flag-icon-zw{background-image:url(../flags/4x3/zw.svg)}.flag-icon-zw.flag-icon-squared{background-image:url(../flags/1x1/zw.svg)}.flag-icon-es-ct{background-image:url(../flags/4x3/es-ct.svg)}.flag-icon-es-ct.flag-icon-squared{background-image:url(../flags/1x1/es-ct.svg)}.flag-icon-eu{background-image:url(../flags/4x3/eu.svg)}.flag-icon-eu.flag-icon-squared{background-image:url(../flags/1x1/eu.svg)}.flag-icon-gb-eng{background-image:url(../flags/4x3/gb-eng.svg)}.flag-icon-gb-eng.flag-icon-squared{background-image:url(../flags/1x1/gb-eng.svg)}.flag-icon-gb-nir{background-image:url(../flags/4x3/gb-nir.svg)}.flag-icon-gb-nir.flag-icon-squared{background-image:url(../flags/1x1/gb-nir.svg)}.flag-icon-gb-sct{background-image:url(../flags/4x3/gb-sct.svg)}.flag-icon-gb-sct.flag-icon-squared{background-image:url(../flags/1x1/gb-sct.svg)}.flag-icon-gb-wls{background-image:url(../flags/4x3/gb-wls.svg)}.flag-icon-gb-wls.flag-icon-squared{background-image:url(../flags/1x1/gb-wls.svg)}.flag-icon-un{background-image:url(../flags/4x3/un.svg)}.flag-icon-un.flag-icon-squared{background-image:url(../flags/1x1/un.svg)}.flag-icon-xk{background-image:url(../flags/4x3/xk.svg)}.flag-icon-xk.flag-icon-squared{background-image:url(../flags/1x1/xk.svg)}.loader-container{top:0;left:0;width:100%;height:100%;position:fixed;background-color:#000;opacity:.2;z-index:9999}#loader{position:absolute;left:50%;top:50%;z-index:1;margin:-75px 0 0 -75px;border:16px solid #f3f3f3;border-radius:50%;border-top:16px solid #3498db;width:120px;height:120px;-webkit-animation:spin 2s linear infinite;animation:spin 2s linear infinite}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left,.mi.mi-pull-left{margin-right:.3em}.fa-stack,.mi-stack{display:inline-block;height:2em}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0)}100%{-webkit-transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.modal-open{overflow:hidden;padding-right:0!important}/*! * Font Awesome Free 5.12.1 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) - */.fa,.fab,.fad,.fal,.far,.fas{line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{width:1.25em}.fa-ul{margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;width:100%}.mi-stack,.mi-ul>li{position:relative}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adobe:before{content:"\f778"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-bahai:before{content:"\f666"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-alt:before{content:"\f422"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\f952"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-alt:before{content:"\f424"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\f907"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-handshake:before{content:"\f2b5"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-hdd:before{content:"\f0a0"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-ideal:before{content:"\f913"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-instagram-square:before{content:"\f955"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microblog:before{content:"\f91a"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\f956"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\f91e"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopify:before{content:"\f957"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\f941"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\f949"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:auto;src:url(../fonts/fa-brands-400.eot);src:url(../fonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../fonts/fa-brands-400.woff2) format("woff2"),url(../fonts/fa-brands-400.woff) format("woff"),url(../fonts/fa-brands-400.ttf) format("truetype"),url(../fonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:auto;src:url(../fonts/fa-regular-400.eot);src:url(../fonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../fonts/fa-regular-400.woff2) format("woff2"),url(../fonts/fa-regular-400.woff) format("woff"),url(../fonts/fa-regular-400.ttf) format("truetype"),url(../fonts/fa-regular-400.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:auto;src:url(../fonts/fa-solid-900.eot);src:url(../fonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../fonts/fa-solid-900.woff2) format("woff2"),url(../fonts/fa-solid-900.woff) format("woff"),url(../fonts/fa-solid-900.ttf) format("truetype"),url(../fonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900}/*! + */.fa,.fab,.fad,.fal,.far,.fas{display:inline-block;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{width:1.25em}.fa-ul{margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adobe:before{content:"\f778"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-bahai:before{content:"\f666"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-alt:before{content:"\f422"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\f952"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-alt:before{content:"\f424"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\f907"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-handshake:before{content:"\f2b5"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-hdd:before{content:"\f0a0"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-ideal:before{content:"\f913"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-instagram-square:before{content:"\f955"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microblog:before{content:"\f91a"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\f956"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\f91e"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopify:before{content:"\f957"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\f941"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\f949"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:auto;src:url(../fonts/fa-brands-400.eot);src:url(../fonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../fonts/fa-brands-400.woff2) format("woff2"),url(../fonts/fa-brands-400.woff) format("woff"),url(../fonts/fa-brands-400.ttf) format("truetype"),url(../fonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:auto;src:url(../fonts/fa-regular-400.eot);src:url(../fonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../fonts/fa-regular-400.woff2) format("woff2"),url(../fonts/fa-regular-400.woff) format("woff"),url(../fonts/fa-regular-400.ttf) format("truetype"),url(../fonts/fa-regular-400.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:auto;src:url(../fonts/fa-solid-900.eot);src:url(../fonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../fonts/fa-solid-900.woff2) format("woff2"),url(../fonts/fa-solid-900.woff) format("woff"),url(../fonts/fa-solid-900.ttf) format("truetype"),url(../fonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900}/*! * License - Micon v3.0.168 http://xtoolkit.github.io/Micon/ (MIT License) * License - template: https://fontawesome.com/license/free (Code: MIT License) - */@font-face{font-family:micon;font-style:normal;font-weight:400;src:url(../fonts/micon.eot);src:url(../fonts/micon.eot?#iefix) format("embedded-opentype"),url(../fonts/micon.woff2) format("woff2"),url(../fonts/micon.woff) format("woff"),url(../fonts/micon.ttf) format("truetype"),url(../fonts/micon.svg#micon) format("svg")}.mi{font-family:micon;font-weight:400;line-height:1}.mi-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.mi-xs{font-size:.75em}.mi-sm{font-size:.875em}.mi-1x{font-size:1em}.mi-2x{font-size:2em}.mi-3x{font-size:3em}.mi-4x{font-size:4em}.mi-5x{font-size:5em}.mi-6x{font-size:6em}.mi-7x{font-size:7em}.mi-8x{font-size:8em}.mi-9x{font-size:9em}.mi-10x{font-size:10em}.mi-fw{width:1.25em}.mi-ul{margin-left:2.5em;padding-left:0}.mi-li{left:-2em;position:absolute;width:2em;line-height:inherit}.mi-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.mi-pull-left{float:left}.mi-pull-right{float:right}.mi.mi-pull-left{margin-right:.3em}.mi.mi-pull-right{margin-left:.3em}.mi-spin{animation:mi-spin 2s infinite linear}.mi-pulse{animation:mi-spin 1s infinite steps(8)}@keyframes mi-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.mi-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.mi-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.mi-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.mi-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scale(-1,1)}.mi-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";transform:scale(1,-1)}.mi-flip-horizontal.mi-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";transform:scale(-1,-1)}:root .mi-flip-horizontal,:root .mi-flip-vertical,:root .mi-rotate-180,:root .mi-rotate-270,:root .mi-rotate-90{filter:none}.mi-stack{display:inline-block;height:2em;line-height:2em;vertical-align:middle;width:2.5em}.mi-stack-1x,.mi-stack-2x{left:0;position:absolute;width:100%}.mi-stack-1x{line-height:inherit}.mi-stack-2x{font-size:2em}.mi-inverse{color:#fff}.mi-Accept:before,.mi-AcceptLegacy:before,.mi-CheckmarkListviewLegacy:before,.mi-CheckmarkMenuLegacy:before{content:"\EA01"}.mi-Accident:before{content:"\EA02"}.mi-AccidentSolid:before{content:"\EA03"}.mi-Accounts:before,.mi-AccountsLegacy:before{content:"\EA04"}.mi-ActionCenter:before{content:"\EA05"}.mi-ActionCenterAsterisk:before{content:"\EA06"}.mi-ActionCenterMirrored:before{content:"\EA07"}.mi-ActionCenterNotification:before{content:"\EA08"}.mi-ActionCenterNotificationMirrored:before{content:"\EA09"}.mi-ActionCenterQuiet:before{content:"\EA0A"}.mi-ActionCenterQuietNotification:before{content:"\EA0B"}.mi-Add:before,.mi-AddLegacy:before{content:"\EA0C"}.mi-AddFriend:before,.mi-AddFriendLegacy:before{content:"\EA0D"}.mi-AddRemoteDevice:before{content:"\EA0E"}.mi-AddSurfaceHub:before{content:"\EA0F"}.mi-AddTo:before{content:"\EA10"}.mi-AdjustHologram:before{content:"\EA11"}.mi-Admin:before,.mi-AdminLegacy:before{content:"\EA12"}.mi-Airplane:before{content:"\EA13"}.mi-AirplaneSolid:before{content:"\EA14"}.mi-AlignCenter:before,.mi-AlignCenterLegacy:before{content:"\EA15"}.mi-AlignLeft:before,.mi-AlignLeftLegacy:before{content:"\EA16"}.mi-AlignRight:before,.mi-AlignRightLegacy:before{content:"\EA17"}.mi-AllApps:before,.mi-AllAppsLegacy:before{content:"\EA18"}.mi-AllAppsLegacyMirrored:before,.mi-AllAppsMirrored:before{content:"\EA19"}.mi-Annotation:before{content:"\EA1A"}.mi-AppIconDefault:before{content:"\EA1B"}.mi-Apps:before{content:"\EA1C"}.mi-AreaChart:before{content:"\EA1D"}.mi-ArrowDown8:before{content:"\EA1E"}.mi-ArrowLeft8:before{content:"\EA1F"}.mi-ArrowRight8:before{content:"\EA20"}.mi-ArrowUp8:before{content:"\EA21"}.mi-AspectRatio:before{content:"\EA22"}.mi-Asterisk:before{content:"\EA23"}.mi-AsteriskBadge12:before{content:"\EA24"}.mi-Attach:before,.mi-AttachLegacy:before{content:"\EA25"}.mi-AttachCamera:before,.mi-AttachCameraLegacy:before{content:"\EA26"}.mi-Audio:before,.mi-AudioLegacy:before{content:"\EA27"}.mi-ArrowHTMLLegacy:before,.mi-Back:before,.mi-BackBttnArrow20Legacy:before,.mi-BackBttnArrow42Legacy:before,.mi-BackLegacy:before{content:"\EA28"}.mi-BackMirrored:before{content:"\EA29"}.mi-BackSpaceQWERTYLg:before{content:"\EA2B"}.mi-BackSpaceQWERTYMd:before{content:"\EA2C"}.mi-BackSpaceQWERTYSm:before{content:"\EA2D"}.mi-BackToWindow:before,.mi-BackToWindowLegacy:before{content:"\EA2E"}.mi-BackgroundToggle:before{content:"\EA2F"}.mi-Badge:before{content:"\EA30"}.mi-BandBattery0:before{content:"\EA31"}.mi-BandBattery1:before{content:"\EA32"}.mi-BandBattery2:before{content:"\EA33"}.mi-BandBattery3:before{content:"\EA34"}.mi-BandBattery4:before{content:"\EA35"}.mi-BandBattery5:before{content:"\EA36"}.mi-BandBattery6:before{content:"\EA37"}.mi-Bank:before{content:"\EA38"}.mi-BarcodeScanner:before{content:"\EA39"}.mi-Battery0:before{content:"\EA3A"}.mi-Battery1:before{content:"\EA3B"}.mi-Battery10:before{content:"\EA3C"}.mi-Battery2:before{content:"\EA3D"}.mi-Battery3:before{content:"\EA3E"}.mi-Battery4:before{content:"\EA3F"}.mi-Battery5:before{content:"\EA40"}.mi-Battery6:before{content:"\EA41"}.mi-Battery7:before{content:"\EA42"}.mi-Battery8:before{content:"\EA43"}.mi-Battery9:before{content:"\EA44"}.mi-BatteryCharging0:before{content:"\EA45"}.mi-BatteryCharging1:before{content:"\EA46"}.mi-BatteryCharging10:before{content:"\EA47"}.mi-BatteryCharging2:before{content:"\EA48"}.mi-BatteryCharging3:before{content:"\EA49"}.mi-BatteryCharging4:before{content:"\EA4A"}.mi-BatteryCharging5:before{content:"\EA4B"}.mi-BatteryCharging6:before{content:"\EA4C"}.mi-BatteryCharging7:before{content:"\EA4D"}.mi-BatteryCharging8:before{content:"\EA4E"}.mi-BatteryCharging9:before{content:"\EA4F"}.mi-BatterySaver0:before{content:"\EA50"}.mi-BatterySaver1:before{content:"\EA51"}.mi-BatterySaver10:before{content:"\EA52"}.mi-BatterySaver2:before{content:"\EA53"}.mi-BatterySaver3:before{content:"\EA54"}.mi-BatterySaver4:before{content:"\EA55"}.mi-BatterySaver5:before{content:"\EA56"}.mi-BatterySaver6:before{content:"\EA57"}.mi-BatterySaver7:before{content:"\EA58"}.mi-BatterySaver8:before{content:"\EA59"}.mi-BatterySaver9:before{content:"\EA5A"}.mi-BatteryUnknown:before{content:"\EA5B"}.mi-Beta:before{content:"\EA5C"}.mi-BidiLtr:before{content:"\EA5D"}.mi-BidiRtl:before{content:"\EA5E"}.mi-BlockContact:before,.mi-BlockContactLegacy:before{content:"\EA5F"}.mi-Blocked:before,.mi-BlockedLegacy:before{content:"\EA61"}.mi-BlueLight:before{content:"\EA62"}.mi-Bluetooth:before{content:"\EA63"}.mi-BodyCam:before{content:"\EA64"}.mi-Bold:before,.mi-BoldLegacy:before{content:"\EA65"}.mi-BoldF:before,.mi-BoldFLegacy:before{content:"\EA67"}.mi-BoldG:before,.mi-BoldGLegacy:before{content:"\EA69"}.mi-BoldKorean:before,.mi-BoldKoreanLegacy:before{content:"\EA6B"}.mi-BoldN:before,.mi-BoldNLegacy:before{content:"\EA6D"}.mi-BoldRussion:before,.mi-BoldRussionLegacy:before{content:"\EA6F"}.mi-Bookmarks:before,.mi-BookmarksLegacy:before{content:"\EA70"}.mi-BookmarksLegacyMirrored:before,.mi-BookmarksMirrored:before{content:"\EA71"}.mi-Brightness:before{content:"\EA72"}.mi-Broom:before{content:"\EA73"}.mi-BrowsePhotos:before,.mi-BrowsePhotosLegacy:before{content:"\EA74"}.mi-BrushSize:before{content:"\EA75"}.mi-Bug:before{content:"\EA76"}.mi-BuildingEnergy:before{content:"\EA77"}.mi-BulletedList:before,.mi-BulletedListLegacy:before,.mi-ListLegacy:before{content:"\EA78"}.mi-BulletedListLegacyMirrored:before,.mi-BulletedListMirrored:before,.mi-ListLegacyMirrored:before{content:"\EA79"}.mi-Bullseye:before{content:"\EA7A"}.mi-BumperLeft:before{content:"\EA7B"}.mi-BumperRight:before{content:"\EA7C"}.mi-Bus:before{content:"\EA7D"}.mi-BusSolid:before{content:"\EA7E"}.mi-ButtonA:before{content:"\EA7F"}.mi-ButtonB:before{content:"\EA80"}.mi-ButtonMenu:before{content:"\EA81"}.mi-ButtonView2:before{content:"\EA82"}.mi-ButtonX:before{content:"\EA83"}.mi-ButtonY:before{content:"\EA84"}.mi-CC:before,.mi-CCLegacy:before{content:"\EA85"}.mi-CCEuro:before,.mi-CCEuroLegacy:before{content:"\EA87"}.mi-CCJapan:before,.mi-CCJapanLegacy:before{content:"\EA89"}.mi-Cafe:before{content:"\EA8A"}.mi-Calculator:before,.mi-CalculatorLegacy:before{content:"\EA8B"}.mi-CalculatorAddition:before{content:"\EA8C"}.mi-BackSpaceQWERTY:before,.mi-CalculatorBackspace:before{content:"\EA8D"}.mi-CalculatorDivide:before{content:"\EA8E"}.mi-CalculatorEqualTo:before{content:"\EA8F"}.mi-CalculatorMultiply:before{content:"\EA90"}.mi-CalculatorNegate:before{content:"\EA91"}.mi-CalculatorPercentage:before{content:"\EA92"}.mi-CalculatorSquareroot:before{content:"\EA93"}.mi-CalculatorSubtract:before{content:"\EA94"}.mi-Calendar:before,.mi-CalendarLegacy:before{content:"\EA95"}.mi-CalendarDay:before,.mi-CalendarDayLegacy:before{content:"\EA96"}.mi-CalendarLegacyMirrored:before,.mi-CalendarMirrored:before{content:"\EA97"}.mi-CalendarReply:before,.mi-CalendarReplyLegacy:before{content:"\EA98"}.mi-CalendarSolid:before{content:"\EA99"}.mi-CalendarWeek:before,.mi-CalendarWeekLegacy:before{content:"\EA9A"}.mi-CallForwardInternational:before{content:"\EA9B"}.mi-CallForwardInternationalMirrored:before{content:"\EA9C"}.mi-CallForwardRoaming:before{content:"\EA9D"}.mi-CallForwardRoamingMirrored:before{content:"\EA9E"}.mi-CallForwarding:before{content:"\EA9F"}.mi-CallForwardingMirrored:before{content:"\EAA0"}.mi-CalligraphyFill:before{content:"\EAA1"}.mi-CalligraphyPen:before{content:"\EAA2"}.mi-Calories:before{content:"\EAA3"}.mi-Camera:before,.mi-CameraLegacy:before{content:"\EAA4"}.mi-Cancel:before,.mi-CancelLegacy:before{content:"\EAA5"}.mi-Caption:before,.mi-CaptionLegacy:before{content:"\EAA6"}.mi-Car:before,.mi-DrivingMode:before{content:"\EAA7"}.mi-CaretBottomRightSolidCenter8:before{content:"\EAA8"}.mi-CaretDownSolid8:before{content:"\EAA9"}.mi-CaretLeftSolid8:before{content:"\EAAA"}.mi-CaretRight8:before{content:"\EAAB"}.mi-CaretRightSolid8:before{content:"\EAAC"}.mi-CaretUpSolid8:before{content:"\EAAD"}.mi-CashDrawer:before{content:"\EAAE"}.mi-CellPhone:before,.mi-CellPhoneLegacy:before,.mi-MobileContactLegacy:before{content:"\EAAF"}.mi-Certificate:before{content:"\EAB0"}.mi-CharacterAppearance:before{content:"\EAB1"}.mi-Characters:before,.mi-CharactersLegacy:before{content:"\EAB2"}.mi-ChatBubbles:before{content:"\EAB3"}.mi-CheckList:before{content:"\EAB4"}.mi-CheckMark:before,.mi-CheckMarkLegacy:before,.mi-CheckMarkZeroWidthLegacy:before{content:"\EAB5"}.mi-Checkbox:before,.mi-CheckboxLegacy:before{content:"\EAB6"}.mi-Checkbox14:before{content:"\EAB7"}.mi-CheckboxComposite:before,.mi-CheckboxCompositeLegacy:before{content:"\EAB8"}.mi-CheckboxComposite14:before{content:"\EAB9"}.mi-CheckboxCompositeReversed:before,.mi-CheckboxCompositeReversedLegacy:before{content:"\EABA"}.mi-CheckboxIndeterminate:before,.mi-CheckboxIndeterminateLegacy:before{content:"\EABC"}.mi-CheckboxIndeterminateCombo:before{content:"\EABD"}.mi-CheckboxIndeterminateCombo14:before{content:"\EABE"}.mi-ChecklistMirrored:before{content:"\EABF"}.mi-ChevronDown1Legacy:before,.mi-ChevronDown2Legacy:before,.mi-ChevronDown3Legacy:before,.mi-ChevronDown4Legacy:before,.mi-ChevronDown:before,.mi-ChevronFlipDownLegacy:before,.mi-ScrollChevronDownBoldLegacy:before,.mi-ScrollChevronDownLegacy:before{content:"\EAC0"}.mi-ChevronDownMed:before{content:"\EAC1"}.mi-ChevronDownSmLegacy:before,.mi-ChevronDownSmall:before{content:"\EAC2"}.mi-ChevronFlipLeftLegacy:before,.mi-ChevronLeft1Legacy:before,.mi-ChevronLeft2Legacy:before,.mi-ChevronLeft3Legacy:before,.mi-ChevronLeft4Legacy:before,.mi-ChevronLeft:before,.mi-ScrollChevronLeftBoldLegacy:before,.mi-ScrollChevronLeftLegacy:before{content:"\EAC3"}.mi-ChevronLeftMed:before{content:"\EAC4"}.mi-ChevronLeftSmLegacy:before,.mi-ChevronLeftSmall:before{content:"\EAC5"}.mi-ChevronFlipRightLegacy:before,.mi-ChevronRight1Legacy:before,.mi-ChevronRight2Legacy:before,.mi-ChevronRight3Legacy:before,.mi-ChevronRight4Legacy:before,.mi-ChevronRight:before,.mi-ScrollChevronRightBoldLegacy:before,.mi-ScrollChevronRightLegacy:before{content:"\EAC6"}.mi-ChevronRightMed:before{content:"\EAC7"}.mi-ChevronRightSmLegacy:before,.mi-ChevronRightSmall:before{content:"\EAC8"}.mi-ChevronFlipUpLegacy:before,.mi-ChevronUp1Legacy:before,.mi-ChevronUp2Legacy:before,.mi-ChevronUp3Legacy:before,.mi-ChevronUp4Legacy:before,.mi-ChevronUp:before,.mi-ScrollChevronUpBoldLegacy:before,.mi-ScrollChevronUpLegacy:before{content:"\EAC9"}.mi-ChevronUpMed:before{content:"\EACA"}.mi-ChevronUpSmall:before{content:"\EACB"}.mi-ChineseBoPoMoFo:before{content:"\EACC"}.mi-ChineseChangjie:before{content:"\EACD"}.mi-ChinesePinyin:before{content:"\EACE"}.mi-ChinesePunctuation:before{content:"\EACF"}.mi-ChineseQuick:before{content:"\EAD0"}.mi-ChipCardCreditCardReader:before{content:"\EAD1"}.mi-ChromeAnnotate:before{content:"\EAD2"}.mi-ChromeAnnotateContrast:before{content:"\EAD3"}.mi-ChromeBack:before{content:"\EAD4"}.mi-ChromeBackContrast:before{content:"\EAD5"}.mi-ChromeBackContrastMirrored:before{content:"\EAD6"}.mi-ChromeBackMirrored:before{content:"\EAD7"}.mi-ChromeBackToWindow:before{content:"\EAD8"}.mi-ChromeBackToWindowContrast:before{content:"\EAD9"}.mi-ChromeClose:before{content:"\EADA"}.mi-ChromeCloseContrast:before{content:"\EADB"}.mi-ChromeFullScreen:before{content:"\EADC"}.mi-ChromeFullScreenContrast:before{content:"\EADD"}.mi-ChromeMaximize:before{content:"\EADE"}.mi-ChromeMaximizeContrast:before{content:"\EADF"}.mi-ChromeMinimize:before{content:"\EAE0"}.mi-ChromeMinimizeContrast:before{content:"\EAE1"}.mi-ChromeRestore:before{content:"\EAE2"}.mi-ChromeRestoreContrast:before{content:"\EAE3"}.mi-ChromeSwitch:before{content:"\EAE4"}.mi-ChromeSwitchContast:before{content:"\EAE5"}.mi-CircleFill:before{content:"\EAE6"}.mi-CircleFillBadge12:before{content:"\EAE7"}.mi-CircleRing:before{content:"\EAE8"}.mi-CircleRingBadge12:before{content:"\EAE9"}.mi-CityNext:before{content:"\EAEA"}.mi-CityNext2:before{content:"\EAEB"}.mi-Clear:before,.mi-ClearLegacy:before{content:"\EAEC"}.mi-ClearAllInk:before{content:"\EAED"}.mi-ClearAllInkMirrored:before{content:"\EAEE"}.mi-ClearSelection:before,.mi-ClearSelectionLegacy:before{content:"\EAEF"}.mi-ClearSelectionLegacyMirrored:before,.mi-ClearSelectionMirrored:before{content:"\EAF0"}.mi-Click:before{content:"\EAF1"}.mi-ClipboardList:before{content:"\EAF2"}.mi-ClipboardListMirrored:before{content:"\EAF3"}.mi-ClippingTool:before{content:"\EAF4"}.mi-Clock:before,.mi-ClockLegacy:before{content:"\EAF6"}.mi-ClosePane:before,.mi-ClosePaneLegacy:before{content:"\EAF7"}.mi-ClosePaneLegacyMirrored:before,.mi-ClosePaneMirrored:before{content:"\EAF8"}.mi-Cloud:before{content:"\EAF9"}.mi-CloudPrinter:before{content:"\EAFA"}.mi-CloudSeach:before{content:"\EAFB"}.mi-Code:before{content:"\EAFC"}.mi-CollapseContent:before{content:"\EAFD"}.mi-CollapseContentSingle:before{content:"\EAFE"}.mi-CollateLandscape:before{content:"\EAFF"}.mi-CollateLandscapeSeparated:before{content:"\EB00"}.mi-CollatePortrait:before{content:"\EB01"}.mi-CollatePortraitSeparated:before{content:"\EB02"}.mi-Color:before,.mi-ColorLegacy:before{content:"\EB03"}.mi-ColorOff:before{content:"\EB04"}.mi-CommaKey:before{content:"\EB05"}.mi-CommandPrompt:before{content:"\EB06"}.mi-Comment:before,.mi-CommentLegacy:before{content:"\EB07"}.mi-Communications:before{content:"\EB08"}.mi-CompanionApp:before{content:"\EB09"}.mi-CompanionDeviceFramework:before{content:"\EB0A"}.mi-Completed:before{content:"\EB0B"}.mi-CompletedSolid:before{content:"\EB0C"}.mi-Component:before{content:"\EB0D"}.mi-Connect:before{content:"\EB0E"}.mi-ConnectApp:before,.mi-MiracastLogoLarge:before{content:"\EB0F"}.mi-Connected:before{content:"\EB10"}.mi-Construction:before{content:"\EB11"}.mi-ConstructionCone:before{content:"\EB12"}.mi-ConstructionSolid:before{content:"\EB13"}.mi-Contact3Legacy:before,.mi-Contact:before,.mi-ContactLegacy:before{content:"\EB14"}.mi-Contact2:before,.mi-Contact2Legacy:before{content:"\EB15"}.mi-ContactInfo:before,.mi-ContactInfoLegacy:before{content:"\EB16"}.mi-ContactInfoMirrored:before{content:"\EB17"}.mi-ContactPresence:before,.mi-ContactPresenceLegacy:before{content:"\EB18"}.mi-ContactSolid:before{content:"\EB19"}.mi-Copy:before,.mi-CopyLegacy:before{content:"\EB1A"}.mi-CopyTo:before{content:"\EB1B"}.mi-Courthouse:before{content:"\EB1C"}.mi-Crop:before,.mi-CropLegacy:before{content:"\EB1D"}.mi-CtrlSpatialLeft:before{content:"\EB1E"}.mi-CtrlSpatialRight:before{content:"\EB1F"}.mi-Cut:before,.mi-CutLegacy:before{content:"\EB20"}.mi-DMC:before{content:"\EB21"}.mi-DashKey:before{content:"\EB22"}.mi-DataSense:before{content:"\EB23"}.mi-DataSenseBar:before{content:"\EB24"}.mi-DateTime:before{content:"\EB25"}.mi-DateTimeMirrored:before{content:"\EB26"}.mi-DecreaseIndent:before,.mi-DecreaseIndentLegacy:before{content:"\EB28"}.mi-DecreaseIndentLegacyMirrored:before,.mi-DecreaseIndentMirrored:before{content:"\EB2A"}.mi-DefaultAPN:before{content:"\EB2B"}.mi-DefenderApp:before{content:"\EB2C"}.mi-DefenderBadge12:before{content:"\EB2D"}.mi-Delete:before,.mi-DeleteLegacy:before{content:"\EB2E"}.mi-Design:before{content:"\EB2F"}.mi-DetachablePC:before{content:"\EB30"}.mi-DevUpdate:before{content:"\EB31"}.mi-DeveloperTools:before{content:"\EB32"}.mi-DeviceDiscovery:before{content:"\EB33"}.mi-DeviceLaptopNoPic:before{content:"\EB34"}.mi-DeviceLaptopPic:before{content:"\EB35"}.mi-DeviceMonitorLeftPic:before{content:"\EB36"}.mi-DeviceMonitorNoPic:before{content:"\EB37"}.mi-DeviceMonitorRightPic:before{content:"\EB38"}.mi-Devices:before{content:"\EB39"}.mi-Devices3:before{content:"\EB3B"}.mi-Devices4:before{content:"\EB3C"}.mi-Devices2:before,.mi-DevicesLegacy:before{content:"\EB3D"}.mi-Diagnostic:before{content:"\EB3E"}.mi-Dial1:before{content:"\EB3F"}.mi-Dial10:before{content:"\EB40"}.mi-Dial11:before{content:"\EB41"}.mi-Dial12:before{content:"\EB42"}.mi-Dial13:before{content:"\EB43"}.mi-Dial14:before{content:"\EB44"}.mi-Dial15:before{content:"\EB45"}.mi-Dial16:before{content:"\EB46"}.mi-Dial2:before{content:"\EB47"}.mi-Dial3:before{content:"\EB48"}.mi-Dial4:before{content:"\EB49"}.mi-Dial5:before{content:"\EB4A"}.mi-Dial6:before{content:"\EB4B"}.mi-Dial7:before{content:"\EB4C"}.mi-Dial8:before{content:"\EB4D"}.mi-Dial9:before{content:"\EB4E"}.mi-DialShape1:before{content:"\EB4F"}.mi-DialShape2:before{content:"\EB50"}.mi-DialShape3:before{content:"\EB51"}.mi-DialShape4:before{content:"\EB52"}.mi-DialUp:before{content:"\EB53"}.mi-Dialpad:before{content:"\EB54"}.mi-Dictionary:before{content:"\EB55"}.mi-DictionaryAdd:before{content:"\EB56"}.mi-DictionaryCloud:before{content:"\EB57"}.mi-DirectAccess:before{content:"\EB58"}.mi-Directions:before,.mi-DirectionsLegacy:before{content:"\EB59"}.mi-DisableUpdates:before,.mi-DisableUpdatesLegacy:before{content:"\EB5A"}.mi-DisconnectDisplay:before{content:"\EB5B"}.mi-DisconnectDrive:before,.mi-DisconnectDriveLegacy:before{content:"\EB5C"}.mi-Dislike:before,.mi-DislikeLegacy:before{content:"\EB5D"}.mi-Dock:before{content:"\EB5E"}.mi-DockBottom:before,.mi-DockBottomLegacy:before{content:"\EB5F"}.mi-DockLeft:before,.mi-DockLeftLegacy:before{content:"\EB60"}.mi-DockLeftLegacyMirrored:before,.mi-DockLeftMirrored:before{content:"\EB61"}.mi-DockRight:before,.mi-DockRightLegacy:before{content:"\EB62"}.mi-DockRightLegacyMirrored:before,.mi-DockRightMirrored:before{content:"\EB63"}.mi-Document:before,.mi-DocumentLegacy:before{content:"\EB64"}.mi-DoublePinyin:before{content:"\EB65"}.mi-Down:before,.mi-DownLegacy:before{content:"\EB66"}.mi-DownShiftKey:before{content:"\EB67"}.mi-Download:before,.mi-DownloadLegacy:before{content:"\EB68"}.mi-DownloadMap:before{content:"\EB69"}.mi-Dpad:before{content:"\EB6A"}.mi-Draw:before{content:"\EB6B"}.mi-DrawSolid:before{content:"\EB6C"}.mi-Drop:before{content:"\EB6D"}.mi-DullSound:before{content:"\EB6E"}.mi-DullSoundKey:before{content:"\EB6F"}.mi-DuplexLandscapeOneSided:before{content:"\EB70"}.mi-DuplexLandscapeOneSidedMirrored:before{content:"\EB71"}.mi-DuplexLandscapeTwoSidedLongEdge:before{content:"\EB72"}.mi-DuplexLandscapeTwoSidedLongEdgeMirrored:before{content:"\EB73"}.mi-DuplexLandscapeTwoSidedShortEdge:before{content:"\EB74"}.mi-DuplexLandscapeTwoSidedShortEdgeMirrored:before{content:"\EB75"}.mi-DuplexPortraitOneSided:before{content:"\EB76"}.mi-DuplexPortraitOneSidedMirrored:before{content:"\EB77"}.mi-DuplexPortraitTwoSidedLongEdge:before{content:"\EB78"}.mi-DuplexPortraitTwoSidedLongEdgeMirrored:before{content:"\EB79"}.mi-DuplexPortraitTwoSidedShortEdge:before{content:"\EB7A"}.mi-DuplexPortraitTwoSidedShortEdgeMirrored:before{content:"\EB7B"}.mi-DynamicLock:before{content:"\EB7C"}.mi-EMI:before{content:"\EB7D"}.mi-Ear:before{content:"\EB7E"}.mi-Earbud:before{content:"\EB7F"}.mi-EaseOfAccess:before,.mi-EaseOfAccessLegacy:before{content:"\EB80"}.mi-Edit:before,.mi-EditLegacy:before{content:"\EB81"}.mi-EditLegacyMirrored:before,.mi-EditMirrored:before{content:"\EB82"}.mi-Education:before{content:"\EB83"}.mi-Emoji:before,.mi-EmojiLegacy:before{content:"\EB84"}.mi-Emoji2:before,.mi-Emoji2Legacy:before{content:"\EB85"}.mi-EmojiSwatch:before{content:"\EB86"}.mi-EmojiTabCelebrationObjects:before{content:"\EB87"}.mi-EmojiTabFavorites:before{content:"\EB88"}.mi-EmojiTabFoodPlants:before{content:"\EB89"}.mi-EmojiTabPeople:before{content:"\EB8A"}.mi-EmojiTabSmilesAnimals:before{content:"\EB8B"}.mi-EmojiTabSymbols:before{content:"\EB8C"}.mi-EmojiTabTextSmiles:before{content:"\EB8D"}.mi-EmojiTabTransitPlaces:before{content:"\EB8E"}.mi-EndPointSolid:before{content:"\EB90"}.mi-EnglishPunctuation:before{content:"\EB91"}.mi-Equalizer:before{content:"\EB92"}.mi-EraseTool:before{content:"\EB93"}.mi-EraseToolFill:before{content:"\EB94"}.mi-EraseToolFill2:before{content:"\EB95"}.mi-Error:before{content:"\EB96"}.mi-ErrorBadge:before{content:"\EB97"}.mi-ErrorBadge12:before{content:"\EB98"}.mi-Ethernet:before{content:"\EB99"}.mi-EthernetError:before{content:"\EB9A"}.mi-EthernetWarning:before{content:"\EB9B"}.mi-ExpandTile:before,.mi-ExpandTileLegacy:before{content:"\EB9C"}.mi-ExpandTileLegacyMirrored:before,.mi-ExpandTileMirrored:before{content:"\EB9D"}.mi-ExploitProtectionSettings:before{content:"\EB9E"}.mi-ExploreContent:before{content:"\EB9F"}.mi-ExploreContentSingle:before{content:"\EBA0"}.mi-Export:before,.mi-ImportLegacyMirrored:before,.mi-ImportMirrored:before{content:"\EBA1"}.mi-EyeGaze:before{content:"\EBA2"}.mi-Eyedropper:before{content:"\EBA3"}.mi-Family:before{content:"\EBA4"}.mi-FastForward:before{content:"\EBA5"}.mi-Favicon:before{content:"\EBA6"}.mi-FavoriteList:before{content:"\EBA8"}.mi-FavoriteInlineLegacy:before,.mi-FavoriteStar:before,.mi-OutlineStarLegacy:before,.mi-RatingStarLegacy:before,.mi-Unfavorite2Legacy:before{content:"\EBA9"}.mi-Favorite2Legacy:before,.mi-FavoriteLegacy:before,.mi-FavoriteStarFill:before,.mi-RatingStarFillLegacy:before,.mi-RatingStarFillReducedPaddingHTMLLegacy:before,.mi-RatingStarFillSmallLegacy:before,.mi-RatingStarFillZeroWidthLegacy:before,.mi-SolidStarLegacy:before{content:"\EBAA"}.mi-Feedback:before{content:"\EBAB"}.mi-FeedbackApp:before{content:"\EBAC"}.mi-Ferry:before{content:"\EBAD"}.mi-FerrySolid:before{content:"\EBAE"}.mi-FileExplorer:before{content:"\EBAF"}.mi-FileExplorerApp:before{content:"\EBB0"}.mi-Filter:before,.mi-FilterLegacy:before{content:"\EBB1"}.mi-FingerInking:before{content:"\EBB2"}.mi-Fingerprint:before{content:"\EBB3"}.mi-FitPage:before{content:"\EBB4"}.mi-EndPoint:before,.mi-Flag:before,.mi-FlagLegacy:before{content:"\EBB5"}.mi-Flashlight:before{content:"\EBB6"}.mi-FlickDown:before{content:"\EBB7"}.mi-FlickLeft:before{content:"\EBB8"}.mi-FlickRight:before{content:"\EBB9"}.mi-FlickUp:before{content:"\EBBA"}.mi-Folder:before{content:"\EBBB"}.mi-FolderFill:before,.mi-FolderLegacy:before{content:"\EBBC"}.mi-FolderHorizontal:before{content:"\EBBD"}.mi-FolderOpen:before{content:"\EBBE"}.mi-Font:before,.mi-FontLegacy:before{content:"\EBBF"}.mi-FontColor:before,.mi-FontColorLegacy:before{content:"\EBC0"}.mi-FontColorKorean:before,.mi-FontColorKoreanLegacy:before{content:"\EBC2"}.mi-FontDecrease:before,.mi-FontDecreaseLegacy:before{content:"\EBC3"}.mi-FontIncrease:before,.mi-FontIncreaseLegacy:before{content:"\EBC4"}.mi-FontSize:before,.mi-FontSizeLegacy:before{content:"\EBC5"}.mi-FontStyleKorean:before,.mi-FontStyleKoreanLegacy:before{content:"\EBC7"}.mi-ArrowHTMLLegacyMirrored:before,.mi-BackBttnMirroredArrow20Legacy:before,.mi-BackBttnMirroredArrow42Legacy:before,.mi-Forward:before,.mi-ForwardLegacy:before{content:"\EBC8"}.mi-ForwardMirrored:before{content:"\EBC9"}.mi-ForwardSm:before{content:"\EBCA"}.mi-FourBars:before,.mi-FourBarsLegacy:before{content:"\EBCB"}.mi-FreeFormClipping:before{content:"\EBCC"}.mi-Frigid:before{content:"\EBCD"}.mi-FullAlpha:before{content:"\EBCE"}.mi-FullCircleMask:before{content:"\EBCF"}.mi-FullHiragana:before{content:"\EBD0"}.mi-FullKatakana:before{content:"\EBD1"}.mi-FullScreen:before,.mi-FullScreenLegacy:before{content:"\EBD2"}.mi-FuzzyReading:before{content:"\EBD3"}.mi-GIF:before{content:"\EBD4"}.mi-Game:before{content:"\EBD5"}.mi-GameConsole:before{content:"\EBD6"}.mi-GiftboxOpen:before{content:"\EBD7"}.mi-GlobalNavigationButton:before{content:"\EBD8"}.mi-Globe:before,.mi-GlobeLegacy:before{content:"\EBD9"}.mi-Go:before,.mi-GoLegacy:before{content:"\EBDA"}.mi-GoLegacyMirrored:before,.mi-GoMirrored:before{content:"\EBDB"}.mi-GoToStart:before,.mi-GoToStartLegacy:before{content:"\EBDC"}.mi-GotoToday:before,.mi-GotoTodayLegacy:before{content:"\EBDD"}.mi-GridView:before{content:"\EBDE"}.mi-GripperBarHorizontal:before{content:"\EBDF"}.mi-GripperBarVertical:before{content:"\EBE0"}.mi-GripperResize:before{content:"\EBE1"}.mi-GripperResizeMirrored:before{content:"\EBE2"}.mi-GripperTool:before{content:"\EBE3"}.mi-Groceries:before{content:"\EBE4"}.mi-Group:before{content:"\EBE5"}.mi-GroupList:before{content:"\EBE6"}.mi-GuestUser:before{content:"\EBE7"}.mi-HMD:before{content:"\EBE8"}.mi-HWPInsert:before{content:"\EBE9"}.mi-HWPJoin:before{content:"\EBEA"}.mi-HWPNewLine:before{content:"\EBEB"}.mi-HWPOverwrite:before{content:"\EBEC"}.mi-HWPScratchOut:before{content:"\EBED"}.mi-HWPSplit:before{content:"\EBEE"}.mi-HWPStrikeThrough:before{content:"\EBEF"}.mi-HalfAlpha:before{content:"\EBF0"}.mi-HalfDullSound:before{content:"\EBF1"}.mi-HalfKatakana:before{content:"\EBF2"}.mi-HalfStarLeft:before{content:"\EBF3"}.mi-HalfStarRight:before{content:"\EBF4"}.mi-Handwriting:before{content:"\EBF5"}.mi-HangUp:before,.mi-HangUpLegacy:before{content:"\EBF6"}.mi-HardDrive:before{content:"\EBF7"}.mi-HeadlessDevice:before{content:"\EBF8"}.mi-Headphone:before{content:"\EBF9"}.mi-Headphone0:before{content:"\EBFA"}.mi-Headphone1:before{content:"\EBFB"}.mi-Headphone2:before{content:"\EBFC"}.mi-Headphone3:before{content:"\EBFD"}.mi-Headset:before{content:"\EBFE"}.mi-Health:before{content:"\EBFF"}.mi-Heart:before,.mi-HeartLegacy:before{content:"\EC00"}.mi-HeartBroken:before{content:"\EC01"}.mi-HeartBrokenLegacy:before,.mi-HeartBrokenZeroWidthLegacy:before{content:"\EC02"}.mi-HeartFill:before,.mi-HeartFillLegacy:before,.mi-HeartFillZeroWidthLegacy:before{content:"\EC03"}.mi-Help:before,.mi-HelpLegacy:before{content:"\EC04"}.mi-HelpLegacyMirrored:before,.mi-HelpMirrored:before{content:"\EC05"}.mi-HideBcc:before,.mi-HideBccLegacy:before{content:"\EC06"}.mi-Highlight:before,.mi-HighlightLegacy:before{content:"\EC07"}.mi-HighlightFill:before{content:"\EC08"}.mi-HighlightFill2:before{content:"\EC09"}.mi-History:before{content:"\EC0A"}.mi-HolePunchLandscapeBottom:before{content:"\EC0B"}.mi-HolePunchLandscapeLeft:before{content:"\EC0C"}.mi-HolePunchLandscapeRight:before{content:"\EC0D"}.mi-HolePunchLandscapeTop:before{content:"\EC0E"}.mi-HolePunchOff:before{content:"\EC0F"}.mi-HolePunchPortraitBottom:before{content:"\EC10"}.mi-HolePunchPortraitLeft:before{content:"\EC11"}.mi-HolePunchPortraitRight:before{content:"\EC12"}.mi-HolePunchPortraitTop:before{content:"\EC13"}.mi-HoloLensSelected:before{content:"\EC14"}.mi-Home:before,.mi-HomeLegacy:before{content:"\EC15"}.mi-HomeGroup:before{content:"\EC16"}.mi-HomeSolid:before{content:"\EC17"}.mi-HorizontalTabKey:before{content:"\EC18"}.mi-IBeam:before{content:"\EC19"}.mi-IBeamOutline:before{content:"\EC1A"}.mi-IOT:before{content:"\EC1B"}.mi-ImageExport:before{content:"\EC1C"}.mi-ExportMirrored:before,.mi-Import:before,.mi-ImportLegacy:before{content:"\EC1D"}.mi-ImportAll:before,.mi-ImportAllLegacy:before{content:"\EC1E"}.mi-ImportAllLegacyMirrored:before,.mi-ImportAllMirrored:before{content:"\EC1F"}.mi-Important:before,.mi-ImportantLegacy:before{content:"\EC20"}.mi-ImportantBadge12:before{content:"\EC21"}.mi-InPrivate:before{content:"\EC22"}.mi-IncidentTriangle:before{content:"\EC23"}.mi-IncreaseIndent:before,.mi-IncreaseIndentLegacy:before{content:"\EC25"}.mi-IncreaseIndentLegacyMirrored:before,.mi-IncreaseIndentMirrored:before{content:"\EC27"}.mi-Info:before{content:"\EC28"}.mi-Info2:before{content:"\EC29"}.mi-InfoSolid:before{content:"\EC2A"}.mi-InkingCaret:before{content:"\EC2B"}.mi-InkingColorFill:before{content:"\EC2C"}.mi-InkingColorOutline:before{content:"\EC2D"}.mi-InkingTool:before{content:"\EC2E"}.mi-InkingToolFill:before{content:"\EC2F"}.mi-InkingToolFill2:before{content:"\EC30"}.mi-Input:before{content:"\EC31"}.mi-InsiderHubApp:before{content:"\EC32"}.mi-InteractiveDashboard:before{content:"\EC33"}.mi-Italic:before,.mi-ItalicLegacy:before{content:"\EC34"}.mi-ItalicC:before,.mi-ItalicCLegacy:before{content:"\EC36"}.mi-ItalicI:before,.mi-ItalicILegacy:before{content:"\EC38"}.mi-ItalicK:before,.mi-ItalicKLegacy:before{content:"\EC3A"}.mi-ItalicKorean:before,.mi-ItalicKoreanLegacy:before{content:"\EC3C"}.mi-ItalicRussian:before,.mi-ItalicRussianLegacy:before{content:"\EC3E"}.mi-Japanese:before{content:"\EC3F"}.mi-JpnRomanji:before{content:"\EC40"}.mi-JpnRomanjiLock:before{content:"\EC41"}.mi-JpnRomanjiShift:before{content:"\EC42"}.mi-JpnRomanjiShiftLock:before{content:"\EC43"}.mi-Key12On:before{content:"\EC44"}.mi-Keyboard12Key:before{content:"\EC46"}.mi-KeyboardBrightness:before{content:"\EC47"}.mi-KeyBoardLegacy:before,.mi-KeyboardClassic:before{content:"\EC48"}.mi-KeyboardDismiss:before{content:"\EC49"}.mi-KeyboardDock:before{content:"\EC4A"}.mi-KeyboardFull:before{content:"\EC4B"}.mi-KeyboardLeftAligned:before{content:"\EC4C"}.mi-KeyboardLeftDock:before{content:"\EC4D"}.mi-KeyboardLeftHanded:before{content:"\EC4E"}.mi-KeyboardLowerBrightness:before{content:"\EC4F"}.mi-KeyboardNarrow:before{content:"\EC50"}.mi-KeyboardOneHanded:before{content:"\EC51"}.mi-KeyboardRightAligned:before{content:"\EC52"}.mi-KeyboardRightDock:before{content:"\EC53"}.mi-KeyboardRightHanded:before{content:"\EC54"}.mi-KeyboardSettings:before{content:"\EC55"}.mi-KeyboardShortcut:before{content:"\EC56"}.mi-KeyboardSplit:before,.mi-KeyboardSplitLegacy:before{content:"\EC57"}.mi-KeyboardStandard:before,.mi-KeyboardStandardLegacy:before{content:"\EC58"}.mi-KeyboardUndock:before{content:"\EC59"}.mi-KnowledgeArticle:before{content:"\EC5A"}.mi-Korean:before{content:"\EC5B"}.mi-LEDLight:before{content:"\EC5C"}.mi-Label:before{content:"\EC5D"}.mi-LandscapeOrientation:before{content:"\EC5E"}.mi-LandscapeOrientationMirrored:before{content:"\EC5F"}.mi-LangJPN:before{content:"\EC60"}.mi-LanguageChs:before{content:"\EC61"}.mi-LanguageCht:before{content:"\EC62"}.mi-LanguageJpn:before{content:"\EC63"}.mi-LanguageKor:before{content:"\EC64"}.mi-LaptopSecure:before{content:"\EC65"}.mi-LaptopSelected:before{content:"\EC66"}.mi-LargeErase:before{content:"\EC67"}.mi-Layout:before,.mi-LayoutLegacy:before{content:"\EC69"}.mi-Leaf:before{content:"\EC6A"}.mi-LeaveChat:before,.mi-LeaveChatLegacy:before{content:"\EC6B"}.mi-LeaveChatMirrored:before{content:"\EC6C"}.mi-LeftArrowKeyTime0:before{content:"\EC6D"}.mi-LeftDoubleQuote:before{content:"\EC6E"}.mi-LeftQuote:before{content:"\EC6F"}.mi-LeftStick:before{content:"\EC70"}.mi-Lexicon:before{content:"\EC71"}.mi-Library:before,.mi-LibraryLegacy:before{content:"\EC72"}.mi-Light:before{content:"\EC73"}.mi-LightningBolt:before{content:"\EC75"}.mi-Like:before,.mi-LikeInlineLegacy:before,.mi-LikeLegacy:before{content:"\EC76"}.mi-LikeDislike:before,.mi-LikeDislikeLegacy:before{content:"\EC77"}.mi-LineDisplay:before{content:"\EC78"}.mi-Link:before,.mi-LinkLegacy:before{content:"\EC79"}.mi-List:before{content:"\EC7A"}.mi-ListMirrored:before{content:"\EC7B"}.mi-Location:before,.mi-LocationLegacy:before{content:"\EC7C"}.mi-Lock:before,.mi-LockLegacy:before{content:"\EC7D"}.mi-LockFeedback:before{content:"\EC7E"}.mi-LockScreenGlance:before{content:"\EC7F"}.mi-LockscreenDesktop:before{content:"\EC80"}.mi-LowerBrightness:before{content:"\EC81"}.mi-MagStripeReader:before{content:"\EC82"}.mi-Mail:before,.mi-MailLegacy:before{content:"\EC83"}.mi-MailBadge12:before{content:"\EC84"}.mi-MailFill:before,.mi-MailFillLegacy:before,.mi-MailMessageLegacy:before{content:"\EC85"}.mi-MailForward:before,.mi-MailForwardLegacy:before{content:"\EC86"}.mi-MailForwardLegacyMirrored:before,.mi-MailForwardMirrored:before{content:"\EC87"}.mi-MailReply:before,.mi-MailReplyLegacy:before{content:"\EC88"}.mi-MailReplyAll:before,.mi-MailReplyAllLegacy:before{content:"\EC89"}.mi-MailReplyAllLegacyMirrored:before,.mi-MailReplyAllMirrored:before{content:"\EC8A"}.mi-MailReplyLegacyMirrored:before,.mi-MailReplyMirrored:before{content:"\EC8B"}.mi-Manage:before,.mi-ManageLegacy:before{content:"\EC8C"}.mi-MapCompassBottom:before{content:"\EC8D"}.mi-MapCompassTop:before{content:"\EC8E"}.mi-MapDirections:before{content:"\EC8F"}.mi-MapDrive:before,.mi-MapDriveLegacy:before{content:"\EC90"}.mi-MapLayers:before{content:"\EC91"}.mi-MapLegacy:before,.mi-MapPin:before{content:"\EC92"}.mi-MapPin2:before,.mi-MapPinLegacy:before{content:"\EC94"}.mi-Marker:before{content:"\EC95"}.mi-Marquee:before{content:"\EC96"}.mi-Media:before{content:"\EC97"}.mi-MediaStorageTower:before{content:"\EC98"}.mi-Megaphone:before{content:"\EC99"}.mi-Memo:before,.mi-MemoLegacy:before{content:"\EC9A"}.mi-CommentInlineLegacy:before,.mi-Message:before,.mi-MessageLegacy:before{content:"\EC9B"}.mi-MicClipping:before{content:"\EC9C"}.mi-MicError:before{content:"\EC9D"}.mi-MicOff:before{content:"\EC9E"}.mi-MicOn:before{content:"\EC9F"}.mi-MicSleep:before{content:"\ECA0"}.mi-Microphone:before,.mi-MicrophoneLegacy:before{content:"\ECA1"}.mi-MicrophoneListening:before{content:"\ECA2"}.mi-MiracastLogoSmall:before{content:"\ECA3"}.mi-MixVolumes:before{content:"\ECA4"}.mi-MobActionCenter:before{content:"\ECA5"}.mi-MobAirplane:before{content:"\ECA6"}.mi-MobBattery0:before{content:"\ECA7"}.mi-MobBattery1:before{content:"\ECA8"}.mi-MobBattery10:before{content:"\ECA9"}.mi-MobBattery2:before{content:"\ECAA"}.mi-MobBattery3:before{content:"\ECAB"}.mi-MobBattery4:before{content:"\ECAC"}.mi-MobBattery5:before{content:"\ECAD"}.mi-MobBattery6:before{content:"\ECAE"}.mi-MobBattery7:before{content:"\ECAF"}.mi-MobBattery8:before{content:"\ECB0"}.mi-MobBattery9:before{content:"\ECB1"}.mi-MobBatteryCharging0:before{content:"\ECB2"}.mi-MobBatteryCharging1:before{content:"\ECB3"}.mi-MobBatteryCharging10:before{content:"\ECB4"}.mi-MobBatteryCharging2:before{content:"\ECB5"}.mi-MobBatteryCharging3:before{content:"\ECB6"}.mi-MobBatteryCharging4:before{content:"\ECB7"}.mi-MobBatteryCharging5:before{content:"\ECB8"}.mi-MobBatteryCharging6:before{content:"\ECB9"}.mi-MobBatteryCharging7:before{content:"\ECBA"}.mi-MobBatteryCharging8:before{content:"\ECBB"}.mi-MobBatteryCharging9:before{content:"\ECBC"}.mi-MobBatterySaver0:before{content:"\ECBD"}.mi-MobBatterySaver1:before{content:"\ECBE"}.mi-MobBatterySaver10:before{content:"\ECBF"}.mi-MobBatterySaver2:before{content:"\ECC0"}.mi-MobBatterySaver3:before{content:"\ECC1"}.mi-MobBatterySaver4:before{content:"\ECC2"}.mi-MobBatterySaver5:before{content:"\ECC3"}.mi-MobBatterySaver6:before{content:"\ECC4"}.mi-MobBatterySaver7:before{content:"\ECC5"}.mi-MobBatterySaver8:before{content:"\ECC6"}.mi-MobBatterySaver9:before{content:"\ECC7"}.mi-MobBatteryUnknown:before{content:"\ECC8"}.mi-MobBluetooth:before{content:"\ECC9"}.mi-MobCallForwarding:before{content:"\ECCA"}.mi-MobCallForwardingMirrored:before{content:"\ECCB"}.mi-MobDrivingMode:before{content:"\ECCC"}.mi-MobLocation:before{content:"\ECCD"}.mi-MobQuietHours:before{content:"\ECCE"}.mi-MobSIMError:before{content:"\ECCF"}.mi-MobSIMLock:before{content:"\ECD0"}.mi-MobSIMMissing:before{content:"\ECD1"}.mi-MobSignal1:before{content:"\ECD2"}.mi-MobSignal2:before{content:"\ECD3"}.mi-MobSignal3:before{content:"\ECD4"}.mi-MobSignal4:before{content:"\ECD5"}.mi-MobSignal5:before{content:"\ECD6"}.mi-MobWifi1:before{content:"\ECD7"}.mi-MobWifi2:before{content:"\ECD8"}.mi-MobWifi3:before{content:"\ECD9"}.mi-MobWifi4:before{content:"\ECDA"}.mi-MobWifiHotspot:before{content:"\ECDB"}.mi-MobWifiWarning1:before{content:"\ECDC"}.mi-MobWifiWarning2:before{content:"\ECDD"}.mi-MobWifiWarning3:before{content:"\ECDE"}.mi-MobWifiWarning4:before{content:"\ECDF"}.mi-MobeSIM:before{content:"\ECE0"}.mi-MobeSIMBusy:before{content:"\ECE1"}.mi-MobeSIMLocked:before{content:"\ECE2"}.mi-MobeSIMNoProfile:before{content:"\ECE3"}.mi-MobileLocked:before{content:"\ECE4"}.mi-MobileSelected:before{content:"\ECE5"}.mi-MobileTablet:before{content:"\ECE6"}.mi-More:before,.mi-MoreLegacy:before{content:"\ECE7"}.mi-Mouse:before{content:"\ECE8"}.mi-MoveToFolder:before,.mi-MoveToFolderLegacy:before{content:"\ECE9"}.mi-Movies:before{content:"\ECEA"}.mi-MultiSelect:before,.mi-MultiSelectLegacy:before{content:"\ECEB"}.mi-MultiSelectLegacyMirrored:before,.mi-MultiSelectMirrored:before{content:"\ECEC"}.mi-MultimediaDMP:before{content:"\ECED"}.mi-MultimediaDMS:before{content:"\ECEE"}.mi-MultimediaDVR:before{content:"\ECEF"}.mi-MultimediaPMP:before{content:"\ECF0"}.mi-Multitask:before{content:"\ECF1"}.mi-Multitask16:before{content:"\ECF2"}.mi-MultitaskExpanded:before{content:"\ECF3"}.mi-MusicAlbum:before{content:"\ECF4"}.mi-MusicInfo:before,.mi-MusicInfoLegacy:before{content:"\ECF5"}.mi-MusicNote:before{content:"\ECF6"}.mi-MusicSharing:before{content:"\ECF7"}.mi-MusicSharingOff:before{content:"\ECF8"}.mi-Mute:before,.mi-MuteLegacy:before{content:"\ECF9"}.mi-MyNetwork:before{content:"\ECFA"}.mi-NUIFPContinueSlideAction:before{content:"\ECFB"}.mi-NUIFPContinueSlideHand:before{content:"\ECFC"}.mi-NUIFPPressAction:before{content:"\ECFD"}.mi-NUIFPPressHand:before{content:"\ECFE"}.mi-NUIFPPressRepeatAction:before{content:"\ECFF"}.mi-NUIFPRollLeftAction:before{content:"\ED00"}.mi-NUIFPRollLeftHand:before{content:"\ED01"}.mi-NUIFPRollRightHand:before{content:"\ED02"}.mi-NUIFPRollRightHandAction:before{content:"\ED03"}.mi-NUIFPStartSlideAction:before{content:"\ED04"}.mi-NUIFPPressRepeatHand:before,.mi-NUIFPStartSlideHand:before{content:"\ED05"}.mi-NUIFace:before{content:"\ED06"}.mi-NUIIris:before{content:"\ED07"}.mi-Narrator:before{content:"\ED08"}.mi-NarratorForward:before{content:"\ED09"}.mi-NarratorForwardMirrored:before{content:"\ED0A"}.mi-NearbySharing:before{content:"\ED0B"}.mi-Network:before{content:"\ED0C"}.mi-NetworkAdapter:before{content:"\ED0D"}.mi-NetworkConnected:before{content:"\ED0E"}.mi-NetworkConnectedCheckmark:before{content:"\ED0F"}.mi-NetworkOffline:before{content:"\ED10"}.mi-NetworkPrinter:before{content:"\ED11"}.mi-NetworkSharing:before{content:"\ED12"}.mi-NetworkTower:before{content:"\ED13"}.mi-NewFolder:before,.mi-NewFolderLegacy:before{content:"\ED14"}.mi-NewWindow:before,.mi-NewWindowLegacy:before{content:"\ED15"}.mi-Next:before,.mi-NextLegacy:before{content:"\ED16"}.mi-NoiseCancelation:before{content:"\ED17"}.mi-NoiseCancelationOff:before{content:"\ED18"}.mi-OEM:before{content:"\ED19"}.mi-OneBar:before,.mi-OneBarLegacy:before{content:"\ED1A"}.mi-OpenFile:before,.mi-OpenFileLegacy:before{content:"\ED1B"}.mi-OpenFolderHorizontal:before{content:"\ED1C"}.mi-OpenInNewWindow:before,.mi-OpenInNewWindowLegacy:before{content:"\ED1D"}.mi-OpenLocal:before,.mi-OpenLocalLegacy:before{content:"\ED1E"}.mi-OpenPane:before,.mi-OpenPaneLegacy:before{content:"\ED1F"}.mi-OpenPaneLegacyMirrored:before,.mi-OpenPaneMirrored:before{content:"\ED20"}.mi-OpenWith:before,.mi-OpenWithLegacy:before{content:"\ED21"}.mi-OpenWithLegacyMirrored:before,.mi-OpenWithMirrored:before{content:"\ED22"}.mi-Orientation:before,.mi-OrientationLegacy:before{content:"\ED23"}.mi-OtherUser:before,.mi-OtherUserLegacy:before{content:"\ED24"}.mi-OutlineHalfStarLeft:before{content:"\ED25"}.mi-OutlineHalfStarRight:before{content:"\ED26"}.mi-OutlineQuarterStarLeft:before{content:"\ED27"}.mi-OutlineQuarterStarRight:before{content:"\ED28"}.mi-OutlineStarLeftHalf:before{content:"\ED29"}.mi-OutlineStarRightHalf:before{content:"\ED2A"}.mi-OutlineThreeQuarterStarLeft:before{content:"\ED2B"}.mi-OutlineThreeQuarterStarRight:before{content:"\ED2C"}.mi-PC1:before,.mi-PC1Legacy:before{content:"\ED2D"}.mi-PINPad:before{content:"\ED2E"}.mi-PLAP:before{content:"\ED2F"}.mi-PPSFourLandscape:before{content:"\ED30"}.mi-PPSFourPortrait:before{content:"\ED31"}.mi-PPSOneLandscape:before{content:"\ED32"}.mi-PPSOnePortrait:before{content:"\ED33"}.mi-PPSTwoLandscape:before{content:"\ED34"}.mi-PPSTwoPortrait:before{content:"\ED35"}.mi-Package:before{content:"\ED36"}.mi-Page:before,.mi-PageLegacy:before{content:"\ED37"}.mi-PageLeft:before{content:"\ED38"}.mi-PageMarginLandscapeModerate:before{content:"\ED39"}.mi-PageMarginLandscapeNarrow:before{content:"\ED3A"}.mi-PageMarginLandscapeNormal:before{content:"\ED3B"}.mi-PageMarginLandscapeWide:before{content:"\ED3C"}.mi-PageMarginPortraitModerate:before{content:"\ED3D"}.mi-PageMarginPortraitNarrow:before{content:"\ED3E"}.mi-PageMarginPortraitNormal:before{content:"\ED3F"}.mi-PageMarginPortraitWide:before{content:"\ED40"}.mi-PageMirrored:before{content:"\ED41"}.mi-PageRight:before{content:"\ED42"}.mi-PageFillLegacy:before,.mi-PageSolid:before{content:"\ED43"}.mi-PaginationDotOutline10:before{content:"\ED44"}.mi-PaginationDotSolid10:before{content:"\ED45"}.mi-PanMode:before{content:"\ED46"}.mi-ParkingLocation:before{content:"\ED47"}.mi-ParkingLocationMirrored:before{content:"\ED48"}.mi-ParkingLocationSolid:before{content:"\ED49"}.mi-PartyLeader:before{content:"\ED4A"}.mi-PassiveAuthentication:before{content:"\ED4B"}.mi-PasswordKeyHide:before{content:"\ED4C"}.mi-PasswordKeyShow:before{content:"\ED4D"}.mi-Paste:before,.mi-PasteLegacy:before{content:"\ED4E"}.mi-Pause:before,.mi-PauseLegacy:before{content:"\ED4F"}.mi-PauseBadge12:before{content:"\ED50"}.mi-PaymentCard:before{content:"\ED51"}.mi-PenPalette:before{content:"\ED52"}.mi-PenPaletteMirrored:before{content:"\ED53"}.mi-PenTips:before{content:"\ED54"}.mi-PenTipsMirrored:before{content:"\ED55"}.mi-PenWorkspace:before{content:"\ED56"}.mi-PenWorkspaceMirrored:before{content:"\ED57"}.mi-Pencil:before{content:"\ED58"}.mi-PencilFill:before{content:"\ED59"}.mi-People:before,.mi-PeopleLegacy:before{content:"\ED5A"}.mi-PeriodKey:before{content:"\ED5B"}.mi-Permissions:before,.mi-PermissionsLegacy:before{content:"\ED5C"}.mi-PersonalFolder:before{content:"\ED5D"}.mi-Personalize:before{content:"\ED5E"}.mi-Phone:before,.mi-PhoneLegacy:before{content:"\ED5F"}.mi-PhoneBook:before,.mi-PhoneBookLegacy:before{content:"\ED60"}.mi-Photo:before{content:"\ED61"}.mi-Photo2:before{content:"\ED62"}.mi-Picture:before,.mi-PictureLegacy:before{content:"\ED63"}.mi-PieSingle:before{content:"\ED64"}.mi-Pin:before,.mi-PinLegacy:before{content:"\ED65"}.mi-PinFill:before{content:"\ED66"}.mi-Pinned:before{content:"\ED67"}.mi-PinnedFill:before{content:"\ED68"}.mi-PinyinIMELogo:before{content:"\ED69"}.mi-PlaceFolder:before,.mi-PlaceFolderLegacy:before{content:"\ED6B"}.mi-Play:before,.mi-PlayLegacy:before{content:"\ED6C"}.mi-Play36:before{content:"\ED6D"}.mi-PlayBadge12:before{content:"\ED6E"}.mi-PlayOn:before,.mi-PlayOnLegacy:before{content:"\ED70"}.mi-PlaySolid:before{content:"\ED71"}.mi-PlaybackRate1x:before{content:"\ED72"}.mi-PlaybackRateOther:before{content:"\ED73"}.mi-PlayerSettings:before{content:"\ED74"}.mi-PointErase:before{content:"\ED75"}.mi-PointEraseMirrored:before{content:"\ED76"}.mi-PointerHand:before{content:"\ED77"}.mi-PoliceCar:before{content:"\ED78"}.mi-PostUpdate:before,.mi-PostUpdateLegacy:before{content:"\ED79"}.mi-PowerButton:before{content:"\ED7A"}.mi-CheckboxFill:before,.mi-CheckboxFillLegacy:before,.mi-CheckboxFillZeroWidthLegacy:before,.mi-PresenceChicklet:before,.mi-PresenceChickletLegacy:before,.mi-ResizeMouseLarge:before{content:"\ED7B"}.mi-PresenceChickletVideo:before,.mi-PresenceChickletVideoLegacy:before{content:"\ED7C"}.mi-Preview:before,.mi-PreviewLegacy:before{content:"\ED7D"}.mi-PreviewLink:before,.mi-PreviewLinkLegacy:before{content:"\ED7E"}.mi-Previous:before,.mi-PreviousLegacy:before{content:"\ED7F"}.mi-Print:before,.mi-PrintLegacy:before{content:"\ED80"}.mi-PrintAllPages:before{content:"\ED81"}.mi-PrintCustomRange:before{content:"\ED82"}.mi-PrintDefault:before{content:"\ED83"}.mi-Printer3D:before{content:"\ED84"}.mi-Printer3DLegacy:before{content:"\ED85"}.mi-PrintfaxPrinterFile:before{content:"\ED86"}.mi-Priority:before,.mi-PriorityLegacy:before{content:"\ED87"}.mi-Process:before{content:"\ED88"}.mi-Processing:before{content:"\ED89"}.mi-ProgressRingDots:before{content:"\ED8A"}.mi-Project:before{content:"\ED8B"}.mi-Projector:before{content:"\ED8C"}.mi-ProtectedDocument:before,.mi-ProtectedDocumentLegacy:before{content:"\ED8D"}.mi-Protractor:before{content:"\ED8E"}.mi-ProvisioningPackage:before{content:"\ED8F"}.mi-PuncKey:before{content:"\ED90"}.mi-PuncKey0:before{content:"\ED91"}.mi-PuncKey1:before{content:"\ED92"}.mi-PuncKey2:before{content:"\ED93"}.mi-PuncKey3:before{content:"\ED94"}.mi-PuncKey4:before{content:"\ED95"}.mi-PuncKey5:before{content:"\ED96"}.mi-PuncKey6:before{content:"\ED97"}.mi-PuncKey7:before{content:"\ED98"}.mi-PuncKey8:before{content:"\ED99"}.mi-PuncKey9:before{content:"\ED9A"}.mi-PuncKeyLeftBottom:before{content:"\ED9B"}.mi-PuncKeyRightBottom:before{content:"\ED9C"}.mi-Puzzle:before{content:"\ED9D"}.mi-QWERTYOff:before{content:"\ED9E"}.mi-QWERTYOn:before{content:"\ED9F"}.mi-QuarentinedItems:before{content:"\EDA0"}.mi-QuarentinedItemsMirrored:before{content:"\EDA1"}.mi-QuarterStarLeft:before{content:"\EDA2"}.mi-QuarterStarRight:before{content:"\EDA3"}.mi-QuickNote:before{content:"\EDA4"}.mi-QuietHours:before{content:"\EDA5"}.mi-QuietHoursBadge12:before{content:"\EDA6"}.mi-Radar:before{content:"\EDA7"}.mi-RadioBtnOff:before{content:"\EDA8"}.mi-RadioBtnOn:before{content:"\EDA9"}.mi-RadioBullet:before{content:"\EDAA"}.mi-RadioBullet2:before{content:"\EDAB"}.mi-Read:before,.mi-ReadLegacy:before{content:"\EDAC"}.mi-ReadingList:before{content:"\EDAD"}.mi-ReceiptPrinter:before{content:"\EDAE"}.mi-LengthLegacy:before,.mi-Recent:before{content:"\EDAF"}.mi-Record:before,.mi-RecordLegacy:before{content:"\EDB0"}.mi-RectangularClipping:before{content:"\EDB1"}.mi-RedEye:before{content:"\EDB2"}.mi-Redo:before,.mi-RedoLegacy:before{content:"\EDB3"}.mi-ReduceTile:before,.mi-ReduceTileLegacy:before{content:"\EDB5"}.mi-ReduceTileLegacyMirrored:before,.mi-ReduceTileMirrored:before{content:"\EDB7"}.mi-Refresh:before,.mi-RefreshLegacy:before,.mi-RepeatAll:before,.mi-RepeatAllLegacy:before{content:"\EDB8"}.mi-Relationship:before{content:"\EDB9"}.mi-RememberedDevice:before{content:"\EDBA"}.mi-Reminder:before{content:"\EDBB"}.mi-ReminderFill:before{content:"\EDBC"}.mi-Remote:before,.mi-RemoteLegacy:before{content:"\EDBD"}.mi-Remove:before,.mi-RemoveLegacy:before{content:"\EDBE"}.mi-RemoveFrom:before{content:"\EDBF"}.mi-Rename:before,.mi-RenameLegacy:before{content:"\EDC0"}.mi-Repair:before,.mi-RepairLegacy:before{content:"\EDC1"}.mi-RepeatOne:before,.mi-RepeatOneLegacy:before{content:"\EDC2"}.mi-Replay:before{content:"\EDC3"}.mi-Reply:before,.mi-ReplyLegacy:before{content:"\EDC4"}.mi-ReplyMirrored:before{content:"\EDC5"}.mi-ReportDocument:before{content:"\EDC6"}.mi-ReportHacked:before,.mi-ReportHackedLegacy:before{content:"\EDC7"}.mi-ResetDevice:before{content:"\EDC8"}.mi-ResetDrive:before{content:"\EDC9"}.mi-Reshare:before,.mi-ReshareLegacy:before{content:"\EDCA"}.mi-ResizeMouseMedium:before{content:"\EDCB"}.mi-ResizeMouseMediumMirrored:before{content:"\EDCC"}.mi-ResizeMouseSmall:before{content:"\EDCD"}.mi-ResizeMouseSmallMirrored:before{content:"\EDCE"}.mi-ResizeMouseTall:before{content:"\EDCF"}.mi-ResizeMouseTallMirrored:before{content:"\EDD0"}.mi-ResizeMouseWide:before{content:"\EDD1"}.mi-ResizeTouchLarger:before{content:"\EDD2"}.mi-ResizeTouchNarrower:before{content:"\EDD3"}.mi-ResizeTouchNarrowerMirrored:before{content:"\EDD4"}.mi-ResizeTouchShorter:before{content:"\EDD5"}.mi-ResizeTouchSmaller:before{content:"\EDD6"}.mi-Resolution:before,.mi-ResolutionLegacy:before{content:"\EDD8"}.mi-ReturnKey:before{content:"\EDD9"}.mi-ReturnKeyLg:before{content:"\EDDA"}.mi-ReturnKeySm:before{content:"\EDDB"}.mi-ReturnToWindow:before,.mi-ReturnToWindowLegacy:before{content:"\EDDC"}.mi-RevToggleKey:before{content:"\EDDD"}.mi-Rewind:before{content:"\EDDE"}.mi-RightArrowKeyTime0:before{content:"\EDDF"}.mi-RightArrowKeyTime1:before{content:"\EDE0"}.mi-RightArrowKeyTime2:before{content:"\EDE1"}.mi-RightArrowKeyTime3:before{content:"\EDE2"}.mi-RightArrowKeyTime4:before{content:"\EDE3"}.mi-RightDoubleQuote:before{content:"\EDE4"}.mi-RightQuote:before{content:"\EDE5"}.mi-RightStick:before{content:"\EDE6"}.mi-Ringer:before{content:"\EDE7"}.mi-RingerBadge12:before{content:"\EDE8"}.mi-RingerSilent:before{content:"\EDE9"}.mi-RoamingDomestic:before{content:"\EDEA"}.mi-RoamingInternational:before{content:"\EDEB"}.mi-Robot:before{content:"\EDEC"}.mi-Rotate:before{content:"\EDED"}.mi-RotateCamera:before,.mi-RotateCameraLegacy:before{content:"\EDEE"}.mi-RotateLegacy:before{content:"\EDEF"}.mi-RotateMapLeft:before{content:"\EDF0"}.mi-RotateMapRight:before{content:"\EDF1"}.mi-RotationLock:before{content:"\EDF2"}.mi-Ruler:before{content:"\EDF3"}.mi-SDCard:before{content:"\EDF4"}.mi-SIMError:before{content:"\EDF5"}.mi-SIMLock:before{content:"\EDF6"}.mi-SIMMissing:before{content:"\EDF7"}.mi-SIPMove:before{content:"\EDF8"}.mi-SIPRedock:before{content:"\EDF9"}.mi-SIPUndock:before{content:"\EDFA"}.mi-Safe:before{content:"\EDFB"}.mi-Save:before,.mi-SaveLegacy:before{content:"\EDFC"}.mi-SaveAs:before,.mi-SaveAsLegacy:before{content:"\EDFD"}.mi-SaveCopy:before{content:"\EDFE"}.mi-SaveLocal:before,.mi-SaveLocalLegacy:before{content:"\EDFF"}.mi-Scan:before,.mi-ScanLegacy:before{content:"\EE00"}.mi-ScreenTime:before{content:"\EE01"}.mi-ScrollMode:before{content:"\EE02"}.mi-ScrollUpDown:before{content:"\EE03"}.mi-FindLegacy:before,.mi-Search:before,.mi-SearchboxLegacy:before{content:"\EE04"}.mi-SearchAndApps:before{content:"\EE05"}.mi-SelectAll:before,.mi-SelectAllLegacy:before{content:"\EE06"}.mi-SemanticZoom:before,.mi-SemanticZoomLegacy:before{content:"\EE08"}.mi-Send:before,.mi-SendLegacy:before{content:"\EE09"}.mi-SendFill:before{content:"\EE0A"}.mi-SendFillMirrored:before{content:"\EE0B"}.mi-SendMirrored:before{content:"\EE0C"}.mi-Sensor:before{content:"\EE0D"}.mi-Set:before{content:"\EE0E"}.mi-SetSolid:before{content:"\EE0F"}.mi-SetTile:before,.mi-SetTileLegacy:before{content:"\EE10"}.mi-SetlockScreen:before,.mi-SetlockScreenLegacy:before{content:"\EE11"}.mi-Settings:before,.mi-SettingsLegacy:before{content:"\EE12"}.mi-SettingsBattery:before{content:"\EE13"}.mi-SettingsDisplaySound:before{content:"\EE14"}.mi-Share:before{content:"\EE15"}.mi-ShareBroadband:before{content:"\EE16"}.mi-Shield:before{content:"\EE17"}.mi-Shop:before,.mi-ShopLegacy:before{content:"\EE18"}.mi-ShoppingCart:before{content:"\EE19"}.mi-ShowAllFiles1:before,.mi-ShowAllFiles1Legacy:before{content:"\EE1B"}.mi-ShowAllFiles3:before,.mi-ShowAllFiles3Legacy:before{content:"\EE1D"}.mi-ShowBcc:before,.mi-ShowBccLegacy:before{content:"\EE1E"}.mi-ShowResults:before,.mi-ShowResultsLegacy:before{content:"\EE1F"}.mi-ShowResultsLegacyMirrored:before,.mi-ShowResultsMirrored:before{content:"\EE20"}.mi-Shuffle:before,.mi-ShuffleLegacy:before{content:"\EE21"}.mi-SignalBars1:before{content:"\EE22"}.mi-SignalBars2:before{content:"\EE23"}.mi-SignalBars3:before{content:"\EE24"}.mi-SignalBars4:before{content:"\EE25"}.mi-SignalBars5:before{content:"\EE26"}.mi-SignalError:before{content:"\EE27"}.mi-SignalNotConnected:before{content:"\EE28"}.mi-SignalRoaming:before{content:"\EE29"}.mi-SignatureCapture:before{content:"\EE2A"}.mi-Size:before{content:"\EE2B"}.mi-SkipBack10:before{content:"\EE2C"}.mi-SkipForward30:before{content:"\EE2D"}.mi-SliderThumb:before{content:"\EE2E"}.mi-Slideshow:before,.mi-SlideshowLegacy:before{content:"\EE2F"}.mi-SlowMotionOn:before{content:"\EE30"}.mi-SmallErase:before{content:"\EE31"}.mi-Smartcard:before{content:"\EE32"}.mi-SmartcardVirtual:before{content:"\EE33"}.mi-Sort:before,.mi-SortLegacy:before{content:"\EE34"}.mi-SpatialVolume0:before{content:"\EE35"}.mi-SpatialVolume1:before{content:"\EE36"}.mi-SpatialVolume2:before{content:"\EE37"}.mi-SpatialVolume3:before{content:"\EE38"}.mi-Speakers:before{content:"\EE39"}.mi-Speech:before{content:"\EE3A"}.mi-SpeedHigh:before{content:"\EE3B"}.mi-SpeedMedium:before{content:"\EE3C"}.mi-SpeedOff:before{content:"\EE3D"}.mi-StaplingLandscapeBookBinding:before{content:"\EE3E"}.mi-StaplingLandscapeBottomLeft:before{content:"\EE3F"}.mi-StaplingLandscapeBottomRight:before{content:"\EE40"}.mi-StaplingLandscapeTopLeft:before{content:"\EE41"}.mi-StaplingLandscapeTopRight:before{content:"\EE42"}.mi-StaplingLandscapeTwoBottom:before{content:"\EE43"}.mi-StaplingLandscapeTwoLeft:before{content:"\EE44"}.mi-StaplingLandscapeTwoRight:before{content:"\EE45"}.mi-StaplingLandscapeTwoTop:before{content:"\EE46"}.mi-StaplingOff:before{content:"\EE47"}.mi-StaplingPortraitBookBinding:before{content:"\EE48"}.mi-StaplingPortraitBottomLeft:before{content:"\EE49"}.mi-StaplingPortraitBottomRight:before{content:"\EE4A"}.mi-StaplingPortraitTopLeft:before{content:"\EE4B"}.mi-StaplingPortraitTopRight:before{content:"\EE4C"}.mi-StaplingPortraitTwoBottom:before{content:"\EE4D"}.mi-StaplingPortraitTwoLeft:before{content:"\EE4E"}.mi-StaplingPortraitTwoRight:before{content:"\EE4F"}.mi-StaplingPortraitTwoTop:before{content:"\EE50"}.mi-StartPoint:before{content:"\EE51"}.mi-StartPointSolid:before{content:"\EE52"}.mi-StatusCheckmark:before{content:"\EE53"}.mi-StatusCheckmark7:before{content:"\EE54"}.mi-StatusCheckmarkLeft:before{content:"\EE55"}.mi-StatusCircle:before{content:"\EE56"}.mi-StatusCircle7:before{content:"\EE57"}.mi-StatusCircleBlock:before{content:"\EE58"}.mi-StatusCircleBlock2:before{content:"\EE59"}.mi-StatusCircleCheckmark:before{content:"\EE5A"}.mi-StatusCircleErrorX:before{content:"\EE5B"}.mi-StatusCircleExclamation:before{content:"\EE5C"}.mi-StatusCircleInfo:before{content:"\EE5D"}.mi-StatusCircleInner:before{content:"\EE5E"}.mi-StatusCircleLeft:before{content:"\EE5F"}.mi-StatusCircleOuter:before{content:"\EE60"}.mi-StatusCircleQuestionMark:before{content:"\EE61"}.mi-StatusCircleRing:before{content:"\EE62"}.mi-StatusCircleSync:before{content:"\EE63"}.mi-StatusConnecting1:before{content:"\EE64"}.mi-StatusConnecting2:before{content:"\EE65"}.mi-StatusDataTransfer:before{content:"\EE66"}.mi-StatusDataTransferVPN:before{content:"\EE67"}.mi-StatusDualSIM1:before{content:"\EE68"}.mi-StatusDualSIM1VPN:before{content:"\EE69"}.mi-StatusDualSIM2:before{content:"\EE6A"}.mi-StatusDualSIM2VPN:before{content:"\EE6B"}.mi-StatusError:before{content:"\EE6C"}.mi-StatusErrorCircle7:before{content:"\EE6D"}.mi-StatusErrorFull:before{content:"\EE6E"}.mi-StatusErrorLeft:before{content:"\EE6F"}.mi-StatusExclamationCircle7:before{content:"\EE70"}.mi-StatusInfo:before{content:"\EE71"}.mi-StatusInfoLeft:before{content:"\EE72"}.mi-StatusPause7:before{content:"\EE73"}.mi-StatusSGLTE:before{content:"\EE74"}.mi-StatusSGLTECell:before{content:"\EE75"}.mi-StatusSGLTEDataVPN:before{content:"\EE76"}.mi-StatusTriangle:before{content:"\EE77"}.mi-StatusTriangleExclamation:before{content:"\EE78"}.mi-StatusTriangleInner:before{content:"\EE79"}.mi-StatusTriangleLeft:before{content:"\EE7A"}.mi-StatusTriangleOuter:before{content:"\EE7B"}.mi-StatusUnsecure:before{content:"\EE7C"}.mi-StatusVPN:before{content:"\EE7D"}.mi-StatusWarning:before{content:"\EE7E"}.mi-StatusWarningLeft:before{content:"\EE7F"}.mi-Sticker2:before{content:"\EE80"}.mi-StockDown:before{content:"\EE81"}.mi-StockUp:before{content:"\EE82"}.mi-Stop:before,.mi-StopLegacy:before{content:"\EE83"}.mi-StopPoint:before{content:"\EE84"}.mi-StopPointSolid:before{content:"\EE85"}.mi-StopSlideshow:before,.mi-StopSlideshowLegacy:before{content:"\EE87"}.mi-Stopwatch:before{content:"\EE88"}.mi-StorageNetworkWireless:before{content:"\EE89"}.mi-StorageOptical:before{content:"\EE8A"}.mi-StorageTape:before{content:"\EE8B"}.mi-Streaming:before{content:"\EE8C"}.mi-StreamingEnterprise:before{content:"\EE8D"}.mi-Street:before,.mi-StreetLegacy:before{content:"\EE8E"}.mi-StreetsideSplitExpand:before{content:"\EE8F"}.mi-StreetsideSplitMinimize:before{content:"\EE90"}.mi-StrokeErase:before{content:"\EE91"}.mi-StrokeErase2:before{content:"\EE92"}.mi-StrokeEraseMirrored:before{content:"\EE93"}.mi-Subtitles:before{content:"\EE94"}.mi-SubtitlesAudio:before{content:"\EE95"}.mi-SurfaceHub:before{content:"\EE96"}.mi-SurfaceHubSelected:before{content:"\EE97"}.mi-Sustainable:before{content:"\EE98"}.mi-Swipe:before{content:"\EE99"}.mi-SwipeRevealArt:before{content:"\EE9A"}.mi-Switch:before,.mi-SwitchLegacy:before{content:"\EE9B"}.mi-SwitchApps:before,.mi-SwitchAppsLegacy:before{content:"\EE9C"}.mi-SwitchUser:before{content:"\EE9D"}.mi-Sync:before,.mi-SyncLegacy:before{content:"\EE9E"}.mi-SyncBadge12:before{content:"\EE9F"}.mi-SyncError:before{content:"\EEA0"}.mi-SyncFolder:before,.mi-SyncFolderLegacy:before{content:"\EEA1"}.mi-System:before{content:"\EEA2"}.mi-TVMonitor:before{content:"\EEA3"}.mi-TVMonitorSelected:before{content:"\EEA4"}.mi-Tablet:before{content:"\EEA5"}.mi-TabletMode:before{content:"\EEA6"}.mi-TabletSelected:before{content:"\EEA7"}.mi-Tag:before,.mi-TagLegacy:before{content:"\EEA8"}.mi-TapAndSend:before{content:"\EEA9"}.mi-TaskView:before{content:"\EEAA"}.mi-TaskViewExpanded:before{content:"\EEAB"}.mi-TaskViewSettings:before{content:"\EEAC"}.mi-TaskbarPhone:before{content:"\EEAD"}.mi-ThisPC:before{content:"\EEAE"}.mi-ThoughtBubble:before{content:"\EEAF"}.mi-ThreeBars:before,.mi-ThreeBarsLegacy:before{content:"\EEB0"}.mi-ThreeQuarterStarLeft:before{content:"\EEB1"}.mi-ThreeQuarterStarRight:before{content:"\EEB2"}.mi-Tiles:before{content:"\EEB3"}.mi-TiltDown:before{content:"\EEB4"}.mi-TiltUp:before{content:"\EEB5"}.mi-TimeLanguage:before{content:"\EEB6"}.mi-ToggleBorder:before{content:"\EEB7"}.mi-ToggleFilled:before{content:"\EEB8"}.mi-ToggleThumb:before{content:"\EEB9"}.mi-TollSolid:before{content:"\EEBA"}.mi-Lightbulb:before,.mi-ToolTip:before{content:"\EEBB"}.mi-Touch:before{content:"\EEBC"}.mi-TouchPointer:before,.mi-TouchPointerLegacy:before{content:"\EEBD"}.mi-Touchpad:before{content:"\EEBE"}.mi-Touchscreen:before{content:"\EEBF"}.mi-Trackers:before{content:"\EEC0"}.mi-TrackersMirrored:before{content:"\EEC1"}.mi-TrafficCongestionSolid:before{content:"\EEC2"}.mi-TrafficLight:before{content:"\EEC3"}.mi-Train:before{content:"\EEC4"}.mi-TrainSolid:before{content:"\EEC5"}.mi-TreeFolderFolder:before{content:"\EEC6"}.mi-TreeFolderFolderFill:before{content:"\EEC7"}.mi-TreeFolderFolderOpen:before{content:"\EEC8"}.mi-TreeFolderFolderOpenFill:before{content:"\EEC9"}.mi-TriggerLeft:before{content:"\EECA"}.mi-TriggerRight:before{content:"\EECB"}.mi-Trim:before,.mi-TrimLegacy:before{content:"\EECC"}.mi-TwoBars:before,.mi-TwoBarsLegacy:before{content:"\EECD"}.mi-TwoPage:before,.mi-TwoPageLegacy:before{content:"\EECE"}.mi-Type:before,.mi-TypeLegacy:before{content:"\EECF"}.mi-TypingIndicatorLegacy:before{content:"\EED0"}.mi-USB:before{content:"\EED1"}.mi-USBSafeConnect:before{content:"\EED2"}.mi-Underline:before,.mi-UnderlineLegacy:before{content:"\EED3"}.mi-UnderlineLKorean:before,.mi-UnderlineLKoreanLegacy:before{content:"\EED5"}.mi-UnderlineRussian:before,.mi-UnderlineRussianLegacy:before{content:"\EED7"}.mi-UnderlineS:before,.mi-UnderlineSLegacy:before{content:"\EED9"}.mi-UnderlineU:before,.mi-UnderlineULegacy:before{content:"\EEDB"}.mi-UnderscoreSpace:before{content:"\EEDC"}.mi-Undo:before,.mi-UndoLegacy:before{content:"\EEDD"}.mi-Unfavorite:before,.mi-UnfavoriteLegacy:before{content:"\EEDE"}.mi-Unit:before{content:"\EEDF"}.mi-Unknown:before{content:"\EEE0"}.mi-UnknownMirrored:before{content:"\EEE1"}.mi-Unlock:before,.mi-UnlockLegacy:before{content:"\EEE2"}.mi-Unpin:before,.mi-UnpinLegacy:before{content:"\EEE3"}.mi-UnsyncFolder:before,.mi-UnsyncFolderLegacy:before{content:"\EEE4"}.mi-Up:before,.mi-UpLegacy:before{content:"\EEE5"}.mi-UpArrowShiftKey:before{content:"\EEE6"}.mi-UpShiftKey:before{content:"\EEE7"}.mi-UpdateRestore:before{content:"\EEE8"}.mi-Upload:before,.mi-UploadLegacy:before,.mi-UploadSkyDriveLegacy:before{content:"\EEE9"}.mi-UserAPN:before{content:"\EEEA"}.mi-VPN:before{content:"\EEEB"}.mi-VerticalBattery0:before{content:"\EEEC"}.mi-VerticalBattery1:before{content:"\EEED"}.mi-VerticalBattery10:before{content:"\EEEE"}.mi-VerticalBattery2:before{content:"\EEEF"}.mi-VerticalBattery3:before{content:"\EEF0"}.mi-VerticalBattery4:before{content:"\EEF1"}.mi-VerticalBattery5:before{content:"\EEF2"}.mi-VerticalBattery6:before{content:"\EEF3"}.mi-VerticalBattery7:before{content:"\EEF4"}.mi-VerticalBattery8:before{content:"\EEF5"}.mi-VerticalBattery9:before{content:"\EEF6"}.mi-VerticalBatteryCharging0:before{content:"\EEF7"}.mi-VerticalBatteryCharging1:before{content:"\EEF8"}.mi-VerticalBatteryCharging10:before{content:"\EEF9"}.mi-VerticalBatteryCharging2:before{content:"\EEFA"}.mi-VerticalBatteryCharging3:before{content:"\EEFB"}.mi-VerticalBatteryCharging4:before{content:"\EEFC"}.mi-VerticalBatteryCharging5:before{content:"\EEFD"}.mi-VerticalBatteryCharging6:before{content:"\EEFE"}.mi-VerticalBatteryCharging7:before{content:"\EEFF"}.mi-VerticalBatteryCharging8:before{content:"\EF00"}.mi-VerticalBatteryCharging9:before{content:"\EF01"}.mi-VerticalBatteryUnknown:before{content:"\EF02"}.mi-Vibrate:before{content:"\EF03"}.mi-Video:before,.mi-VideoInlineLegacy:before,.mi-VideoLegacy:before{content:"\EF04"}.mi-Video360:before{content:"\EF05"}.mi-VideoChat:before,.mi-VideoChatLegacy:before{content:"\EF06"}.mi-VideoSolid:before{content:"\EF07"}.mi-RevealPasswordLegacy:before,.mi-View:before,.mi-ViewLegacy:before{content:"\EF08"}.mi-ShowAllFilesLegacy:before,.mi-ViewAll:before,.mi-ViewAllLegacy:before{content:"\EF09"}.mi-ViewDashboard:before{content:"\EF0A"}.mi-Volume:before,.mi-VolumeLegacy:before{content:"\EF0B"}.mi-Volume0:before{content:"\EF0C"}.mi-Volume1:before{content:"\EF0D"}.mi-Volume2:before{content:"\EF0E"}.mi-Volume3:before{content:"\EF0F"}.mi-VolumeBars:before{content:"\EF10"}.mi-Walk:before{content:"\EF11"}.mi-WalkSolid:before{content:"\EF12"}.mi-Warning:before{content:"\EF13"}.mi-Webcam:before,.mi-WebcamLegacy:before{content:"\EF14"}.mi-Webcam2:before{content:"\EF15"}.mi-Website:before{content:"\EF16"}.mi-Wheel:before{content:"\EF17"}.mi-Wifi:before{content:"\EF18"}.mi-Wifi1:before{content:"\EF19"}.mi-Wifi2:before{content:"\EF1A"}.mi-Wifi3:before{content:"\EF1B"}.mi-WifiAttentionOverlay:before{content:"\EF1C"}.mi-WifiCall0:before{content:"\EF1D"}.mi-WifiCall1:before{content:"\EF1E"}.mi-WifiCall2:before{content:"\EF1F"}.mi-WifiCall3:before{content:"\EF20"}.mi-WifiCall4:before{content:"\EF21"}.mi-WifiCallBars:before{content:"\EF22"}.mi-WifiError0:before{content:"\EF23"}.mi-WifiError1:before{content:"\EF24"}.mi-WifiError2:before{content:"\EF25"}.mi-WifiError3:before{content:"\EF26"}.mi-WifiError4:before{content:"\EF27"}.mi-WifiEthernet:before{content:"\EF28"}.mi-InternetSharing:before,.mi-WifiHotspot:before{content:"\EF29"}.mi-WifiWarning0:before{content:"\EF2A"}.mi-WifiWarning1:before{content:"\EF2B"}.mi-WifiWarning2:before{content:"\EF2C"}.mi-WifiWarning3:before{content:"\EF2D"}.mi-WifiWarning4:before{content:"\EF2E"}.mi-WindDirection:before{content:"\EF2F"}.mi-WindowsInsider:before{content:"\EF30"}.mi-WiredUSB:before{content:"\EF31"}.mi-WirelessUSB:before{content:"\EF32"}.mi-Work:before{content:"\EF33"}.mi-WorkSolid:before{content:"\EF34"}.mi-World:before,.mi-WorldLegacy:before{content:"\EF35"}.mi-XboxOneConsole:before{content:"\EF36"}.mi-ZeroBars:before,.mi-ZeroBarsLegacy:before{content:"\EF37"}.mi-Zoom:before,.mi-ZoomLegacy:before{content:"\EF38"}.mi-ZoomIn:before,.mi-ZoomInLegacy:before{content:"\EF39"}.mi-ZoomMode:before{content:"\EF3A"}.mi-ZoomOut:before,.mi-ZoomOutLegacy:before{content:"\EF3B"}.mi-eSIM:before{content:"\EF3C"}.mi-eSIMBusy:before{content:"\EF3D"}.mi-eSIMLocked:before{content:"\EF3E"}.mi-eSIMNoProfile:before{content:"\EF3F"}.mi-E80B:before,.mi-uniE80B:before{content:"\EF40"}.mi-EA0D:before,.mi-uniEA0D:before{content:"\EF41"}.mi-EA3F:before,.mi-uniEA3F:before{content:"\EF42"}.mi-EA90:before,.mi-uniEA90:before{content:"\EF43"}.mi-EAC2:before,.mi-uniEAC2:before{content:"\EF44"}.mi-EC6C:before,.mi-uniEC6C:before{content:"\EF45"}.mi-EEA3:before,.mi-uniEEA3:before{content:"\EF46"}.mi-F2B7:before,.mi-uniF2B7:before{content:"\EF47"}.mi-F5AA:before,.mi-uniF5AA:before{content:"\EF48"}.mi-F614:before,.mi-uniF614:before{content:"\EF49"}.mi-F615:before,.mi-uniF615:before{content:"\EF4A"}.mi-F616:before,.mi-uniF616:before{content:"\EF4B"}.mi-F617:before,.mi-uniF617:before{content:"\EF4C"}.mi-F657:before,.mi-uniF657:before{content:"\EF4D"}.mi-F658:before,.mi-uniF658:before{content:"\EF4E"}.mi-F659:before,.mi-uniF659:before{content:"\EF4F"}.mi-F65A:before,.mi-uniF65A:before{content:"\EF50"}.mi-F65B:before,.mi-uniF65B:before{content:"\EF51"}.mi-F65C:before,.mi-uniF65C:before{content:"\EF52"}.mi-F69E:before,.mi-uniF69E:before{content:"\EF53"}.mi-F6FA:before,.mi-uniF6FA:before{content:"\EF54"}.mi-F712:before,.mi-uniF712:before{content:"\EF55"}.mi-F71C:before,.mi-uniF71C:before{content:"\EF56"}.mi-F71D:before,.mi-uniF71D:before{content:"\EF57"}.mi-F71E:before,.mi-uniF71E:before{content:"\EF58"}.mi-F738:before,.mi-uniF738:before{content:"\EF59"}.mi-F739:before,.mi-uniF739:before{content:"\EF5A"}.mi-F73D:before,.mi-uniF73D:before{content:"\EF5B"}.mi-F73E:before,.mi-uniF73E:before{content:"\EF5C"}.mi-F73F:before,.mi-uniF73F:before{content:"\EF5D"}.mi-F740:before,.mi-uniF740:before{content:"\EF5E"}.mi-F741:before,.mi-uniF741:before{content:"\EF5F"}.mi-F742:before,.mi-uniF742:before{content:"\EF60"}.mi-F743:before,.mi-uniF743:before{content:"\EF61"}.mi-F744:before,.mi-uniF744:before{content:"\EF62"}.mi-F745:before,.mi-uniF745:before{content:"\EF63"}.mi-F746:before,.mi-uniF746:before{content:"\EF64"}.mi-F785:before,.mi-uniF785:before{content:"\EF65"}.mi-500px:before{content:"\EF66"}.mi-accessible-icon:before{content:"\EF67"}.mi-accusoft:before{content:"\EF68"}.mi-acquisitions-incorporated:before{content:"\EF69"}.mi-adn:before{content:"\EF6A"}.mi-adobe:before{content:"\EF6B"}.mi-adversal:before{content:"\EF6C"}.mi-affiliatetheme:before{content:"\EF6D"}.mi-algolia:before{content:"\EF6E"}.mi-alipay:before{content:"\EF6F"}.mi-amazon-pay:before{content:"\EF70"}.mi-amazon:before{content:"\EF71"}.mi-amilia:before{content:"\EF72"}.mi-android:before{content:"\EF73"}.mi-angellist:before{content:"\EF74"}.mi-angrycreative:before{content:"\EF75"}.mi-angular:before{content:"\EF76"}.mi-app-store-ios:before{content:"\EF77"}.mi-app-store:before{content:"\EF78"}.mi-apper:before{content:"\EF79"}.mi-apple-pay:before{content:"\EF7A"}.mi-apple:before{content:"\EF7B"}.mi-artstation:before{content:"\EF7C"}.mi-asymmetrik:before{content:"\EF7D"}.mi-atlassian:before{content:"\EF7E"}.mi-audible:before{content:"\EF7F"}.mi-autoprefixer:before{content:"\EF80"}.mi-avianex:before{content:"\EF81"}.mi-aviato:before{content:"\EF82"}.mi-aws:before{content:"\EF83"}.mi-bandcamp:before{content:"\EF84"}.mi-behance-square:before{content:"\EF85"}.mi-behance:before{content:"\EF86"}.mi-bimobject:before{content:"\EF87"}.mi-bitbucket:before{content:"\EF88"}.mi-bitcoin:before{content:"\EF89"}.mi-bity:before{content:"\EF8A"}.mi-black-tie:before{content:"\EF8B"}.mi-blackberry:before{content:"\EF8C"}.mi-blogger-b:before{content:"\EF8D"}.mi-blogger:before{content:"\EF8E"}.mi-bluetooth-b:before{content:"\EF8F"}.mi-bluetooth:before{content:"\EF90"}.mi-btc:before{content:"\EF91"}.mi-buromobelexperte:before{content:"\EF92"}.mi-buysellads:before{content:"\EF93"}.mi-canadian-maple-leaf:before{content:"\EF94"}.mi-cc-amazon-pay:before{content:"\EF95"}.mi-cc-amex:before{content:"\EF96"}.mi-cc-apple-pay:before{content:"\EF97"}.mi-cc-diners-club:before{content:"\EF98"}.mi-cc-discover:before{content:"\EF99"}.mi-cc-jcb:before{content:"\EF9A"}.mi-cc-mastercard:before{content:"\EF9B"}.mi-cc-paypal:before{content:"\EF9C"}.mi-cc-stripe:before{content:"\EF9D"}.mi-cc-visa:before{content:"\EF9E"}.mi-centercode:before{content:"\EF9F"}.mi-centos:before{content:"\EFA0"}.mi-chrome:before{content:"\EFA1"}.mi-cloudscale:before{content:"\EFA2"}.mi-cloudsmith:before{content:"\EFA3"}.mi-cloudversify:before{content:"\EFA4"}.mi-codepen:before{content:"\EFA5"}.mi-codiepie:before{content:"\EFA6"}.mi-confluence:before{content:"\EFA7"}.mi-connectdevelop:before{content:"\EFA8"}.mi-contao:before{content:"\EFA9"}.mi-cpanel:before{content:"\EFAA"}.mi-creative-commons-by:before{content:"\EFAB"}.mi-creative-commons-nc-eu:before{content:"\EFAC"}.mi-creative-commons-nc-jp:before{content:"\EFAD"}.mi-creative-commons-nc:before{content:"\EFAE"}.mi-creative-commons-nd:before{content:"\EFAF"}.mi-creative-commons-pd-alt:before{content:"\EFB0"}.mi-creative-commons-pd:before{content:"\EFB1"}.mi-creative-commons-remix:before{content:"\EFB2"}.mi-creative-commons-sa:before{content:"\EFB3"}.mi-creative-commons-sampling-plus:before{content:"\EFB4"}.mi-creative-commons-sampling:before{content:"\EFB5"}.mi-creative-commons-share:before{content:"\EFB6"}.mi-creative-commons-zero:before{content:"\EFB7"}.mi-creative-commons:before{content:"\EFB8"}.mi-critical-role:before{content:"\EFB9"}.mi-css3-alt:before{content:"\EFBA"}.mi-css3:before{content:"\EFBB"}.mi-cuttlefish:before{content:"\EFBC"}.mi-d-and-d-beyond:before{content:"\EFBD"}.mi-d-and-d:before{content:"\EFBE"}.mi-dashcube:before{content:"\EFBF"}.mi-delicious:before{content:"\EFC0"}.mi-deploydog:before{content:"\EFC1"}.mi-deskpro:before{content:"\EFC2"}.mi-dev:before{content:"\EFC3"}.mi-deviantart:before{content:"\EFC4"}.mi-dhl:before{content:"\EFC5"}.mi-diaspora:before{content:"\EFC6"}.mi-digg:before{content:"\EFC7"}.mi-digital-ocean:before{content:"\EFC8"}.mi-discord:before{content:"\EFC9"}.mi-discourse:before{content:"\EFCA"}.mi-dochub:before{content:"\EFCB"}.mi-docker:before{content:"\EFCC"}.mi-draft2digital:before{content:"\EFCD"}.mi-dribbble-square:before{content:"\EFCE"}.mi-dribbble:before{content:"\EFCF"}.mi-dropbox:before{content:"\EFD0"}.mi-drupal:before{content:"\EFD1"}.mi-dyalog:before{content:"\EFD2"}.mi-earlybirds:before{content:"\EFD3"}.mi-ebay:before{content:"\EFD4"}.mi-edge:before{content:"\EFD5"}.mi-elementor:before{content:"\EFD6"}.mi-ello:before{content:"\EFD7"}.mi-ember:before{content:"\EFD8"}.mi-empire:before{content:"\EFD9"}.mi-envira:before{content:"\EFDA"}.mi-erlang:before{content:"\EFDB"}.mi-ethereum:before{content:"\EFDC"}.mi-etsy:before{content:"\EFDD"}.mi-expeditedssl:before{content:"\EFDE"}.mi-facebook-f:before{content:"\EFDF"}.mi-facebook-messenger:before{content:"\EFE0"}.mi-facebook-square:before{content:"\EFE1"}.mi-facebook:before{content:"\EFE2"}.mi-fedex:before{content:"\EFE3"}.mi-fedora:before{content:"\EFE4"}.mi-figma:before{content:"\EFE5"}.mi-firefox:before{content:"\EFE6"}.mi-first-order-alt:before{content:"\EFE7"}.mi-first-order:before{content:"\EFE8"}.mi-firstdraft:before{content:"\EFE9"}.mi-flickr:before{content:"\EFEA"}.mi-flipboard:before{content:"\EFEB"}.mi-fly:before{content:"\EFEC"}.mi-font-awesome-alt:before{content:"\EFED"}.mi-font-awesome-flag:before{content:"\EFEE"}.mi-font-awesome:before{content:"\EFEF"}.mi-fonticons-fi:before{content:"\EFF0"}.mi-fonticons:before{content:"\EFF1"}.mi-fort-awesome-alt:before{content:"\EFF2"}.mi-fort-awesome:before{content:"\EFF3"}.mi-forumbee:before{content:"\EFF4"}.mi-foursquare:before{content:"\EFF5"}.mi-free-code-camp:before{content:"\EFF6"}.mi-freebsd:before{content:"\EFF7"}.mi-fulcrum:before{content:"\EFF8"}.mi-galactic-republic:before{content:"\EFF9"}.mi-galactic-senate:before{content:"\EFFA"}.mi-get-pocket:before{content:"\EFFB"}.mi-gg-circle:before{content:"\EFFC"}.mi-gg:before{content:"\EFFD"}.mi-git-square:before{content:"\EFFE"}.mi-github-alt:before{content:"\EFFF"}.mi-github-square:before{content:"\F000"}.mi-github:before{content:"\F001"}.mi-gitkraken:before{content:"\F002"}.mi-gitlab:before{content:"\F003"}.mi-gitter:before{content:"\F004"}.mi-glide-g:before{content:"\F005"}.mi-glide:before{content:"\F006"}.mi-gofore:before{content:"\F007"}.mi-goodreads-g:before{content:"\F008"}.mi-goodreads:before{content:"\F009"}.mi-google-drive:before{content:"\F00A"}.mi-google-play:before{content:"\F00B"}.mi-google-plus-g:before{content:"\F00C"}.mi-google-plus-square:before{content:"\F00D"}.mi-google-plus:before{content:"\F00E"}.mi-google-wallet:before{content:"\F00F"}.mi-google:before{content:"\F010"}.mi-gratipay:before{content:"\F011"}.mi-grav:before{content:"\F012"}.mi-gripfire:before{content:"\F013"}.mi-grunt:before{content:"\F014"}.mi-gulp:before{content:"\F015"}.mi-hacker-news-square:before{content:"\F016"}.mi-hacker-news:before{content:"\F017"}.mi-hackerrank:before{content:"\F018"}.mi-hire-a-helper:before{content:"\F019"}.mi-hooli:before{content:"\F01A"}.mi-hornbill:before{content:"\F01B"}.mi-hotjar:before{content:"\F01C"}.mi-houzz:before{content:"\F01D"}.mi-html5:before{content:"\F01E"}.mi-hubspot:before{content:"\F01F"}.mi-imdb:before{content:"\F020"}.mi-instagram:before{content:"\F021"}.mi-intercom:before{content:"\F022"}.mi-internet-explorer:before{content:"\F023"}.mi-invision:before{content:"\F024"}.mi-ioxhost:before{content:"\F025"}.mi-itunes-note:before{content:"\F026"}.mi-itunes:before{content:"\F027"}.mi-java:before{content:"\F028"}.mi-jedi-order:before{content:"\F029"}.mi-jenkins:before{content:"\F02A"}.mi-jira:before{content:"\F02B"}.mi-joget:before{content:"\F02C"}.mi-joomla:before{content:"\F02D"}.mi-js-square:before{content:"\F02E"}.mi-js:before{content:"\F02F"}.mi-jsfiddle:before{content:"\F030"}.mi-kaggle:before{content:"\F031"}.mi-keybase:before{content:"\F032"}.mi-keycdn:before{content:"\F033"}.mi-kickstarter-k:before{content:"\F034"}.mi-kickstarter:before{content:"\F035"}.mi-korvue:before{content:"\F036"}.mi-laravel:before{content:"\F037"}.mi-lastfm-square:before{content:"\F038"}.mi-lastfm:before{content:"\F039"}.mi-leanpub:before{content:"\F03A"}.mi-less:before{content:"\F03B"}.mi-line:before{content:"\F03C"}.mi-linkedin-in:before{content:"\F03D"}.mi-linkedin:before{content:"\F03E"}.mi-linode:before{content:"\F03F"}.mi-linux:before{content:"\F040"}.mi-lyft:before{content:"\F041"}.mi-magento:before{content:"\F042"}.mi-mailchimp:before{content:"\F043"}.mi-mandalorian:before{content:"\F044"}.mi-markdown:before{content:"\F045"}.mi-mastodon:before{content:"\F046"}.mi-maxcdn:before{content:"\F047"}.mi-medapps:before{content:"\F048"}.mi-medium-m:before{content:"\F049"}.mi-medium:before{content:"\F04A"}.mi-medrt:before{content:"\F04B"}.mi-meetup:before{content:"\F04C"}.mi-megaport:before{content:"\F04D"}.mi-mendeley:before{content:"\F04E"}.mi-microsoft:before{content:"\F04F"}.mi-mix:before{content:"\F050"}.mi-mixcloud:before{content:"\F051"}.mi-mizuni:before{content:"\F052"}.mi-modx:before{content:"\F053"}.mi-monero:before{content:"\F054"}.mi-napster:before{content:"\F055"}.mi-neos:before{content:"\F056"}.mi-nimblr:before{content:"\F057"}.mi-nintendo-switch:before{content:"\F058"}.mi-node-js:before{content:"\F059"}.mi-node:before{content:"\F05A"}.mi-npm:before{content:"\F05B"}.mi-ns8:before{content:"\F05C"}.mi-nutritionix:before{content:"\F05D"}.mi-odnoklassniki-square:before{content:"\F05E"}.mi-odnoklassniki:before{content:"\F05F"}.mi-old-republic:before{content:"\F060"}.mi-opencart:before{content:"\F061"}.mi-openid:before{content:"\F062"}.mi-opera:before{content:"\F063"}.mi-optin-monster:before{content:"\F064"}.mi-osi:before{content:"\F065"}.mi-page4:before{content:"\F066"}.mi-pagelines:before{content:"\F067"}.mi-palfed:before{content:"\F068"}.mi-patreon:before{content:"\F069"}.mi-paypal:before{content:"\F06A"}.mi-penny-arcade:before{content:"\F06B"}.mi-periscope:before{content:"\F06C"}.mi-phabricator:before{content:"\F06D"}.mi-phoenix-framework:before{content:"\F06E"}.mi-phoenix-squadron:before{content:"\F06F"}.mi-php:before{content:"\F070"}.mi-pied-piper-alt:before{content:"\F071"}.mi-pied-piper-hat:before{content:"\F072"}.mi-pied-piper-pp:before{content:"\F073"}.mi-pied-piper:before{content:"\F074"}.mi-pinterest-p:before{content:"\F075"}.mi-pinterest-square:before{content:"\F076"}.mi-pinterest:before{content:"\F077"}.mi-playstation:before{content:"\F078"}.mi-product-hunt:before{content:"\F079"}.mi-pushed:before{content:"\F07A"}.mi-python:before{content:"\F07B"}.mi-qq:before{content:"\F07C"}.mi-quinscape:before{content:"\F07D"}.mi-quora:before{content:"\F07E"}.mi-r-project:before{content:"\F07F"}.mi-raspberry-pi:before{content:"\F080"}.mi-ravelry:before{content:"\F081"}.mi-react:before{content:"\F082"}.mi-reacteurope:before{content:"\F083"}.mi-readme:before{content:"\F084"}.mi-rebel:before{content:"\F085"}.mi-red-river:before{content:"\F086"}.mi-reddit-alien:before{content:"\F087"}.mi-reddit-square:before{content:"\F088"}.mi-reddit:before{content:"\F089"}.mi-redhat:before{content:"\F08A"}.mi-renren:before{content:"\F08B"}.mi-replyd:before{content:"\F08C"}.mi-researchgate:before{content:"\F08D"}.mi-resolving:before{content:"\F08E"}.mi-rev:before{content:"\F08F"}.mi-rocketchat:before{content:"\F090"}.mi-rockrms:before{content:"\F091"}.mi-safari:before{content:"\F092"}.mi-sass:before{content:"\F093"}.mi-schlix:before{content:"\F094"}.mi-scribd:before{content:"\F095"}.mi-searchengin:before{content:"\F096"}.mi-sellcast:before{content:"\F097"}.mi-sellsy:before{content:"\F098"}.mi-servicestack:before{content:"\F099"}.mi-shirtsinbulk:before{content:"\F09A"}.mi-shopware:before{content:"\F09B"}.mi-simplybuilt:before{content:"\F09C"}.mi-sistrix:before{content:"\F09D"}.mi-sith:before{content:"\F09E"}.mi-sketch:before{content:"\F09F"}.mi-skyatlas:before{content:"\F0A0"}.mi-skype:before{content:"\F0A1"}.mi-slack-hash:before{content:"\F0A2"}.mi-slack:before{content:"\F0A3"}.mi-slideshare:before{content:"\F0A4"}.mi-snapchat-ghost:before{content:"\F0A5"}.mi-snapchat-square:before{content:"\F0A6"}.mi-snapchat:before{content:"\F0A7"}.mi-soundcloud:before{content:"\F0A8"}.mi-sourcetree:before{content:"\F0A9"}.mi-speakap:before{content:"\F0AA"}.mi-spotify:before{content:"\F0AB"}.mi-squarespace:before{content:"\F0AC"}.mi-stack-exchange:before{content:"\F0AD"}.mi-stack-overflow:before{content:"\F0AE"}.mi-staylinked:before{content:"\F0AF"}.mi-steam-square:before{content:"\F0B0"}.mi-steam:before{content:"\F0B1"}.mi-sticker-mule:before{content:"\F0B2"}.mi-strava:before{content:"\F0B3"}.mi-stripe-s:before{content:"\F0B4"}.mi-stripe:before{content:"\F0B5"}.mi-studiovinari:before{content:"\F0B6"}.mi-stumbleupon-circle:before{content:"\F0B7"}.mi-stumbleupon:before{content:"\F0B8"}.mi-superpowers:before{content:"\F0B9"}.mi-supple:before{content:"\F0BA"}.mi-suse:before{content:"\F0BB"}.mi-teamspeak:before{content:"\F0BC"}.mi-telegram-plane:before{content:"\F0BD"}.mi-telegram:before{content:"\F0BE"}.mi-tencent-weibo:before{content:"\F0BF"}.mi-the-red-yeti:before{content:"\F0C0"}.mi-themeco:before{content:"\F0C1"}.mi-themeisle:before{content:"\F0C2"}.mi-think-peaks:before{content:"\F0C3"}.mi-trade-federation:before{content:"\F0C4"}.mi-trello:before{content:"\F0C5"}.mi-tripadvisor:before{content:"\F0C6"}.mi-tumblr-square:before{content:"\F0C7"}.mi-tumblr:before{content:"\F0C8"}.mi-twitch:before{content:"\F0C9"}.mi-twitter-square:before{content:"\F0CA"}.mi-typo3:before{content:"\F0CB"}.mi-ubuntu:before{content:"\F0CC"}.mi-uikit:before{content:"\F0CD"}.mi-uniregistry:before{content:"\F0CE"}.mi-untappd:before{content:"\F0CF"}.mi-ups:before{content:"\F0D0"}.mi-usb:before{content:"\F0D1"}.mi-usps:before{content:"\F0D2"}.mi-ussunnah:before{content:"\F0D3"}.mi-vaadin:before{content:"\F0D4"}.mi-viacoin:before{content:"\F0D5"}.mi-viadeo-square:before{content:"\F0D6"}.mi-viadeo:before{content:"\F0D7"}.mi-viber:before{content:"\F0D8"}.mi-vimeo-square:before{content:"\F0D9"}.mi-vimeo-v:before{content:"\F0DA"}.mi-vimeo:before{content:"\F0DB"}.mi-vine:before{content:"\F0DC"}.mi-vk:before{content:"\F0DD"}.mi-vnv:before{content:"\F0DE"}.mi-vuejs:before{content:"\F0DF"}.mi-weebly:before{content:"\F0E0"}.mi-weibo:before{content:"\F0E1"}.mi-weixin:before{content:"\F0E2"}.mi-whatsapp-square:before{content:"\F0E3"}.mi-whatsapp:before{content:"\F0E4"}.mi-whmcs:before{content:"\F0E5"}.mi-wikipedia-w:before{content:"\F0E6"}.mi-windows:before{content:"\F0E7"}.mi-wix:before{content:"\F0E8"}.mi-wizards-of-the-coast:before{content:"\F0E9"}.mi-wolf-pack-battalion:before{content:"\F0EA"}.mi-wordpress-simple:before{content:"\F0EB"}.mi-wordpress:before{content:"\F0EC"}.mi-wpbeginner:before{content:"\F0ED"}.mi-wpexplorer:before{content:"\F0EE"}.mi-wpforms:before{content:"\F0EF"}.mi-wpressr:before{content:"\F0F0"}.mi-xbox:before{content:"\F0F1"}.mi-xing-square:before{content:"\F0F2"}.mi-xing:before{content:"\F0F3"}.mi-y-combinator:before{content:"\F0F4"}.mi-yahoo:before{content:"\F0F5"}.mi-yandex-international:before{content:"\F0F6"}.mi-yandex:before{content:"\F0F7"}.mi-yarn:before{content:"\F0F8"}.mi-yelp:before{content:"\F0F9"}.mi-yoast:before{content:"\F0FA"}.mi-youtube-square:before{content:"\F0FB"}.mi-youtube:before{content:"\F0FC"}.mi-zhihu:before{content:"\F0FD"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto} \ No newline at end of file + */@font-face{font-family:micon;font-style:normal;font-weight:400;src:url(../fonts/micon.eot);src:url(../fonts/micon.eot?#iefix) format("embedded-opentype"),url(../fonts/micon.woff2) format("woff2"),url(../fonts/micon.woff) format("woff"),url(../fonts/micon.ttf) format("truetype"),url(../fonts/micon.svg#micon) format("svg")}.mi{font-family:micon;font-weight:400;display:inline-block;line-height:1}.mi-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.mi-xs{font-size:.75em}.mi-sm{font-size:.875em}.mi-1x{font-size:1em}.mi-2x{font-size:2em}.mi-3x{font-size:3em}.mi-4x{font-size:4em}.mi-5x{font-size:5em}.mi-6x{font-size:6em}.mi-7x{font-size:7em}.mi-8x{font-size:8em}.mi-9x{font-size:9em}.mi-10x{font-size:10em}.mi-fw{width:1.25em}.mi-ul{margin-left:2.5em;padding-left:0}.mi-ul>li{position:relative}.mi-li{left:-2em;position:absolute;width:2em;line-height:inherit}.mi-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.mi-pull-left{float:left}.mi-pull-right{float:right}.mi.mi-pull-right{margin-left:.3em}.mi-spin{animation:mi-spin 2s infinite linear}.mi-pulse{animation:mi-spin 1s infinite steps(8)}@keyframes mi-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.mi-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.mi-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.mi-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.mi-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scale(-1,1)}.mi-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";transform:scale(1,-1)}.mi-flip-horizontal.mi-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";transform:scale(-1,-1)}:root .mi-flip-horizontal,:root .mi-flip-vertical,:root .mi-rotate-180,:root .mi-rotate-270,:root .mi-rotate-90{filter:none}.mi-stack{line-height:2em;position:relative;vertical-align:middle;width:2.5em}.mi-stack-1x,.mi-stack-2x{left:0;position:absolute;width:100%}.mi-stack-1x{line-height:inherit}.mi-stack-2x{font-size:2em}.mi-Accept:before,.mi-AcceptLegacy:before,.mi-CheckmarkListviewLegacy:before,.mi-CheckmarkMenuLegacy:before{content:"\EA01"}.mi-Accident:before{content:"\EA02"}.mi-AccidentSolid:before{content:"\EA03"}.mi-Accounts:before,.mi-AccountsLegacy:before{content:"\EA04"}.mi-ActionCenter:before{content:"\EA05"}.mi-ActionCenterAsterisk:before{content:"\EA06"}.mi-ActionCenterMirrored:before{content:"\EA07"}.mi-ActionCenterNotification:before{content:"\EA08"}.mi-ActionCenterNotificationMirrored:before{content:"\EA09"}.mi-ActionCenterQuiet:before{content:"\EA0A"}.mi-ActionCenterQuietNotification:before{content:"\EA0B"}.mi-Add:before,.mi-AddLegacy:before{content:"\EA0C"}.mi-AddFriend:before,.mi-AddFriendLegacy:before{content:"\EA0D"}.mi-AddRemoteDevice:before{content:"\EA0E"}.mi-AddSurfaceHub:before{content:"\EA0F"}.mi-AddTo:before{content:"\EA10"}.mi-AdjustHologram:before{content:"\EA11"}.mi-Admin:before,.mi-AdminLegacy:before{content:"\EA12"}.mi-Airplane:before{content:"\EA13"}.mi-AirplaneSolid:before{content:"\EA14"}.mi-AlignCenter:before,.mi-AlignCenterLegacy:before{content:"\EA15"}.mi-AlignLeft:before,.mi-AlignLeftLegacy:before{content:"\EA16"}.mi-AlignRight:before,.mi-AlignRightLegacy:before{content:"\EA17"}.mi-AllApps:before,.mi-AllAppsLegacy:before{content:"\EA18"}.mi-AllAppsLegacyMirrored:before,.mi-AllAppsMirrored:before{content:"\EA19"}.mi-Annotation:before{content:"\EA1A"}.mi-AppIconDefault:before{content:"\EA1B"}.mi-Apps:before{content:"\EA1C"}.mi-AreaChart:before{content:"\EA1D"}.mi-ArrowDown8:before{content:"\EA1E"}.mi-ArrowLeft8:before{content:"\EA1F"}.mi-ArrowRight8:before{content:"\EA20"}.mi-ArrowUp8:before{content:"\EA21"}.mi-AspectRatio:before{content:"\EA22"}.mi-Asterisk:before{content:"\EA23"}.mi-AsteriskBadge12:before{content:"\EA24"}.mi-Attach:before,.mi-AttachLegacy:before{content:"\EA25"}.mi-AttachCamera:before,.mi-AttachCameraLegacy:before{content:"\EA26"}.mi-Audio:before,.mi-AudioLegacy:before{content:"\EA27"}.mi-ArrowHTMLLegacy:before,.mi-Back:before,.mi-BackBttnArrow20Legacy:before,.mi-BackBttnArrow42Legacy:before,.mi-BackLegacy:before{content:"\EA28"}.mi-BackMirrored:before{content:"\EA29"}.mi-BackSpaceQWERTYLg:before{content:"\EA2B"}.mi-BackSpaceQWERTYMd:before{content:"\EA2C"}.mi-BackSpaceQWERTYSm:before{content:"\EA2D"}.mi-BackToWindow:before,.mi-BackToWindowLegacy:before{content:"\EA2E"}.mi-BackgroundToggle:before{content:"\EA2F"}.mi-Badge:before{content:"\EA30"}.mi-BandBattery0:before{content:"\EA31"}.mi-BandBattery1:before{content:"\EA32"}.mi-BandBattery2:before{content:"\EA33"}.mi-BandBattery3:before{content:"\EA34"}.mi-BandBattery4:before{content:"\EA35"}.mi-BandBattery5:before{content:"\EA36"}.mi-BandBattery6:before{content:"\EA37"}.mi-Bank:before{content:"\EA38"}.mi-BarcodeScanner:before{content:"\EA39"}.mi-Battery0:before{content:"\EA3A"}.mi-Battery1:before{content:"\EA3B"}.mi-Battery10:before{content:"\EA3C"}.mi-Battery2:before{content:"\EA3D"}.mi-Battery3:before{content:"\EA3E"}.mi-Battery4:before{content:"\EA3F"}.mi-Battery5:before{content:"\EA40"}.mi-Battery6:before{content:"\EA41"}.mi-Battery7:before{content:"\EA42"}.mi-Battery8:before{content:"\EA43"}.mi-Battery9:before{content:"\EA44"}.mi-BatteryCharging0:before{content:"\EA45"}.mi-BatteryCharging1:before{content:"\EA46"}.mi-BatteryCharging10:before{content:"\EA47"}.mi-BatteryCharging2:before{content:"\EA48"}.mi-BatteryCharging3:before{content:"\EA49"}.mi-BatteryCharging4:before{content:"\EA4A"}.mi-BatteryCharging5:before{content:"\EA4B"}.mi-BatteryCharging6:before{content:"\EA4C"}.mi-BatteryCharging7:before{content:"\EA4D"}.mi-BatteryCharging8:before{content:"\EA4E"}.mi-BatteryCharging9:before{content:"\EA4F"}.mi-BatterySaver0:before{content:"\EA50"}.mi-BatterySaver1:before{content:"\EA51"}.mi-BatterySaver10:before{content:"\EA52"}.mi-BatterySaver2:before{content:"\EA53"}.mi-BatterySaver3:before{content:"\EA54"}.mi-BatterySaver4:before{content:"\EA55"}.mi-BatterySaver5:before{content:"\EA56"}.mi-BatterySaver6:before{content:"\EA57"}.mi-BatterySaver7:before{content:"\EA58"}.mi-BatterySaver8:before{content:"\EA59"}.mi-BatterySaver9:before{content:"\EA5A"}.mi-BatteryUnknown:before{content:"\EA5B"}.mi-Beta:before{content:"\EA5C"}.mi-BidiLtr:before{content:"\EA5D"}.mi-BidiRtl:before{content:"\EA5E"}.mi-BlockContact:before,.mi-BlockContactLegacy:before{content:"\EA5F"}.mi-Blocked:before,.mi-BlockedLegacy:before{content:"\EA61"}.mi-BlueLight:before{content:"\EA62"}.mi-Bluetooth:before{content:"\EA63"}.mi-BodyCam:before{content:"\EA64"}.mi-Bold:before,.mi-BoldLegacy:before{content:"\EA65"}.mi-BoldF:before,.mi-BoldFLegacy:before{content:"\EA67"}.mi-BoldG:before,.mi-BoldGLegacy:before{content:"\EA69"}.mi-BoldKorean:before,.mi-BoldKoreanLegacy:before{content:"\EA6B"}.mi-BoldN:before,.mi-BoldNLegacy:before{content:"\EA6D"}.mi-BoldRussion:before,.mi-BoldRussionLegacy:before{content:"\EA6F"}.mi-Bookmarks:before,.mi-BookmarksLegacy:before{content:"\EA70"}.mi-BookmarksLegacyMirrored:before,.mi-BookmarksMirrored:before{content:"\EA71"}.mi-Brightness:before{content:"\EA72"}.mi-Broom:before{content:"\EA73"}.mi-BrowsePhotos:before,.mi-BrowsePhotosLegacy:before{content:"\EA74"}.mi-BrushSize:before{content:"\EA75"}.mi-Bug:before{content:"\EA76"}.mi-BuildingEnergy:before{content:"\EA77"}.mi-BulletedList:before,.mi-BulletedListLegacy:before,.mi-ListLegacy:before{content:"\EA78"}.mi-BulletedListLegacyMirrored:before,.mi-BulletedListMirrored:before,.mi-ListLegacyMirrored:before{content:"\EA79"}.mi-Bullseye:before{content:"\EA7A"}.mi-BumperLeft:before{content:"\EA7B"}.mi-BumperRight:before{content:"\EA7C"}.mi-Bus:before{content:"\EA7D"}.mi-BusSolid:before{content:"\EA7E"}.mi-ButtonA:before{content:"\EA7F"}.mi-ButtonB:before{content:"\EA80"}.mi-ButtonMenu:before{content:"\EA81"}.mi-ButtonView2:before{content:"\EA82"}.mi-ButtonX:before{content:"\EA83"}.mi-ButtonY:before{content:"\EA84"}.mi-CC:before,.mi-CCLegacy:before{content:"\EA85"}.mi-CCEuro:before,.mi-CCEuroLegacy:before{content:"\EA87"}.mi-CCJapan:before,.mi-CCJapanLegacy:before{content:"\EA89"}.mi-Cafe:before{content:"\EA8A"}.mi-Calculator:before,.mi-CalculatorLegacy:before{content:"\EA8B"}.mi-CalculatorAddition:before{content:"\EA8C"}.mi-BackSpaceQWERTY:before,.mi-CalculatorBackspace:before{content:"\EA8D"}.mi-CalculatorDivide:before{content:"\EA8E"}.mi-CalculatorEqualTo:before{content:"\EA8F"}.mi-CalculatorMultiply:before{content:"\EA90"}.mi-CalculatorNegate:before{content:"\EA91"}.mi-CalculatorPercentage:before{content:"\EA92"}.mi-CalculatorSquareroot:before{content:"\EA93"}.mi-CalculatorSubtract:before{content:"\EA94"}.mi-Calendar:before,.mi-CalendarLegacy:before{content:"\EA95"}.mi-CalendarDay:before,.mi-CalendarDayLegacy:before{content:"\EA96"}.mi-CalendarLegacyMirrored:before,.mi-CalendarMirrored:before{content:"\EA97"}.mi-CalendarReply:before,.mi-CalendarReplyLegacy:before{content:"\EA98"}.mi-CalendarSolid:before{content:"\EA99"}.mi-CalendarWeek:before,.mi-CalendarWeekLegacy:before{content:"\EA9A"}.mi-CallForwardInternational:before{content:"\EA9B"}.mi-CallForwardInternationalMirrored:before{content:"\EA9C"}.mi-CallForwardRoaming:before{content:"\EA9D"}.mi-CallForwardRoamingMirrored:before{content:"\EA9E"}.mi-CallForwarding:before{content:"\EA9F"}.mi-CallForwardingMirrored:before{content:"\EAA0"}.mi-CalligraphyFill:before{content:"\EAA1"}.mi-CalligraphyPen:before{content:"\EAA2"}.mi-Calories:before{content:"\EAA3"}.mi-Camera:before,.mi-CameraLegacy:before{content:"\EAA4"}.mi-Cancel:before,.mi-CancelLegacy:before{content:"\EAA5"}.mi-Caption:before,.mi-CaptionLegacy:before{content:"\EAA6"}.mi-Car:before,.mi-DrivingMode:before{content:"\EAA7"}.mi-CaretBottomRightSolidCenter8:before{content:"\EAA8"}.mi-CaretDownSolid8:before{content:"\EAA9"}.mi-CaretLeftSolid8:before{content:"\EAAA"}.mi-CaretRight8:before{content:"\EAAB"}.mi-CaretRightSolid8:before{content:"\EAAC"}.mi-CaretUpSolid8:before{content:"\EAAD"}.mi-CashDrawer:before{content:"\EAAE"}.mi-CellPhone:before,.mi-CellPhoneLegacy:before,.mi-MobileContactLegacy:before{content:"\EAAF"}.mi-Certificate:before{content:"\EAB0"}.mi-CharacterAppearance:before{content:"\EAB1"}.mi-Characters:before,.mi-CharactersLegacy:before{content:"\EAB2"}.mi-ChatBubbles:before{content:"\EAB3"}.mi-CheckList:before{content:"\EAB4"}.mi-CheckMark:before,.mi-CheckMarkLegacy:before,.mi-CheckMarkZeroWidthLegacy:before{content:"\EAB5"}.mi-Checkbox:before,.mi-CheckboxLegacy:before{content:"\EAB6"}.mi-Checkbox14:before{content:"\EAB7"}.mi-CheckboxComposite:before,.mi-CheckboxCompositeLegacy:before{content:"\EAB8"}.mi-CheckboxComposite14:before{content:"\EAB9"}.mi-CheckboxCompositeReversed:before,.mi-CheckboxCompositeReversedLegacy:before{content:"\EABA"}.mi-CheckboxIndeterminate:before,.mi-CheckboxIndeterminateLegacy:before{content:"\EABC"}.mi-CheckboxIndeterminateCombo:before{content:"\EABD"}.mi-CheckboxIndeterminateCombo14:before{content:"\EABE"}.mi-ChecklistMirrored:before{content:"\EABF"}.mi-ChevronDown1Legacy:before,.mi-ChevronDown2Legacy:before,.mi-ChevronDown3Legacy:before,.mi-ChevronDown4Legacy:before,.mi-ChevronDown:before,.mi-ChevronFlipDownLegacy:before,.mi-ScrollChevronDownBoldLegacy:before,.mi-ScrollChevronDownLegacy:before{content:"\EAC0"}.mi-ChevronDownMed:before{content:"\EAC1"}.mi-ChevronDownSmLegacy:before,.mi-ChevronDownSmall:before{content:"\EAC2"}.mi-ChevronFlipLeftLegacy:before,.mi-ChevronLeft1Legacy:before,.mi-ChevronLeft2Legacy:before,.mi-ChevronLeft3Legacy:before,.mi-ChevronLeft4Legacy:before,.mi-ChevronLeft:before,.mi-ScrollChevronLeftBoldLegacy:before,.mi-ScrollChevronLeftLegacy:before{content:"\EAC3"}.mi-ChevronLeftMed:before{content:"\EAC4"}.mi-ChevronLeftSmLegacy:before,.mi-ChevronLeftSmall:before{content:"\EAC5"}.mi-ChevronFlipRightLegacy:before,.mi-ChevronRight1Legacy:before,.mi-ChevronRight2Legacy:before,.mi-ChevronRight3Legacy:before,.mi-ChevronRight4Legacy:before,.mi-ChevronRight:before,.mi-ScrollChevronRightBoldLegacy:before,.mi-ScrollChevronRightLegacy:before{content:"\EAC6"}.mi-ChevronRightMed:before{content:"\EAC7"}.mi-ChevronRightSmLegacy:before,.mi-ChevronRightSmall:before{content:"\EAC8"}.mi-ChevronFlipUpLegacy:before,.mi-ChevronUp1Legacy:before,.mi-ChevronUp2Legacy:before,.mi-ChevronUp3Legacy:before,.mi-ChevronUp4Legacy:before,.mi-ChevronUp:before,.mi-ScrollChevronUpBoldLegacy:before,.mi-ScrollChevronUpLegacy:before{content:"\EAC9"}.mi-ChevronUpMed:before{content:"\EACA"}.mi-ChevronUpSmall:before{content:"\EACB"}.mi-ChineseBoPoMoFo:before{content:"\EACC"}.mi-ChineseChangjie:before{content:"\EACD"}.mi-ChinesePinyin:before{content:"\EACE"}.mi-ChinesePunctuation:before{content:"\EACF"}.mi-ChineseQuick:before{content:"\EAD0"}.mi-ChipCardCreditCardReader:before{content:"\EAD1"}.mi-ChromeAnnotate:before{content:"\EAD2"}.mi-ChromeAnnotateContrast:before{content:"\EAD3"}.mi-ChromeBack:before{content:"\EAD4"}.mi-ChromeBackContrast:before{content:"\EAD5"}.mi-ChromeBackContrastMirrored:before{content:"\EAD6"}.mi-ChromeBackMirrored:before{content:"\EAD7"}.mi-ChromeBackToWindow:before{content:"\EAD8"}.mi-ChromeBackToWindowContrast:before{content:"\EAD9"}.mi-ChromeClose:before{content:"\EADA"}.mi-ChromeCloseContrast:before{content:"\EADB"}.mi-ChromeFullScreen:before{content:"\EADC"}.mi-ChromeFullScreenContrast:before{content:"\EADD"}.mi-ChromeMaximize:before{content:"\EADE"}.mi-ChromeMaximizeContrast:before{content:"\EADF"}.mi-ChromeMinimize:before{content:"\EAE0"}.mi-ChromeMinimizeContrast:before{content:"\EAE1"}.mi-ChromeRestore:before{content:"\EAE2"}.mi-ChromeRestoreContrast:before{content:"\EAE3"}.mi-ChromeSwitch:before{content:"\EAE4"}.mi-ChromeSwitchContast:before{content:"\EAE5"}.mi-CircleFill:before{content:"\EAE6"}.mi-CircleFillBadge12:before{content:"\EAE7"}.mi-CircleRing:before{content:"\EAE8"}.mi-CircleRingBadge12:before{content:"\EAE9"}.mi-CityNext:before{content:"\EAEA"}.mi-CityNext2:before{content:"\EAEB"}.mi-Clear:before,.mi-ClearLegacy:before{content:"\EAEC"}.mi-ClearAllInk:before{content:"\EAED"}.mi-ClearAllInkMirrored:before{content:"\EAEE"}.mi-ClearSelection:before,.mi-ClearSelectionLegacy:before{content:"\EAEF"}.mi-ClearSelectionLegacyMirrored:before,.mi-ClearSelectionMirrored:before{content:"\EAF0"}.mi-Click:before{content:"\EAF1"}.mi-ClipboardList:before{content:"\EAF2"}.mi-ClipboardListMirrored:before{content:"\EAF3"}.mi-ClippingTool:before{content:"\EAF4"}.mi-Clock:before,.mi-ClockLegacy:before{content:"\EAF6"}.mi-ClosePane:before,.mi-ClosePaneLegacy:before{content:"\EAF7"}.mi-ClosePaneLegacyMirrored:before,.mi-ClosePaneMirrored:before{content:"\EAF8"}.mi-Cloud:before{content:"\EAF9"}.mi-CloudPrinter:before{content:"\EAFA"}.mi-CloudSeach:before{content:"\EAFB"}.mi-Code:before{content:"\EAFC"}.mi-CollapseContent:before{content:"\EAFD"}.mi-CollapseContentSingle:before{content:"\EAFE"}.mi-CollateLandscape:before{content:"\EAFF"}.mi-CollateLandscapeSeparated:before{content:"\EB00"}.mi-CollatePortrait:before{content:"\EB01"}.mi-CollatePortraitSeparated:before{content:"\EB02"}.mi-Color:before,.mi-ColorLegacy:before{content:"\EB03"}.mi-ColorOff:before{content:"\EB04"}.mi-CommaKey:before{content:"\EB05"}.mi-CommandPrompt:before{content:"\EB06"}.mi-Comment:before,.mi-CommentLegacy:before{content:"\EB07"}.mi-Communications:before{content:"\EB08"}.mi-CompanionApp:before{content:"\EB09"}.mi-CompanionDeviceFramework:before{content:"\EB0A"}.mi-Completed:before{content:"\EB0B"}.mi-CompletedSolid:before{content:"\EB0C"}.mi-Component:before{content:"\EB0D"}.mi-Connect:before{content:"\EB0E"}.mi-ConnectApp:before,.mi-MiracastLogoLarge:before{content:"\EB0F"}.mi-Connected:before{content:"\EB10"}.mi-Construction:before{content:"\EB11"}.mi-ConstructionCone:before{content:"\EB12"}.mi-ConstructionSolid:before{content:"\EB13"}.mi-Contact3Legacy:before,.mi-Contact:before,.mi-ContactLegacy:before{content:"\EB14"}.mi-Contact2:before,.mi-Contact2Legacy:before{content:"\EB15"}.mi-ContactInfo:before,.mi-ContactInfoLegacy:before{content:"\EB16"}.mi-ContactInfoMirrored:before{content:"\EB17"}.mi-ContactPresence:before,.mi-ContactPresenceLegacy:before{content:"\EB18"}.mi-ContactSolid:before{content:"\EB19"}.mi-Copy:before,.mi-CopyLegacy:before{content:"\EB1A"}.mi-CopyTo:before{content:"\EB1B"}.mi-Courthouse:before{content:"\EB1C"}.mi-Crop:before,.mi-CropLegacy:before{content:"\EB1D"}.mi-CtrlSpatialLeft:before{content:"\EB1E"}.mi-CtrlSpatialRight:before{content:"\EB1F"}.mi-Cut:before,.mi-CutLegacy:before{content:"\EB20"}.mi-DMC:before{content:"\EB21"}.mi-DashKey:before{content:"\EB22"}.mi-DataSense:before{content:"\EB23"}.mi-DataSenseBar:before{content:"\EB24"}.mi-DateTime:before{content:"\EB25"}.mi-DateTimeMirrored:before{content:"\EB26"}.mi-DecreaseIndent:before,.mi-DecreaseIndentLegacy:before{content:"\EB28"}.mi-DecreaseIndentLegacyMirrored:before,.mi-DecreaseIndentMirrored:before{content:"\EB2A"}.mi-DefaultAPN:before{content:"\EB2B"}.mi-DefenderApp:before{content:"\EB2C"}.mi-DefenderBadge12:before{content:"\EB2D"}.mi-Delete:before,.mi-DeleteLegacy:before{content:"\EB2E"}.mi-Design:before{content:"\EB2F"}.mi-DetachablePC:before{content:"\EB30"}.mi-DevUpdate:before{content:"\EB31"}.mi-DeveloperTools:before{content:"\EB32"}.mi-DeviceDiscovery:before{content:"\EB33"}.mi-DeviceLaptopNoPic:before{content:"\EB34"}.mi-DeviceLaptopPic:before{content:"\EB35"}.mi-DeviceMonitorLeftPic:before{content:"\EB36"}.mi-DeviceMonitorNoPic:before{content:"\EB37"}.mi-DeviceMonitorRightPic:before{content:"\EB38"}.mi-Devices:before{content:"\EB39"}.mi-Devices3:before{content:"\EB3B"}.mi-Devices4:before{content:"\EB3C"}.mi-Devices2:before,.mi-DevicesLegacy:before{content:"\EB3D"}.mi-Diagnostic:before{content:"\EB3E"}.mi-Dial1:before{content:"\EB3F"}.mi-Dial10:before{content:"\EB40"}.mi-Dial11:before{content:"\EB41"}.mi-Dial12:before{content:"\EB42"}.mi-Dial13:before{content:"\EB43"}.mi-Dial14:before{content:"\EB44"}.mi-Dial15:before{content:"\EB45"}.mi-Dial16:before{content:"\EB46"}.mi-Dial2:before{content:"\EB47"}.mi-Dial3:before{content:"\EB48"}.mi-Dial4:before{content:"\EB49"}.mi-Dial5:before{content:"\EB4A"}.mi-Dial6:before{content:"\EB4B"}.mi-Dial7:before{content:"\EB4C"}.mi-Dial8:before{content:"\EB4D"}.mi-Dial9:before{content:"\EB4E"}.mi-DialShape1:before{content:"\EB4F"}.mi-DialShape2:before{content:"\EB50"}.mi-DialShape3:before{content:"\EB51"}.mi-DialShape4:before{content:"\EB52"}.mi-DialUp:before{content:"\EB53"}.mi-Dialpad:before{content:"\EB54"}.mi-Dictionary:before{content:"\EB55"}.mi-DictionaryAdd:before{content:"\EB56"}.mi-DictionaryCloud:before{content:"\EB57"}.mi-DirectAccess:before{content:"\EB58"}.mi-Directions:before,.mi-DirectionsLegacy:before{content:"\EB59"}.mi-DisableUpdates:before,.mi-DisableUpdatesLegacy:before{content:"\EB5A"}.mi-DisconnectDisplay:before{content:"\EB5B"}.mi-DisconnectDrive:before,.mi-DisconnectDriveLegacy:before{content:"\EB5C"}.mi-Dislike:before,.mi-DislikeLegacy:before{content:"\EB5D"}.mi-Dock:before{content:"\EB5E"}.mi-DockBottom:before,.mi-DockBottomLegacy:before{content:"\EB5F"}.mi-DockLeft:before,.mi-DockLeftLegacy:before{content:"\EB60"}.mi-DockLeftLegacyMirrored:before,.mi-DockLeftMirrored:before{content:"\EB61"}.mi-DockRight:before,.mi-DockRightLegacy:before{content:"\EB62"}.mi-DockRightLegacyMirrored:before,.mi-DockRightMirrored:before{content:"\EB63"}.mi-Document:before,.mi-DocumentLegacy:before{content:"\EB64"}.mi-DoublePinyin:before{content:"\EB65"}.mi-Down:before,.mi-DownLegacy:before{content:"\EB66"}.mi-DownShiftKey:before{content:"\EB67"}.mi-Download:before,.mi-DownloadLegacy:before{content:"\EB68"}.mi-DownloadMap:before{content:"\EB69"}.mi-Dpad:before{content:"\EB6A"}.mi-Draw:before{content:"\EB6B"}.mi-DrawSolid:before{content:"\EB6C"}.mi-Drop:before{content:"\EB6D"}.mi-DullSound:before{content:"\EB6E"}.mi-DullSoundKey:before{content:"\EB6F"}.mi-DuplexLandscapeOneSided:before{content:"\EB70"}.mi-DuplexLandscapeOneSidedMirrored:before{content:"\EB71"}.mi-DuplexLandscapeTwoSidedLongEdge:before{content:"\EB72"}.mi-DuplexLandscapeTwoSidedLongEdgeMirrored:before{content:"\EB73"}.mi-DuplexLandscapeTwoSidedShortEdge:before{content:"\EB74"}.mi-DuplexLandscapeTwoSidedShortEdgeMirrored:before{content:"\EB75"}.mi-DuplexPortraitOneSided:before{content:"\EB76"}.mi-DuplexPortraitOneSidedMirrored:before{content:"\EB77"}.mi-DuplexPortraitTwoSidedLongEdge:before{content:"\EB78"}.mi-DuplexPortraitTwoSidedLongEdgeMirrored:before{content:"\EB79"}.mi-DuplexPortraitTwoSidedShortEdge:before{content:"\EB7A"}.mi-DuplexPortraitTwoSidedShortEdgeMirrored:before{content:"\EB7B"}.mi-DynamicLock:before{content:"\EB7C"}.mi-EMI:before{content:"\EB7D"}.mi-Ear:before{content:"\EB7E"}.mi-Earbud:before{content:"\EB7F"}.mi-EaseOfAccess:before,.mi-EaseOfAccessLegacy:before{content:"\EB80"}.mi-Edit:before,.mi-EditLegacy:before{content:"\EB81"}.mi-EditLegacyMirrored:before,.mi-EditMirrored:before{content:"\EB82"}.mi-Education:before{content:"\EB83"}.mi-Emoji:before,.mi-EmojiLegacy:before{content:"\EB84"}.mi-Emoji2:before,.mi-Emoji2Legacy:before{content:"\EB85"}.mi-EmojiSwatch:before{content:"\EB86"}.mi-EmojiTabCelebrationObjects:before{content:"\EB87"}.mi-EmojiTabFavorites:before{content:"\EB88"}.mi-EmojiTabFoodPlants:before{content:"\EB89"}.mi-EmojiTabPeople:before{content:"\EB8A"}.mi-EmojiTabSmilesAnimals:before{content:"\EB8B"}.mi-EmojiTabSymbols:before{content:"\EB8C"}.mi-EmojiTabTextSmiles:before{content:"\EB8D"}.mi-EmojiTabTransitPlaces:before{content:"\EB8E"}.mi-EndPointSolid:before{content:"\EB90"}.mi-EnglishPunctuation:before{content:"\EB91"}.mi-Equalizer:before{content:"\EB92"}.mi-EraseTool:before{content:"\EB93"}.mi-EraseToolFill:before{content:"\EB94"}.mi-EraseToolFill2:before{content:"\EB95"}.mi-Error:before{content:"\EB96"}.mi-ErrorBadge:before{content:"\EB97"}.mi-ErrorBadge12:before{content:"\EB98"}.mi-Ethernet:before{content:"\EB99"}.mi-EthernetError:before{content:"\EB9A"}.mi-EthernetWarning:before{content:"\EB9B"}.mi-ExpandTile:before,.mi-ExpandTileLegacy:before{content:"\EB9C"}.mi-ExpandTileLegacyMirrored:before,.mi-ExpandTileMirrored:before{content:"\EB9D"}.mi-ExploitProtectionSettings:before{content:"\EB9E"}.mi-ExploreContent:before{content:"\EB9F"}.mi-ExploreContentSingle:before{content:"\EBA0"}.mi-Export:before,.mi-ImportLegacyMirrored:before,.mi-ImportMirrored:before{content:"\EBA1"}.mi-EyeGaze:before{content:"\EBA2"}.mi-Eyedropper:before{content:"\EBA3"}.mi-Family:before{content:"\EBA4"}.mi-FastForward:before{content:"\EBA5"}.mi-Favicon:before{content:"\EBA6"}.mi-FavoriteList:before{content:"\EBA8"}.mi-FavoriteInlineLegacy:before,.mi-FavoriteStar:before,.mi-OutlineStarLegacy:before,.mi-RatingStarLegacy:before,.mi-Unfavorite2Legacy:before{content:"\EBA9"}.mi-Favorite2Legacy:before,.mi-FavoriteLegacy:before,.mi-FavoriteStarFill:before,.mi-RatingStarFillLegacy:before,.mi-RatingStarFillReducedPaddingHTMLLegacy:before,.mi-RatingStarFillSmallLegacy:before,.mi-RatingStarFillZeroWidthLegacy:before,.mi-SolidStarLegacy:before{content:"\EBAA"}.mi-Feedback:before{content:"\EBAB"}.mi-FeedbackApp:before{content:"\EBAC"}.mi-Ferry:before{content:"\EBAD"}.mi-FerrySolid:before{content:"\EBAE"}.mi-FileExplorer:before{content:"\EBAF"}.mi-FileExplorerApp:before{content:"\EBB0"}.mi-Filter:before,.mi-FilterLegacy:before{content:"\EBB1"}.mi-FingerInking:before{content:"\EBB2"}.mi-Fingerprint:before{content:"\EBB3"}.mi-FitPage:before{content:"\EBB4"}.mi-EndPoint:before,.mi-Flag:before,.mi-FlagLegacy:before{content:"\EBB5"}.mi-Flashlight:before{content:"\EBB6"}.mi-FlickDown:before{content:"\EBB7"}.mi-FlickLeft:before{content:"\EBB8"}.mi-FlickRight:before{content:"\EBB9"}.mi-FlickUp:before{content:"\EBBA"}.mi-Folder:before{content:"\EBBB"}.mi-FolderFill:before,.mi-FolderLegacy:before{content:"\EBBC"}.mi-FolderHorizontal:before{content:"\EBBD"}.mi-FolderOpen:before{content:"\EBBE"}.mi-Font:before,.mi-FontLegacy:before{content:"\EBBF"}.mi-FontColor:before,.mi-FontColorLegacy:before{content:"\EBC0"}.mi-FontColorKorean:before,.mi-FontColorKoreanLegacy:before{content:"\EBC2"}.mi-FontDecrease:before,.mi-FontDecreaseLegacy:before{content:"\EBC3"}.mi-FontIncrease:before,.mi-FontIncreaseLegacy:before{content:"\EBC4"}.mi-FontSize:before,.mi-FontSizeLegacy:before{content:"\EBC5"}.mi-FontStyleKorean:before,.mi-FontStyleKoreanLegacy:before{content:"\EBC7"}.mi-ArrowHTMLLegacyMirrored:before,.mi-BackBttnMirroredArrow20Legacy:before,.mi-BackBttnMirroredArrow42Legacy:before,.mi-Forward:before,.mi-ForwardLegacy:before{content:"\EBC8"}.mi-ForwardMirrored:before{content:"\EBC9"}.mi-ForwardSm:before{content:"\EBCA"}.mi-FourBars:before,.mi-FourBarsLegacy:before{content:"\EBCB"}.mi-FreeFormClipping:before{content:"\EBCC"}.mi-Frigid:before{content:"\EBCD"}.mi-FullAlpha:before{content:"\EBCE"}.mi-FullCircleMask:before{content:"\EBCF"}.mi-FullHiragana:before{content:"\EBD0"}.mi-FullKatakana:before{content:"\EBD1"}.mi-FullScreen:before,.mi-FullScreenLegacy:before{content:"\EBD2"}.mi-FuzzyReading:before{content:"\EBD3"}.mi-GIF:before{content:"\EBD4"}.mi-Game:before{content:"\EBD5"}.mi-GameConsole:before{content:"\EBD6"}.mi-GiftboxOpen:before{content:"\EBD7"}.mi-GlobalNavigationButton:before{content:"\EBD8"}.mi-Globe:before,.mi-GlobeLegacy:before{content:"\EBD9"}.mi-Go:before,.mi-GoLegacy:before{content:"\EBDA"}.mi-GoLegacyMirrored:before,.mi-GoMirrored:before{content:"\EBDB"}.mi-GoToStart:before,.mi-GoToStartLegacy:before{content:"\EBDC"}.mi-GotoToday:before,.mi-GotoTodayLegacy:before{content:"\EBDD"}.mi-GridView:before{content:"\EBDE"}.mi-GripperBarHorizontal:before{content:"\EBDF"}.mi-GripperBarVertical:before{content:"\EBE0"}.mi-GripperResize:before{content:"\EBE1"}.mi-GripperResizeMirrored:before{content:"\EBE2"}.mi-GripperTool:before{content:"\EBE3"}.mi-Groceries:before{content:"\EBE4"}.mi-Group:before{content:"\EBE5"}.mi-GroupList:before{content:"\EBE6"}.mi-GuestUser:before{content:"\EBE7"}.mi-HMD:before{content:"\EBE8"}.mi-HWPInsert:before{content:"\EBE9"}.mi-HWPJoin:before{content:"\EBEA"}.mi-HWPNewLine:before{content:"\EBEB"}.mi-HWPOverwrite:before{content:"\EBEC"}.mi-HWPScratchOut:before{content:"\EBED"}.mi-HWPSplit:before{content:"\EBEE"}.mi-HWPStrikeThrough:before{content:"\EBEF"}.mi-HalfAlpha:before{content:"\EBF0"}.mi-HalfDullSound:before{content:"\EBF1"}.mi-HalfKatakana:before{content:"\EBF2"}.mi-HalfStarLeft:before{content:"\EBF3"}.mi-HalfStarRight:before{content:"\EBF4"}.mi-Handwriting:before{content:"\EBF5"}.mi-HangUp:before,.mi-HangUpLegacy:before{content:"\EBF6"}.mi-HardDrive:before{content:"\EBF7"}.mi-HeadlessDevice:before{content:"\EBF8"}.mi-Headphone:before{content:"\EBF9"}.mi-Headphone0:before{content:"\EBFA"}.mi-Headphone1:before{content:"\EBFB"}.mi-Headphone2:before{content:"\EBFC"}.mi-Headphone3:before{content:"\EBFD"}.mi-Headset:before{content:"\EBFE"}.mi-Health:before{content:"\EBFF"}.mi-Heart:before,.mi-HeartLegacy:before{content:"\EC00"}.mi-HeartBroken:before{content:"\EC01"}.mi-HeartBrokenLegacy:before,.mi-HeartBrokenZeroWidthLegacy:before{content:"\EC02"}.mi-HeartFill:before,.mi-HeartFillLegacy:before,.mi-HeartFillZeroWidthLegacy:before{content:"\EC03"}.mi-Help:before,.mi-HelpLegacy:before{content:"\EC04"}.mi-HelpLegacyMirrored:before,.mi-HelpMirrored:before{content:"\EC05"}.mi-HideBcc:before,.mi-HideBccLegacy:before{content:"\EC06"}.mi-Highlight:before,.mi-HighlightLegacy:before{content:"\EC07"}.mi-HighlightFill:before{content:"\EC08"}.mi-HighlightFill2:before{content:"\EC09"}.mi-History:before{content:"\EC0A"}.mi-HolePunchLandscapeBottom:before{content:"\EC0B"}.mi-HolePunchLandscapeLeft:before{content:"\EC0C"}.mi-HolePunchLandscapeRight:before{content:"\EC0D"}.mi-HolePunchLandscapeTop:before{content:"\EC0E"}.mi-HolePunchOff:before{content:"\EC0F"}.mi-HolePunchPortraitBottom:before{content:"\EC10"}.mi-HolePunchPortraitLeft:before{content:"\EC11"}.mi-HolePunchPortraitRight:before{content:"\EC12"}.mi-HolePunchPortraitTop:before{content:"\EC13"}.mi-HoloLensSelected:before{content:"\EC14"}.mi-Home:before,.mi-HomeLegacy:before{content:"\EC15"}.mi-HomeGroup:before{content:"\EC16"}.mi-HomeSolid:before{content:"\EC17"}.mi-HorizontalTabKey:before{content:"\EC18"}.mi-IBeam:before{content:"\EC19"}.mi-IBeamOutline:before{content:"\EC1A"}.mi-IOT:before{content:"\EC1B"}.mi-ImageExport:before{content:"\EC1C"}.mi-ExportMirrored:before,.mi-Import:before,.mi-ImportLegacy:before{content:"\EC1D"}.mi-ImportAll:before,.mi-ImportAllLegacy:before{content:"\EC1E"}.mi-ImportAllLegacyMirrored:before,.mi-ImportAllMirrored:before{content:"\EC1F"}.mi-Important:before,.mi-ImportantLegacy:before{content:"\EC20"}.mi-ImportantBadge12:before{content:"\EC21"}.mi-InPrivate:before{content:"\EC22"}.mi-IncidentTriangle:before{content:"\EC23"}.mi-IncreaseIndent:before,.mi-IncreaseIndentLegacy:before{content:"\EC25"}.mi-IncreaseIndentLegacyMirrored:before,.mi-IncreaseIndentMirrored:before{content:"\EC27"}.mi-Info:before{content:"\EC28"}.mi-Info2:before{content:"\EC29"}.mi-InfoSolid:before{content:"\EC2A"}.mi-InkingCaret:before{content:"\EC2B"}.mi-InkingColorFill:before{content:"\EC2C"}.mi-InkingColorOutline:before{content:"\EC2D"}.mi-InkingTool:before{content:"\EC2E"}.mi-InkingToolFill:before{content:"\EC2F"}.mi-InkingToolFill2:before{content:"\EC30"}.mi-Input:before{content:"\EC31"}.mi-InsiderHubApp:before{content:"\EC32"}.mi-InteractiveDashboard:before{content:"\EC33"}.mi-Italic:before,.mi-ItalicLegacy:before{content:"\EC34"}.mi-ItalicC:before,.mi-ItalicCLegacy:before{content:"\EC36"}.mi-ItalicI:before,.mi-ItalicILegacy:before{content:"\EC38"}.mi-ItalicK:before,.mi-ItalicKLegacy:before{content:"\EC3A"}.mi-ItalicKorean:before,.mi-ItalicKoreanLegacy:before{content:"\EC3C"}.mi-ItalicRussian:before,.mi-ItalicRussianLegacy:before{content:"\EC3E"}.mi-Japanese:before{content:"\EC3F"}.mi-JpnRomanji:before{content:"\EC40"}.mi-JpnRomanjiLock:before{content:"\EC41"}.mi-JpnRomanjiShift:before{content:"\EC42"}.mi-JpnRomanjiShiftLock:before{content:"\EC43"}.mi-Key12On:before{content:"\EC44"}.mi-Keyboard12Key:before{content:"\EC46"}.mi-KeyboardBrightness:before{content:"\EC47"}.mi-KeyBoardLegacy:before,.mi-KeyboardClassic:before{content:"\EC48"}.mi-KeyboardDismiss:before{content:"\EC49"}.mi-KeyboardDock:before{content:"\EC4A"}.mi-KeyboardFull:before{content:"\EC4B"}.mi-KeyboardLeftAligned:before{content:"\EC4C"}.mi-KeyboardLeftDock:before{content:"\EC4D"}.mi-KeyboardLeftHanded:before{content:"\EC4E"}.mi-KeyboardLowerBrightness:before{content:"\EC4F"}.mi-KeyboardNarrow:before{content:"\EC50"}.mi-KeyboardOneHanded:before{content:"\EC51"}.mi-KeyboardRightAligned:before{content:"\EC52"}.mi-KeyboardRightDock:before{content:"\EC53"}.mi-KeyboardRightHanded:before{content:"\EC54"}.mi-KeyboardSettings:before{content:"\EC55"}.mi-KeyboardShortcut:before{content:"\EC56"}.mi-KeyboardSplit:before,.mi-KeyboardSplitLegacy:before{content:"\EC57"}.mi-KeyboardStandard:before,.mi-KeyboardStandardLegacy:before{content:"\EC58"}.mi-KeyboardUndock:before{content:"\EC59"}.mi-KnowledgeArticle:before{content:"\EC5A"}.mi-Korean:before{content:"\EC5B"}.mi-LEDLight:before{content:"\EC5C"}.mi-Label:before{content:"\EC5D"}.mi-LandscapeOrientation:before{content:"\EC5E"}.mi-LandscapeOrientationMirrored:before{content:"\EC5F"}.mi-LangJPN:before{content:"\EC60"}.mi-LanguageChs:before{content:"\EC61"}.mi-LanguageCht:before{content:"\EC62"}.mi-LanguageJpn:before{content:"\EC63"}.mi-LanguageKor:before{content:"\EC64"}.mi-LaptopSecure:before{content:"\EC65"}.mi-LaptopSelected:before{content:"\EC66"}.mi-LargeErase:before{content:"\EC67"}.mi-Layout:before,.mi-LayoutLegacy:before{content:"\EC69"}.mi-Leaf:before{content:"\EC6A"}.mi-LeaveChat:before,.mi-LeaveChatLegacy:before{content:"\EC6B"}.mi-LeaveChatMirrored:before{content:"\EC6C"}.mi-LeftArrowKeyTime0:before{content:"\EC6D"}.mi-LeftDoubleQuote:before{content:"\EC6E"}.mi-LeftQuote:before{content:"\EC6F"}.mi-LeftStick:before{content:"\EC70"}.mi-Lexicon:before{content:"\EC71"}.mi-Library:before,.mi-LibraryLegacy:before{content:"\EC72"}.mi-Light:before{content:"\EC73"}.mi-LightningBolt:before{content:"\EC75"}.mi-Like:before,.mi-LikeInlineLegacy:before,.mi-LikeLegacy:before{content:"\EC76"}.mi-LikeDislike:before,.mi-LikeDislikeLegacy:before{content:"\EC77"}.mi-LineDisplay:before{content:"\EC78"}.mi-Link:before,.mi-LinkLegacy:before{content:"\EC79"}.mi-List:before{content:"\EC7A"}.mi-ListMirrored:before{content:"\EC7B"}.mi-Location:before,.mi-LocationLegacy:before{content:"\EC7C"}.mi-Lock:before,.mi-LockLegacy:before{content:"\EC7D"}.mi-LockFeedback:before{content:"\EC7E"}.mi-LockScreenGlance:before{content:"\EC7F"}.mi-LockscreenDesktop:before{content:"\EC80"}.mi-LowerBrightness:before{content:"\EC81"}.mi-MagStripeReader:before{content:"\EC82"}.mi-Mail:before,.mi-MailLegacy:before{content:"\EC83"}.mi-MailBadge12:before{content:"\EC84"}.mi-MailFill:before,.mi-MailFillLegacy:before,.mi-MailMessageLegacy:before{content:"\EC85"}.mi-MailForward:before,.mi-MailForwardLegacy:before{content:"\EC86"}.mi-MailForwardLegacyMirrored:before,.mi-MailForwardMirrored:before{content:"\EC87"}.mi-MailReply:before,.mi-MailReplyLegacy:before{content:"\EC88"}.mi-MailReplyAll:before,.mi-MailReplyAllLegacy:before{content:"\EC89"}.mi-MailReplyAllLegacyMirrored:before,.mi-MailReplyAllMirrored:before{content:"\EC8A"}.mi-MailReplyLegacyMirrored:before,.mi-MailReplyMirrored:before{content:"\EC8B"}.mi-Manage:before,.mi-ManageLegacy:before{content:"\EC8C"}.mi-MapCompassBottom:before{content:"\EC8D"}.mi-MapCompassTop:before{content:"\EC8E"}.mi-MapDirections:before{content:"\EC8F"}.mi-MapDrive:before,.mi-MapDriveLegacy:before{content:"\EC90"}.mi-MapLayers:before{content:"\EC91"}.mi-MapLegacy:before,.mi-MapPin:before{content:"\EC92"}.mi-MapPin2:before,.mi-MapPinLegacy:before{content:"\EC94"}.mi-Marker:before{content:"\EC95"}.mi-Marquee:before{content:"\EC96"}.mi-Media:before{content:"\EC97"}.mi-MediaStorageTower:before{content:"\EC98"}.mi-Megaphone:before{content:"\EC99"}.mi-Memo:before,.mi-MemoLegacy:before{content:"\EC9A"}.mi-CommentInlineLegacy:before,.mi-Message:before,.mi-MessageLegacy:before{content:"\EC9B"}.mi-MicClipping:before{content:"\EC9C"}.mi-MicError:before{content:"\EC9D"}.mi-MicOff:before{content:"\EC9E"}.mi-MicOn:before{content:"\EC9F"}.mi-MicSleep:before{content:"\ECA0"}.mi-Microphone:before,.mi-MicrophoneLegacy:before{content:"\ECA1"}.mi-MicrophoneListening:before{content:"\ECA2"}.mi-MiracastLogoSmall:before{content:"\ECA3"}.mi-MixVolumes:before{content:"\ECA4"}.mi-MobActionCenter:before{content:"\ECA5"}.mi-MobAirplane:before{content:"\ECA6"}.mi-MobBattery0:before{content:"\ECA7"}.mi-MobBattery1:before{content:"\ECA8"}.mi-MobBattery10:before{content:"\ECA9"}.mi-MobBattery2:before{content:"\ECAA"}.mi-MobBattery3:before{content:"\ECAB"}.mi-MobBattery4:before{content:"\ECAC"}.mi-MobBattery5:before{content:"\ECAD"}.mi-MobBattery6:before{content:"\ECAE"}.mi-MobBattery7:before{content:"\ECAF"}.mi-MobBattery8:before{content:"\ECB0"}.mi-MobBattery9:before{content:"\ECB1"}.mi-MobBatteryCharging0:before{content:"\ECB2"}.mi-MobBatteryCharging1:before{content:"\ECB3"}.mi-MobBatteryCharging10:before{content:"\ECB4"}.mi-MobBatteryCharging2:before{content:"\ECB5"}.mi-MobBatteryCharging3:before{content:"\ECB6"}.mi-MobBatteryCharging4:before{content:"\ECB7"}.mi-MobBatteryCharging5:before{content:"\ECB8"}.mi-MobBatteryCharging6:before{content:"\ECB9"}.mi-MobBatteryCharging7:before{content:"\ECBA"}.mi-MobBatteryCharging8:before{content:"\ECBB"}.mi-MobBatteryCharging9:before{content:"\ECBC"}.mi-MobBatterySaver0:before{content:"\ECBD"}.mi-MobBatterySaver1:before{content:"\ECBE"}.mi-MobBatterySaver10:before{content:"\ECBF"}.mi-MobBatterySaver2:before{content:"\ECC0"}.mi-MobBatterySaver3:before{content:"\ECC1"}.mi-MobBatterySaver4:before{content:"\ECC2"}.mi-MobBatterySaver5:before{content:"\ECC3"}.mi-MobBatterySaver6:before{content:"\ECC4"}.mi-MobBatterySaver7:before{content:"\ECC5"}.mi-MobBatterySaver8:before{content:"\ECC6"}.mi-MobBatterySaver9:before{content:"\ECC7"}.mi-MobBatteryUnknown:before{content:"\ECC8"}.mi-MobBluetooth:before{content:"\ECC9"}.mi-MobCallForwarding:before{content:"\ECCA"}.mi-MobCallForwardingMirrored:before{content:"\ECCB"}.mi-MobDrivingMode:before{content:"\ECCC"}.mi-MobLocation:before{content:"\ECCD"}.mi-MobQuietHours:before{content:"\ECCE"}.mi-MobSIMError:before{content:"\ECCF"}.mi-MobSIMLock:before{content:"\ECD0"}.mi-MobSIMMissing:before{content:"\ECD1"}.mi-MobSignal1:before{content:"\ECD2"}.mi-MobSignal2:before{content:"\ECD3"}.mi-MobSignal3:before{content:"\ECD4"}.mi-MobSignal4:before{content:"\ECD5"}.mi-MobSignal5:before{content:"\ECD6"}.mi-MobWifi1:before{content:"\ECD7"}.mi-MobWifi2:before{content:"\ECD8"}.mi-MobWifi3:before{content:"\ECD9"}.mi-MobWifi4:before{content:"\ECDA"}.mi-MobWifiHotspot:before{content:"\ECDB"}.mi-MobWifiWarning1:before{content:"\ECDC"}.mi-MobWifiWarning2:before{content:"\ECDD"}.mi-MobWifiWarning3:before{content:"\ECDE"}.mi-MobWifiWarning4:before{content:"\ECDF"}.mi-MobeSIM:before{content:"\ECE0"}.mi-MobeSIMBusy:before{content:"\ECE1"}.mi-MobeSIMLocked:before{content:"\ECE2"}.mi-MobeSIMNoProfile:before{content:"\ECE3"}.mi-MobileLocked:before{content:"\ECE4"}.mi-MobileSelected:before{content:"\ECE5"}.mi-MobileTablet:before{content:"\ECE6"}.mi-More:before,.mi-MoreLegacy:before{content:"\ECE7"}.mi-Mouse:before{content:"\ECE8"}.mi-MoveToFolder:before,.mi-MoveToFolderLegacy:before{content:"\ECE9"}.mi-Movies:before{content:"\ECEA"}.mi-MultiSelect:before,.mi-MultiSelectLegacy:before{content:"\ECEB"}.mi-MultiSelectLegacyMirrored:before,.mi-MultiSelectMirrored:before{content:"\ECEC"}.mi-MultimediaDMP:before{content:"\ECED"}.mi-MultimediaDMS:before{content:"\ECEE"}.mi-MultimediaDVR:before{content:"\ECEF"}.mi-MultimediaPMP:before{content:"\ECF0"}.mi-Multitask:before{content:"\ECF1"}.mi-Multitask16:before{content:"\ECF2"}.mi-MultitaskExpanded:before{content:"\ECF3"}.mi-MusicAlbum:before{content:"\ECF4"}.mi-MusicInfo:before,.mi-MusicInfoLegacy:before{content:"\ECF5"}.mi-MusicNote:before{content:"\ECF6"}.mi-MusicSharing:before{content:"\ECF7"}.mi-MusicSharingOff:before{content:"\ECF8"}.mi-Mute:before,.mi-MuteLegacy:before{content:"\ECF9"}.mi-MyNetwork:before{content:"\ECFA"}.mi-NUIFPContinueSlideAction:before{content:"\ECFB"}.mi-NUIFPContinueSlideHand:before{content:"\ECFC"}.mi-NUIFPPressAction:before{content:"\ECFD"}.mi-NUIFPPressHand:before{content:"\ECFE"}.mi-NUIFPPressRepeatAction:before{content:"\ECFF"}.mi-NUIFPRollLeftAction:before{content:"\ED00"}.mi-NUIFPRollLeftHand:before{content:"\ED01"}.mi-NUIFPRollRightHand:before{content:"\ED02"}.mi-NUIFPRollRightHandAction:before{content:"\ED03"}.mi-NUIFPStartSlideAction:before{content:"\ED04"}.mi-NUIFPPressRepeatHand:before,.mi-NUIFPStartSlideHand:before{content:"\ED05"}.mi-NUIFace:before{content:"\ED06"}.mi-NUIIris:before{content:"\ED07"}.mi-Narrator:before{content:"\ED08"}.mi-NarratorForward:before{content:"\ED09"}.mi-NarratorForwardMirrored:before{content:"\ED0A"}.mi-NearbySharing:before{content:"\ED0B"}.mi-Network:before{content:"\ED0C"}.mi-NetworkAdapter:before{content:"\ED0D"}.mi-NetworkConnected:before{content:"\ED0E"}.mi-NetworkConnectedCheckmark:before{content:"\ED0F"}.mi-NetworkOffline:before{content:"\ED10"}.mi-NetworkPrinter:before{content:"\ED11"}.mi-NetworkSharing:before{content:"\ED12"}.mi-NetworkTower:before{content:"\ED13"}.mi-NewFolder:before,.mi-NewFolderLegacy:before{content:"\ED14"}.mi-NewWindow:before,.mi-NewWindowLegacy:before{content:"\ED15"}.mi-Next:before,.mi-NextLegacy:before{content:"\ED16"}.mi-NoiseCancelation:before{content:"\ED17"}.mi-NoiseCancelationOff:before{content:"\ED18"}.mi-OEM:before{content:"\ED19"}.mi-OneBar:before,.mi-OneBarLegacy:before{content:"\ED1A"}.mi-OpenFile:before,.mi-OpenFileLegacy:before{content:"\ED1B"}.mi-OpenFolderHorizontal:before{content:"\ED1C"}.mi-OpenInNewWindow:before,.mi-OpenInNewWindowLegacy:before{content:"\ED1D"}.mi-OpenLocal:before,.mi-OpenLocalLegacy:before{content:"\ED1E"}.mi-OpenPane:before,.mi-OpenPaneLegacy:before{content:"\ED1F"}.mi-OpenPaneLegacyMirrored:before,.mi-OpenPaneMirrored:before{content:"\ED20"}.mi-OpenWith:before,.mi-OpenWithLegacy:before{content:"\ED21"}.mi-OpenWithLegacyMirrored:before,.mi-OpenWithMirrored:before{content:"\ED22"}.mi-Orientation:before,.mi-OrientationLegacy:before{content:"\ED23"}.mi-OtherUser:before,.mi-OtherUserLegacy:before{content:"\ED24"}.mi-OutlineHalfStarLeft:before{content:"\ED25"}.mi-OutlineHalfStarRight:before{content:"\ED26"}.mi-OutlineQuarterStarLeft:before{content:"\ED27"}.mi-OutlineQuarterStarRight:before{content:"\ED28"}.mi-OutlineStarLeftHalf:before{content:"\ED29"}.mi-OutlineStarRightHalf:before{content:"\ED2A"}.mi-OutlineThreeQuarterStarLeft:before{content:"\ED2B"}.mi-OutlineThreeQuarterStarRight:before{content:"\ED2C"}.mi-PC1:before,.mi-PC1Legacy:before{content:"\ED2D"}.mi-PINPad:before{content:"\ED2E"}.mi-PLAP:before{content:"\ED2F"}.mi-PPSFourLandscape:before{content:"\ED30"}.mi-PPSFourPortrait:before{content:"\ED31"}.mi-PPSOneLandscape:before{content:"\ED32"}.mi-PPSOnePortrait:before{content:"\ED33"}.mi-PPSTwoLandscape:before{content:"\ED34"}.mi-PPSTwoPortrait:before{content:"\ED35"}.mi-Package:before{content:"\ED36"}.mi-Page:before,.mi-PageLegacy:before{content:"\ED37"}.mi-PageLeft:before{content:"\ED38"}.mi-PageMarginLandscapeModerate:before{content:"\ED39"}.mi-PageMarginLandscapeNarrow:before{content:"\ED3A"}.mi-PageMarginLandscapeNormal:before{content:"\ED3B"}.mi-PageMarginLandscapeWide:before{content:"\ED3C"}.mi-PageMarginPortraitModerate:before{content:"\ED3D"}.mi-PageMarginPortraitNarrow:before{content:"\ED3E"}.mi-PageMarginPortraitNormal:before{content:"\ED3F"}.mi-PageMarginPortraitWide:before{content:"\ED40"}.mi-PageMirrored:before{content:"\ED41"}.mi-PageRight:before{content:"\ED42"}.mi-PageFillLegacy:before,.mi-PageSolid:before{content:"\ED43"}.mi-PaginationDotOutline10:before{content:"\ED44"}.mi-PaginationDotSolid10:before{content:"\ED45"}.mi-PanMode:before{content:"\ED46"}.mi-ParkingLocation:before{content:"\ED47"}.mi-ParkingLocationMirrored:before{content:"\ED48"}.mi-ParkingLocationSolid:before{content:"\ED49"}.mi-PartyLeader:before{content:"\ED4A"}.mi-PassiveAuthentication:before{content:"\ED4B"}.mi-PasswordKeyHide:before{content:"\ED4C"}.mi-PasswordKeyShow:before{content:"\ED4D"}.mi-Paste:before,.mi-PasteLegacy:before{content:"\ED4E"}.mi-Pause:before,.mi-PauseLegacy:before{content:"\ED4F"}.mi-PauseBadge12:before{content:"\ED50"}.mi-PaymentCard:before{content:"\ED51"}.mi-PenPalette:before{content:"\ED52"}.mi-PenPaletteMirrored:before{content:"\ED53"}.mi-PenTips:before{content:"\ED54"}.mi-PenTipsMirrored:before{content:"\ED55"}.mi-PenWorkspace:before{content:"\ED56"}.mi-PenWorkspaceMirrored:before{content:"\ED57"}.mi-Pencil:before{content:"\ED58"}.mi-PencilFill:before{content:"\ED59"}.mi-People:before,.mi-PeopleLegacy:before{content:"\ED5A"}.mi-PeriodKey:before{content:"\ED5B"}.mi-Permissions:before,.mi-PermissionsLegacy:before{content:"\ED5C"}.mi-PersonalFolder:before{content:"\ED5D"}.mi-Personalize:before{content:"\ED5E"}.mi-Phone:before,.mi-PhoneLegacy:before{content:"\ED5F"}.mi-PhoneBook:before,.mi-PhoneBookLegacy:before{content:"\ED60"}.mi-Photo:before{content:"\ED61"}.mi-Photo2:before{content:"\ED62"}.mi-Picture:before,.mi-PictureLegacy:before{content:"\ED63"}.mi-PieSingle:before{content:"\ED64"}.mi-Pin:before,.mi-PinLegacy:before{content:"\ED65"}.mi-PinFill:before{content:"\ED66"}.mi-Pinned:before{content:"\ED67"}.mi-PinnedFill:before{content:"\ED68"}.mi-PinyinIMELogo:before{content:"\ED69"}.mi-PlaceFolder:before,.mi-PlaceFolderLegacy:before{content:"\ED6B"}.mi-Play:before,.mi-PlayLegacy:before{content:"\ED6C"}.mi-Play36:before{content:"\ED6D"}.mi-PlayBadge12:before{content:"\ED6E"}.mi-PlayOn:before,.mi-PlayOnLegacy:before{content:"\ED70"}.mi-PlaySolid:before{content:"\ED71"}.mi-PlaybackRate1x:before{content:"\ED72"}.mi-PlaybackRateOther:before{content:"\ED73"}.mi-PlayerSettings:before{content:"\ED74"}.mi-PointErase:before{content:"\ED75"}.mi-PointEraseMirrored:before{content:"\ED76"}.mi-PointerHand:before{content:"\ED77"}.mi-PoliceCar:before{content:"\ED78"}.mi-PostUpdate:before,.mi-PostUpdateLegacy:before{content:"\ED79"}.mi-PowerButton:before{content:"\ED7A"}.mi-CheckboxFill:before,.mi-CheckboxFillLegacy:before,.mi-CheckboxFillZeroWidthLegacy:before,.mi-PresenceChicklet:before,.mi-PresenceChickletLegacy:before,.mi-ResizeMouseLarge:before{content:"\ED7B"}.mi-PresenceChickletVideo:before,.mi-PresenceChickletVideoLegacy:before{content:"\ED7C"}.mi-Preview:before,.mi-PreviewLegacy:before{content:"\ED7D"}.mi-PreviewLink:before,.mi-PreviewLinkLegacy:before{content:"\ED7E"}.mi-Previous:before,.mi-PreviousLegacy:before{content:"\ED7F"}.mi-Print:before,.mi-PrintLegacy:before{content:"\ED80"}.mi-PrintAllPages:before{content:"\ED81"}.mi-PrintCustomRange:before{content:"\ED82"}.mi-PrintDefault:before{content:"\ED83"}.mi-Printer3D:before{content:"\ED84"}.mi-Printer3DLegacy:before{content:"\ED85"}.mi-PrintfaxPrinterFile:before{content:"\ED86"}.mi-Priority:before,.mi-PriorityLegacy:before{content:"\ED87"}.mi-Process:before{content:"\ED88"}.mi-Processing:before{content:"\ED89"}.mi-ProgressRingDots:before{content:"\ED8A"}.mi-Project:before{content:"\ED8B"}.mi-Projector:before{content:"\ED8C"}.mi-ProtectedDocument:before,.mi-ProtectedDocumentLegacy:before{content:"\ED8D"}.mi-Protractor:before{content:"\ED8E"}.mi-ProvisioningPackage:before{content:"\ED8F"}.mi-PuncKey:before{content:"\ED90"}.mi-PuncKey0:before{content:"\ED91"}.mi-PuncKey1:before{content:"\ED92"}.mi-PuncKey2:before{content:"\ED93"}.mi-PuncKey3:before{content:"\ED94"}.mi-PuncKey4:before{content:"\ED95"}.mi-PuncKey5:before{content:"\ED96"}.mi-PuncKey6:before{content:"\ED97"}.mi-PuncKey7:before{content:"\ED98"}.mi-PuncKey8:before{content:"\ED99"}.mi-PuncKey9:before{content:"\ED9A"}.mi-PuncKeyLeftBottom:before{content:"\ED9B"}.mi-PuncKeyRightBottom:before{content:"\ED9C"}.mi-Puzzle:before{content:"\ED9D"}.mi-QWERTYOff:before{content:"\ED9E"}.mi-QWERTYOn:before{content:"\ED9F"}.mi-QuarentinedItems:before{content:"\EDA0"}.mi-QuarentinedItemsMirrored:before{content:"\EDA1"}.mi-QuarterStarLeft:before{content:"\EDA2"}.mi-QuarterStarRight:before{content:"\EDA3"}.mi-QuickNote:before{content:"\EDA4"}.mi-QuietHours:before{content:"\EDA5"}.mi-QuietHoursBadge12:before{content:"\EDA6"}.mi-Radar:before{content:"\EDA7"}.mi-RadioBtnOff:before{content:"\EDA8"}.mi-RadioBtnOn:before{content:"\EDA9"}.mi-RadioBullet:before{content:"\EDAA"}.mi-RadioBullet2:before{content:"\EDAB"}.mi-Read:before,.mi-ReadLegacy:before{content:"\EDAC"}.mi-ReadingList:before{content:"\EDAD"}.mi-ReceiptPrinter:before{content:"\EDAE"}.mi-LengthLegacy:before,.mi-Recent:before{content:"\EDAF"}.mi-Record:before,.mi-RecordLegacy:before{content:"\EDB0"}.mi-RectangularClipping:before{content:"\EDB1"}.mi-RedEye:before{content:"\EDB2"}.mi-Redo:before,.mi-RedoLegacy:before{content:"\EDB3"}.mi-ReduceTile:before,.mi-ReduceTileLegacy:before{content:"\EDB5"}.mi-ReduceTileLegacyMirrored:before,.mi-ReduceTileMirrored:before{content:"\EDB7"}.mi-Refresh:before,.mi-RefreshLegacy:before,.mi-RepeatAll:before,.mi-RepeatAllLegacy:before{content:"\EDB8"}.mi-Relationship:before{content:"\EDB9"}.mi-RememberedDevice:before{content:"\EDBA"}.mi-Reminder:before{content:"\EDBB"}.mi-ReminderFill:before{content:"\EDBC"}.mi-Remote:before,.mi-RemoteLegacy:before{content:"\EDBD"}.mi-Remove:before,.mi-RemoveLegacy:before{content:"\EDBE"}.mi-RemoveFrom:before{content:"\EDBF"}.mi-Rename:before,.mi-RenameLegacy:before{content:"\EDC0"}.mi-Repair:before,.mi-RepairLegacy:before{content:"\EDC1"}.mi-RepeatOne:before,.mi-RepeatOneLegacy:before{content:"\EDC2"}.mi-Replay:before{content:"\EDC3"}.mi-Reply:before,.mi-ReplyLegacy:before{content:"\EDC4"}.mi-ReplyMirrored:before{content:"\EDC5"}.mi-ReportDocument:before{content:"\EDC6"}.mi-ReportHacked:before,.mi-ReportHackedLegacy:before{content:"\EDC7"}.mi-ResetDevice:before{content:"\EDC8"}.mi-ResetDrive:before{content:"\EDC9"}.mi-Reshare:before,.mi-ReshareLegacy:before{content:"\EDCA"}.mi-ResizeMouseMedium:before{content:"\EDCB"}.mi-ResizeMouseMediumMirrored:before{content:"\EDCC"}.mi-ResizeMouseSmall:before{content:"\EDCD"}.mi-ResizeMouseSmallMirrored:before{content:"\EDCE"}.mi-ResizeMouseTall:before{content:"\EDCF"}.mi-ResizeMouseTallMirrored:before{content:"\EDD0"}.mi-ResizeMouseWide:before{content:"\EDD1"}.mi-ResizeTouchLarger:before{content:"\EDD2"}.mi-ResizeTouchNarrower:before{content:"\EDD3"}.mi-ResizeTouchNarrowerMirrored:before{content:"\EDD4"}.mi-ResizeTouchShorter:before{content:"\EDD5"}.mi-ResizeTouchSmaller:before{content:"\EDD6"}.mi-Resolution:before,.mi-ResolutionLegacy:before{content:"\EDD8"}.mi-ReturnKey:before{content:"\EDD9"}.mi-ReturnKeyLg:before{content:"\EDDA"}.mi-ReturnKeySm:before{content:"\EDDB"}.mi-ReturnToWindow:before,.mi-ReturnToWindowLegacy:before{content:"\EDDC"}.mi-RevToggleKey:before{content:"\EDDD"}.mi-Rewind:before{content:"\EDDE"}.mi-RightArrowKeyTime0:before{content:"\EDDF"}.mi-RightArrowKeyTime1:before{content:"\EDE0"}.mi-RightArrowKeyTime2:before{content:"\EDE1"}.mi-RightArrowKeyTime3:before{content:"\EDE2"}.mi-RightArrowKeyTime4:before{content:"\EDE3"}.mi-RightDoubleQuote:before{content:"\EDE4"}.mi-RightQuote:before{content:"\EDE5"}.mi-RightStick:before{content:"\EDE6"}.mi-Ringer:before{content:"\EDE7"}.mi-RingerBadge12:before{content:"\EDE8"}.mi-RingerSilent:before{content:"\EDE9"}.mi-RoamingDomestic:before{content:"\EDEA"}.mi-RoamingInternational:before{content:"\EDEB"}.mi-Robot:before{content:"\EDEC"}.mi-Rotate:before{content:"\EDED"}.mi-RotateCamera:before,.mi-RotateCameraLegacy:before{content:"\EDEE"}.mi-RotateLegacy:before{content:"\EDEF"}.mi-RotateMapLeft:before{content:"\EDF0"}.mi-RotateMapRight:before{content:"\EDF1"}.mi-RotationLock:before{content:"\EDF2"}.mi-Ruler:before{content:"\EDF3"}.mi-SDCard:before{content:"\EDF4"}.mi-SIMError:before{content:"\EDF5"}.mi-SIMLock:before{content:"\EDF6"}.mi-SIMMissing:before{content:"\EDF7"}.mi-SIPMove:before{content:"\EDF8"}.mi-SIPRedock:before{content:"\EDF9"}.mi-SIPUndock:before{content:"\EDFA"}.mi-Safe:before{content:"\EDFB"}.mi-Save:before,.mi-SaveLegacy:before{content:"\EDFC"}.mi-SaveAs:before,.mi-SaveAsLegacy:before{content:"\EDFD"}.mi-SaveCopy:before{content:"\EDFE"}.mi-SaveLocal:before,.mi-SaveLocalLegacy:before{content:"\EDFF"}.mi-Scan:before,.mi-ScanLegacy:before{content:"\EE00"}.mi-ScreenTime:before{content:"\EE01"}.mi-ScrollMode:before{content:"\EE02"}.mi-ScrollUpDown:before{content:"\EE03"}.mi-FindLegacy:before,.mi-Search:before,.mi-SearchboxLegacy:before{content:"\EE04"}.mi-SearchAndApps:before{content:"\EE05"}.mi-SelectAll:before,.mi-SelectAllLegacy:before{content:"\EE06"}.mi-SemanticZoom:before,.mi-SemanticZoomLegacy:before{content:"\EE08"}.mi-Send:before,.mi-SendLegacy:before{content:"\EE09"}.mi-SendFill:before{content:"\EE0A"}.mi-SendFillMirrored:before{content:"\EE0B"}.mi-SendMirrored:before{content:"\EE0C"}.mi-Sensor:before{content:"\EE0D"}.mi-Set:before{content:"\EE0E"}.mi-SetSolid:before{content:"\EE0F"}.mi-SetTile:before,.mi-SetTileLegacy:before{content:"\EE10"}.mi-SetlockScreen:before,.mi-SetlockScreenLegacy:before{content:"\EE11"}.mi-Settings:before,.mi-SettingsLegacy:before{content:"\EE12"}.mi-SettingsBattery:before{content:"\EE13"}.mi-SettingsDisplaySound:before{content:"\EE14"}.mi-Share:before{content:"\EE15"}.mi-ShareBroadband:before{content:"\EE16"}.mi-Shield:before{content:"\EE17"}.mi-Shop:before,.mi-ShopLegacy:before{content:"\EE18"}.mi-ShoppingCart:before{content:"\EE19"}.mi-ShowAllFiles1:before,.mi-ShowAllFiles1Legacy:before{content:"\EE1B"}.mi-ShowAllFiles3:before,.mi-ShowAllFiles3Legacy:before{content:"\EE1D"}.mi-ShowBcc:before,.mi-ShowBccLegacy:before{content:"\EE1E"}.mi-ShowResults:before,.mi-ShowResultsLegacy:before{content:"\EE1F"}.mi-ShowResultsLegacyMirrored:before,.mi-ShowResultsMirrored:before{content:"\EE20"}.mi-Shuffle:before,.mi-ShuffleLegacy:before{content:"\EE21"}.mi-SignalBars1:before{content:"\EE22"}.mi-SignalBars2:before{content:"\EE23"}.mi-SignalBars3:before{content:"\EE24"}.mi-SignalBars4:before{content:"\EE25"}.mi-SignalBars5:before{content:"\EE26"}.mi-SignalError:before{content:"\EE27"}.mi-SignalNotConnected:before{content:"\EE28"}.mi-SignalRoaming:before{content:"\EE29"}.mi-SignatureCapture:before{content:"\EE2A"}.mi-Size:before{content:"\EE2B"}.mi-SkipBack10:before{content:"\EE2C"}.mi-SkipForward30:before{content:"\EE2D"}.mi-SliderThumb:before{content:"\EE2E"}.mi-Slideshow:before,.mi-SlideshowLegacy:before{content:"\EE2F"}.mi-SlowMotionOn:before{content:"\EE30"}.mi-SmallErase:before{content:"\EE31"}.mi-Smartcard:before{content:"\EE32"}.mi-SmartcardVirtual:before{content:"\EE33"}.mi-Sort:before,.mi-SortLegacy:before{content:"\EE34"}.mi-SpatialVolume0:before{content:"\EE35"}.mi-SpatialVolume1:before{content:"\EE36"}.mi-SpatialVolume2:before{content:"\EE37"}.mi-SpatialVolume3:before{content:"\EE38"}.mi-Speakers:before{content:"\EE39"}.mi-Speech:before{content:"\EE3A"}.mi-SpeedHigh:before{content:"\EE3B"}.mi-SpeedMedium:before{content:"\EE3C"}.mi-SpeedOff:before{content:"\EE3D"}.mi-StaplingLandscapeBookBinding:before{content:"\EE3E"}.mi-StaplingLandscapeBottomLeft:before{content:"\EE3F"}.mi-StaplingLandscapeBottomRight:before{content:"\EE40"}.mi-StaplingLandscapeTopLeft:before{content:"\EE41"}.mi-StaplingLandscapeTopRight:before{content:"\EE42"}.mi-StaplingLandscapeTwoBottom:before{content:"\EE43"}.mi-StaplingLandscapeTwoLeft:before{content:"\EE44"}.mi-StaplingLandscapeTwoRight:before{content:"\EE45"}.mi-StaplingLandscapeTwoTop:before{content:"\EE46"}.mi-StaplingOff:before{content:"\EE47"}.mi-StaplingPortraitBookBinding:before{content:"\EE48"}.mi-StaplingPortraitBottomLeft:before{content:"\EE49"}.mi-StaplingPortraitBottomRight:before{content:"\EE4A"}.mi-StaplingPortraitTopLeft:before{content:"\EE4B"}.mi-StaplingPortraitTopRight:before{content:"\EE4C"}.mi-StaplingPortraitTwoBottom:before{content:"\EE4D"}.mi-StaplingPortraitTwoLeft:before{content:"\EE4E"}.mi-StaplingPortraitTwoRight:before{content:"\EE4F"}.mi-StaplingPortraitTwoTop:before{content:"\EE50"}.mi-StartPoint:before{content:"\EE51"}.mi-StartPointSolid:before{content:"\EE52"}.mi-StatusCheckmark:before{content:"\EE53"}.mi-StatusCheckmark7:before{content:"\EE54"}.mi-StatusCheckmarkLeft:before{content:"\EE55"}.mi-StatusCircle:before{content:"\EE56"}.mi-StatusCircle7:before{content:"\EE57"}.mi-StatusCircleBlock:before{content:"\EE58"}.mi-StatusCircleBlock2:before{content:"\EE59"}.mi-StatusCircleCheckmark:before{content:"\EE5A"}.mi-StatusCircleErrorX:before{content:"\EE5B"}.mi-StatusCircleExclamation:before{content:"\EE5C"}.mi-StatusCircleInfo:before{content:"\EE5D"}.mi-StatusCircleInner:before{content:"\EE5E"}.mi-StatusCircleLeft:before{content:"\EE5F"}.mi-StatusCircleOuter:before{content:"\EE60"}.mi-StatusCircleQuestionMark:before{content:"\EE61"}.mi-StatusCircleRing:before{content:"\EE62"}.mi-StatusCircleSync:before{content:"\EE63"}.mi-StatusConnecting1:before{content:"\EE64"}.mi-StatusConnecting2:before{content:"\EE65"}.mi-StatusDataTransfer:before{content:"\EE66"}.mi-StatusDataTransferVPN:before{content:"\EE67"}.mi-StatusDualSIM1:before{content:"\EE68"}.mi-StatusDualSIM1VPN:before{content:"\EE69"}.mi-StatusDualSIM2:before{content:"\EE6A"}.mi-StatusDualSIM2VPN:before{content:"\EE6B"}.mi-StatusError:before{content:"\EE6C"}.mi-StatusErrorCircle7:before{content:"\EE6D"}.mi-StatusErrorFull:before{content:"\EE6E"}.mi-StatusErrorLeft:before{content:"\EE6F"}.mi-StatusExclamationCircle7:before{content:"\EE70"}.mi-StatusInfo:before{content:"\EE71"}.mi-StatusInfoLeft:before{content:"\EE72"}.mi-StatusPause7:before{content:"\EE73"}.mi-StatusSGLTE:before{content:"\EE74"}.mi-StatusSGLTECell:before{content:"\EE75"}.mi-StatusSGLTEDataVPN:before{content:"\EE76"}.mi-StatusTriangle:before{content:"\EE77"}.mi-StatusTriangleExclamation:before{content:"\EE78"}.mi-StatusTriangleInner:before{content:"\EE79"}.mi-StatusTriangleLeft:before{content:"\EE7A"}.mi-StatusTriangleOuter:before{content:"\EE7B"}.mi-StatusUnsecure:before{content:"\EE7C"}.mi-StatusVPN:before{content:"\EE7D"}.mi-StatusWarning:before{content:"\EE7E"}.mi-StatusWarningLeft:before{content:"\EE7F"}.mi-Sticker2:before{content:"\EE80"}.mi-StockDown:before{content:"\EE81"}.mi-StockUp:before{content:"\EE82"}.mi-Stop:before,.mi-StopLegacy:before{content:"\EE83"}.mi-StopPoint:before{content:"\EE84"}.mi-StopPointSolid:before{content:"\EE85"}.mi-StopSlideshow:before,.mi-StopSlideshowLegacy:before{content:"\EE87"}.mi-Stopwatch:before{content:"\EE88"}.mi-StorageNetworkWireless:before{content:"\EE89"}.mi-StorageOptical:before{content:"\EE8A"}.mi-StorageTape:before{content:"\EE8B"}.mi-Streaming:before{content:"\EE8C"}.mi-StreamingEnterprise:before{content:"\EE8D"}.mi-Street:before,.mi-StreetLegacy:before{content:"\EE8E"}.mi-StreetsideSplitExpand:before{content:"\EE8F"}.mi-StreetsideSplitMinimize:before{content:"\EE90"}.mi-StrokeErase:before{content:"\EE91"}.mi-StrokeErase2:before{content:"\EE92"}.mi-StrokeEraseMirrored:before{content:"\EE93"}.mi-Subtitles:before{content:"\EE94"}.mi-SubtitlesAudio:before{content:"\EE95"}.mi-SurfaceHub:before{content:"\EE96"}.mi-SurfaceHubSelected:before{content:"\EE97"}.mi-Sustainable:before{content:"\EE98"}.mi-Swipe:before{content:"\EE99"}.mi-SwipeRevealArt:before{content:"\EE9A"}.mi-Switch:before,.mi-SwitchLegacy:before{content:"\EE9B"}.mi-SwitchApps:before,.mi-SwitchAppsLegacy:before{content:"\EE9C"}.mi-SwitchUser:before{content:"\EE9D"}.mi-Sync:before,.mi-SyncLegacy:before{content:"\EE9E"}.mi-SyncBadge12:before{content:"\EE9F"}.mi-SyncError:before{content:"\EEA0"}.mi-SyncFolder:before,.mi-SyncFolderLegacy:before{content:"\EEA1"}.mi-System:before{content:"\EEA2"}.mi-TVMonitor:before{content:"\EEA3"}.mi-TVMonitorSelected:before{content:"\EEA4"}.mi-Tablet:before{content:"\EEA5"}.mi-TabletMode:before{content:"\EEA6"}.mi-TabletSelected:before{content:"\EEA7"}.mi-Tag:before,.mi-TagLegacy:before{content:"\EEA8"}.mi-TapAndSend:before{content:"\EEA9"}.mi-TaskView:before{content:"\EEAA"}.mi-TaskViewExpanded:before{content:"\EEAB"}.mi-TaskViewSettings:before{content:"\EEAC"}.mi-TaskbarPhone:before{content:"\EEAD"}.mi-ThisPC:before{content:"\EEAE"}.mi-ThoughtBubble:before{content:"\EEAF"}.mi-ThreeBars:before,.mi-ThreeBarsLegacy:before{content:"\EEB0"}.mi-ThreeQuarterStarLeft:before{content:"\EEB1"}.mi-ThreeQuarterStarRight:before{content:"\EEB2"}.mi-Tiles:before{content:"\EEB3"}.mi-TiltDown:before{content:"\EEB4"}.mi-TiltUp:before{content:"\EEB5"}.mi-TimeLanguage:before{content:"\EEB6"}.mi-ToggleBorder:before{content:"\EEB7"}.mi-ToggleFilled:before{content:"\EEB8"}.mi-ToggleThumb:before{content:"\EEB9"}.mi-TollSolid:before{content:"\EEBA"}.mi-Lightbulb:before,.mi-ToolTip:before{content:"\EEBB"}.mi-Touch:before{content:"\EEBC"}.mi-TouchPointer:before,.mi-TouchPointerLegacy:before{content:"\EEBD"}.mi-Touchpad:before{content:"\EEBE"}.mi-Touchscreen:before{content:"\EEBF"}.mi-Trackers:before{content:"\EEC0"}.mi-TrackersMirrored:before{content:"\EEC1"}.mi-TrafficCongestionSolid:before{content:"\EEC2"}.mi-TrafficLight:before{content:"\EEC3"}.mi-Train:before{content:"\EEC4"}.mi-TrainSolid:before{content:"\EEC5"}.mi-TreeFolderFolder:before{content:"\EEC6"}.mi-TreeFolderFolderFill:before{content:"\EEC7"}.mi-TreeFolderFolderOpen:before{content:"\EEC8"}.mi-TreeFolderFolderOpenFill:before{content:"\EEC9"}.mi-TriggerLeft:before{content:"\EECA"}.mi-TriggerRight:before{content:"\EECB"}.mi-Trim:before,.mi-TrimLegacy:before{content:"\EECC"}.mi-TwoBars:before,.mi-TwoBarsLegacy:before{content:"\EECD"}.mi-TwoPage:before,.mi-TwoPageLegacy:before{content:"\EECE"}.mi-Type:before,.mi-TypeLegacy:before{content:"\EECF"}.mi-TypingIndicatorLegacy:before{content:"\EED0"}.mi-USB:before{content:"\EED1"}.mi-USBSafeConnect:before{content:"\EED2"}.mi-Underline:before,.mi-UnderlineLegacy:before{content:"\EED3"}.mi-UnderlineLKorean:before,.mi-UnderlineLKoreanLegacy:before{content:"\EED5"}.mi-UnderlineRussian:before,.mi-UnderlineRussianLegacy:before{content:"\EED7"}.mi-UnderlineS:before,.mi-UnderlineSLegacy:before{content:"\EED9"}.mi-UnderlineU:before,.mi-UnderlineULegacy:before{content:"\EEDB"}.mi-UnderscoreSpace:before{content:"\EEDC"}.mi-Undo:before,.mi-UndoLegacy:before{content:"\EEDD"}.mi-Unfavorite:before,.mi-UnfavoriteLegacy:before{content:"\EEDE"}.mi-Unit:before{content:"\EEDF"}.mi-Unknown:before{content:"\EEE0"}.mi-UnknownMirrored:before{content:"\EEE1"}.mi-Unlock:before,.mi-UnlockLegacy:before{content:"\EEE2"}.mi-Unpin:before,.mi-UnpinLegacy:before{content:"\EEE3"}.mi-UnsyncFolder:before,.mi-UnsyncFolderLegacy:before{content:"\EEE4"}.mi-Up:before,.mi-UpLegacy:before{content:"\EEE5"}.mi-UpArrowShiftKey:before{content:"\EEE6"}.mi-UpShiftKey:before{content:"\EEE7"}.mi-UpdateRestore:before{content:"\EEE8"}.mi-Upload:before,.mi-UploadLegacy:before,.mi-UploadSkyDriveLegacy:before{content:"\EEE9"}.mi-UserAPN:before{content:"\EEEA"}.mi-VPN:before{content:"\EEEB"}.mi-VerticalBattery0:before{content:"\EEEC"}.mi-VerticalBattery1:before{content:"\EEED"}.mi-VerticalBattery10:before{content:"\EEEE"}.mi-VerticalBattery2:before{content:"\EEEF"}.mi-VerticalBattery3:before{content:"\EEF0"}.mi-VerticalBattery4:before{content:"\EEF1"}.mi-VerticalBattery5:before{content:"\EEF2"}.mi-VerticalBattery6:before{content:"\EEF3"}.mi-VerticalBattery7:before{content:"\EEF4"}.mi-VerticalBattery8:before{content:"\EEF5"}.mi-VerticalBattery9:before{content:"\EEF6"}.mi-VerticalBatteryCharging0:before{content:"\EEF7"}.mi-VerticalBatteryCharging1:before{content:"\EEF8"}.mi-VerticalBatteryCharging10:before{content:"\EEF9"}.mi-VerticalBatteryCharging2:before{content:"\EEFA"}.mi-VerticalBatteryCharging3:before{content:"\EEFB"}.mi-VerticalBatteryCharging4:before{content:"\EEFC"}.mi-VerticalBatteryCharging5:before{content:"\EEFD"}.mi-VerticalBatteryCharging6:before{content:"\EEFE"}.mi-VerticalBatteryCharging7:before{content:"\EEFF"}.mi-VerticalBatteryCharging8:before{content:"\EF00"}.mi-VerticalBatteryCharging9:before{content:"\EF01"}.mi-VerticalBatteryUnknown:before{content:"\EF02"}.mi-Vibrate:before{content:"\EF03"}.mi-Video:before,.mi-VideoInlineLegacy:before,.mi-VideoLegacy:before{content:"\EF04"}.mi-Video360:before{content:"\EF05"}.mi-VideoChat:before,.mi-VideoChatLegacy:before{content:"\EF06"}.mi-VideoSolid:before{content:"\EF07"}.mi-RevealPasswordLegacy:before,.mi-View:before,.mi-ViewLegacy:before{content:"\EF08"}.mi-ShowAllFilesLegacy:before,.mi-ViewAll:before,.mi-ViewAllLegacy:before{content:"\EF09"}.mi-ViewDashboard:before{content:"\EF0A"}.mi-Volume:before,.mi-VolumeLegacy:before{content:"\EF0B"}.mi-Volume0:before{content:"\EF0C"}.mi-Volume1:before{content:"\EF0D"}.mi-Volume2:before{content:"\EF0E"}.mi-Volume3:before{content:"\EF0F"}.mi-VolumeBars:before{content:"\EF10"}.mi-Walk:before{content:"\EF11"}.mi-WalkSolid:before{content:"\EF12"}.mi-Warning:before{content:"\EF13"}.mi-Webcam:before,.mi-WebcamLegacy:before{content:"\EF14"}.mi-Webcam2:before{content:"\EF15"}.mi-Website:before{content:"\EF16"}.mi-Wheel:before{content:"\EF17"}.mi-Wifi:before{content:"\EF18"}.mi-Wifi1:before{content:"\EF19"}.mi-Wifi2:before{content:"\EF1A"}.mi-Wifi3:before{content:"\EF1B"}.mi-WifiAttentionOverlay:before{content:"\EF1C"}.mi-WifiCall0:before{content:"\EF1D"}.mi-WifiCall1:before{content:"\EF1E"}.mi-WifiCall2:before{content:"\EF1F"}.mi-WifiCall3:before{content:"\EF20"}.mi-WifiCall4:before{content:"\EF21"}.mi-WifiCallBars:before{content:"\EF22"}.mi-WifiError0:before{content:"\EF23"}.mi-WifiError1:before{content:"\EF24"}.mi-WifiError2:before{content:"\EF25"}.mi-WifiError3:before{content:"\EF26"}.mi-WifiError4:before{content:"\EF27"}.mi-WifiEthernet:before{content:"\EF28"}.mi-InternetSharing:before,.mi-WifiHotspot:before{content:"\EF29"}.mi-WifiWarning0:before{content:"\EF2A"}.mi-WifiWarning1:before{content:"\EF2B"}.mi-WifiWarning2:before{content:"\EF2C"}.mi-WifiWarning3:before{content:"\EF2D"}.mi-WifiWarning4:before{content:"\EF2E"}.mi-WindDirection:before{content:"\EF2F"}.mi-WindowsInsider:before{content:"\EF30"}.mi-WiredUSB:before{content:"\EF31"}.mi-WirelessUSB:before{content:"\EF32"}.mi-Work:before{content:"\EF33"}.mi-WorkSolid:before{content:"\EF34"}.mi-World:before,.mi-WorldLegacy:before{content:"\EF35"}.mi-XboxOneConsole:before{content:"\EF36"}.mi-ZeroBars:before,.mi-ZeroBarsLegacy:before{content:"\EF37"}.mi-Zoom:before,.mi-ZoomLegacy:before{content:"\EF38"}.mi-ZoomIn:before,.mi-ZoomInLegacy:before{content:"\EF39"}.mi-ZoomMode:before{content:"\EF3A"}.mi-ZoomOut:before,.mi-ZoomOutLegacy:before{content:"\EF3B"}.mi-eSIM:before{content:"\EF3C"}.mi-eSIMBusy:before{content:"\EF3D"}.mi-eSIMLocked:before{content:"\EF3E"}.mi-eSIMNoProfile:before{content:"\EF3F"}.mi-E80B:before,.mi-uniE80B:before{content:"\EF40"}.mi-EA0D:before,.mi-uniEA0D:before{content:"\EF41"}.mi-EA3F:before,.mi-uniEA3F:before{content:"\EF42"}.mi-EA90:before,.mi-uniEA90:before{content:"\EF43"}.mi-EAC2:before,.mi-uniEAC2:before{content:"\EF44"}.mi-EC6C:before,.mi-uniEC6C:before{content:"\EF45"}.mi-EEA3:before,.mi-uniEEA3:before{content:"\EF46"}.mi-F2B7:before,.mi-uniF2B7:before{content:"\EF47"}.mi-F5AA:before,.mi-uniF5AA:before{content:"\EF48"}.mi-F614:before,.mi-uniF614:before{content:"\EF49"}.mi-F615:before,.mi-uniF615:before{content:"\EF4A"}.mi-F616:before,.mi-uniF616:before{content:"\EF4B"}.mi-F617:before,.mi-uniF617:before{content:"\EF4C"}.mi-F657:before,.mi-uniF657:before{content:"\EF4D"}.mi-F658:before,.mi-uniF658:before{content:"\EF4E"}.mi-F659:before,.mi-uniF659:before{content:"\EF4F"}.mi-F65A:before,.mi-uniF65A:before{content:"\EF50"}.mi-F65B:before,.mi-uniF65B:before{content:"\EF51"}.mi-F65C:before,.mi-uniF65C:before{content:"\EF52"}.mi-F69E:before,.mi-uniF69E:before{content:"\EF53"}.mi-F6FA:before,.mi-uniF6FA:before{content:"\EF54"}.mi-F712:before,.mi-uniF712:before{content:"\EF55"}.mi-F71C:before,.mi-uniF71C:before{content:"\EF56"}.mi-F71D:before,.mi-uniF71D:before{content:"\EF57"}.mi-F71E:before,.mi-uniF71E:before{content:"\EF58"}.mi-F738:before,.mi-uniF738:before{content:"\EF59"}.mi-F739:before,.mi-uniF739:before{content:"\EF5A"}.mi-F73D:before,.mi-uniF73D:before{content:"\EF5B"}.mi-F73E:before,.mi-uniF73E:before{content:"\EF5C"}.mi-F73F:before,.mi-uniF73F:before{content:"\EF5D"}.mi-F740:before,.mi-uniF740:before{content:"\EF5E"}.mi-F741:before,.mi-uniF741:before{content:"\EF5F"}.mi-F742:before,.mi-uniF742:before{content:"\EF60"}.mi-F743:before,.mi-uniF743:before{content:"\EF61"}.mi-F744:before,.mi-uniF744:before{content:"\EF62"}.mi-F745:before,.mi-uniF745:before{content:"\EF63"}.mi-F746:before,.mi-uniF746:before{content:"\EF64"}.mi-F785:before,.mi-uniF785:before{content:"\EF65"}.mi-500px:before{content:"\EF66"}.mi-accessible-icon:before{content:"\EF67"}.mi-accusoft:before{content:"\EF68"}.mi-acquisitions-incorporated:before{content:"\EF69"}.mi-adn:before{content:"\EF6A"}.mi-adobe:before{content:"\EF6B"}.mi-adversal:before{content:"\EF6C"}.mi-affiliatetheme:before{content:"\EF6D"}.mi-algolia:before{content:"\EF6E"}.mi-alipay:before{content:"\EF6F"}.mi-amazon-pay:before{content:"\EF70"}.mi-amazon:before{content:"\EF71"}.mi-amilia:before{content:"\EF72"}.mi-android:before{content:"\EF73"}.mi-angellist:before{content:"\EF74"}.mi-angrycreative:before{content:"\EF75"}.mi-angular:before{content:"\EF76"}.mi-app-store-ios:before{content:"\EF77"}.mi-app-store:before{content:"\EF78"}.mi-apper:before{content:"\EF79"}.mi-apple-pay:before{content:"\EF7A"}.mi-apple:before{content:"\EF7B"}.mi-artstation:before{content:"\EF7C"}.mi-asymmetrik:before{content:"\EF7D"}.mi-atlassian:before{content:"\EF7E"}.mi-audible:before{content:"\EF7F"}.mi-autoprefixer:before{content:"\EF80"}.mi-avianex:before{content:"\EF81"}.mi-aviato:before{content:"\EF82"}.mi-aws:before{content:"\EF83"}.mi-bandcamp:before{content:"\EF84"}.mi-behance-square:before{content:"\EF85"}.mi-behance:before{content:"\EF86"}.mi-bimobject:before{content:"\EF87"}.mi-bitbucket:before{content:"\EF88"}.mi-bitcoin:before{content:"\EF89"}.mi-bity:before{content:"\EF8A"}.mi-black-tie:before{content:"\EF8B"}.mi-blackberry:before{content:"\EF8C"}.mi-blogger-b:before{content:"\EF8D"}.mi-blogger:before{content:"\EF8E"}.mi-bluetooth-b:before{content:"\EF8F"}.mi-bluetooth:before{content:"\EF90"}.mi-btc:before{content:"\EF91"}.mi-buromobelexperte:before{content:"\EF92"}.mi-buysellads:before{content:"\EF93"}.mi-canadian-maple-leaf:before{content:"\EF94"}.mi-cc-amazon-pay:before{content:"\EF95"}.mi-cc-amex:before{content:"\EF96"}.mi-cc-apple-pay:before{content:"\EF97"}.mi-cc-diners-club:before{content:"\EF98"}.mi-cc-discover:before{content:"\EF99"}.mi-cc-jcb:before{content:"\EF9A"}.mi-cc-mastercard:before{content:"\EF9B"}.mi-cc-paypal:before{content:"\EF9C"}.mi-cc-stripe:before{content:"\EF9D"}.mi-cc-visa:before{content:"\EF9E"}.mi-centercode:before{content:"\EF9F"}.mi-centos:before{content:"\EFA0"}.mi-chrome:before{content:"\EFA1"}.mi-cloudscale:before{content:"\EFA2"}.mi-cloudsmith:before{content:"\EFA3"}.mi-cloudversify:before{content:"\EFA4"}.mi-codepen:before{content:"\EFA5"}.mi-codiepie:before{content:"\EFA6"}.mi-confluence:before{content:"\EFA7"}.mi-connectdevelop:before{content:"\EFA8"}.mi-contao:before{content:"\EFA9"}.mi-cpanel:before{content:"\EFAA"}.mi-creative-commons-by:before{content:"\EFAB"}.mi-creative-commons-nc-eu:before{content:"\EFAC"}.mi-creative-commons-nc-jp:before{content:"\EFAD"}.mi-creative-commons-nc:before{content:"\EFAE"}.mi-creative-commons-nd:before{content:"\EFAF"}.mi-creative-commons-pd-alt:before{content:"\EFB0"}.mi-creative-commons-pd:before{content:"\EFB1"}.mi-creative-commons-remix:before{content:"\EFB2"}.mi-creative-commons-sa:before{content:"\EFB3"}.mi-creative-commons-sampling-plus:before{content:"\EFB4"}.mi-creative-commons-sampling:before{content:"\EFB5"}.mi-creative-commons-share:before{content:"\EFB6"}.mi-creative-commons-zero:before{content:"\EFB7"}.mi-creative-commons:before{content:"\EFB8"}.mi-critical-role:before{content:"\EFB9"}.mi-css3-alt:before{content:"\EFBA"}.mi-css3:before{content:"\EFBB"}.mi-cuttlefish:before{content:"\EFBC"}.mi-d-and-d-beyond:before{content:"\EFBD"}.mi-d-and-d:before{content:"\EFBE"}.mi-dashcube:before{content:"\EFBF"}.mi-delicious:before{content:"\EFC0"}.mi-deploydog:before{content:"\EFC1"}.mi-deskpro:before{content:"\EFC2"}.mi-dev:before{content:"\EFC3"}.mi-deviantart:before{content:"\EFC4"}.mi-dhl:before{content:"\EFC5"}.mi-diaspora:before{content:"\EFC6"}.mi-digg:before{content:"\EFC7"}.mi-digital-ocean:before{content:"\EFC8"}.mi-discord:before{content:"\EFC9"}.mi-discourse:before{content:"\EFCA"}.mi-dochub:before{content:"\EFCB"}.mi-docker:before{content:"\EFCC"}.mi-draft2digital:before{content:"\EFCD"}.mi-dribbble-square:before{content:"\EFCE"}.mi-dribbble:before{content:"\EFCF"}.mi-dropbox:before{content:"\EFD0"}.mi-drupal:before{content:"\EFD1"}.mi-dyalog:before{content:"\EFD2"}.mi-earlybirds:before{content:"\EFD3"}.mi-ebay:before{content:"\EFD4"}.mi-edge:before{content:"\EFD5"}.mi-elementor:before{content:"\EFD6"}.mi-ello:before{content:"\EFD7"}.mi-ember:before{content:"\EFD8"}.mi-empire:before{content:"\EFD9"}.mi-envira:before{content:"\EFDA"}.mi-erlang:before{content:"\EFDB"}.mi-ethereum:before{content:"\EFDC"}.mi-etsy:before{content:"\EFDD"}.mi-expeditedssl:before{content:"\EFDE"}.mi-facebook-f:before{content:"\EFDF"}.mi-facebook-messenger:before{content:"\EFE0"}.mi-facebook-square:before{content:"\EFE1"}.mi-facebook:before{content:"\EFE2"}.mi-fedex:before{content:"\EFE3"}.mi-fedora:before{content:"\EFE4"}.mi-figma:before{content:"\EFE5"}.mi-firefox:before{content:"\EFE6"}.mi-first-order-alt:before{content:"\EFE7"}.mi-first-order:before{content:"\EFE8"}.mi-firstdraft:before{content:"\EFE9"}.mi-flickr:before{content:"\EFEA"}.mi-flipboard:before{content:"\EFEB"}.mi-fly:before{content:"\EFEC"}.mi-font-awesome-alt:before{content:"\EFED"}.mi-font-awesome-flag:before{content:"\EFEE"}.mi-font-awesome:before{content:"\EFEF"}.mi-fonticons-fi:before{content:"\EFF0"}.mi-fonticons:before{content:"\EFF1"}.mi-fort-awesome-alt:before{content:"\EFF2"}.mi-fort-awesome:before{content:"\EFF3"}.mi-forumbee:before{content:"\EFF4"}.mi-foursquare:before{content:"\EFF5"}.mi-free-code-camp:before{content:"\EFF6"}.mi-freebsd:before{content:"\EFF7"}.mi-fulcrum:before{content:"\EFF8"}.mi-galactic-republic:before{content:"\EFF9"}.mi-galactic-senate:before{content:"\EFFA"}.mi-get-pocket:before{content:"\EFFB"}.mi-gg-circle:before{content:"\EFFC"}.mi-gg:before{content:"\EFFD"}.mi-git-square:before{content:"\EFFE"}.mi-github-alt:before{content:"\EFFF"}.mi-github-square:before{content:"\F000"}.mi-github:before{content:"\F001"}.mi-gitkraken:before{content:"\F002"}.mi-gitlab:before{content:"\F003"}.mi-gitter:before{content:"\F004"}.mi-glide-g:before{content:"\F005"}.mi-glide:before{content:"\F006"}.mi-gofore:before{content:"\F007"}.mi-goodreads-g:before{content:"\F008"}.mi-goodreads:before{content:"\F009"}.mi-google-drive:before{content:"\F00A"}.mi-google-play:before{content:"\F00B"}.mi-google-plus-g:before{content:"\F00C"}.mi-google-plus-square:before{content:"\F00D"}.mi-google-plus:before{content:"\F00E"}.mi-google-wallet:before{content:"\F00F"}.mi-google:before{content:"\F010"}.mi-gratipay:before{content:"\F011"}.mi-grav:before{content:"\F012"}.mi-gripfire:before{content:"\F013"}.mi-grunt:before{content:"\F014"}.mi-gulp:before{content:"\F015"}.mi-hacker-news-square:before{content:"\F016"}.mi-hacker-news:before{content:"\F017"}.mi-hackerrank:before{content:"\F018"}.mi-hire-a-helper:before{content:"\F019"}.mi-hooli:before{content:"\F01A"}.mi-hornbill:before{content:"\F01B"}.mi-hotjar:before{content:"\F01C"}.mi-houzz:before{content:"\F01D"}.mi-html5:before{content:"\F01E"}.mi-hubspot:before{content:"\F01F"}.mi-imdb:before{content:"\F020"}.mi-instagram:before{content:"\F021"}.mi-intercom:before{content:"\F022"}.mi-internet-explorer:before{content:"\F023"}.mi-invision:before{content:"\F024"}.mi-ioxhost:before{content:"\F025"}.mi-itunes-note:before{content:"\F026"}.mi-itunes:before{content:"\F027"}.mi-java:before{content:"\F028"}.mi-jedi-order:before{content:"\F029"}.mi-jenkins:before{content:"\F02A"}.mi-jira:before{content:"\F02B"}.mi-joget:before{content:"\F02C"}.mi-joomla:before{content:"\F02D"}.mi-js-square:before{content:"\F02E"}.mi-js:before{content:"\F02F"}.mi-jsfiddle:before{content:"\F030"}.mi-kaggle:before{content:"\F031"}.mi-keybase:before{content:"\F032"}.mi-keycdn:before{content:"\F033"}.mi-kickstarter-k:before{content:"\F034"}.mi-kickstarter:before{content:"\F035"}.mi-korvue:before{content:"\F036"}.mi-laravel:before{content:"\F037"}.mi-lastfm-square:before{content:"\F038"}.mi-lastfm:before{content:"\F039"}.mi-leanpub:before{content:"\F03A"}.mi-less:before{content:"\F03B"}.mi-line:before{content:"\F03C"}.mi-linkedin-in:before{content:"\F03D"}.mi-linkedin:before{content:"\F03E"}.mi-linode:before{content:"\F03F"}.mi-linux:before{content:"\F040"}.mi-lyft:before{content:"\F041"}.mi-magento:before{content:"\F042"}.mi-mailchimp:before{content:"\F043"}.mi-mandalorian:before{content:"\F044"}.mi-markdown:before{content:"\F045"}.mi-mastodon:before{content:"\F046"}.mi-maxcdn:before{content:"\F047"}.mi-medapps:before{content:"\F048"}.mi-medium-m:before{content:"\F049"}.mi-medium:before{content:"\F04A"}.mi-medrt:before{content:"\F04B"}.mi-meetup:before{content:"\F04C"}.mi-megaport:before{content:"\F04D"}.mi-mendeley:before{content:"\F04E"}.mi-microsoft:before{content:"\F04F"}.mi-mix:before{content:"\F050"}.mi-mixcloud:before{content:"\F051"}.mi-mizuni:before{content:"\F052"}.mi-modx:before{content:"\F053"}.mi-monero:before{content:"\F054"}.mi-napster:before{content:"\F055"}.mi-neos:before{content:"\F056"}.mi-nimblr:before{content:"\F057"}.mi-nintendo-switch:before{content:"\F058"}.mi-node-js:before{content:"\F059"}.mi-node:before{content:"\F05A"}.mi-npm:before{content:"\F05B"}.mi-ns8:before{content:"\F05C"}.mi-nutritionix:before{content:"\F05D"}.mi-odnoklassniki-square:before{content:"\F05E"}.mi-odnoklassniki:before{content:"\F05F"}.mi-old-republic:before{content:"\F060"}.mi-opencart:before{content:"\F061"}.mi-openid:before{content:"\F062"}.mi-opera:before{content:"\F063"}.mi-optin-monster:before{content:"\F064"}.mi-osi:before{content:"\F065"}.mi-page4:before{content:"\F066"}.mi-pagelines:before{content:"\F067"}.mi-palfed:before{content:"\F068"}.mi-patreon:before{content:"\F069"}.mi-paypal:before{content:"\F06A"}.mi-penny-arcade:before{content:"\F06B"}.mi-periscope:before{content:"\F06C"}.mi-phabricator:before{content:"\F06D"}.mi-phoenix-framework:before{content:"\F06E"}.mi-phoenix-squadron:before{content:"\F06F"}.mi-php:before{content:"\F070"}.mi-pied-piper-alt:before{content:"\F071"}.mi-pied-piper-hat:before{content:"\F072"}.mi-pied-piper-pp:before{content:"\F073"}.mi-pied-piper:before{content:"\F074"}.mi-pinterest-p:before{content:"\F075"}.mi-pinterest-square:before{content:"\F076"}.mi-pinterest:before{content:"\F077"}.mi-playstation:before{content:"\F078"}.mi-product-hunt:before{content:"\F079"}.mi-pushed:before{content:"\F07A"}.mi-python:before{content:"\F07B"}.mi-qq:before{content:"\F07C"}.mi-quinscape:before{content:"\F07D"}.mi-quora:before{content:"\F07E"}.mi-r-project:before{content:"\F07F"}.mi-raspberry-pi:before{content:"\F080"}.mi-ravelry:before{content:"\F081"}.mi-react:before{content:"\F082"}.mi-reacteurope:before{content:"\F083"}.mi-readme:before{content:"\F084"}.mi-rebel:before{content:"\F085"}.mi-red-river:before{content:"\F086"}.mi-reddit-alien:before{content:"\F087"}.mi-reddit-square:before{content:"\F088"}.mi-reddit:before{content:"\F089"}.mi-redhat:before{content:"\F08A"}.mi-renren:before{content:"\F08B"}.mi-replyd:before{content:"\F08C"}.mi-researchgate:before{content:"\F08D"}.mi-resolving:before{content:"\F08E"}.mi-rev:before{content:"\F08F"}.mi-rocketchat:before{content:"\F090"}.mi-rockrms:before{content:"\F091"}.mi-safari:before{content:"\F092"}.mi-sass:before{content:"\F093"}.mi-schlix:before{content:"\F094"}.mi-scribd:before{content:"\F095"}.mi-searchengin:before{content:"\F096"}.mi-sellcast:before{content:"\F097"}.mi-sellsy:before{content:"\F098"}.mi-servicestack:before{content:"\F099"}.mi-shirtsinbulk:before{content:"\F09A"}.mi-shopware:before{content:"\F09B"}.mi-simplybuilt:before{content:"\F09C"}.mi-sistrix:before{content:"\F09D"}.mi-sith:before{content:"\F09E"}.mi-sketch:before{content:"\F09F"}.mi-skyatlas:before{content:"\F0A0"}.mi-skype:before{content:"\F0A1"}.mi-slack-hash:before{content:"\F0A2"}.mi-slack:before{content:"\F0A3"}.mi-slideshare:before{content:"\F0A4"}.mi-snapchat-ghost:before{content:"\F0A5"}.mi-snapchat-square:before{content:"\F0A6"}.mi-snapchat:before{content:"\F0A7"}.mi-soundcloud:before{content:"\F0A8"}.mi-sourcetree:before{content:"\F0A9"}.mi-speakap:before{content:"\F0AA"}.mi-spotify:before{content:"\F0AB"}.mi-squarespace:before{content:"\F0AC"}.mi-stack-exchange:before{content:"\F0AD"}.mi-stack-overflow:before{content:"\F0AE"}.mi-staylinked:before{content:"\F0AF"}.mi-steam-square:before{content:"\F0B0"}.mi-steam:before{content:"\F0B1"}.mi-sticker-mule:before{content:"\F0B2"}.mi-strava:before{content:"\F0B3"}.mi-stripe-s:before{content:"\F0B4"}.mi-stripe:before{content:"\F0B5"}.mi-studiovinari:before{content:"\F0B6"}.mi-stumbleupon-circle:before{content:"\F0B7"}.mi-stumbleupon:before{content:"\F0B8"}.mi-superpowers:before{content:"\F0B9"}.mi-supple:before{content:"\F0BA"}.mi-suse:before{content:"\F0BB"}.mi-teamspeak:before{content:"\F0BC"}.mi-telegram-plane:before{content:"\F0BD"}.mi-telegram:before{content:"\F0BE"}.mi-tencent-weibo:before{content:"\F0BF"}.mi-the-red-yeti:before{content:"\F0C0"}.mi-themeco:before{content:"\F0C1"}.mi-themeisle:before{content:"\F0C2"}.mi-think-peaks:before{content:"\F0C3"}.mi-trade-federation:before{content:"\F0C4"}.mi-trello:before{content:"\F0C5"}.mi-tripadvisor:before{content:"\F0C6"}.mi-tumblr-square:before{content:"\F0C7"}.mi-tumblr:before{content:"\F0C8"}.mi-twitch:before{content:"\F0C9"}.mi-twitter-square:before{content:"\F0CA"}.mi-typo3:before{content:"\F0CB"}.mi-ubuntu:before{content:"\F0CC"}.mi-uikit:before{content:"\F0CD"}.mi-uniregistry:before{content:"\F0CE"}.mi-untappd:before{content:"\F0CF"}.mi-ups:before{content:"\F0D0"}.mi-usb:before{content:"\F0D1"}.mi-usps:before{content:"\F0D2"}.mi-ussunnah:before{content:"\F0D3"}.mi-vaadin:before{content:"\F0D4"}.mi-viacoin:before{content:"\F0D5"}.mi-viadeo-square:before{content:"\F0D6"}.mi-viadeo:before{content:"\F0D7"}.mi-viber:before{content:"\F0D8"}.mi-vimeo-square:before{content:"\F0D9"}.mi-vimeo-v:before{content:"\F0DA"}.mi-vimeo:before{content:"\F0DB"}.mi-vine:before{content:"\F0DC"}.mi-vk:before{content:"\F0DD"}.mi-vnv:before{content:"\F0DE"}.mi-vuejs:before{content:"\F0DF"}.mi-weebly:before{content:"\F0E0"}.mi-weibo:before{content:"\F0E1"}.mi-weixin:before{content:"\F0E2"}.mi-whatsapp-square:before{content:"\F0E3"}.mi-whatsapp:before{content:"\F0E4"}.mi-whmcs:before{content:"\F0E5"}.mi-wikipedia-w:before{content:"\F0E6"}.mi-windows:before{content:"\F0E7"}.mi-wix:before{content:"\F0E8"}.mi-wizards-of-the-coast:before{content:"\F0E9"}.mi-wolf-pack-battalion:before{content:"\F0EA"}.mi-wordpress-simple:before{content:"\F0EB"}.mi-wordpress:before{content:"\F0EC"}.mi-wpbeginner:before{content:"\F0ED"}.mi-wpexplorer:before{content:"\F0EE"}.mi-wpforms:before{content:"\F0EF"}.mi-wpressr:before{content:"\F0F0"}.mi-xbox:before{content:"\F0F1"}.mi-xing-square:before{content:"\F0F2"}.mi-xing:before{content:"\F0F3"}.mi-y-combinator:before{content:"\F0F4"}.mi-yahoo:before{content:"\F0F5"}.mi-yandex-international:before{content:"\F0F6"}.mi-yandex:before{content:"\F0F7"}.mi-yarn:before{content:"\F0F8"}.mi-yelp:before{content:"\F0F9"}.mi-yoast:before{content:"\F0FA"}.mi-youtube-square:before{content:"\F0FB"}.mi-youtube:before{content:"\F0FC"}.mi-zhihu:before{content:"\F0FD"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto} \ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/js/app-client.min.js b/src/Mix.Cms.Web/wwwroot/mix-app/js/app-client.min.js index 1402a6777..c386df743 100644 --- a/src/Mix.Cms.Web/wwwroot/mix-app/js/app-client.min.js +++ b/src/Mix.Cms.Web/wwwroot/mix-app/js/app-client.min.js @@ -44,7 +44,7 @@ var cart = angular.module("cart", []); "localStorageService", "TranslatorService", "SharedModuleDataService", - "RestAttributeSetDataClientService", + "RestMixDatabaseDataClientService", function ( $rootScope, $scope, @@ -173,7 +173,7 @@ var cart = angular.module("cart", []); }, 500); }; - $scope.initAttributeSetForm = async function (formName) { + $scope.initMixDatabaseForm = async function (formName) { return await attrDataService.initData(formName).data; }; @@ -222,7 +222,7 @@ var cart = angular.module("cart", []); method: "share", href: url, }, - function (response) { } + function (response) {} ); }; $scope.shareTwitter = function (url, content) { @@ -464,6 +464,24 @@ modules.component('fbSend', { appId: '=' } }); + +modules.component('fbShare', { + templateUrl: '/mix-app/views/app-client/components/fb-share/fb-share.html', + controller: ['$location', function ($location) { + var ctrl = this; + ctrl.href = ctrl.href || window.top.location.href; + ctrl.share = function () { + var href = window.top.location.href; + FB.ui({ + method: 'share', + href: href, + }, function (response) { }); + }; + }], + bindings: { + href: '=' + } +}); modules.component('googlePay', { templateUrl: '/mix-app/views/app-client/components/google-pay/view.html', controller: [ @@ -596,464 +614,471 @@ modules.component('googlePay', { totalPrice: '=' } }); - -modules.component('fbShare', { - templateUrl: '/mix-app/views/app-client/components/fb-share/fb-share.html', - controller: ['$location', function ($location) { - var ctrl = this; - ctrl.href = ctrl.href || window.top.location.href; - ctrl.share = function () { - var href = window.top.location.href; - FB.ui({ - method: 'share', - href: href, - }, function (response) { }); - }; - }], - bindings: { - href: '=' - } -}); -modules.component('mixMessagesHubClient', { - templateUrl: '/mix-app/views/app-client/components/mix-messages-hub-client/view.html', - bindings: { - attrSetName: '=', - isSave: '=?' - }, - controller: ['$rootScope', '$scope', 'RestAttributeFieldPortalService', 'RestAttributeSetDataClientService', - function ($rootScope, $scope, fieldService, service) { - var ctrl = this; - BaseHub.call(this, ctrl); - ctrl.settings = $rootScope.globalSettings; - ctrl.user = { - loggedIn: false, - connection: {} - }; - ctrl.attrData = null; - ctrl.isHide = true; - ctrl.hideContact = true; - ctrl.fields = []; - ctrl.members = []; - ctrl.errors = []; - ctrl.messages = { - items: [] - }; - ctrl.message = { connection: {}, content: '' }; - ctrl.request = { - uid: '', - specificulture: '', - action: '', - objectType: null, - data: {}, - room: '', - isMyself: true, - isSave: false - }; - ctrl.init = function () { - ctrl.attrSetId = ctrl.attrSetId || 0; - ctrl.request.specificulture = service.lang; - ctrl.request.room = ctrl.attrSetName; - ctrl.request.isSave = ctrl.isSave || false; - ctrl.startConnection('serviceHub', ctrl.checkLoginStatus); - }; - ctrl.loadData = async function () { - - /* +modules.component("mixMessagesHubClient", { + templateUrl: + "/mix-app/views/app-client/components/mix-messages-hub-client/view.html", + bindings: { + attrSetName: "=", + isSave: "=?", + }, + controller: [ + "$rootScope", + "$scope", + "RestMixDatabaseColumnPortalService", + "RestMixDatabaseDataClientService", + function ($rootScope, $scope, fieldService, service) { + var ctrl = this; + BaseHub.call(this, ctrl); + ctrl.settings = $rootScope.globalSettings; + ctrl.user = { + loggedIn: false, + connection: {}, + }; + ctrl.attrData = null; + ctrl.isHide = true; + ctrl.hideContact = true; + ctrl.fields = []; + ctrl.members = []; + ctrl.errors = []; + ctrl.messages = { + items: [], + }; + ctrl.message = { connection: {}, content: "" }; + ctrl.request = { + uid: "", + specificulture: "", + action: "", + objectType: null, + data: {}, + room: "", + isMyself: true, + isSave: false, + }; + ctrl.init = function () { + ctrl.attrSetId = ctrl.attrSetId || 0; + ctrl.request.specificulture = service.lang; + ctrl.request.room = ctrl.attrSetName; + ctrl.request.isSave = ctrl.isSave || false; + ctrl.startConnection("serviceHub", ctrl.checkLoginStatus); + }; + ctrl.loadData = async function () { + /* If input is data id => load ctrl.attrData from service and handle it independently Else modify input ctrl.attrData */ - $rootScope.isBusy = true; - var getDefault = await service.initData(ctrl.attrSetName); - if (getDefault.isSucceed) { - ctrl.defaultData = getDefault.data; - ctrl.defaultData.data.user_name = ctrl.user.connection.name; - ctrl.defaultData.data.user_id = ctrl.user.connection.id; - ctrl.defaultData.data.user_avatar = ctrl.user.connection.avatar; - ctrl.defaultData.data.data_type = 9; - ctrl.defaultData.field = { - dataType: 9, - title: 'Message', - name: 'message' - }; - ctrl.attrData = angular.copy(ctrl.defaultData); - $rootScope.isBusy = false; - } - var getFields = await fieldService.initData(ctrl.attrSetName); - if (getFields.isSucceed) { - ctrl.fields = getFields.data; - ctrl.msgField = $rootScope.findObjectByKey(ctrl.fields, 'name', 'message'); - } - }; - ctrl.submit = async function () { - if (ctrl.validate()) { - ctrl.request.action = "send_group_message"; - ctrl.request.uid = ctrl.user.connection.id; - ctrl.request.data = ctrl.attrData.data; - ctrl.request.connection = ctrl.user.connection; - ctrl.connection.invoke('HandleRequest', JSON.stringify(ctrl.request)); - ctrl.attrData = angular.copy(ctrl.defaultData); - } - }; - ctrl.validate = function () { - var isValid = true; - ctrl.errors = []; - angular.forEach(ctrl.fields, function (field) { - if (field.regex) { - var regex = RegExp(field.regex, 'g'); - isValid = regex.test(ctrl.attrData.data[field.name]); - if (!isValid) { - if (field.name == 'message') { - ctrl.errors.push('Please don\'t use bad words in your message'); - } - else { - ctrl.errors.push(`${field.name} is not match Regex`); - } - } - } - if (isValid && field.isEncrypt) { - ctrl.attrData.data[field.name] = $rootScope.encrypt(ctrl.attrData.data[field.name]); - } - - }); - return isValid; - }; - ctrl.receiveMessage = function (msg) { - switch (msg.responseKey) { - case 'NewMember': - ctrl.newMember(msg.data); - // $('.widget-conversation').scrollTop = $('.widget-conversation')[0].scrollHeight; - break; - case 'NewMessage': - ctrl.newMessage(msg.data); - break; - case 'ConnectSuccess': - ctrl.user.loggedIn = true; - ctrl.initListMember(msg.data); - $scope.$apply(); - break; - case 'PreviousMessages': - msg.data.items.forEach(element => { - element.msgField = angular.copy(ctrl.msgField); - element.msgField.dataType = element.data.data_type; - }); - ctrl.messages = msg.data; - $scope.$apply(); - break; - case 'MemberOffline': - ctrl.removeMember(msg.data); - break; - case 'Error': - console.error(msg.data); - break; - - } - - }; - ctrl.newMessage = function (msg) { - msg.msgField = angular.copy(ctrl.msgField); - ctrl.messages.items.push(msg); - $scope.$apply(); - }; - ctrl.newMember = function (member) { - var m = $rootScope.findObjectByKey(ctrl.members, 'id', member.id); - if (!m) { - ctrl.members.push(member); - } - $scope.$apply(); - }; - ctrl.join = async function () { - ctrl.request.action = "join_group"; - ctrl.request.uid = ctrl.user.connection.id; - ctrl.request.data = ctrl.user.connection; - ctrl.message.connection = ctrl.user.connection; - ctrl.connection.invoke('HandleRequest', JSON.stringify(ctrl.request)); - await ctrl.loadData(); - $scope.$apply(); - }; - ctrl.initListMember = function (data) { - data.forEach(member => { - var index = ctrl.members.findIndex(x => x.id === member.id); - if (index < 0) { - ctrl.members.splice(0, 0, member); - } - }); + $rootScope.isBusy = true; + var getDefault = await service.initData(ctrl.attrSetName); + if (getDefault.isSucceed) { + ctrl.defaultData = getDefault.data; + ctrl.defaultData.data.user_name = ctrl.user.connection.name; + ctrl.defaultData.data.user_id = ctrl.user.connection.id; + ctrl.defaultData.data.user_avatar = ctrl.user.connection.avatar; + ctrl.defaultData.data.data_type = 9; + ctrl.defaultData.field = { + dataType: 9, + title: "Message", + name: "message", + }; + ctrl.attrData = angular.copy(ctrl.defaultData); + $rootScope.isBusy = false; + } + var getFields = await fieldService.initData(ctrl.attrSetName); + if (getFields.isSucceed) { + ctrl.fields = getFields.data; + ctrl.msgField = $rootScope.findObjectByKey( + ctrl.fields, + "name", + "message" + ); + } + }; + ctrl.submit = async function () { + if (ctrl.validate()) { + ctrl.request.action = "send_group_message"; + ctrl.request.uid = ctrl.user.connection.id; + ctrl.request.data = ctrl.attrData.data; + ctrl.request.connection = ctrl.user.connection; + ctrl.connection.invoke("HandleRequest", JSON.stringify(ctrl.request)); + ctrl.attrData = angular.copy(ctrl.defaultData); + } + }; + ctrl.validate = function () { + var isValid = true; + ctrl.errors = []; + angular.forEach(ctrl.fields, function (field) { + if (field.regex) { + var regex = RegExp(field.regex, "g"); + isValid = regex.test(ctrl.attrData.data[field.name]); + if (!isValid) { + if (field.name == "message") { + ctrl.errors.push("Please don't use bad words in your message"); + } else { + ctrl.errors.push(`${field.name} is not match Regex`); + } + } + } + if (isValid && field.isEncrypt) { + ctrl.attrData.data[field.name] = $rootScope.encrypt( + ctrl.attrData.data[field.name] + ); + } + }); + return isValid; + }; + ctrl.receiveMessage = function (msg) { + switch (msg.responseKey) { + case "NewMember": + ctrl.newMember(msg.data); + // $('.widget-conversation').scrollTop = $('.widget-conversation')[0].scrollHeight; + break; + case "NewMessage": + ctrl.newMessage(msg.data); + break; + case "ConnectSuccess": + ctrl.user.loggedIn = true; + ctrl.initListMember(msg.data); + $scope.$apply(); + break; + case "PreviousMessages": + msg.data.items.forEach((element) => { + element.msgField = angular.copy(ctrl.msgField); + element.msgField.dataType = element.data.data_type; + }); + ctrl.messages = msg.data; + $scope.$apply(); + break; + case "MemberOffline": + ctrl.removeMember(msg.data); + break; + case "Error": + console.error(msg.data); + break; + } + }; + ctrl.newMessage = function (msg) { + msg.msgField = angular.copy(ctrl.msgField); + ctrl.messages.items.push(msg); + $scope.$apply(); + }; + ctrl.newMember = function (member) { + var m = $rootScope.findObjectByKey(ctrl.members, "id", member.id); + if (!m) { + ctrl.members.push(member); + } + $scope.$apply(); + }; + ctrl.join = async function () { + ctrl.request.action = "join_group"; + ctrl.request.uid = ctrl.user.connection.id; + ctrl.request.data = ctrl.user.connection; + ctrl.message.connection = ctrl.user.connection; + ctrl.connection.invoke("HandleRequest", JSON.stringify(ctrl.request)); + await ctrl.loadData(); + $scope.$apply(); + }; + ctrl.initListMember = function (data) { + data.forEach((member) => { + var index = ctrl.members.findIndex((x) => x.id === member.id); + if (index < 0) { + ctrl.members.splice(0, 0, member); + } + }); - $scope.$apply(); - }; - ctrl.updateDataType = function () { - ctrl.attrData.data.data_type = ctrl.msgField.dataType; - }; - ctrl.checkLoginStatus = function () { - FB.getLoginStatus(function (response) { - if (response.status === 'connected') { - // The user is logged in and has authenticated your - // app, and response.authResponse supplies - // the user's ID, a valid access token, a signed - // request, and the time the access token - // and signed request each expire. - FB.api('/me', function (response) { - ctrl.user.connection.name = response.name; - ctrl.user.connection.id = response.id; - ctrl.user.connection.connectionId = ctrl.connection.connectionId; - ctrl.user.connection.avatar = '//graph.facebook.com/' + response.id + '/picture?width=32&height=32'; - ctrl.user.loggedIn = true; - ctrl.join(); - }); - } else if (response.status === 'authorization_expired') { - // The user has signed into your application with - // Facebook Login but must go through the login flow - // again to renew data authorization. You might remind - // the user they've used Facebook, or hide other options - // to avoid duplicate account creation, but you should - // collect a user gesture (e.g. click/touch) to launch the - // login dialog so popup blocking is not triggered. - } else if (response.status === 'not_authorized') { - // The user hasn't authorized your application. They - // must click the Login button, or you must call FB.login - // in response to a user gesture, to launch a login dialog. - } else { - // The user isn't logged in to Facebook. You can launch a - // login dialog with a user gesture, but the user may have - // to log in to Facebook before authorizing your application. - } - }); - }; - ctrl.logout = function () { - FB.logout(function (response) { - // user is now logged out - ctrl.user.loggedIn = false; - }); - }; - ctrl.login = function () { - FB.login(function (response) { - if (response.authResponse) { - FB.api('/me', function (response) { - ctrl.user.connection.name = response.name; - ctrl.user.connection.id = response.id; - ctrl.user.connection.connectionId = ctrl.connection.connectionId; - ctrl.user.connection.avatar = '//graph.facebook.com/' + response.id + '/picture?width=32&height=32'; - ctrl.user.loggedIn = true; - ctrl.join(); - $scope.$apply(); - }); - } else { - console.log('User cancelled login or did not fully authorize.'); - } - }); - }; - }] -}); -modules.component('serviceHubClient', { - templateUrl: '/mix-app/views/app-client/components/service-hub-client/view.html', - bindings: { - attrSetName: '=', - isSave: '=?' + $scope.$apply(); + }; + ctrl.updateDataType = function () { + ctrl.attrData.data.data_type = ctrl.msgField.dataType; + }; + ctrl.checkLoginStatus = function () { + FB.getLoginStatus(function (response) { + if (response.status === "connected") { + // The user is logged in and has authenticated your + // app, and response.authResponse supplies + // the user's ID, a valid access token, a signed + // request, and the time the access token + // and signed request each expire. + FB.api("/me", function (response) { + ctrl.user.connection.name = response.name; + ctrl.user.connection.id = response.id; + ctrl.user.connection.connectionId = ctrl.connection.connectionId; + ctrl.user.connection.avatar = + "//graph.facebook.com/" + + response.id + + "/picture?width=32&height=32"; + ctrl.user.loggedIn = true; + ctrl.join(); + }); + } else if (response.status === "authorization_expired") { + // The user has signed into your application with + // Facebook Login but must go through the login flow + // again to renew data authorization. You might remind + // the user they've used Facebook, or hide other options + // to avoid duplicate account creation, but you should + // collect a user gesture (e.g. click/touch) to launch the + // login dialog so popup blocking is not triggered. + } else if (response.status === "not_authorized") { + // The user hasn't authorized your application. They + // must click the Login button, or you must call FB.login + // in response to a user gesture, to launch a login dialog. + } else { + // The user isn't logged in to Facebook. You can launch a + // login dialog with a user gesture, but the user may have + // to log in to Facebook before authorizing your application. + } + }); + }; + ctrl.logout = function () { + FB.logout(function (response) { + // user is now logged out + ctrl.user.loggedIn = false; + }); + }; + ctrl.login = function () { + FB.login(function (response) { + if (response.authResponse) { + FB.api("/me", function (response) { + ctrl.user.connection.name = response.name; + ctrl.user.connection.id = response.id; + ctrl.user.connection.connectionId = ctrl.connection.connectionId; + ctrl.user.connection.avatar = + "//graph.facebook.com/" + + response.id + + "/picture?width=32&height=32"; + ctrl.user.loggedIn = true; + ctrl.join(); + $scope.$apply(); + }); + } else { + console.log("User cancelled login or did not fully authorize."); + } + }); + }; }, - controller: ['$rootScope', '$scope', 'RestAttributeFieldPortalService', 'RestAttributeSetDataClientService', - function ($rootScope, $scope, fieldService, service) { - var ctrl = this; - BaseHub.call(this, ctrl); - ctrl.settings = $rootScope.globalSettings; - ctrl.user = { - loggedIn: false, - connection: {} - }; - ctrl.attrData = null; - ctrl.isHide = true; - ctrl.hideContact = true; - ctrl.fields = []; - ctrl.members = []; - ctrl.errors = []; - ctrl.messages = { - items: [] - }; - ctrl.message = { connection: {}, content: '' }; - ctrl.request = { - uid: '', - specificulture: '', - action: '', - objectType: null, - data: {}, - room: '', - isMyself: true, - isSave: false - }; - ctrl.init = function () { - ctrl.attrSetId = ctrl.attrSetId || 0; - ctrl.request.specificulture = service.lang; - ctrl.request.room = ctrl.attrSetName; - ctrl.request.isSave = ctrl.isSave == 'true' || false; - ctrl.startConnection('serviceHub', ctrl.checkLoginStatus); - }; - ctrl.loadData = async function () { + ], +}); - /* +modules.component("serviceHubClient", { + templateUrl: + "/mix-app/views/app-client/components/service-hub-client/view.html", + bindings: { + attrSetName: "=", + isSave: "=?", + }, + controller: [ + "$rootScope", + "$scope", + "RestMixDatabaseColumnPortalService", + "RestMixDatabaseDataClientService", + function ($rootScope, $scope, fieldService, service) { + var ctrl = this; + BaseHub.call(this, ctrl); + ctrl.settings = $rootScope.globalSettings; + ctrl.user = { + loggedIn: false, + connection: {}, + }; + ctrl.attrData = null; + ctrl.isHide = true; + ctrl.hideContact = true; + ctrl.fields = []; + ctrl.members = []; + ctrl.errors = []; + ctrl.messages = { + items: [], + }; + ctrl.message = { connection: {}, content: "" }; + ctrl.request = { + uid: "", + specificulture: "", + action: "", + objectType: null, + data: {}, + room: "", + isMyself: true, + isSave: false, + }; + ctrl.init = function () { + ctrl.attrSetId = ctrl.attrSetId || 0; + ctrl.request.specificulture = service.lang; + ctrl.request.room = ctrl.attrSetName; + ctrl.request.isSave = ctrl.isSave == "true" || false; + ctrl.startConnection("serviceHub", ctrl.checkLoginStatus); + }; + ctrl.loadData = async function () { + /* If input is data id => load ctrl.attrData from service and handle it independently Else modify input ctrl.attrData */ - $rootScope.isBusy = true; - var getDefault = await service.initData(ctrl.attrSetName); - if (getDefault.isSucceed) { - ctrl.defaultData = getDefault.data; - ctrl.defaultData.data.user_name = ctrl.user.connection.name; - ctrl.defaultData.data.user_id = ctrl.user.connection.id; - ctrl.defaultData.data.user_avatar = ctrl.user.connection.avatar; - ctrl.defaultData.data.data_type = 9; - ctrl.attrData = angular.copy(ctrl.defaultData); - $rootScope.isBusy = false; - } - var getFields = await fieldService.initData(ctrl.attrSetName); - if (getFields.isSucceed) { - ctrl.fields = getFields.data; - } - }; - ctrl.submit = async function () { - if (ctrl.validate()) { - ctrl.request.action = "send_group_message"; - ctrl.request.uid = ctrl.user.connection.id; - ctrl.request.data = ctrl.attrData.data; - ctrl.request.connection = ctrl.user.connection; - ctrl.connection.invoke('HandleRequest', JSON.stringify(ctrl.request)); - ctrl.attrData = angular.copy(ctrl.defaultData); - } - }; - ctrl.validate = function () { - var isValid = true; - ctrl.errors = []; - angular.forEach(ctrl.fields, function (field) { - if (field.regex) { - var regex = RegExp(field.regex, 'g'); - isValid = regex.test(ctrl.attrData.data[field.name]); - if (!isValid) { - ctrl.errors.push(`${field.name} is not match Regex`); - } - } - if (isValid && field.isEncrypt) { - ctrl.attrData.data[field.name] = $rootScope.encrypt(ctrl.attrData.data[field.name]); - } - - }); - return isValid; - }; - ctrl.receiveMessage = function (msg) { - switch (msg.responseKey) { - case 'NewMember': - ctrl.newMember(msg.data); - // $('.widget-conversation').scrollTop = $('.widget-conversation')[0].scrollHeight; - break; - case 'NewMessage': - ctrl.newMessage(msg.data); - break; - case 'ConnectSuccess': - ctrl.user.loggedIn = true; - ctrl.initListMember(msg.data); - $scope.$apply(); - break; - case 'PreviousMessages': - ctrl.messages = msg.data; - $scope.$apply(); - break; - case 'MemberOffline': - ctrl.removeMember(msg.data); - break; - case 'Error': - console.error(msg.data); - break; - - } - - }; - ctrl.newMessage = function (msg) { - ctrl.messages.items.push(msg); - $scope.$apply(); - }; - ctrl.newMember = function (member) { - var m = $rootScope.findObjectByKey(ctrl.members, 'id', member.id); - if (!m) { - ctrl.members.push(member); - } - $scope.$apply(); - }; - ctrl.join = async function () { - ctrl.request.action = "join_group"; - ctrl.request.uid = ctrl.user.connection.id; - ctrl.request.data = ctrl.user.connection; - ctrl.message.connection = ctrl.user.connection; - ctrl.connection.invoke('HandleRequest', JSON.stringify(ctrl.request)); - await ctrl.loadData(); - $scope.$apply(); - }; - ctrl.initListMember = function (data) { - data.forEach(member => { - var index = ctrl.members.findIndex(x => x.id === member.id); - if (index < 0) { - ctrl.members.splice(0, 0, member); - } - }); + $rootScope.isBusy = true; + var getDefault = await service.initData(ctrl.attrSetName); + if (getDefault.isSucceed) { + ctrl.defaultData = getDefault.data; + ctrl.defaultData.data.user_name = ctrl.user.connection.name; + ctrl.defaultData.data.user_id = ctrl.user.connection.id; + ctrl.defaultData.data.user_avatar = ctrl.user.connection.avatar; + ctrl.defaultData.data.data_type = 9; + ctrl.attrData = angular.copy(ctrl.defaultData); + $rootScope.isBusy = false; + } + var getFields = await fieldService.initData(ctrl.attrSetName); + if (getFields.isSucceed) { + ctrl.fields = getFields.data; + } + }; + ctrl.submit = async function () { + if (ctrl.validate()) { + ctrl.request.action = "send_group_message"; + ctrl.request.uid = ctrl.user.connection.id; + ctrl.request.data = ctrl.attrData.data; + ctrl.request.connection = ctrl.user.connection; + ctrl.connection.invoke("HandleRequest", JSON.stringify(ctrl.request)); + ctrl.attrData = angular.copy(ctrl.defaultData); + } + }; + ctrl.validate = function () { + var isValid = true; + ctrl.errors = []; + angular.forEach(ctrl.fields, function (field) { + if (field.regex) { + var regex = RegExp(field.regex, "g"); + isValid = regex.test(ctrl.attrData.data[field.name]); + if (!isValid) { + ctrl.errors.push(`${field.name} is not match Regex`); + } + } + if (isValid && field.isEncrypt) { + ctrl.attrData.data[field.name] = $rootScope.encrypt( + ctrl.attrData.data[field.name] + ); + } + }); + return isValid; + }; + ctrl.receiveMessage = function (msg) { + switch (msg.responseKey) { + case "NewMember": + ctrl.newMember(msg.data); + // $('.widget-conversation').scrollTop = $('.widget-conversation')[0].scrollHeight; + break; + case "NewMessage": + ctrl.newMessage(msg.data); + break; + case "ConnectSuccess": + ctrl.user.loggedIn = true; + ctrl.initListMember(msg.data); + $scope.$apply(); + break; + case "PreviousMessages": + ctrl.messages = msg.data; + $scope.$apply(); + break; + case "MemberOffline": + ctrl.removeMember(msg.data); + break; + case "Error": + console.error(msg.data); + break; + } + }; + ctrl.newMessage = function (msg) { + ctrl.messages.items.push(msg); + $scope.$apply(); + }; + ctrl.newMember = function (member) { + var m = $rootScope.findObjectByKey(ctrl.members, "id", member.id); + if (!m) { + ctrl.members.push(member); + } + $scope.$apply(); + }; + ctrl.join = async function () { + ctrl.request.action = "join_group"; + ctrl.request.uid = ctrl.user.connection.id; + ctrl.request.data = ctrl.user.connection; + ctrl.message.connection = ctrl.user.connection; + ctrl.connection.invoke("HandleRequest", JSON.stringify(ctrl.request)); + await ctrl.loadData(); + $scope.$apply(); + }; + ctrl.initListMember = function (data) { + data.forEach((member) => { + var index = ctrl.members.findIndex((x) => x.id === member.id); + if (index < 0) { + ctrl.members.splice(0, 0, member); + } + }); - $scope.$apply(); - }; + $scope.$apply(); + }; - ctrl.checkLoginStatus = function () { - FB.getLoginStatus(function (response) { - if (response.status === 'connected') { - // The user is logged in and has authenticated your - // app, and response.authResponse supplies - // the user's ID, a valid access token, a signed - // request, and the time the access token - // and signed request each expire. - FB.api('/me', function (response) { - ctrl.user.connection.name = response.name; - ctrl.user.connection.id = response.id; - ctrl.user.connection.connectionId = ctrl.connection.connectionId; - ctrl.user.connection.avatar = '//graph.facebook.com/' + response.id + '/picture?width=32&height=32'; - ctrl.user.loggedIn = true; - ctrl.join(); - }); - } else if (response.status === 'authorization_expired') { - // The user has signed into your application with - // Facebook Login but must go through the login flow - // again to renew data authorization. You might remind - // the user they've used Facebook, or hide other options - // to avoid duplicate account creation, but you should - // collect a user gesture (e.g. click/touch) to launch the - // login dialog so popup blocking is not triggered. - } else if (response.status === 'not_authorized') { - // The user hasn't authorized your application. They - // must click the Login button, or you must call FB.login - // in response to a user gesture, to launch a login dialog. - } else { - // The user isn't logged in to Facebook. You can launch a - // login dialog with a user gesture, but the user may have - // to log in to Facebook before authorizing your application. - } - }); - }; - ctrl.logout = function () { - FB.logout(function (response) { - // user is now logged out - ctrl.user.loggedIn = false; - }); - }; - ctrl.login = function () { - FB.login(function (response) { - if (response.authResponse) { - FB.api('/me', function (response) { - ctrl.user.connection.name = response.name; - ctrl.user.connection.id = response.id; - ctrl.user.connection.connectionId = ctrl.connection.connectionId; - ctrl.user.connection.avatar = '//graph.facebook.com/' + response.id + '/picture?width=32&height=32'; - ctrl.user.loggedIn = true; - ctrl.join(); - $scope.$apply(); - }); - } else { - console.log('User cancelled login or did not fully authorize.'); - } - }); - }; - }] + ctrl.checkLoginStatus = function () { + FB.getLoginStatus(function (response) { + if (response.status === "connected") { + // The user is logged in and has authenticated your + // app, and response.authResponse supplies + // the user's ID, a valid access token, a signed + // request, and the time the access token + // and signed request each expire. + FB.api("/me", function (response) { + ctrl.user.connection.name = response.name; + ctrl.user.connection.id = response.id; + ctrl.user.connection.connectionId = ctrl.connection.connectionId; + ctrl.user.connection.avatar = + "//graph.facebook.com/" + + response.id + + "/picture?width=32&height=32"; + ctrl.user.loggedIn = true; + ctrl.join(); + }); + } else if (response.status === "authorization_expired") { + // The user has signed into your application with + // Facebook Login but must go through the login flow + // again to renew data authorization. You might remind + // the user they've used Facebook, or hide other options + // to avoid duplicate account creation, but you should + // collect a user gesture (e.g. click/touch) to launch the + // login dialog so popup blocking is not triggered. + } else if (response.status === "not_authorized") { + // The user hasn't authorized your application. They + // must click the Login button, or you must call FB.login + // in response to a user gesture, to launch a login dialog. + } else { + // The user isn't logged in to Facebook. You can launch a + // login dialog with a user gesture, but the user may have + // to log in to Facebook before authorizing your application. + } + }); + }; + ctrl.logout = function () { + FB.logout(function (response) { + // user is now logged out + ctrl.user.loggedIn = false; + }); + }; + ctrl.login = function () { + FB.login(function (response) { + if (response.authResponse) { + FB.api("/me", function (response) { + ctrl.user.connection.name = response.name; + ctrl.user.connection.id = response.id; + ctrl.user.connection.connectionId = ctrl.connection.connectionId; + ctrl.user.connection.avatar = + "//graph.facebook.com/" + + response.id + + "/picture?width=32&height=32"; + ctrl.user.loggedIn = true; + ctrl.join(); + $scope.$apply(); + }); + } else { + console.log("User cancelled login or did not fully authorize."); + } + }); + }; + }, + ], }); + modules.component('shoppingCart', { templateUrl: '/mix-app/views/app-client/components/shopping-cart/view.html', controller: [ @@ -1831,6 +1856,70 @@ app.factory('ViewModel', ['$rootScope', // Return the viewmodel so that we can change props later return viewModel; }]); +modules.component("tclLogin", { + binding: { + user: "=", + }, + templateUrl: "/mix-app/views/app-client/components/customs/login/view.html", + controller: [ + "$scope", + "$rootScope", + "RestMixDatabaseDataClientService", + function ($scope, $rootScope, service) { + var ctrl = this; + ctrl.loginData = { + username: "", + password: "", + pageSize: 1, + pageIndex: 0, + mixDatabaseName: "tcl_user", + filterType: "equal", + }; + ctrl.$onInit = async function () {}; + ctrl.isBusy = false; + ctrl.translate = $rootScope.translate; + ctrl.submit = async function () { + $rootScope.isBusy = true; + var result = await service.getList(ctrl.loginData); + if (result.isSucceed) { + if (result.data.totalItems > 0) { + if ( + result.data.items[0].obj.password == ctrl.loginData.password && + result.data.items[0].obj.username == ctrl.loginData.username + ) { + ctrl.onSuccess(result); + } else { + ctrl.onFail(result); + } + } else { + ctrl.onFail(result); + } + $rootScope.isBusy = false; + $scope.$apply(); + } else { + ctrl.onFail(result); + ctrl.isBusy = false; + $scope.$apply(); + } + }; + + ctrl.onSuccess = function (result) { + $rootScope.isLogin = true; + ctrl.user = result.data.items[0]; + $rootScope.user = result.data.items[0]; + $scope.$apply(); + }; + + ctrl.onFail = function (result) { + ctrl.msg = { + color: "red", + text: "Sai tên đăng nhập hoặc mật khẩu!", + }; + }; + }, + ], +}); + modules.component('haiyenLoader', { templateUrl: '/mix-app/views/app-client/components/customs/loader/view.html', @@ -1853,345 +1942,283 @@ modules.component('haiyenLoader', { bindings: { } }); -modules.component('tclLogin', { - binding: { - user: '=' - }, - templateUrl: '/mix-app/views/app-client/components/customs/login/view.html', - controller: ['$scope', '$rootScope', 'RestAttributeSetDataClientService', - function ($scope, $rootScope, service) { - var ctrl = this; - // service.init('attribute-set-data/tcl'); - ctrl.loginData = { - username: '', - password: '', - pageSize: 1, - pageIndex: 0, - attributeSetName: 'tcl_user', - filterType: 'equal' - }; - ctrl.$onInit = async function () { - - }; - ctrl.isBusy = false; - ctrl.translate = $rootScope.translate; - ctrl.submit = async function () { - $rootScope.isBusy = true; - var result = await service.getList(ctrl.loginData); - if (result.isSucceed) { - if (result.data.totalItems > 0) { - if (result.data.items[0].obj.password == ctrl.loginData.password && result.data.items[0].obj.username == ctrl.loginData.username) { - ctrl.onSuccess(result); - } - else { - ctrl.onFail(result); - } - } - else { - ctrl.onFail(result); - } - $rootScope.isBusy = false; - $scope.$apply(); - } - else { - ctrl.onFail(result); - ctrl.isBusy = false; - $scope.$apply(); - } - }; - - ctrl.onSuccess = function (result) { - $rootScope.isLogin = true; - ctrl.user = result.data.items[0]; - $rootScope.user = result.data.items[0]; - $scope.$apply(); - }; - - ctrl.onFail = function (result) { - ctrl.msg = { - color: 'red', - text: 'Sai tên đăng nhập hoặc mật khẩu!' - }; - - }; +modules.component("tclOrder", { + binding: { + user: "=", + }, + templateUrl: "/mix-app/views/app-client/components/customs/order/view.html", + controller: [ + "$scope", + "$rootScope", + "ngAppSettings", + "RestMixDatabaseDataClientService", + function ($scope, $rootScope, ngAppSettings, service) { + var ctrl = this; + ctrl.request = angular.copy(ngAppSettings.request); + ctrl.request.mixDatabaseName = "tcl_package"; + ctrl.packages = []; + ctrl.$onInit = async function () { + ctrl.user = $rootScope.user; + + if (ctrl.user.obj.order_packages.length == 0) { + await ctrl.loadDefaultPackages(); + ctrl.saveDefaultData().then(() => { + service.clearCache([ctrl.user.obj.id]); + }); + } + ctrl.totalUnit = 0; + angular.forEach(ctrl.user.obj.order_packages, function (pack) { + ctrl.calculateItems(pack); + if (pack.obj.quantity > 0) { + ctrl.totalUnit += pack.obj.total * pack.obj.quantity; + } + }); + }; + ctrl.loadDefaultPackages = async function () { + $rootScope.isBusy = true; + ctrl.request.parentId = ctrl.user.id; + ctrl.request.parentType = "Set"; + var getPackages = await service.getList(ctrl.request); + if (getPackages.isSucceed) { + ctrl.user.obj.order_packages = getPackages.data.items; + angular.forEach(ctrl.user.obj.order_packages, function (pack) { + pack.parentId = ctrl.user.id; + pack.mixDatabaseId = 0; + pack.parentType = "Set"; + pack.status = 2; + pack.mixDatabaseName = "order_package"; + pack.id = null; + pack.obj.quantity = 0; + pack.obj.total = 0; + pack.parentId = ctrl.user.id; + pack.parentType = "Set"; + angular.forEach(pack.obj.package_slots, function (slot) { + slot.id = null; + slot.mixDatabaseName = "order_package_slot"; + slot.parentType = "Set"; + slot.status = 2; + slot.mixDatabaseId = 0; + angular.forEach(slot.obj.package_items, function (item) { + item.id = null; + item.mixDatabaseName = "order_package_item"; + item.parentType = "Set"; + item.mixDatabaseId = 0; + }); + }); + }); + $rootScope.isBusy = false; + $scope.$apply(); } - ] -}); -modules.component('tclOrder', { - binding: { - user: '=' - }, - templateUrl: '/mix-app/views/app-client/components/customs/order/view.html', - controller: ['$scope', '$rootScope', 'ngAppSettings', 'RestAttributeSetDataClientService', - function ($scope, $rootScope, ngAppSettings, service) { - var ctrl = this; - // service.init('attribute-set-data/tcl'); - ctrl.request = angular.copy(ngAppSettings.request); - ctrl.request.attributeSetName = 'tcl_package'; - ctrl.packages = []; - ctrl.$onInit = async function () { - ctrl.user = $rootScope.user; - - if (ctrl.user.obj.order_packages.length == 0) { - await ctrl.loadDefaultPackages(); - ctrl.saveDefaultData().then(() => { - service.clearCache([ctrl.user.obj.id]); - }); - } - ctrl.totalUnit = 0; - angular.forEach(ctrl.user.obj.order_packages, function (pack) { - ctrl.calculateItems(pack); - if (pack.obj.quantity > 0) { - ctrl.totalUnit += (pack.obj.total * pack.obj.quantity); - } - }); - }; + }; - ctrl.loadDefaultPackages = async function () { - $rootScope.isBusy = true; - ctrl.request.parentId = ctrl.user.id; - ctrl.request.parentType = 'Set'; - var getPackages = await service.getList(ctrl.request); - if (getPackages.isSucceed) { - ctrl.user.obj.order_packages = getPackages.data.items; - angular.forEach(ctrl.user.obj.order_packages, function (pack) { - pack.parentId = ctrl.user.id; - pack.attributeSetId = 0; - pack.parentType = 'Set'; - pack.status = 2; - pack.attributeSetName = 'order_package'; - pack.id = null; - pack.obj.quantity = 0; - pack.obj.total = 0; - pack.parentId = ctrl.user.id; - pack.parentType = 'Set'; - angular.forEach(pack.obj.package_slots, function (slot) { - slot.id = null; - slot.attributeSetName = 'order_package_slot'; - slot.parentType = 'Set'; - slot.status = 2; - slot.attributeSetId = 0; - angular.forEach(slot.obj.package_items, function (item) { - item.id = null; - item.attributeSetName = 'order_package_item'; - item.parentType = 'Set'; - item.attributeSetId = 0; - }); - }); + ctrl.saveDefaultData = async function () { + angular.forEach(ctrl.user.obj.order_packages, async function (pack) { + var savePackage = await ctrl.saveData(pack); + if (savePackage.isSucceed) { + pack.id = savePackage.data.id; + pack.mixDatabaseId = savePackage.data.mixDatabaseId; + pack.obj.id = savePackage.data.id; + angular.forEach(pack.obj.gifts, async function (gift) { + gift.parentId = pack.id; + gift.parentType = "Set"; + await ctrl.saveData(gift); + }); + angular.forEach(pack.obj.package_slots, async function (slot) { + slot.parentId = pack.id; + + var saveSlot = await ctrl.saveData(slot); + if (saveSlot.isSucceed) { + slot.mixDatabaseId = saveSlot.data.mixDatabaseId; + slot.id = saveSlot.data.id; + slot.mixDatabaseId = saveSlot.data.mixDatabaseId; + slot.obj.id = saveSlot.data.id; + slot.status = 2; + angular.forEach(slot.obj.package_items, async function (item) { + item.parentId = slot.id; + + var saveItem = await ctrl.saveData(item); + if (saveItem.isSucceed) { + item.id = saveItem.data.id; + item.obj.id = saveItem.data.id; + item.mixDatabaseId = saveItem.data.mixDatabaseId; + angular.forEach(item.obj.products, async function ( + product + ) { + product.parentId = item.id; + product.parentType = "Set"; + await ctrl.saveData(product); }); - $rootScope.isBusy = false; - $scope.$apply(); - } - }; - - ctrl.saveDefaultData = async function () { - angular.forEach(ctrl.user.obj.order_packages, async function (pack) { - var savePackage = await ctrl.saveData(pack); - if (savePackage.isSucceed) { - pack.id = savePackage.data.id; - pack.attributeSetId = savePackage.data.attributeSetId; - pack.obj.id = savePackage.data.id; - angular.forEach(pack.obj.gifts, async function (gift) { - gift.parentId = pack.id; - gift.parentType = 'Set'; - await ctrl.saveData(gift); - - }); - angular.forEach(pack.obj.package_slots, async function (slot) { - slot.parentId = pack.id; - - var saveSlot = await ctrl.saveData(slot); - if (saveSlot.isSucceed) { - slot.attributeSetId = saveSlot.data.attributeSetId; - slot.id = saveSlot.data.id; - slot.attributeSetId = saveSlot.data.attributeSetId; - slot.obj.id = saveSlot.data.id; - slot.status = 2; - angular.forEach(slot.obj.package_items, async function (item) { - item.parentId = slot.id; - - var saveItem = await ctrl.saveData(item); - if (saveItem.isSucceed) { - item.id = saveItem.data.id; - item.obj.id = saveItem.data.id; - item.attributeSetId = saveItem.data.attributeSetId; - angular.forEach(item.obj.products, async function (product) { - product.parentId = item.id; - product.parentType = 'Set'; - await ctrl.saveData(product); - }); - } - }); - } - }); - } - + } }); - }; - ctrl.isBusy = false; - ctrl.translate = $rootScope.translate; - - ctrl.updatePackageQuantity = async function (pack, value) { - pack.obj.quantity += value; - var result = await ctrl.saveData(pack); - ctrl.handleResult(result); - ctrl.totalUnit += (value * pack.obj.total); - service.clearCache([ctrl.user.obj.id]); - // ctrl.calculateItems(); - }; + } + }); + } + }); + }; + ctrl.isBusy = false; + ctrl.translate = $rootScope.translate; - ctrl.updateItemQuantity = async function (pack, item, value) { - const newVal = item.obj.quantity + value; - if (newVal < 0) { - return; - } - if (item.obj.max_quantity >= newVal) { - item.obj.quantity = newVal; - var result = await ctrl.saveData(item); - ctrl.handleResult(result); - ctrl.calculateItems(pack); - if (!pack.isValid) { - ctrl.totalUnit -= (pack.obj.unit * pack.obj.quantity); - pack.obj.quantity = 0; - } - service.clearCache([pack.id]); - } - else { - alert(`Bạn không thể mua nhiều hơn ${item.obj.max_quantity} sản phẩm ${item.obj.product_title}`); - } - }; + ctrl.updatePackageQuantity = async function (pack, value) { + pack.obj.quantity += value; + var result = await ctrl.saveData(pack); + ctrl.handleResult(result); + ctrl.totalUnit += value * pack.obj.total; + service.clearCache([ctrl.user.obj.id]); + // ctrl.calculateItems(); + }; - ctrl.calculateItems = function (pack) { - pack.obj.total = 0; - angular.forEach(pack.obj.package_slots, function (slot) { - slot.obj.total_unit = 0; - angular.forEach(slot.obj.package_items, function (item) { - slot.obj.total_unit += item.obj.quantity; - }); - pack.obj.total += slot.obj.total_unit; - }); - pack.isValid = pack.obj.total == pack.obj.unit; - }; + ctrl.updateItemQuantity = async function (pack, item, value) { + const newVal = item.obj.quantity + value; + if (newVal < 0) { + return; + } + if (item.obj.max_quantity >= newVal) { + item.obj.quantity = newVal; + var result = await ctrl.saveData(item); + ctrl.handleResult(result); + ctrl.calculateItems(pack); + if (!pack.isValid) { + ctrl.totalUnit -= pack.obj.unit * pack.obj.quantity; + pack.obj.quantity = 0; + } + service.clearCache([pack.id]); + } else { + alert( + `Bạn không thể mua nhiều hơn ${item.obj.max_quantity} sản phẩm ${item.obj.product_title}` + ); + } + }; - ctrl.submit = async function () { - if (ctrl.validate()) { - $rootScope.isBusy = true; - var result = await service.save(ctrl.user); - ctrl.handleResult(result); - } - }; + ctrl.calculateItems = function (pack) { + pack.obj.total = 0; + angular.forEach(pack.obj.package_slots, function (slot) { + slot.obj.total_unit = 0; + angular.forEach(slot.obj.package_items, function (item) { + slot.obj.total_unit += item.obj.quantity; + }); + pack.obj.total += slot.obj.total_unit; + }); + pack.isValid = pack.obj.total == pack.obj.unit; + }; - ctrl.saveData = async function (data) { - var result = await service.save(data); - return result; - }; + ctrl.submit = async function () { + if (ctrl.validate()) { + $rootScope.isBusy = true; + var result = await service.save(ctrl.user); + ctrl.handleResult(result); + } + }; - ctrl.handleResult = function (result) { - if (result.isSucceed) { - ctrl.onSuccess(result); - $rootScope.isBusy = false; - $scope.$apply(); - } - else { - ctrl.onFail(result); - $rootScope.isBusy = false; - $scope.$apply(); - } - } + ctrl.saveData = async function (data) { + var result = await service.save(data); + return result; + }; - ctrl.validate = function () { - let result = true; - angular.forEach(ctrl.user.obj.order_packages, function (pack) { - if (!pack.isValid && pack.obj.quantity > 0) { - result = false; - alert(`${pack.obj.title} chỉ chấp nhận ${pack.obj.unit} sản phẩm`); - } - }); - return result; - } - ctrl.onSuccess = function (result) { - $rootScope.isLogin = true; - $rootScope.isBusy = false; - $scope.$apply(); - }; + ctrl.handleResult = function (result) { + if (result.isSucceed) { + ctrl.onSuccess(result); + $rootScope.isBusy = false; + $scope.$apply(); + } else { + ctrl.onFail(result); + $rootScope.isBusy = false; + $scope.$apply(); + } + }; - ctrl.onFail = function (result) { - ctrl.msg = { - color: 'red', - text: 'Sai tên đăng nhập hoặc mật khẩu!' - }; - $rootScope.isBusy = false; - $scope.$apply(); - }; + ctrl.validate = function () { + let result = true; + angular.forEach(ctrl.user.obj.order_packages, function (pack) { + if (!pack.isValid && pack.obj.quantity > 0) { + result = false; + alert(`${pack.obj.title} chỉ chấp nhận ${pack.obj.unit} sản phẩm`); + } + }); + return result; + }; + ctrl.onSuccess = function (result) { + $rootScope.isLogin = true; + $rootScope.isBusy = false; + $scope.$apply(); + }; - ctrl.export = function () { - if (ctrl.validate()) { - $rootScope.isBusy = true; - var canvasdiv = document.getElementById("receipt"); - html2canvas(canvasdiv, { - backgroundColor: "#5b4298" - }).then(canvas => { - var a = document.createElement("a"); - a.href = canvas.toDataURL("image/png"); - a.download = ctrl.user.obj.username + "_receipt_.png"; - a.click(); - $rootScope.isBusy = false; - $scope.$apply(); - }); - } - }; + ctrl.onFail = function (result) { + ctrl.msg = { + color: "red", + text: "Sai tên đăng nhập hoặc mật khẩu!", + }; + $rootScope.isBusy = false; + $scope.$apply(); + }; + ctrl.export = function () { + if (ctrl.validate()) { + $rootScope.isBusy = true; + var canvasdiv = document.getElementById("receipt"); + html2canvas(canvasdiv, { + backgroundColor: "#5b4298", + }).then((canvas) => { + var a = document.createElement("a"); + a.href = canvas.toDataURL("image/png"); + a.download = ctrl.user.obj.username + "_receipt_.png"; + a.click(); + $rootScope.isBusy = false; + $scope.$apply(); + }); } - ] -}); -modules.component('haiyenSubscriber', { - binding: { - + }; }, - templateUrl: '/mix-app/views/app-client/components/customs/subscriber/view.html', - controller: ['$scope', '$rootScope', 'RestAttributeSetDataClientService', - function ($scope, $rootScope, service) { - var ctrl = this; - ctrl.subscriber = null; - ctrl.formName = 'subscribers'; - ctrl.$onInit = async function () { - var initData = await service.initData(ctrl.formName); - if (initData.isSucceed) { - ctrl.default = initData.data; - ctrl.subscriber = angular.copy(ctrl.default); - $scope.$apply(); - } - }; - ctrl.isBusy = false; - ctrl.submit = async function () { - ctrl.isBusy = true; - var result = await service.save(ctrl.subscriber); - if (result.isSucceed) { - ctrl.onSuccess(result); - ctrl.subscriber = angular.copy(ctrl.default); - ctrl.isBusy = false; - } - else { - ctrl.onFail(result); - ctrl.isBusy = false; - } - $scope.$apply(); - }; - ctrl.onSuccess = function (result) { - ctrl.msg = { - color: 'green', - text: 'Cám ơn bạn đã đăng ký thành công!' - }; - }; - - ctrl.onFail = function (result) { - ctrl.msg = { - color: 'red', - text: result.errors[0] - }; - }; + ], +}); +modules.component("haiyenSubscriber", { + binding: {}, + templateUrl: + "/mix-app/views/app-client/components/customs/subscriber/view.html", + controller: [ + "$scope", + "$rootScope", + "RestMixDatabaseDataClientService", + function ($scope, $rootScope, service) { + var ctrl = this; + ctrl.subscriber = null; + ctrl.formName = "subscribers"; + ctrl.$onInit = async function () { + var initData = await service.initData(ctrl.formName); + if (initData.isSucceed) { + ctrl.default = initData.data; + ctrl.subscriber = angular.copy(ctrl.default); + $scope.$apply(); } - ] -}); \ No newline at end of file + }; + ctrl.isBusy = false; + ctrl.submit = async function () { + ctrl.isBusy = true; + var result = await service.save(ctrl.subscriber); + if (result.isSucceed) { + ctrl.onSuccess(result); + ctrl.subscriber = angular.copy(ctrl.default); + ctrl.isBusy = false; + } else { + ctrl.onFail(result); + ctrl.isBusy = false; + } + $scope.$apply(); + }; + ctrl.onSuccess = function (result) { + ctrl.msg = { + color: "green", + text: "Cám ơn bạn đã đăng ký thành công!", + }; + }; + + ctrl.onFail = function (result) { + ctrl.msg = { + color: "red", + text: result.errors[0], + }; + }; + }, + ], +}); diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/js/app-init.min.js b/src/Mix.Cms.Web/wwwroot/mix-app/js/app-init.min.js index a583bc459..419a1bdfa 100644 --- a/src/Mix.Cms.Web/wwwroot/mix-app/js/app-init.min.js +++ b/src/Mix.Cms.Web/wwwroot/mix-app/js/app-init.min.js @@ -507,8 +507,8 @@ app.factory('Step5Services', ['CommonService' }]); -modules.component('mssqlInfo', { - templateUrl: '/mix-app/views/app-init/pages/step1/components/mssql-info/view.html', +modules.component('mssqlLocalInfo', { + templateUrl: '/mix-app/views/app-init/pages/step1/components/mssql-local-info/view.html', controller: ['$rootScope', function ($rootScope) { var ctrl = this; @@ -519,8 +519,8 @@ modules.component('mssqlInfo', { initCmsModel: '=' } }); -modules.component('mssqlLocalInfo', { - templateUrl: '/mix-app/views/app-init/pages/step1/components/mssql-local-info/view.html', +modules.component('mssqlInfo', { + templateUrl: '/mix-app/views/app-init/pages/step1/components/mssql-info/view.html', controller: ['$rootScope', function ($rootScope) { var ctrl = this; diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/js/app-portal-required.min.js b/src/Mix.Cms.Web/wwwroot/mix-app/js/app-portal-required.min.js index 7e2eeb9f7..51f1b9295 100644 --- a/src/Mix.Cms.Web/wwwroot/mix-app/js/app-portal-required.min.js +++ b/src/Mix.Cms.Web/wwwroot/mix-app/js/app-portal-required.min.js @@ -1 +1 @@ -/* Sun Feb 14 2021 18:36:43 GMT+0700 (Indochina Time) */!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var n=[],i=Object.getPrototypeOf,r=n.slice,o=n.flat?function(e){return n.flat.call(e)}:function(e){return n.concat.apply([],e)},a=n.push,s=n.indexOf,l={},u=l.toString,c=l.hasOwnProperty,d=c.toString,f=d.call(Object),h={},p=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},g=function(e){return null!=e&&e===e.window},m=e.document,x={type:!0,src:!0,nonce:!0,noModule:!0};function v(e,t,n){var i,r,o=(n=n||m).createElement("script");if(o.text=e,t)for(i in x)(r=t[i]||t.getAttribute&&t.getAttribute(i))&&o.setAttribute(i,r);n.head.appendChild(o).parentNode.removeChild(o)}function y(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[u.call(e)]||"object":typeof e}var b="3.5.1",F=function(e,t){return new F.fn.init(e,t)};function w(e){var t=!!e&&"length"in e&&e.length,n=y(e);return!p(e)&&!g(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+$+")"+$+"*"),U=new RegExp($+"|>"),Q=new RegExp(M),K=new RegExp("^"+R+"$"),X={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+M),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+$+"*(even|odd|(([+-]|)(\\d*)n|)"+$+"*(?:([+-]|)"+$+"*(\\d+)|))"+$+"*\\)|)","i"),bool:new RegExp("^(?:"+I+")$","i"),needsContext:new RegExp("^"+$+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+$+"*((?:-\\d)?\\d*)"+$+"*\\)|)(?=[^-]|$)","i")},G=/HTML$/i,Y=/^(?:input|select|textarea|button)$/i,V=/^h\d$/i,J=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+$+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},ie=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,re=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){f()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{N.apply(S=j.call(F.childNodes),F.childNodes),S[F.childNodes.length].nodeType}catch(t){N={apply:S.length?function(e,t){B.apply(e,j.call(t))}:function(e,t){for(var n=e.length,i=0;e[n++]=t[i++];);e.length=n-1}}}function se(e,t,i,r){var o,s,u,c,d,p,x,v=t&&t.ownerDocument,F=t?t.nodeType:9;if(i=i||[],"string"!=typeof e||!e||1!==F&&9!==F&&11!==F)return i;if(!r&&(f(t),t=t||h,g)){if(11!==F&&(d=Z.exec(e)))if(o=d[1]){if(9===F){if(!(u=t.getElementById(o)))return i;if(u.id===o)return i.push(u),i}else if(v&&(u=v.getElementById(o))&&y(t,u)&&u.id===o)return i.push(u),i}else{if(d[2])return N.apply(i,t.getElementsByTagName(e)),i;if((o=d[3])&&n.getElementsByClassName&&t.getElementsByClassName)return N.apply(i,t.getElementsByClassName(o)),i}if(n.qsa&&!k[e+" "]&&(!m||!m.test(e))&&(1!==F||"object"!==t.nodeName.toLowerCase())){if(x=e,v=t,1===F&&(U.test(e)||W.test(e))){for((v=ee.test(e)&&xe(t.parentNode)||t)===t&&n.scope||((c=t.getAttribute("id"))?c=c.replace(ie,re):t.setAttribute("id",c=b)),s=(p=a(e)).length;s--;)p[s]=(c?"#"+c:":scope")+" "+ye(p[s]);x=p.join(",")}try{return N.apply(i,v.querySelectorAll(x)),i}catch(t){k(e,!0)}finally{c===b&&t.removeAttribute("id")}}}return l(e.replace(q,"$1"),t,i,r)}function le(){var e=[];return function t(n,r){return e.push(n+" ")>i.cacheLength&&delete t[e.shift()],t[n+" "]=r}}function ue(e){return e[b]=!0,e}function ce(e){var t=h.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function de(e,t){for(var n=e.split("|"),r=n.length;r--;)i.attrHandle[n[r]]=t}function fe(e,t){var n=t&&e,i=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(i)return i;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function he(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ge(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ae(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function me(e){return ue(function(t){return t=+t,ue(function(n,i){for(var r,o=e([],n.length,t),a=o.length;a--;)n[r=o[a]]&&(n[r]=!(i[r]=n[r]))})})}function xe(e){return e&&void 0!==e.getElementsByTagName&&e}for(t in n=se.support={},o=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!G.test(t||n&&n.nodeName||"HTML")},f=se.setDocument=function(e){var t,r,a=e?e.ownerDocument||e:F;return a!=h&&9===a.nodeType&&a.documentElement&&(p=(h=a).documentElement,g=!o(h),F!=h&&(r=h.defaultView)&&r.top!==r&&(r.addEventListener?r.addEventListener("unload",oe,!1):r.attachEvent&&r.attachEvent("onunload",oe)),n.scope=ce(function(e){return p.appendChild(e).appendChild(h.createElement("div")),void 0!==e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),n.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ce(function(e){return e.appendChild(h.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=J.test(h.getElementsByClassName),n.getById=ce(function(e){return p.appendChild(e).id=b,!h.getElementsByName||!h.getElementsByName(b).length}),n.getById?(i.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},i.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(i.filter.ID=function(e){var t=e.replace(te,ne);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},i.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n,i,r,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];for(r=t.getElementsByName(e),i=0;o=r[i++];)if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),i.find.TAG=n.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,i=[],r=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[r++];)1===n.nodeType&&i.push(n);return i}return o},i.find.CLASS=n.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&g)return t.getElementsByClassName(e)},x=[],m=[],(n.qsa=J.test(h.querySelectorAll))&&(ce(function(e){var t;p.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&m.push("[*^$]="+$+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||m.push("\\["+$+"*(?:value|"+I+")"),e.querySelectorAll("[id~="+b+"-]").length||m.push("~="),(t=h.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||m.push("\\["+$+"*name"+$+"*="+$+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||m.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||m.push(".#.+[+~]"),e.querySelectorAll("\\\f"),m.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=h.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&m.push("name"+$+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&m.push(":enabled",":disabled"),p.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&m.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),m.push(",.*:")})),(n.matchesSelector=J.test(v=p.matches||p.webkitMatchesSelector||p.mozMatchesSelector||p.oMatchesSelector||p.msMatchesSelector))&&ce(function(e){n.disconnectedMatch=v.call(e,"*"),v.call(e,"[s!='']:x"),x.push("!=",M)}),m=m.length&&new RegExp(m.join("|")),x=x.length&&new RegExp(x.join("|")),t=J.test(p.compareDocumentPosition),y=t||J.test(p.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,i=t&&t.parentNode;return e===i||!(!i||1!==i.nodeType||!(n.contains?n.contains(i):e.compareDocumentPosition&&16&e.compareDocumentPosition(i)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},T=t?function(e,t){if(e===t)return d=!0,0;var i=!e.compareDocumentPosition-!t.compareDocumentPosition;return i||(1&(i=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===i?e==h||e.ownerDocument==F&&y(F,e)?-1:t==h||t.ownerDocument==F&&y(F,t)?1:c?P(c,e)-P(c,t):0:4&i?-1:1)}:function(e,t){if(e===t)return d=!0,0;var n,i=0,r=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!r||!o)return e==h?-1:t==h?1:r?-1:o?1:c?P(c,e)-P(c,t):0;if(r===o)return fe(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[i]===s[i];)i++;return i?fe(a[i],s[i]):a[i]==F?-1:s[i]==F?1:0}),h},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(f(e),n.matchesSelector&&g&&!k[t+" "]&&(!x||!x.test(t))&&(!m||!m.test(t)))try{var i=v.call(e,t);if(i||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return i}catch(e){k(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return X.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&Q.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=C[e+" "];return t||(t=new RegExp("(^|"+$+")"+e+"("+$+"|$)"))&&C(e,function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(i){var r=se.attr(i,e);return null==r?"!="===t:!t||(r+="","="===t?r===n:"!="===t?r!==n:"^="===t?n&&0===r.indexOf(n):"*="===t?n&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,t,n){return p(t)?F.grep(e,function(e,i){return!!t.call(e,i,e)!==n}):t.nodeType?F.grep(e,function(e){return e===t!==n}):"string"!=typeof t?F.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(F.fn.init=function(e,t,n){var i,r;if(!e)return this;if(n=n||S,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof F?t[0]:t,F.merge(this,F.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:m,!0)),T.test(i[1])&&F.isPlainObject(t))for(i in t)p(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(r=m.getElementById(i[2]))&&(this[0]=r,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):p(e)?void 0!==n.ready?n.ready(e):e(F):F.makeArray(e,this)}).prototype=F.fn,S=F(m);var B=/^(?:parents|prev(?:Until|All))/,N={children:!0,contents:!0,next:!0,prev:!0};function j(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}F.fn.extend({has:function(e){var t=F(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,pe=/^$|^module$|\/(?:java|ecma)script/i;ce=m.createDocumentFragment().appendChild(m.createElement("div")),(de=m.createElement("input")).setAttribute("type","radio"),de.setAttribute("checked","checked"),de.setAttribute("name","t"),ce.appendChild(de),h.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",h.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",h.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function me(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&k(e,t)?F.merge([e],n):n}function xe(e,t){for(var n=0,i=e.length;n",""]);var ve=/<|&#?\w+;/;function ye(e,t,n,i,r){for(var o,a,s,l,u,c,d=t.createDocumentFragment(),f=[],h=0,p=e.length;h\s*$/g;function Le(e,t){return k(e,"table")&&k(11!==t.nodeType?t:t.firstChild,"tr")&&F(e).children("tbody")[0]||e}function Be(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Ne(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function je(e,t){var n,i,r,o,a,s;if(1===t.nodeType){if(G.hasData(e)&&(s=G.get(e).events))for(r in G.remove(t,"handle events"),s)for(n=0,i=s[r].length;n").attr(e.scriptAttrs||{}).prop({charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&r("error"===e.type?404:200,e.type)}),m.head.appendChild(t[0])},abort:function(){n&&n()}}});var Ut,Qt=[],Kt=/(=)\?(?=&|$)|\?\?/;F.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Qt.pop()||F.expando+"_"+_t.guid++;return this[e]=!0,e}}),F.ajaxPrefilter("json jsonp",function(t,n,i){var r,o,a,s=!1!==t.jsonp&&(Kt.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&Kt.test(t.data)&&"data");if(s||"jsonp"===t.dataTypes[0])return r=t.jsonpCallback=p(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(Kt,"$1"+r):!1!==t.jsonp&&(t.url+=(Ct.test(t.url)?"&":"?")+t.jsonp+"="+r),t.converters["script json"]=function(){return a||F.error(r+" was not called"),a[0]},t.dataTypes[0]="json",o=e[r],e[r]=function(){a=arguments},i.always(function(){void 0===o?F(e).removeProp(r):e[r]=o,t[r]&&(t.jsonpCallback=n.jsonpCallback,Qt.push(r)),a&&p(o)&&o(a[0]),a=o=void 0}),"script"}),h.createHTMLDocument=((Ut=m.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),F.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(h.createHTMLDocument?((i=(t=m.implementation.createHTMLDocument("")).createElement("base")).href=m.location.href,t.head.appendChild(i)):t=m),o=!n&&[],(r=T.exec(e))?[t.createElement(r[1])]:(r=ye([e],t,o),o&&o.length&&F(o).remove(),F.merge([],r.childNodes)));var i,r,o},F.fn.load=function(e,t,n){var i,r,o,a=this,s=e.indexOf(" ");return-1").append(F.parseHTML(e)).find(i):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},F.expr.pseudos.animated=function(e){return F.grep(F.timers,function(t){return e===t.elem}).length},F.offset={setOffset:function(e,t,n){var i,r,o,a,s,l,u=F.css(e,"position"),c=F(e),d={};"static"===u&&(e.style.position="relative"),s=c.offset(),o=F.css(e,"top"),l=F.css(e,"left"),("absolute"===u||"fixed"===u)&&-1<(o+l).indexOf("auto")?(a=(i=c.position()).top,r=i.left):(a=parseFloat(o)||0,r=parseFloat(l)||0),p(t)&&(t=t.call(e,n,F.extend({},s))),null!=t.top&&(d.top=t.top-s.top+a),null!=t.left&&(d.left=t.left-s.left+r),"using"in t?t.using.call(e,d):("number"==typeof d.top&&(d.top+="px"),"number"==typeof d.left&&(d.left+="px"),c.css(d))}},F.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){F.offset.setOffset(this,e,t)});var t,n,i=this[0];return i?i.getClientRects().length?(t=i.getBoundingClientRect(),n=i.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,i=this[0],r={top:0,left:0};if("fixed"===F.css(i,"position"))t=i.getBoundingClientRect();else{for(t=this.offset(),n=i.ownerDocument,e=i.offsetParent||n.documentElement;e&&(e===n.body||e===n.documentElement)&&"static"===F.css(e,"position");)e=e.parentNode;e&&e!==i&&1===e.nodeType&&((r=F(e).offset()).top+=F.css(e,"borderTopWidth",!0),r.left+=F.css(e,"borderLeftWidth",!0))}return{top:t.top-r.top-F.css(i,"marginTop",!0),left:t.left-r.left-F.css(i,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&"static"===F.css(e,"position");)e=e.offsetParent;return e||ie})}}),F.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n="pageYOffset"===t;F.fn[e]=function(i){return q(this,function(e,i,r){var o;if(g(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===r)return o?o[t]:e[i];o?o.scrollTo(n?o.pageXOffset:r,n?r:o.pageYOffset):e[i]=r},e,i,arguments.length)}}),F.each(["top","left"],function(e,t){F.cssHooks[t]=qe(h.pixelPosition,function(e,n){if(n)return n=He(e,t),$e.test(n)?F(e).position()[t]+"px":n})}),F.each({Height:"height",Width:"width"},function(e,t){F.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,i){F.fn[i]=function(r,o){var a=arguments.length&&(n||"boolean"!=typeof r),s=n||(!0===r||!0===o?"margin":"border");return q(this,function(t,n,r){var o;return g(t)?0===i.indexOf("outer")?t["inner"+e]:t.document.documentElement["client"+e]:9===t.nodeType?(o=t.documentElement,Math.max(t.body["scroll"+e],o["scroll"+e],t.body["offset"+e],o["offset"+e],o["client"+e])):void 0===r?F.css(t,n,s):F.style(t,n,r,s)},t,a?r:void 0,a)}})}),F.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){F.fn[t]=function(e){return this.on(t,e)}}),F.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,i){return this.on(t,e,n,i)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),F.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){F.fn[t]=function(e,n){return 00,i._pointerEvent=Boolean(window.PointerEvent),i._addEventListeners(),i}o(t,e);var n=t.prototype;return n.next=function(){this._isSliding||this._slide("next")},n.nextWhenVisible=function(){!document.hidden&&x(this._element)&&this.next()},n.prev=function(){this._isSliding||this._slide("prev")},n.pause=function(e){e||(this._isPaused=!0),K.findOne(".carousel-item-next, .carousel-item-prev",this._element)&&(h(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},n.cycle=function(e){e||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},n.to=function(e){var t=this;this._activeElement=K.findOne(".active.carousel-item",this._element);var n=this._getItemIndex(this._activeElement);if(!(e>this._items.length-1||e<0))if(this._isSliding)O.one(this._element,"slid.bs.carousel",function(){return t.to(e)});else{if(n===e)return this.pause(),void this.cycle();var i=e>n?"next":"prev";this._slide(i,this._items[e])}},n.dispose=function(){e.prototype.dispose.call(this),O.off(this._element,".bs.carousel"),this._items=null,this._config=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},n._getConfig=function(e){return e=r({},G,e),m(X,e,Y),e},n._handleSwipe=function(){var e=Math.abs(this.touchDeltaX);if(!(e<=40)){var t=e/this.touchDeltaX;this.touchDeltaX=0,t>0&&this.prev(),t<0&&this.next()}},n._addEventListeners=function(){var e=this;this._config.keyboard&&O.on(this._element,"keydown.bs.carousel",function(t){return e._keydown(t)}),"hover"===this._config.pause&&(O.on(this._element,"mouseenter.bs.carousel",function(t){return e.pause(t)}),O.on(this._element,"mouseleave.bs.carousel",function(t){return e.cycle(t)})),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()},n._addTouchEventListeners=function(){var e=this,t=function(t){e._pointerEvent&&V[t.pointerType.toUpperCase()]?e.touchStartX=t.clientX:e._pointerEvent||(e.touchStartX=t.touches[0].clientX)},n=function(t){e._pointerEvent&&V[t.pointerType.toUpperCase()]&&(e.touchDeltaX=t.clientX-e.touchStartX),e._handleSwipe(),"hover"===e._config.pause&&(e.pause(),e.touchTimeout&&clearTimeout(e.touchTimeout),e.touchTimeout=setTimeout(function(t){return e.cycle(t)},500+e._config.interval))};K.find(".carousel-item img",this._element).forEach(function(e){O.on(e,"dragstart.bs.carousel",function(e){return e.preventDefault()})}),this._pointerEvent?(O.on(this._element,"pointerdown.bs.carousel",function(e){return t(e)}),O.on(this._element,"pointerup.bs.carousel",function(e){return n(e)}),this._element.classList.add("pointer-event")):(O.on(this._element,"touchstart.bs.carousel",function(e){return t(e)}),O.on(this._element,"touchmove.bs.carousel",function(t){return function(t){t.touches&&t.touches.length>1?e.touchDeltaX=0:e.touchDeltaX=t.touches[0].clientX-e.touchStartX}(t)}),O.on(this._element,"touchend.bs.carousel",function(e){return n(e)}))},n._keydown=function(e){if(!/input|textarea/i.test(e.target.tagName))switch(e.key){case"ArrowLeft":e.preventDefault(),this.prev();break;case"ArrowRight":e.preventDefault(),this.next()}},n._getItemIndex=function(e){return this._items=e&&e.parentNode?K.find(".carousel-item",e.parentNode):[],this._items.indexOf(e)},n._getItemByDirection=function(e,t){var n="next"===e,i="prev"===e,r=this._getItemIndex(t),o=this._items.length-1;if((i&&0===r||n&&r===o)&&!this._config.wrap)return t;var a=(r+("prev"===e?-1:1))%this._items.length;return-1===a?this._items[this._items.length-1]:this._items[a]},n._triggerSlideEvent=function(e,t){var n=this._getItemIndex(e),i=this._getItemIndex(K.findOne(".active.carousel-item",this._element));return O.trigger(this._element,"slide.bs.carousel",{relatedTarget:e,direction:t,from:i,to:n})},n._setActiveIndicatorElement=function(e){if(this._indicatorsElement){for(var t=K.find(".active",this._indicatorsElement),n=0;n0)for(var i=0;i0&&r--,"ArrowDown"===e.key&&rdocument.documentElement.clientHeight;t||(this._element.style.overflowY="hidden"),this._element.classList.add("modal-static");var n=f(this._dialog);O.off(this._element,"transitionend"),O.one(this._element,"transitionend",function(){e._element.classList.remove("modal-static"),t||(O.one(e._element,"transitionend",function(){e._element.style.overflowY=""}),g(e._element,n))}),g(this._element,n),this._element.focus()}},n._adjustDialog=function(){var e=this._element.scrollHeight>document.documentElement.clientHeight;(!this._isBodyOverflowing&&e&&!w||this._isBodyOverflowing&&!e&&w)&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),(this._isBodyOverflowing&&!e&&!w||!this._isBodyOverflowing&&e&&w)&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},n._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},n._checkScrollbar=function(){var e=document.body.getBoundingClientRect();this._isBodyOverflowing=Math.round(e.left+e.right)
',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",container:!1,fallbackPlacements:null,boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},ke={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},Te=function(n){function a(e,i){var r;if(void 0===t)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");return(r=n.call(this,e)||this)._isEnabled=!0,r._timeout=0,r._hoverState="",r._activeTrigger={},r._popper=null,r.config=r._getConfig(i),r.tip=null,r._setListeners(),r}o(a,n);var s=a.prototype;return s.enable=function(){this._isEnabled=!0},s.disable=function(){this._isEnabled=!1},s.toggleEnabled=function(){this._isEnabled=!this._isEnabled},s.toggle=function(e){if(this._isEnabled)if(e){var t=this.constructor.DATA_KEY,n=E(e.delegateTarget,t);n||(n=new this.constructor(e.delegateTarget,this._getDelegateConfig()),C(e.delegateTarget,t,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(this.getTipElement().classList.contains("show"))return void this._leave(null,this);this._enter(null,this)}},s.dispose=function(){clearTimeout(this._timeout),O.off(this._element,this.constructor.EVENT_KEY),O.off(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this.tip&&this.tip.parentNode.removeChild(this.tip),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.config=null,this.tip=null,n.prototype.dispose.call(this)},s.show=function(){var t=this;if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(this.isWithContent()&&this._isEnabled){var n=O.trigger(this._element,this.constructor.Event.SHOW),i=function e(t){if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){var n=t.getRootNode();return n instanceof ShadowRoot?n:null}return t instanceof ShadowRoot?t:t.parentNode?e(t.parentNode):null}(this._element),r=null===i?this._element.ownerDocument.documentElement.contains(this._element):i.contains(this._element);if(n.defaultPrevented||!r)return;var o=this.getTipElement(),a=l(this.constructor.NAME);o.setAttribute("id",a),this._element.setAttribute("aria-describedby",a),this.setContent(),this.config.animation&&o.classList.add("fade");var s="function"==typeof this.config.placement?this.config.placement.call(this,o,this._element):this.config.placement,u=this._getAttachment(s);this._addAttachmentClass(u);var c=this._getContainer();C(o,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||c.appendChild(o),O.trigger(this._element,this.constructor.Event.INSERTED),this._popper=e.createPopper(this._element,o,this._getPopperConfig(u)),o.classList.add("show");var d,h,p="function"==typeof this.config.customClass?this.config.customClass():this.config.customClass;p&&(d=o.classList).add.apply(d,p.split(" ")),"ontouchstart"in document.documentElement&&(h=[]).concat.apply(h,document.body.children).forEach(function(e){O.on(e,"mouseover",function(){})});var m=function(){var e=t._hoverState;t._hoverState=null,O.trigger(t._element,t.constructor.Event.SHOWN),"out"===e&&t._leave(null,t)};if(this.tip.classList.contains("fade")){var x=f(this.tip);O.one(this.tip,"transitionend",m),g(this.tip,x)}else m()}},s.hide=function(){var e=this;if(this._popper){var t=this.getTipElement(),n=function(){"show"!==e._hoverState&&t.parentNode&&t.parentNode.removeChild(t),e._cleanTipClass(),e._element.removeAttribute("aria-describedby"),O.trigger(e._element,e.constructor.Event.HIDDEN),e._popper&&(e._popper.destroy(),e._popper=null)};if(!O.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented){var i;if(t.classList.remove("show"),"ontouchstart"in document.documentElement&&(i=[]).concat.apply(i,document.body.children).forEach(function(e){return O.off(e,"mouseover",v)}),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,this.tip.classList.contains("fade")){var r=f(t);O.one(t,"transitionend",n),g(t,r)}else n();this._hoverState=""}}},s.update=function(){null!==this._popper&&this._popper.update()},s.isWithContent=function(){return Boolean(this.getTitle())},s.getTipElement=function(){if(this.tip)return this.tip;var e=document.createElement("div");return e.innerHTML=this.config.template,this.tip=e.children[0],this.tip},s.setContent=function(){var e=this.getTipElement();this.setElementContent(K.findOne(".tooltip-inner",e),this.getTitle()),e.classList.remove("fade","show")},s.setElementContent=function(e,t){if(null!==e)return"object"==typeof t&&p(t)?(t.jquery&&(t=t[0]),void(this.config.html?t.parentNode!==e&&(e.innerHTML="",e.appendChild(t)):e.textContent=t.textContent)):void(this.config.html?(this.config.sanitize&&(t=be(t,this.config.allowList,this.config.sanitizeFn)),e.innerHTML=t):e.textContent=t)},s.getTitle=function(){var e=this._element.getAttribute("data-bs-original-title");return e||(e="function"==typeof this.config.title?this.config.title.call(this._element):this.config.title),e},s.updateAttachment=function(e){return"right"===e?"end":"left"===e?"start":e},s._getPopperConfig=function(e){var t=this,n={name:"flip",options:{altBoundary:!0}};return this.config.fallbackPlacements&&(n.options.fallbackPlacements=this.config.fallbackPlacements),r({},{placement:e,modifiers:[n,{name:"preventOverflow",options:{rootBoundary:this.config.boundary}},{name:"arrow",options:{element:"."+this.constructor.NAME+"-arrow"}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:function(e){return t._handlePopperPlacementChange(e)}}],onFirstUpdate:function(e){e.options.placement!==e.placement&&t._handlePopperPlacementChange(e)}},this.config.popperConfig)},s._addAttachmentClass=function(e){this.getTipElement().classList.add("bs-tooltip-"+this.updateAttachment(e))},s._getContainer=function(){return!1===this.config.container?document.body:p(this.config.container)?this.config.container:K.findOne(this.config.container)},s._getAttachment=function(e){return Ee[e.toUpperCase()]},s._setListeners=function(){var e=this;this.config.trigger.split(" ").forEach(function(t){if("click"===t)O.on(e._element,e.constructor.Event.CLICK,e.config.selector,function(t){return e.toggle(t)});else if("manual"!==t){var n="hover"===t?e.constructor.Event.MOUSEENTER:e.constructor.Event.FOCUSIN,i="hover"===t?e.constructor.Event.MOUSELEAVE:e.constructor.Event.FOCUSOUT;O.on(e._element,n,e.config.selector,function(t){return e._enter(t)}),O.on(e._element,i,e.config.selector,function(t){return e._leave(t)})}}),this._hideModalHandler=function(){e._element&&e.hide()},O.on(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=r({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},s._fixTitle=function(){var e=this._element.getAttribute("title"),t=typeof this._element.getAttribute("data-bs-original-title");(e||"string"!==t)&&(this._element.setAttribute("data-bs-original-title",e||""),!e||this._element.getAttribute("aria-label")||this._element.textContent||this._element.setAttribute("aria-label",e),this._element.setAttribute("title",""))},s._enter=function(e,t){var n=this.constructor.DATA_KEY;(t=t||E(e.delegateTarget,n))||(t=new this.constructor(e.delegateTarget,this._getDelegateConfig()),C(e.delegateTarget,n,t)),e&&(t._activeTrigger["focusin"===e.type?"focus":"hover"]=!0),t.getTipElement().classList.contains("show")||"show"===t._hoverState?t._hoverState="show":(clearTimeout(t._timeout),t._hoverState="show",t.config.delay&&t.config.delay.show?t._timeout=setTimeout(function(){"show"===t._hoverState&&t.show()},t.config.delay.show):t.show())},s._leave=function(e,t){var n=this.constructor.DATA_KEY;(t=t||E(e.delegateTarget,n))||(t=new this.constructor(e.delegateTarget,this._getDelegateConfig()),C(e.delegateTarget,n,t)),e&&(t._activeTrigger["focusout"===e.type?"focus":"hover"]=!1),t._isWithActiveTrigger()||(clearTimeout(t._timeout),t._hoverState="out",t.config.delay&&t.config.delay.hide?t._timeout=setTimeout(function(){"out"===t._hoverState&&t.hide()},t.config.delay.hide):t.hide())},s._isWithActiveTrigger=function(){for(var e in this._activeTrigger)if(this._activeTrigger[e])return!0;return!1},s._getConfig=function(e){var t=Q.getDataAttributes(this._element);return Object.keys(t).forEach(function(e){_e.has(e)&&delete t[e]}),e&&"object"==typeof e.container&&e.container.jquery&&(e.container=e.container[0]),"number"==typeof(e=r({},this.constructor.Default,t,"object"==typeof e&&e?e:{})).delay&&(e.delay={show:e.delay,hide:e.delay}),"number"==typeof e.title&&(e.title=e.title.toString()),"number"==typeof e.content&&(e.content=e.content.toString()),m(Fe,e,this.constructor.DefaultType),e.sanitize&&(e.template=be(e.template,e.allowList,e.sanitizeFn)),e},s._getDelegateConfig=function(){var e={};if(this.config)for(var t in this.config)this.constructor.Default[t]!==this.config[t]&&(e[t]=this.config[t]);return e},s._cleanTipClass=function(){var e=this.getTipElement(),t=e.getAttribute("class").match(we);null!==t&&t.length>0&&t.map(function(e){return e.trim()}).forEach(function(t){return e.classList.remove(t)})},s._handlePopperPlacementChange=function(e){var t=e.state;t&&(this.tip=t.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(t.placement)))},a.jQueryInterface=function(e){return this.each(function(){var t=E(this,"bs.tooltip"),n="object"==typeof e&&e;if((t||!/dispose|hide/.test(e))&&(t||(t=new a(this,n)),"string"==typeof e)){if(void 0===t[e])throw new TypeError('No method named "'+e+'"');t[e]()}})},i(a,null,[{key:"Default",get:function(){return Ae}},{key:"NAME",get:function(){return Fe}},{key:"DATA_KEY",get:function(){return"bs.tooltip"}},{key:"Event",get:function(){return ke}},{key:"EVENT_KEY",get:function(){return".bs.tooltip"}},{key:"DefaultType",get:function(){return Ce}}]),a}(M);F(function(){var e=b();if(e){var t=e.fn[Fe];e.fn[Fe]=Te.jQueryInterface,e.fn[Fe].Constructor=Te,e.fn[Fe].noConflict=function(){return e.fn[Fe]=t,Te.jQueryInterface}}});var De="popover",Se=new RegExp("(^|\\s)bs-popover\\S+","g"),Le=r({},Te.Default,{placement:"right",trigger:"click",content:"",template:''}),Be=r({},Te.DefaultType,{content:"(string|element|function)"}),Ne={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"},je=function(e){function t(){return e.apply(this,arguments)||this}o(t,e);var n=t.prototype;return n.isWithContent=function(){return this.getTitle()||this._getContent()},n.setContent=function(){var e=this.getTipElement();this.setElementContent(K.findOne(".popover-header",e),this.getTitle());var t=this._getContent();"function"==typeof t&&(t=t.call(this._element)),this.setElementContent(K.findOne(".popover-body",e),t),e.classList.remove("fade","show")},n._addAttachmentClass=function(e){this.getTipElement().classList.add("bs-popover-"+this.updateAttachment(e))},n._getContent=function(){return this._element.getAttribute("data-bs-content")||this.config.content},n._cleanTipClass=function(){var e=this.getTipElement(),t=e.getAttribute("class").match(Se);null!==t&&t.length>0&&t.map(function(e){return e.trim()}).forEach(function(t){return e.classList.remove(t)})},t.jQueryInterface=function(e){return this.each(function(){var n=E(this,"bs.popover"),i="object"==typeof e?e:null;if((n||!/dispose|hide/.test(e))&&(n||(n=new t(this,i),C(this,"bs.popover",n)),"string"==typeof e)){if(void 0===n[e])throw new TypeError('No method named "'+e+'"');n[e]()}})},i(t,null,[{key:"Default",get:function(){return Le}},{key:"NAME",get:function(){return De}},{key:"DATA_KEY",get:function(){return"bs.popover"}},{key:"Event",get:function(){return Ne}},{key:"EVENT_KEY",get:function(){return".bs.popover"}},{key:"DefaultType",get:function(){return Be}}]),t}(Te);F(function(){var e=b();if(e){var t=e.fn[De];e.fn[De]=je.jQueryInterface,e.fn[De].Constructor=je,e.fn[De].noConflict=function(){return e.fn[De]=t,je.jQueryInterface}}});var Pe="scrollspy",Ie={offset:10,method:"auto",target:""},$e={offset:"number",method:"string",target:"(string|element)"},Re=function(e){function t(t,n){var i;return(i=e.call(this,t)||this)._scrollElement="BODY"===t.tagName?window:t,i._config=i._getConfig(n),i._selector=i._config.target+" .nav-link, "+i._config.target+" .list-group-item, "+i._config.target+" .dropdown-item",i._offsets=[],i._targets=[],i._activeTarget=null,i._scrollHeight=0,O.on(i._scrollElement,"scroll.bs.scrollspy",function(e){return i._process(e)}),i.refresh(),i._process(),i}o(t,e);var n=t.prototype;return n.refresh=function(){var e=this,t=this._scrollElement===this._scrollElement.window?"offset":"position",n="auto"===this._config.method?t:this._config.method,i="position"===n?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),K.find(this._selector).map(function(e){var t=c(e),r=t?K.findOne(t):null;if(r){var o=r.getBoundingClientRect();if(o.width||o.height)return[Q[n](r).top+i,t]}return null}).filter(function(e){return e}).sort(function(e,t){return e[0]-t[0]}).forEach(function(t){e._offsets.push(t[0]),e._targets.push(t[1])})},n.dispose=function(){e.prototype.dispose.call(this),O.off(this._scrollElement,".bs.scrollspy"),this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},n._getConfig=function(e){if("string"!=typeof(e=r({},Ie,"object"==typeof e&&e?e:{})).target&&p(e.target)){var t=e.target.id;t||(t=l(Pe),e.target.id=t),e.target="#"+t}return m(Pe,e,$e),e},n._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},n._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},n._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},n._process=function(){var e=this._getScrollTop()+this._config.offset,t=this._getScrollHeight(),n=this._config.offset+t-this._getOffsetHeight();if(this._scrollHeight!==t&&this.refresh(),e>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&e0)return this._activeTarget=null,void this._clear();for(var r=this._offsets.length;r--;)this._activeTarget!==this._targets[r]&&e>=this._offsets[r]&&(void 0===this._offsets[r+1]||e li > .active":".active";t=(t=K.find(r,i))[t.length-1]}var o=null;if(t&&(o=O.trigger(t,"hide.bs.tab",{relatedTarget:this._element})),!(O.trigger(this._element,"show.bs.tab",{relatedTarget:t}).defaultPrevented||null!==o&&o.defaultPrevented)){this._activate(this._element,i);var a=function(){O.trigger(t,"hidden.bs.tab",{relatedTarget:e._element}),O.trigger(e._element,"shown.bs.tab",{relatedTarget:t})};n?this._activate(n,n.parentNode,a):a()}}},n._activate=function(e,t,n){var i=this,r=(!t||"UL"!==t.nodeName&&"OL"!==t.nodeName?K.children(t,".active"):K.find(":scope > li > .active",t))[0],o=n&&r&&r.classList.contains("fade"),a=function(){return i._transitionComplete(e,r,n)};if(r&&o){var s=f(r);r.classList.remove("show"),O.one(r,"transitionend",a),g(r,s)}else a()},n._transitionComplete=function(e,t,n){if(t){t.classList.remove("active");var i=K.findOne(":scope > .dropdown-menu .active",t.parentNode);i&&i.classList.remove("active"),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!1)}e.classList.add("active"),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!0),y(e),e.classList.contains("fade")&&e.classList.add("show"),e.parentNode&&e.parentNode.classList.contains("dropdown-menu")&&(e.closest(".dropdown")&&K.find(".dropdown-toggle").forEach(function(e){return e.classList.add("active")}),e.setAttribute("aria-expanded",!0)),n&&n()},t.jQueryInterface=function(e){return this.each(function(){var n=E(this,"bs.tab")||new t(this);if("string"==typeof e){if(void 0===n[e])throw new TypeError('No method named "'+e+'"');n[e]()}})},i(t,null,[{key:"DATA_KEY",get:function(){return"bs.tab"}}]),t}(M);O.on(document,"click.bs.tab.data-api",'[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',function(e){e.preventDefault(),(E(this,"bs.tab")||new Oe(this)).show()}),F(function(){var e=b();if(e){var t=e.fn.tab;e.fn.tab=Oe.jQueryInterface,e.fn.tab.Constructor=Oe,e.fn.tab.noConflict=function(){return e.fn.tab=t,Oe.jQueryInterface}}});var Me={animation:"boolean",autohide:"boolean",delay:"number"},He={animation:!0,autohide:!0,delay:5e3},qe=function(e){function t(t,n){var i;return(i=e.call(this,t)||this)._config=i._getConfig(n),i._timeout=null,i._setListeners(),i}o(t,e);var n=t.prototype;return n.show=function(){var e=this;if(!O.trigger(this._element,"show.bs.toast").defaultPrevented){this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");var t=function(){e._element.classList.remove("showing"),e._element.classList.add("show"),O.trigger(e._element,"shown.bs.toast"),e._config.autohide&&(e._timeout=setTimeout(function(){e.hide()},e._config.delay))};if(this._element.classList.remove("hide"),y(this._element),this._element.classList.add("showing"),this._config.animation){var n=f(this._element);O.one(this._element,"transitionend",t),g(this._element,n)}else t()}},n.hide=function(){var e=this;if(this._element.classList.contains("show")&&!O.trigger(this._element,"hide.bs.toast").defaultPrevented){var t=function(){e._element.classList.add("hide"),O.trigger(e._element,"hidden.bs.toast")};if(this._element.classList.remove("show"),this._config.animation){var n=f(this._element);O.one(this._element,"transitionend",t),g(this._element,n)}else t()}},n.dispose=function(){this._clearTimeout(),this._element.classList.contains("show")&&this._element.classList.remove("show"),O.off(this._element,"click.dismiss.bs.toast"),e.prototype.dispose.call(this),this._config=null},n._getConfig=function(e){return e=r({},He,Q.getDataAttributes(this._element),"object"==typeof e&&e?e:{}),m("toast",e,this.constructor.DefaultType),e},n._setListeners=function(){var e=this;O.on(this._element,"click.dismiss.bs.toast",'[data-bs-dismiss="toast"]',function(){return e.hide()})},n._clearTimeout=function(){clearTimeout(this._timeout),this._timeout=null},t.jQueryInterface=function(e){return this.each(function(){var n=E(this,"bs.toast");if(n||(n=new t(this,"object"==typeof e&&e)),"string"==typeof e){if(void 0===n[e])throw new TypeError('No method named "'+e+'"');n[e](this)}})},i(t,null,[{key:"DefaultType",get:function(){return Me}},{key:"Default",get:function(){return He}},{key:"DATA_KEY",get:function(){return"bs.toast"}}]),t}(M);return F(function(){var e=b();if(e){var t=e.fn.toast;e.fn.toast=qe.jQueryInterface,e.fn.toast.Constructor=qe,e.fn.toast.noConflict=function(){return e.fn.toast=t,qe.jQueryInterface}}}),{Alert:q,Button:z,Carousel:J,Collapse:ne,Dropdown:he,Modal:me,Popover:je,ScrollSpy:Re,Tab:Oe,Toast:qe,Tooltip:Te}}),function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e("object"==typeof exports?require("jquery"):jQuery)}(function(e){function t(t,i,r){i={content:{message:"object"==typeof i?i.message:i,title:i.title?i.title:"",icon:i.icon?i.icon:"",url:i.url?i.url:"#",target:i.target?i.target:"-"}},r=e.extend(!0,{},i,r),this.settings=e.extend(!0,{},n,r),this._defaults=n,"-"==this.settings.content.target&&(this.settings.content.target=this.settings.url_target),this.animations={start:"webkitAnimationStart oanimationstart MSAnimationStart animationstart",end:"webkitAnimationEnd oanimationend MSAnimationEnd animationend"},"number"==typeof this.settings.offset&&(this.settings.offset={x:this.settings.offset,y:this.settings.offset}),this.init()}var n={element:"body",position:null,type:"info",allow_dismiss:!0,newest_on_top:!1,showProgressbar:!1,placement:{from:"top",align:"right"},offset:20,spacing:10,z_index:1031,delay:5e3,timer:1e3,url_target:"_blank",mouse_over:null,animate:{enter:"animated fadeInDown",exit:"animated fadeOutUp"},onShow:null,onShown:null,onClose:null,onClosed:null,icon_type:"class",template:''};String.format=function(){for(var e=arguments[0],t=1;t .progress-bar').removeClass("progress-bar-"+e.settings.type),e.settings.type=i[t],this.$ele.addClass("alert-"+i[t]).find('[data-notify="progressbar"] > .progress-bar').addClass("progress-bar-"+i[t]);break;case"icon":var r=this.$ele.find('[data-notify="icon"]');"class"==e.settings.icon_type.toLowerCase()?r.removeClass(e.settings.content.icon).addClass(i[t]):(r.is("img")||r.find("img"),r.attr("src",i[t]));break;case"progress":var o=e.settings.delay-e.settings.delay*(i[t]/100);this.$ele.data("notify-delay",o),this.$ele.find('[data-notify="progressbar"] > div').attr("aria-valuenow",i[t]).css("width",i[t]+"%");break;case"url":this.$ele.find('[data-notify="url"]').attr("href",i[t]);break;case"target":this.$ele.find('[data-notify="url"]').attr("target",i[t]);break;default:this.$ele.find('[data-notify="'+t+'"]').html(i[t])}var a=this.$ele.outerHeight()+parseInt(e.settings.spacing)+parseInt(e.settings.offset.y);e.reposition(a)},close:function(){e.close()}}},buildNotify:function(){var t=this.settings.content;this.$ele=e(String.format(this.settings.template,this.settings.type,t.title,t.message,t.url,t.target)),this.$ele.attr("data-notify-position",this.settings.placement.from+"-"+this.settings.placement.align),this.settings.allow_dismiss||this.$ele.find('[data-notify="dismiss"]').css("display","none"),(this.settings.delay<=0&&!this.settings.showProgressbar||!this.settings.showProgressbar)&&this.$ele.find('[data-notify="progressbar"]').remove()},setIcon:function(){"class"==this.settings.icon_type.toLowerCase()?this.$ele.find('[data-notify="icon"]').addClass(this.settings.content.icon):this.$ele.find('[data-notify="icon"]').is("img")?this.$ele.find('[data-notify="icon"]').attr("src",this.settings.content.icon):this.$ele.find('[data-notify="icon"]').append('Notify Icon')},styleDismiss:function(){this.$ele.find('[data-notify="dismiss"]').css({position:"absolute",right:"10px",top:"5px",zIndex:this.settings.z_index+2})},styleURL:function(){this.$ele.find('[data-notify="url"]').css({backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)",height:"100%",left:"0px",position:"absolute",top:"0px",width:"100%",zIndex:this.settings.z_index+1})},placement:function(){var t=this,n=this.settings.offset.y,i={display:"inline-block",margin:"0px auto",position:this.settings.position?this.settings.position:"body"===this.settings.element?"fixed":"absolute",transition:"all .5s ease-in-out",zIndex:this.settings.z_index},r=!1,o=this.settings;switch(e('[data-notify-position="'+this.settings.placement.from+"-"+this.settings.placement.align+'"]:not([data-closing="true"])').each(function(){return n=Math.max(n,parseInt(e(this).css(o.placement.from))+parseInt(e(this).outerHeight())+parseInt(o.spacing))}),1==this.settings.newest_on_top&&(n=this.settings.offset.y),i[this.settings.placement.from]=n+"px",this.settings.placement.align){case"left":case"right":i[this.settings.placement.align]=this.settings.offset.x+"px";break;case"center":i.left=0,i.right=0}this.$ele.css(i).addClass(this.settings.animate.enter),e.each(Array("webkit","moz","o","ms",""),function(e,n){t.$ele[0].style[n+"AnimationIterationCount"]=1}),e(this.settings.element).append(this.$ele),1==this.settings.newest_on_top&&(n=parseInt(n)+parseInt(this.settings.spacing)+this.$ele.outerHeight(),this.reposition(n)),e.isFunction(t.settings.onShow)&&t.settings.onShow.call(this.$ele),this.$ele.one(this.animations.start,function(e){r=!0}).one(this.animations.end,function(n){e.isFunction(t.settings.onShown)&&t.settings.onShown.call(this)}),setTimeout(function(){r||e.isFunction(t.settings.onShown)&&t.settings.onShown.call(this)},600)},bind:function(){var t=this;if(this.$ele.find('[data-notify="dismiss"]').on("click",function(){t.close()}),this.$ele.mouseover(function(t){e(this).data("data-hover","true")}).mouseout(function(t){e(this).data("data-hover","false")}),this.$ele.data("data-hover","false"),this.settings.delay>0){t.$ele.data("notify-delay",t.settings.delay);var n=setInterval(function(){var e=parseInt(t.$ele.data("notify-delay"))-t.settings.timer;if("false"===t.$ele.data("data-hover")&&"pause"==t.settings.mouse_over||"pause"!=t.settings.mouse_over){var i=(t.settings.delay-e)/t.settings.delay*100;t.$ele.data("notify-delay",e),t.$ele.find('[data-notify="progressbar"] > div').attr("aria-valuenow",i).css("width",i+"%")}e<=-t.settings.timer&&(clearInterval(n),t.close())},t.settings.timer)}},close:function(){var t=this,n=parseInt(this.$ele.css(this.settings.placement.from)),i=!1;this.$ele.data("closing","true").addClass(this.settings.animate.exit),t.reposition(n),e.isFunction(t.settings.onClose)&&t.settings.onClose.call(this.$ele),this.$ele.one(this.animations.start,function(e){i=!0}).one(this.animations.end,function(n){e(this).remove(),e.isFunction(t.settings.onClosed)&&t.settings.onClosed.call(this)}),setTimeout(function(){i||(t.$ele.remove(),t.settings.onClosed&&t.settings.onClosed(t.$ele))},600)},reposition:function(t){var n=this,i='[data-notify-position="'+this.settings.placement.from+"-"+this.settings.placement.align+'"]:not([data-closing="true"])',r=this.$ele.nextAll(i);1==this.settings.newest_on_top&&(r=this.$ele.prevAll(i)),r.each(function(){e(this).css(n.settings.placement.from,t),t=parseInt(t)+parseInt(n.settings.spacing)+e(this).outerHeight()})}}),e.notify=function(e,n){return new t(this,e,n).notify},e.notifyDefaults=function(t){return n=e.extend(!0,{},n,t)},e.notifyClose=function(t){void 0===t||"all"==t?e("[data-notify]").find('[data-notify="dismiss"]').trigger("click"):e('[data-notify-position="'+t+'"]').find('[data-notify="dismiss"]').trigger("click")}});var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(){var e=/\blang(?:uage)?-([\w-]+)\b/i,t=0,n=_self.Prism={manual:_self.Prism&&_self.Prism.manual,disableWorkerMessageHandler:_self.Prism&&_self.Prism.disableWorkerMessageHandler,util:{encode:function(e){return e instanceof i?new i(e.type,n.util.encode(e.content),e.alias):"Array"===n.util.type(e)?e.map(n.util.encode):e.replace(/&/g,"&").replace(/e.length)return;if(!(F instanceof l)){if(g&&y!=t.length-1){if(f.lastIndex=b,!(k=f.exec(e)))break;for(var w=k.index+(p?k[1].length:0),_=k.index+k[0].length,C=y,E=b,A=t.length;C"+o.content+""},!_self.document)return _self.addEventListener&&(n.disableWorkerMessageHandler||_self.addEventListener("message",function(e){var t=JSON.parse(e.data),i=t.language,r=t.code,o=t.immediateClose;_self.postMessage(n.highlight(r,n.languages[i],i)),o&&_self.close()},!1)),_self.Prism;var r=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return r&&(n.filename=r.src,n.manual||r.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),_self.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism),Prism.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),Prism.languages.xml=Prism.languages.markup,Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},Prism.languages.css.atrule.inside.rest=Prism.languages.css,Prism.languages.markup&&(Prism.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:Prism.languages.css,alias:"language-css",greedy:!0}}),Prism.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:Prism.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:Prism.languages.css}},alias:"language-css"}},Prism.languages.markup.tag)),Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(?:true|false)\b/,function:/[a-z0-9_]+(?=\()/i,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/,number:/\b(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|NaN|Infinity)\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][+-]?\d+)?/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})\]]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"},constant:/\b[A-Z][A-Z\d_]*\b/}),Prism.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|\${[^}]+}|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\${[^}]+}/,inside:{"interpolation-punctuation":{pattern:/^\${|}$/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}}}),Prism.languages.javascript["template-string"].inside.interpolation.inside.rest=Prism.languages.javascript,Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:Prism.languages.javascript,alias:"language-javascript",greedy:!0}}),Prism.languages.js=Prism.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,i=t.getAttribute("data-src"),r=t,o=/\blang(?:uage)?-([\w-]+)\b/i;r&&!o.test(r.className);)r=r.parentNode;if(r&&(n=(t.className.match(o)||[,""])[1]),!n){var a=(i.match(/\.(\w+)$/)||[,""])[1];n=e[a]||a}var s=document.createElement("code");s.className="language-"+n,t.textContent="",s.textContent="Loading…",t.appendChild(s);var l=new XMLHttpRequest;l.open("GET",i,!0),l.onreadystatechange=function(){4==l.readyState&&(l.status<400&&l.responseText?(s.textContent=l.responseText,Prism.highlightElement(s)):400<=l.status?s.textContent="✖ Error "+l.status+" while fetching file: "+l.statusText:s.textContent="✖ Error: File does not exist or is empty")},l.send(null)}),Prism.plugins.toolbar&&Prism.plugins.toolbar.registerButton("download-file",function(e){var t=e.element.parentNode;if(t&&/pre/i.test(t.nodeName)&&t.hasAttribute("data-src")&&t.hasAttribute("data-download-link")){var n=t.getAttribute("data-src"),i=document.createElement("a");return i.textContent=t.getAttribute("data-download-link-label")||"Download",i.setAttribute("download",""),i.href=n,i}})},document.addEventListener("DOMContentLoaded",self.Prism.fileHighlight)),jQuery.trumbowyg={langs:{en:{viewHTML:"View HTML",undo:"Undo",redo:"Redo",formatting:"Formatting",p:"Paragraph",blockquote:"Quote",code:"Code",header:"Header",bold:"Bold",italic:"Italic",strikethrough:"Stroke",underline:"Underline",strong:"Strong",em:"Emphasis",del:"Deleted",superscript:"Superscript",subscript:"Subscript",unorderedList:"Unordered list",orderedList:"Ordered list",insertImage:"Insert Image",link:"Link",createLink:"Insert link",unlink:"Remove link",justifyLeft:"Align Left",justifyCenter:"Align Center",justifyRight:"Align Right",justifyFull:"Align Justify",horizontalRule:"Insert horizontal rule",removeformat:"Remove format",fullscreen:"Fullscreen",close:"Close",submit:"Confirm",reset:"Cancel",required:"Required",description:"Description",title:"Title",text:"Text",target:"Target",width:"Width"}},plugins:{},svgPath:null,hideButtonTexts:null},Object.defineProperty(jQuery.trumbowyg,"defaultOptions",{value:{lang:"en",fixedBtnPane:!1,fixedFullWidth:!1,autogrow:!1,autogrowOnEnter:!1,imageWidthModalEdit:!1,prefix:"trumbowyg-",semantic:!0,resetCss:!1,removeformatPasted:!1,tagsToRemove:[],tagsToKeep:["hr","img","embed","iframe","input"],btns:[["viewHTML"],["undo","redo"],["formatting"],["strong","em","del"],["superscript","subscript"],["link"],["insertImage"],["justifyLeft","justifyCenter","justifyRight","justifyFull"],["unorderedList","orderedList"],["horizontalRule"],["removeformat"],["fullscreen"]],btnsDef:{},inlineElementsSelector:"a,abbr,acronym,b,caption,cite,code,col,dfn,dir,dt,dd,em,font,hr,i,kbd,li,q,span,strikeout,strong,sub,sup,u",pasteHandlers:[],plugins:{},urlProtocol:!1,minimalLinks:!1},writable:!1,enumerable:!0,configurable:!1}),function(e,t,n,i){"use strict";var r="tbwconfirm",o="tbwcancel";i.fn.trumbowyg=function(e,t){var n="trumbowyg";if(e===Object(e)||!e)return this.each(function(){i(this).data(n)||i(this).data(n,new a(this,e))});if(1===this.length)try{var r=i(this).data(n);switch(e){case"execCmd":return r.execCmd(t.cmd,t.param,t.forceCss);case"openModal":return r.openModal(t.title,t.content);case"closeModal":return r.closeModal();case"openModalInsert":return r.openModalInsert(t.title,t.fields,t.callback);case"saveRange":return r.saveRange();case"getRange":return r.range;case"getRangeText":return r.getRangeText();case"restoreRange":return r.restoreRange();case"enable":return r.setDisabled(!1);case"disable":return r.setDisabled(!0);case"toggle":return r.toggle();case"destroy":return r.destroy();case"empty":return r.empty();case"html":return r.html(t)}}catch(e){}return!1};var a=function(r,o){var a=this,s="trumbowyg-icons",l=i.trumbowyg;a.doc=r.ownerDocument||n,a.$ta=i(r),a.$c=i(r),null!=(o=o||{}).lang||null!=l.langs[o.lang]?a.lang=i.extend(!0,{},l.langs.en,l.langs[o.lang]):a.lang=l.langs.en,a.hideButtonTexts=null!=l.hideButtonTexts?l.hideButtonTexts:o.hideButtonTexts;var u=null!=l.svgPath?l.svgPath:o.svgPath;if(a.hasSvg=!1!==u,a.svgPath=a.doc.querySelector("base")?t.location.href.split("#")[0]:"",0===i("#"+s,a.doc).length&&!1!==u){if(null==u){for(var c=n.getElementsByTagName("script"),d=0;d",{class:n+"box "+n+"editor-visible "+n+e.o.lang+" trumbowyg"}),e.isTextarea=e.$ta.is("textarea"),e.isTextarea?(r=e.$ta.val(),e.$ed=i("
"),e.$box.insertAfter(e.$ta).append(e.$ed,e.$ta)):(e.$ed=e.$ta,r=e.$ed.html(),e.$ta=i("',"
"].join("\n")),i=n.find(".language"),r=n.find(".code");n.on("tbwconfirm",function(){e.restoreRange(),e.execCmd("insertHTML",function(e,n){return['
',''+t.highlight(e,t.languages[n])+"","
"].join("")}(r.val(),i.val())),e.execCmd("insertHTML","


"),e.closeModal()}),n.on("tbwcancel",function(){e.closeModal()})}}}var i={};e.extend(!0,e.trumbowyg,{langs:{en:{highlight:"Code syntax highlight"}},plugins:{highlight:{init:function(t){t.o.plugins.highlight=e.extend(!0,{},i,t.o.plugins.highlight||{}),t.addBtnDef("highlight",n(t))}}}})}(jQuery,Prism),function(e){"use strict";e.extend(!0,e.trumbowyg,{langs:{de:{history:{redo:"Wiederholen",undo:"Rückgängig"}},en:{history:{redo:"Redo",undo:"Undo"}},da:{history:{redo:"Annuller fortryd",undo:"Fortryd"}},fr:{history:{redo:"Annuler",undo:"Rétablir"}},zh_tw:{history:{redo:"重做",undo:"復原"}}},plugins:{history:{init:function(t){t.o.plugins.history=e.extend(!0,{_stack:[],_index:-1,_focusEl:void 0},t.o.plugins.history||{});var n={title:t.lang.history.redo,ico:"redo",key:"Y",fn:function(){if(t.o.plugins.history._index0){t.o.plugins.history._index-=1;var e=t.o.plugins.history._index,n=t.o.plugins.history._stack[e];t.execCmd("html",n),t.o.plugins.history._stack[e]=t.$ed.html(),a(),r()}}},r=function(){var e=t.o.plugins.history._index,n=t.o.plugins.history._stack.length,i=0!==n&&e!==n-1;o("historyUndo",e>0),o("historyRedo",i)},o=function(e,n){var i=t.$box.find(".trumbowyg-"+e+"-button");n?i.removeClass("trumbowyg-disable"):i.hasClass("trumbowyg-disable")||i.addClass("trumbowyg-disable")},a=function(){var e=t.doc.getSelection().focusNode,n=t.doc.createRange();e.childNodes.length>0&&(n.setStartAfter(e.childNodes[e.childNodes.length-1]),n.setEndAfter(e.childNodes[e.childNodes.length-1]),t.doc.getSelection().removeAllRanges(),t.doc.getSelection().addRange(n))};t.$c.on("tbwinit tbwchange",function(){var n,i,o=t.o.plugins.history._index,a=t.o.plugins.history._stack,s=a.slice(-1)[0]||"

",l=a[o],u=t.$ed.html(),c=t.doc.getSelection().focusNode,d="",f=t.o.plugins.history._focusEl;n=e("
"+s+"
").find("*").map(function(){return this.localName}),i=e("
"+u+"
").find("*").map(function(){return this.localName}),c&&(t.o.plugins.history._focusEl=c,d=c.outerHTML||c.textContent),u!==l&&(d.slice(-1).match(/\s/)||!function(e,t){if(e===t)return!0;if(null==e||null==t)return!1;if(e.length!==t.length)return!1;for(var n=0;n")[0];return n.range.deleteContents(),n.range.insertNode(r),!0})}};n.addBtnDef("insertAudio",i)}}}})}(jQuery),function(e){"use strict";function t(t){var n=[];return e.each(["0.9","normal","1.5","2.0"],function(i,r){t.addBtnDef("lineheight_"+r,{text:''+t.lang.lineheights[r]+"",hasIcon:!1,fn:function(){if(t.saveRange(),""!==t.getRangeText().replace(/\s/g,""))try{var n=function(){var e,t=null;return window.getSelection?(e=window.getSelection()).rangeCount&&1!==(t=e.getRangeAt(0).commonAncestorContainer).nodeType&&(t=t.parentNode):(e=document.selection)&&"Control"!==e.type&&(t=e.createRange().parentElement()),t}();e(n).css("lineHeight",r)}catch(e){}}}),n.push("lineheight_"+r)}),n}e.extend(!0,e.trumbowyg,{langs:{en:{lineheight:"Line height",lineheights:{.9:"Small",normal:"Regular",1.5:"Large","2.0":"Extra large"}},da:{lineheight:"Linjehøjde",lineheights:{.9:"Lille",normal:"Normal",1.5:"Stor","2.0":"Ekstra stor"}},fr:{lineheight:"Hauteur de ligne",lineheights:{.9:"Petit",normal:"Regular",1.5:"Grand","2.0":"Très grand"}},nl:{lineheight:"Regelhoogte",lineheights:{.9:"Klein",normal:"Normaal",1.5:"Groot","2.0":"Extra groot"}},tr:{lineheight:"Satır yüksekliği",lineheights:{.9:"Küçük",normal:"Normal",1.5:"Büyük","2.0":"Çok Büyük"}},zh_tw:{lineheight:"文字間距",lineheights:{.9:"小",normal:"正常",1.5:"大","2.0":"特大"}}}}),e.extend(!0,e.trumbowyg,{plugins:{lineheight:{init:function(e){e.addBtnDef("lineheight",{dropdown:t(e)})}}}})}(jQuery),function(e){"use strict";var t={enabled:!0,endpoints:["https://noembed.com/embed?nowrap=on","https://api.maxmade.nl/url2iframe/embed"]};e.extend(!0,e.trumbowyg,{plugins:{pasteEmbed:{init:function(n){n.o.plugins.pasteEmbed=e.extend(!0,{},t,n.o.plugins.pasteEmbed||{}),n.o.plugins.pasteEmbed.enabled&&n.pasteHandlers.push(function(t){try{var i=(t.originalEvent||t).clipboardData.getData("Text"),r=n.o.plugins.pasteEmbed.endpoints,o=null;if(i.startsWith("http")){t.stopPropagation(),t.preventDefault();var a={url:i.trim()},s="",l=0;o&&o.transport&&o.transport.abort(),o=e.ajax({crossOrigin:!0,url:r[l],type:"GET",data:a,cache:!1,dataType:"jsonp",success:function(e){e.html?(l=0,s=e.html):l+=1},error:function(){l+=1},complete:function(){0===s.length&&l",{href:i,text:i}).prop("outerHTML")),s.length>0&&(l=0,n.execCmd("insertHTML",s))}})}}catch(e){}})}}}})}(jQuery),function(e){"use strict";e.extend(!0,e.trumbowyg,{plugins:{pasteImage:{init:function(e){e.pasteHandlers.push(function(t){try{for(var n,i=(t.originalEvent||t).clipboardData.items,r=i.length-1;r>=0;r-=1)i[r].type.match(/^image\//)&&((n=new FileReader).onloadend=function(t){e.execCmd("insertImage",t.target.result,!1,!0)},n.readAsDataURL(i[r].getAsFile()))}catch(e){}})}}}})}(jQuery),function(e){"use strict";function t(){var t=null;if(document.selection)t=document.selection.createRange().parentElement();else{var n=window.getSelection();n.rangeCount>0&&(t=n.getRangeAt(0).startContainer.parentNode)}var i=e(t).contents().closest("pre").length,r=e(t).contents().closest("code").length;i&&r?e(t).contents().unwrap("code").unwrap("pre"):i?e(t).contents().unwrap("pre"):r&&e(t).contents().unwrap("code")}e.extend(!0,e.trumbowyg,{langs:{en:{preformatted:"Code sample
"},da:{preformatted:"Præformateret 
"},fr:{preformatted:"Exemple de code 
"},it:{preformatted:"Codice 
"},zh_cn:{preformatted:"代码示例 
"},ru:{preformatted:"Пример кода 
"},ja:{preformatted:"コードサンプル 
"},tr:{preformatted:"Kod örneği 
"},zh_tw:{preformatted:"代碼範例 
"}},plugins:{preformatted:{init:function(e){var n={fn:function(){e.saveRange();var n=e.getRangeText();if(""!==n.replace(/\s/g,""))try{var i=function(){var e,t=null;return window.getSelection?(e=window.getSelection()).rangeCount&&1!==(t=e.getRangeAt(0).commonAncestorContainer).nodeType&&(t=t.parentNode):(e=document.selection)&&"Control"!==e.type&&(t=e.createRange().parentElement()),t}().tagName.toLowerCase();if("code"===i||"pre"===i)return t();e.execCmd("insertHTML","
"+function(e){var t=document.createElement("DIV");return t.innerHTML=e,t.textContent||t.innerText||""}(n)+"
")}catch(e){}},tag:"pre"};e.addBtnDef("preformatted",n)}}}})}(jQuery),function(e){"use strict";var t={rows:8,columns:8,styler:"table"};e.extend(!0,e.trumbowyg,{langs:{en:{table:"Insert table",tableAddRow:"Add row",tableAddColumn:"Add column",tableDeleteRow:"Delete row",tableDeleteColumn:"Delete column",tableDestroy:"Delete table",error:"Error"},da:{table:"Indsæt tabel",tableAddRow:"Tilføj række",tableAddColumn:"Tilføj kolonne",tableDeleteRow:"Slet række",tableDeleteColumn:"Slet kolonne",tableDestroy:"Slet tabel",error:"Fejl"},de:{table:"Tabelle einfügen",tableAddRow:"Zeile hinzufügen",tableAddColumn:"Spalte hinzufügen",tableDeleteRow:"Zeile löschen",tableDeleteColumn:"Spalte löschen",tableDestroy:"Tabelle löschen",error:"Error"},sk:{table:"Vytvoriť tabuľky",tableAddRow:"Pridať riadok",tableAddColumn:"Pridať stĺpec",error:"Chyba"},fr:{table:"Insérer un tableau",tableAddRow:"Ajouter des lignes",tableAddColumn:"Ajouter des colonnes",error:"Erreur"},cs:{table:"Vytvořit příkaz Table",tableAddRow:"Přidat řádek",tableAddColumn:"Přidat sloupec",error:"Chyba"},ru:{table:"Вставить таблицу",tableAddRow:"Добавить строку",tableAddColumn:"Добавить столбец",tableDeleteRow:"Удалить строку",tableDeleteColumn:"Удалить столбец",tableDestroy:"Удалить таблицу",error:"Ошибка"},ja:{table:"表の挿入",tableAddRow:"行の追加",tableAddColumn:"列の追加",error:"エラー"},tr:{table:"Tablo ekle",tableAddRow:"Satır ekle",tableAddColumn:"Kolon ekle",error:"Hata"},zh_tw:{table:"插入表格",tableAddRow:"加入行",tableAddColumn:"加入列",tableDeleteRow:"刪除行",tableDeleteColumn:"刪除列",tableDestroy:"刪除表格",error:"錯誤"},id:{table:"Sisipkan tabel",tableAddRow:"Sisipkan baris",tableAddColumn:"Sisipkan kolom",tableDeleteRow:"Hapus baris",tableDeleteColumn:"Hapus kolom",tableDestroy:"Hapus tabel",error:"Galat"}},plugins:{table:{init:function(n){n.o.plugins.table=e.extend(!0,{},t,n.o.plugins.table||{});var i={fn:function(){n.saveRange();var t="table",i=n.o.prefix+"dropdown",a={class:i+"-"+t+" "+i+" "+n.o.prefix+"fixed-top"};a["data-"+i]=t;var s=e("
",a);if(0===n.$box.find("."+i+"-"+t).length?n.$box.append(s.hide()):s=n.$box.find("."+i+"-"+t),s.html(""),n.$box.find("."+n.o.prefix+"table-button").hasClass(n.o.prefix+"active-button"))s.append(n.buildSubBtn("tableAddRow")),s.append(n.buildSubBtn("tableAddColumn")),s.append(n.buildSubBtn("tableDeleteRow")),s.append(n.buildSubBtn("tableDeleteColumn")),s.append(n.buildSubBtn("tableDestroy"));else{for(var l=e("
"),u=0;u").appendTo(l),d=0;d").appendTo(c);l.find("td").on("mouseover",r),l.find("td").on("mousedown",o),s.append(l),s.append(e("
1x1
"))}n.dropdown(t)}},r=function(t){var n=e(t.target).parents("table"),i=this.cellIndex,r=this.parentNode.rowIndex;n.find("td").removeClass("active");for(var o=0;o<=r;o+=1)for(var a=0;a<=i;a+=1)n.find("tr:nth-of-type("+(o+1)+")").find("td:nth-of-type("+(a+1)+")").addClass("active");n.next("center").html(i+1+"x"+(r+1))},o=function(t){n.saveRange();var i=e("
");n.o.plugins.table.styler&&i.attr("class",n.o.plugins.table.styler);for(var r=(e(t.target),this.cellIndex),o=this.parentNode.rowIndex,a=0;a<=o;a+=1)for(var s=e("").appendTo(i),l=0;l<=r;l+=1)e("").appendTo(s);n.range.deleteContents(),n.range.insertNode(i[0]),n.$c.trigger("tbwchange")},a={title:n.lang.tableAddRow,text:n.lang.tableAddRow,ico:"row-below",fn:function(){n.saveRange();var t=n.doc.getSelection().focusNode,i=e(t).closest("table");if(i.length>0){for(var r=e(""),o=0;o").appendTo(r);r.appendTo(i)}return!0}},s={title:n.lang.tableAddColumn,text:n.lang.tableAddColumn,ico:"col-right",fn:function(){n.saveRange();var t=n.doc.getSelection().focusNode,i=e(t).closest("table");return i.length>0&&e(i).find("tr").each(function(){e(this).find("td:last").after("")}),!0}},l={title:n.lang.tableDestroy,text:n.lang.tableDestroy,ico:"table-delete",fn:function(){n.saveRange();var t=n.doc.getSelection().focusNode;return e(t).closest("table").remove(),!0}},u={title:n.lang.tableDeleteRow,text:n.lang.tableDeleteRow,ico:"row-delete",fn:function(){n.saveRange();var t=n.doc.getSelection().focusNode;return e(t).closest("tr").remove(),!0}},c={title:n.lang.tableDeleteColumn,text:n.lang.tableDeleteColumn,ico:"col-delete",fn:function(){n.saveRange();var t=n.doc.getSelection().focusNode,i=e(t).closest("table"),r=e(t).closest("td").index();return e(i).find("tr").each(function(){e(this).find("td:eq("+r+")").remove()}),!0}};n.addBtnDef("table",i),n.addBtnDef("tableAddRow",a),n.addBtnDef("tableAddColumn",s),n.addBtnDef("tableDeleteRow",u),n.addBtnDef("tableDeleteColumn",c),n.addBtnDef("tableDestroy",l)}}}})}(jQuery),function(e){"use strict";function t(e,n){var i=n.shift(),r=n;if(null!==e){if(0===r.length)return e[i];if("object"==typeof e)return t(e[i],r)}return e}var n={serverPath:"",fileFieldName:"fileToUpload",data:[],headers:{},xhrFields:{},urlPropertyName:"file",statusPropertyName:"success",success:void 0,error:void 0,imageWidthModalEdit:!1};(function(){if(!e.trumbowyg.addedXhrProgressEvent){var t=e.ajaxSettings.xhr;e.ajaxSetup({xhr:function(){var e=t(),n=this;return e&&"object"==typeof e.upload&&void 0!==n.progressUpload&&e.upload.addEventListener("progress",function(e){n.progressUpload(e)},!1),e}}),e.trumbowyg.addedXhrProgressEvent=!0}})(),e.extend(!0,e.trumbowyg,{langs:{en:{upload:"Upload",file:"File",uploadError:"Error"},da:{upload:"Upload",file:"Fil",uploadError:"Fejl"},sk:{upload:"Nahrať",file:"Súbor",uploadError:"Chyba"},fr:{upload:"Envoi",file:"Fichier",uploadError:"Erreur"},cs:{upload:"Nahrát obrázek",file:"Soubor",uploadError:"Chyba"},zh_cn:{upload:"上传",file:"文件",uploadError:"错误"},zh_tw:{upload:"上傳",file:"文件",uploadError:"錯誤"},ru:{upload:"Загрузка",file:"Файл",uploadError:"Ошибка"},ja:{upload:"アップロード",file:"ファイル",uploadError:"エラー"},pt_br:{upload:"Enviar do local",file:"Arquivo",uploadError:"Erro"},tr:{upload:"Yükle",file:"Dosya",uploadError:"Hata"}},plugins:{upload:{init:function(i){i.o.plugins.upload=e.extend(!0,{},n,i.o.plugins.upload||{});var r={fn:function(){i.saveRange();var n,r=i.o.prefix,o={file:{type:"file",required:!0,attributes:{accept:"image/*"}},alt:{label:"description",value:i.getRangeText()}};i.o.plugins.upload.imageWidthModalEdit&&(o.width={value:""});var a=i.openModalInsert(i.lang.upload,o,function(o){var s=new FormData;s.append(i.o.plugins.upload.fileFieldName,n),i.o.plugins.upload.data.map(function(e){s.append(e.name,e.value)}),e.map(o,function(e,t){"file"!==t&&s.append(t,e)}),0===e("."+r+"progress",a).length&&e("."+r+"modal-title",a).after(e("
",{class:r+"progress"}).append(e("
",{class:r+"progress-bar"}))),e.ajax({url:i.o.plugins.upload.serverPath,headers:i.o.plugins.upload.headers,xhrFields:i.o.plugins.upload.xhrFields,type:"POST",data:s,cache:!1,dataType:"json",processData:!1,contentType:!1,progressUpload:function(t){e("."+r+"progress-bar").css("width",Math.round(100*t.loaded/t.total)+"%")},success:function(n){if(i.o.plugins.upload.success)i.o.plugins.upload.success(n,i,a,o);else if(t(n,i.o.plugins.upload.statusPropertyName.split("."))){var r=t(n,i.o.plugins.upload.urlPropertyName.split("."));i.execCmd("insertImage",r,!1,!0);var s=e('img[src="'+r+'"]:not([alt])',i.$box);s.attr("alt",o.alt),i.o.imageWidthModalEdit&&parseInt(o.width)>0&&s.attr({width:o.width}),setTimeout(function(){i.closeModal()},250),i.$c.trigger("tbwuploadsuccess",[i,n,r])}else i.addErrorOnModalField(e("input[type=file]",a),i.lang[n.message]),i.$c.trigger("tbwuploaderror",[i,n])},error:i.o.plugins.upload.error||function(){i.addErrorOnModalField(e("input[type=file]",a),i.lang.uploadError),i.$c.trigger("tbwuploaderror",[i])}})});e("input[type=file]").on("change",function(e){try{n=e.target.files[0]}catch(t){n=e.target.value}})}};i.addBtnDef("upload",r)}}}})}(jQuery),function(e,t,n){var i,r=e.getElementsByTagName(t)[0];e.getElementById(n)||((i=e.createElement(t)).id=n,i.src="https://connect.facebook.net/en_US/sdk.js",r.parentNode.insertBefore(i,r))}(document,"script","facebook-jssdk"),function(e,t,n,i,r,o){(i=e.gapi||(e.gapi={})).analytics={q:[],ready:function(e){this.q.push(e)}},r=t.createElement(n),o=t.getElementsByTagName(n)[0],r.src="https://apis.google.com/js/platform.js",o.parentNode.insertBefore(r,o),r.onload=function(){i.load("analytics")}}(window,document,"script"),function(e,t,n){var i,r=e.getElementsByTagName(t)[0];e.getElementById(n)||((i=e.createElement(t)).id=n,i.src="https://connect.facebook.net/vi_VN/sdk/xfbml.customerchat.js",r.parentNode.insertBefore(i,r))}(document,"script","facebook-jssdk"),function(e){e.fn.qrcode=function(t){var n;function i(e){this.mode=n,this.data=e}function r(e,t){this.typeNumber=e,this.errorCorrectLevel=t,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}function o(e,t){if(null==e.length)throw Error(e.length+"/"+t);for(var n=0;ne||this.moduleCount<=e||0>t||this.moduleCount<=t)throw Error(e+","+t);return this.modules[e][t]},getModuleCount:function(){return this.moduleCount},make:function(){if(1>this.typeNumber){var e=1;for(e=1;40>e;e++){for(var t=a.getRSBlocks(e,this.errorCorrectLevel),n=new s,i=0,r=0;r=n;n++)if(!(-1>=e+n||this.moduleCount<=e+n))for(var i=-1;7>=i;i++)-1>=t+i||this.moduleCount<=t+i||(this.modules[e+n][t+i]=0<=n&&6>=n&&(0==i||6==i)||0<=i&&6>=i&&(0==n||6==n)||2<=n&&4>=n&&2<=i&&4>=i)},getBestMaskPattern:function(){for(var e=0,t=0,n=0;8>n;n++){this.makeImpl(!0,n);var i=l.getLostPoint(this);(0==n||e>i)&&(e=i,t=n)}return t},createMovieClip:function(e,t,n){for(e=e.createEmptyMovieClip(t,n),this.make(),t=0;t=o;o++)for(var a=-2;2>=a;a++)this.modules[i+o][r+a]=-2==o||2==o||-2==a||2==a||0==o&&0==a}},setupTypeNumber:function(e){for(var t=l.getBCHTypeNumber(this.typeNumber),n=0;18>n;n++){var i=!e&&1==(t>>n&1);this.modules[Math.floor(n/3)][n%3+this.moduleCount-8-3]=i}for(n=0;18>n;n++)i=!e&&1==(t>>n&1),this.modules[n%3+this.moduleCount-8-3][Math.floor(n/3)]=i},setupTypeInfo:function(e,t){for(var n=l.getBCHTypeInfo(this.errorCorrectLevel<<3|t),i=0;15>i;i++){var r=!e&&1==(n>>i&1);6>i?this.modules[i][8]=r:8>i?this.modules[i+1][8]=r:this.modules[this.moduleCount-15+i][8]=r}for(i=0;15>i;i++)r=!e&&1==(n>>i&1),8>i?this.modules[8][this.moduleCount-i-1]=r:9>i?this.modules[8][15-i-1+1]=r:this.modules[8][15-i-1]=r;this.modules[this.moduleCount-8][8]=!e},mapData:function(e,t){for(var n=-1,i=this.moduleCount-1,r=7,o=0,a=this.moduleCount-1;0s;s++)if(null==this.modules[i][a-s]){var u=!1;o>>r&1)),l.getMask(t,i,a-s)&&(u=!u),this.modules[i][a-s]=u,-1==--r&&(o++,r=7)}if(0>(i+=n)||this.moduleCount<=i){i-=n,n=-n;break}}}},r.PAD0=236,r.PAD1=17,r.createData=function(e,t,n){t=a.getRSBlocks(e,t);for(var i=new s,o=0;o8*e)throw Error("code length overflow. ("+i.getLengthInBits()+">"+8*e+")");for(i.getLengthInBits()+4<=8*e&&i.put(0,4);0!=i.getLengthInBits()%8;)i.putBit(!1);for(;!(i.getLengthInBits()>=8*e||(i.put(r.PAD0,8),i.getLengthInBits()>=8*e));)i.put(r.PAD1,8);return r.createBytes(i,t)},r.createBytes=function(e,t){for(var n=0,i=0,r=0,a=Array(t.length),s=Array(t.length),u=0;u>>=1;return t},getPatternPosition:function(e){return l.PATTERN_POSITION_TABLE[e-1]},getMask:function(e,t,n){switch(e){case 0:return 0==(t+n)%2;case 1:return 0==t%2;case 2:return 0==n%3;case 3:return 0==(t+n)%3;case 4:return 0==(Math.floor(t/2)+Math.floor(n/3))%2;case 5:return 0==t*n%2+t*n%3;case 6:return 0==(t*n%2+t*n%3)%2;case 7:return 0==(t*n%3+(t+n)%2)%2;default:throw Error("bad maskPattern:"+e)}},getErrorCorrectPolynomial:function(e){for(var t=new o([1],0),n=0;nt)switch(e){case 1:return 10;case 2:return 9;case n:case 8:return 8;default:throw Error("mode:"+e)}else if(27>t)switch(e){case 1:return 12;case 2:return 11;case n:return 16;case 8:return 10;default:throw Error("mode:"+e)}else{if(!(41>t))throw Error("type:"+t);switch(e){case 1:return 14;case 2:return 13;case n:return 16;case 8:return 12;default:throw Error("mode:"+e)}}},getLostPoint:function(e){for(var t=e.getModuleCount(),n=0,i=0;i=s;s++)if(!(0>i+s||t<=i+s))for(var l=-1;1>=l;l++)0>r+l||t<=r+l||0==s&&0==l||a==e.isDark(i+s,r+l)&&o++;5e)throw Error("glog("+e+")");return u.LOG_TABLE[e]},gexp:function(e){for(;0>e;)e+=255;for(;256<=e;)e-=255;return u.EXP_TABLE[e]},EXP_TABLE:Array(256),LOG_TABLE:Array(256)},c=0;8>c;c++)u.EXP_TABLE[c]=1<c;c++)u.EXP_TABLE[c]=u.EXP_TABLE[c-4]^u.EXP_TABLE[c-5]^u.EXP_TABLE[c-6]^u.EXP_TABLE[c-8];for(c=0;255>c;c++)u.LOG_TABLE[u.EXP_TABLE[c]]=c;return o.prototype={get:function(e){return this.num[e]},getLength:function(){return this.num.length},multiply:function(e){for(var t=Array(this.getLength()+e.getLength()-1),n=0;nthis.getLength()-e.getLength())return this;for(var t=u.glog(this.get(0))-u.glog(e.get(0)),n=Array(this.getLength()),i=0;i>>7-e%8&1)},put:function(e,t){for(var n=0;n>>t-n-1&1))},getLengthInBits:function(){return this.length},putBit:function(e){var t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}},"string"==typeof t&&(t={text:t}),t=e.extend({},{render:"canvas",width:256,height:256,typeNumber:-1,correctLevel:2,background:"#ffffff",foreground:"#000000"},t),this.each(function(){var n;if("canvas"==t.render){(n=new r(t.typeNumber,t.correctLevel)).addData(t.text),n.make();var i=document.createElement("canvas");i.width=t.width,i.height=t.height;for(var o=i.getContext("2d"),a=t.width/n.getModuleCount(),s=t.height/n.getModuleCount(),l=0;l").css("width",t.width+"px").css("height",t.height+"px").css("border","0px").css("border-collapse","collapse").css("background-color",t.background),o=t.width/n.getModuleCount(),a=t.height/n.getModuleCount(),s=0;s").css("height",a+"px").appendTo(i),u=0;u").css("width",o+"px").css("background-color",n.isDark(s,u)?t.foreground:t.background).appendTo(l);n=i,jQuery(n).appendTo(this)})}}(jQuery),function(){"use strict";var e="undefined"!=typeof window&&void 0!==window.document?window.document:{},t="undefined"!=typeof module&&module.exports,n=function(){for(var t,n=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],i=0,r=n.length,o={};i+~]|"+H+")"+H+"*"),U=new RegExp(H+"|>"),X=new RegExp(F),K=new RegExp("^"+M+"$"),Y={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+q),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+H+"*(even|odd|(([+-]|)(\\d*)n|)"+H+"*(?:([+-]|)"+H+"*(\\d+)|))"+H+"*\\)|)","i"),bool:new RegExp("^(?:"+B+")$","i"),needsContext:new RegExp("^"+H+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+H+"*((?:-\\d)?\\d*)"+H+"*\\)|)(?=[^-]|$)","i")},G=/HTML$/i,V=/^(?:input|select|textarea|button)$/i,Q=/^h\d$/i,J=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+H+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},ie=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,re=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){d()},se=_e(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{P.apply(D=O.call(w.childNodes),w.childNodes),D[w.childNodes.length].nodeType}catch(t){P={apply:D.length?function(e,t){j.apply(e,O.call(t))}:function(e,t){for(var n=e.length,i=0;e[n++]=t[i++];);e.length=n-1}}}function ae(e,t,i,r){var o,a,u,c,f,p,v,y=t&&t.ownerDocument,w=t?t.nodeType:9;if(i=i||[],"string"!=typeof e||!e||1!==w&&9!==w&&11!==w)return i;if(!r&&(d(t),t=t||h,g)){if(11!==w&&(f=Z.exec(e)))if(o=f[1]){if(9===w){if(!(u=t.getElementById(o)))return i;if(u.id===o)return i.push(u),i}else if(y&&(u=y.getElementById(o))&&b(t,u)&&u.id===o)return i.push(u),i}else{if(f[2])return P.apply(i,t.getElementsByTagName(e)),i;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return P.apply(i,t.getElementsByClassName(o)),i}if(n.qsa&&!A[e+" "]&&(!m||!m.test(e))&&(1!==w||"object"!==t.nodeName.toLowerCase())){if(v=e,y=t,1===w&&(U.test(e)||z.test(e))){for((y=ee.test(e)&&ve(t.parentNode)||t)===t&&n.scope||((c=t.getAttribute("id"))?c=c.replace(ie,re):t.setAttribute("id",c=_)),a=(p=s(e)).length;a--;)p[a]=(c?"#"+c:":scope")+" "+be(p[a]);v=p.join(",")}try{return P.apply(i,y.querySelectorAll(v)),i}catch(t){A(e,!0)}finally{c===_&&t.removeAttribute("id")}}}return l(e.replace($,"$1"),t,i,r)}function le(){var e=[];return function t(n,r){return e.push(n+" ")>i.cacheLength&&delete t[e.shift()],t[n+" "]=r}}function ue(e){return e[_]=!0,e}function ce(e){var t=h.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){for(var n=e.split("|"),r=n.length;r--;)i.attrHandle[n[r]]=t}function de(e,t){var n=t&&e,i=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(i)return i;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function he(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ge(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&se(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function me(e){return ue(function(t){return t=+t,ue(function(n,i){for(var r,o=e([],n.length,t),s=o.length;s--;)n[r=o[s]]&&(n[r]=!(i[r]=n[r]))})})}function ve(e){return e&&void 0!==e.getElementsByTagName&&e}for(t in n=ae.support={},o=ae.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!G.test(t||n&&n.nodeName||"HTML")},d=ae.setDocument=function(e){var t,r,s=e?e.ownerDocument||e:w;return s!=h&&9===s.nodeType&&s.documentElement&&(p=(h=s).documentElement,g=!o(h),w!=h&&(r=h.defaultView)&&r.top!==r&&(r.addEventListener?r.addEventListener("unload",oe,!1):r.attachEvent&&r.attachEvent("onunload",oe)),n.scope=ce(function(e){return p.appendChild(e).appendChild(h.createElement("div")),void 0!==e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),n.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ce(function(e){return e.appendChild(h.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=J.test(h.getElementsByClassName),n.getById=ce(function(e){return p.appendChild(e).id=_,!h.getElementsByName||!h.getElementsByName(_).length}),n.getById?(i.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},i.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(i.filter.ID=function(e){var t=e.replace(te,ne);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},i.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n,i,r,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];for(r=t.getElementsByName(e),i=0;o=r[i++];)if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),i.find.TAG=n.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,i=[],r=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[r++];)1===n.nodeType&&i.push(n);return i}return o},i.find.CLASS=n.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],m=[],(n.qsa=J.test(h.querySelectorAll))&&(ce(function(e){var t;p.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&m.push("[*^$]="+H+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||m.push("\\["+H+"*(?:value|"+B+")"),e.querySelectorAll("[id~="+_+"-]").length||m.push("~="),(t=h.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||m.push("\\["+H+"*name"+H+"*="+H+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||m.push(":checked"),e.querySelectorAll("a#"+_+"+*").length||m.push(".#.+[+~]"),e.querySelectorAll("\\\f"),m.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=h.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&m.push("name"+H+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&m.push(":enabled",":disabled"),p.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&m.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),m.push(",.*:")})),(n.matchesSelector=J.test(y=p.matches||p.webkitMatchesSelector||p.mozMatchesSelector||p.oMatchesSelector||p.msMatchesSelector))&&ce(function(e){n.disconnectedMatch=y.call(e,"*"),y.call(e,"[s!='']:x"),v.push("!=",F)}),m=m.length&&new RegExp(m.join("|")),v=v.length&&new RegExp(v.join("|")),t=J.test(p.compareDocumentPosition),b=t||J.test(p.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,i=t&&t.parentNode;return e===i||!(!i||1!==i.nodeType||!(n.contains?n.contains(i):e.compareDocumentPosition&&16&e.compareDocumentPosition(i)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},L=t?function(e,t){if(e===t)return f=!0,0;var i=!e.compareDocumentPosition-!t.compareDocumentPosition;return i||(1&(i=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===i?e==h||e.ownerDocument==w&&b(w,e)?-1:t==h||t.ownerDocument==w&&b(w,t)?1:c?I(c,e)-I(c,t):0:4&i?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,i=0,r=e.parentNode,o=t.parentNode,s=[e],a=[t];if(!r||!o)return e==h?-1:t==h?1:r?-1:o?1:c?I(c,e)-I(c,t):0;if(r===o)return de(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)a.unshift(n);for(;s[i]===a[i];)i++;return i?de(s[i],a[i]):s[i]==w?-1:a[i]==w?1:0}),h},ae.matches=function(e,t){return ae(e,null,null,t)},ae.matchesSelector=function(e,t){if(d(e),n.matchesSelector&&g&&!A[t+" "]&&(!v||!v.test(t))&&(!m||!m.test(t)))try{var i=y.call(e,t);if(i||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return i}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||ae.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&ae.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return Y.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=s(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=T[e+" "];return t||(t=new RegExp("(^|"+H+")"+e+"("+H+"|$)"))&&T(e,function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(i){var r=ae.attr(i,e);return null==r?"!="===t:!t||(r+="","="===t?r===n:"!="===t?r!==n:"^="===t?n&&0===r.indexOf(n):"*="===t?n&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function S(e,t,n){return p(t)?w.grep(e,function(e,i){return!!t.call(e,i,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,r;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:N.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:m,!0)),L.test(i[1])&&w.isPlainObject(t))for(i in t)p(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(r=m.getElementById(i[2]))&&(this[0]=r,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):p(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,D=w(m);var j=/^(?:parents|prev(?:Until|All))/,P={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,pe=/^$|^module$|\/(?:java|ecma)script/i;ce=m.createDocumentFragment().appendChild(m.createElement("div")),(fe=m.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),h.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",h.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",h.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function me(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,i=e.length;n",""]);var ye=/<|&#?\w+;/;function be(e,t,n,i,r){for(var o,s,a,l,u,c,f=t.createDocumentFragment(),d=[],h=0,p=e.length;h\s*$/g;function Ne(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&w(e).children("tbody")[0]||e}function je(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Pe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,i,r,o,s,a;if(1===t.nodeType){if(G.hasData(e)&&(a=G.get(e).events))for(r in G.remove(t,"handle events"),a)for(n=0,i=a[r].length;n").attr(e.scriptAttrs||{}).prop({charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&r("error"===e.type?404:200,e.type)}),m.head.appendChild(t[0])},abort:function(){n&&n()}}});var Ut,Xt=[],Kt=/(=)\?(?=&|$)|\?\?/;w.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||w.expando+"_"+Et.guid++;return this[e]=!0,e}}),w.ajaxPrefilter("json jsonp",function(t,n,i){var r,o,s,a=!1!==t.jsonp&&(Kt.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&Kt.test(t.data)&&"data");if(a||"jsonp"===t.dataTypes[0])return r=t.jsonpCallback=p(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,a?t[a]=t[a].replace(Kt,"$1"+r):!1!==t.jsonp&&(t.url+=(Tt.test(t.url)?"&":"?")+t.jsonp+"="+r),t.converters["script json"]=function(){return s||w.error(r+" was not called"),s[0]},t.dataTypes[0]="json",o=e[r],e[r]=function(){s=arguments},i.always(function(){void 0===o?w(e).removeProp(r):e[r]=o,t[r]&&(t.jsonpCallback=n.jsonpCallback,Xt.push(r)),s&&p(o)&&o(s[0]),s=o=void 0}),"script"}),h.createHTMLDocument=((Ut=m.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),w.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(h.createHTMLDocument?((i=(t=m.implementation.createHTMLDocument("")).createElement("base")).href=m.location.href,t.head.appendChild(i)):t=m),o=!n&&[],(r=L.exec(e))?[t.createElement(r[1])]:(r=be([e],t,o),o&&o.length&&w(o).remove(),w.merge([],r.childNodes)));var i,r,o},w.fn.load=function(e,t,n){var i,r,o,s=this,a=e.indexOf(" ");return-1").append(w.parseHTML(e)).find(i):e)}).always(n&&function(e,t){s.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},w.expr.pseudos.animated=function(e){return w.grep(w.timers,function(t){return e===t.elem}).length},w.offset={setOffset:function(e,t,n){var i,r,o,s,a,l,u=w.css(e,"position"),c=w(e),f={};"static"===u&&(e.style.position="relative"),a=c.offset(),o=w.css(e,"top"),l=w.css(e,"left"),("absolute"===u||"fixed"===u)&&-1<(o+l).indexOf("auto")?(s=(i=c.position()).top,r=i.left):(s=parseFloat(o)||0,r=parseFloat(l)||0),p(t)&&(t=t.call(e,n,w.extend({},a))),null!=t.top&&(f.top=t.top-a.top+s),null!=t.left&&(f.left=t.left-a.left+r),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},w.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){w.offset.setOffset(this,e,t)});var t,n,i=this[0];return i?i.getClientRects().length?(t=i.getBoundingClientRect(),n=i.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,i=this[0],r={top:0,left:0};if("fixed"===w.css(i,"position"))t=i.getBoundingClientRect();else{for(t=this.offset(),n=i.ownerDocument,e=i.offsetParent||n.documentElement;e&&(e===n.body||e===n.documentElement)&&"static"===w.css(e,"position");)e=e.parentNode;e&&e!==i&&1===e.nodeType&&((r=w(e).offset()).top+=w.css(e,"borderTopWidth",!0),r.left+=w.css(e,"borderLeftWidth",!0))}return{top:t.top-r.top-w.css(i,"marginTop",!0),left:t.left-r.left-w.css(i,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&"static"===w.css(e,"position");)e=e.offsetParent;return e||ie})}}),w.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n="pageYOffset"===t;w.fn[e]=function(i){return $(this,function(e,i,r){var o;if(g(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===r)return o?o[t]:e[i];o?o.scrollTo(n?o.pageXOffset:r,n?r:o.pageYOffset):e[i]=r},e,i,arguments.length)}}),w.each(["top","left"],function(e,t){w.cssHooks[t]=$e(h.pixelPosition,function(e,n){if(n)return n=Re(e,t),He.test(n)?w(e).position()[t]+"px":n})}),w.each({Height:"height",Width:"width"},function(e,t){w.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,i){w.fn[i]=function(r,o){var s=arguments.length&&(n||"boolean"!=typeof r),a=n||(!0===r||!0===o?"margin":"border");return $(this,function(t,n,r){var o;return g(t)?0===i.indexOf("outer")?t["inner"+e]:t.document.documentElement["client"+e]:9===t.nodeType?(o=t.documentElement,Math.max(t.body["scroll"+e],o["scroll"+e],t.body["offset"+e],o["offset"+e],o["client"+e])):void 0===r?w.css(t,n,a):w.style(t,n,r,a)},t,s?r:void 0,s)}})}),w.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){w.fn[t]=function(e){return this.on(t,e)}}),w.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,i){return this.on(t,e,n,i)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),w.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){w.fn[t]=function(e,n){return 00,i._pointerEvent=Boolean(window.PointerEvent),i._addEventListeners(),i}o(t,e);var n=t.prototype;return n.next=function(){this._isSliding||this._slide("next")},n.nextWhenVisible=function(){!document.hidden&&v(this._element)&&this.next()},n.prev=function(){this._isSliding||this._slide("prev")},n.pause=function(e){e||(this._isPaused=!0),K(".carousel-item-next, .carousel-item-prev",this._element)&&(h(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},n.cycle=function(e){e||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},n.to=function(e){var t=this;this._activeElement=K(".active.carousel-item",this._element);var n=this._getItemIndex(this._activeElement);if(!(e>this._items.length-1||e<0))if(this._isSliding)q.one(this._element,"slid.bs.carousel",function(){return t.to(e)});else{if(n===e)return this.pause(),void this.cycle();var i=e>n?"next":"prev";this._slide(i,this._items[e])}},n.dispose=function(){e.prototype.dispose.call(this),q.off(this._element,".bs.carousel"),this._items=null,this._config=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},n._getConfig=function(e){return e=r({},V,e),m("carousel",e,Q),e},n._handleSwipe=function(){var e=Math.abs(this.touchDeltaX);if(!(e<=40)){var t=e/this.touchDeltaX;this.touchDeltaX=0,t>0&&(w?this.next():this.prev()),t<0&&(w?this.prev():this.next())}},n._addEventListeners=function(){var e=this;this._config.keyboard&&q.on(this._element,"keydown.bs.carousel",function(t){return e._keydown(t)}),"hover"===this._config.pause&&(q.on(this._element,"mouseenter.bs.carousel",function(t){return e.pause(t)}),q.on(this._element,"mouseleave.bs.carousel",function(t){return e.cycle(t)})),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()},n._addTouchEventListeners=function(){var e=this,t=function(t){!e._pointerEvent||"pen"!==t.pointerType&&"touch"!==t.pointerType?e._pointerEvent||(e.touchStartX=t.touches[0].clientX):e.touchStartX=t.clientX},n=function(t){!e._pointerEvent||"pen"!==t.pointerType&&"touch"!==t.pointerType||(e.touchDeltaX=t.clientX-e.touchStartX),e._handleSwipe(),"hover"===e._config.pause&&(e.pause(),e.touchTimeout&&clearTimeout(e.touchTimeout),e.touchTimeout=setTimeout(function(t){return e.cycle(t)},500+e._config.interval))};X(".carousel-item img",this._element).forEach(function(e){q.on(e,"dragstart.bs.carousel",function(e){return e.preventDefault()})}),this._pointerEvent?(q.on(this._element,"pointerdown.bs.carousel",function(e){return t(e)}),q.on(this._element,"pointerup.bs.carousel",function(e){return n(e)}),this._element.classList.add("pointer-event")):(q.on(this._element,"touchstart.bs.carousel",function(e){return t(e)}),q.on(this._element,"touchmove.bs.carousel",function(t){return function(t){t.touches&&t.touches.length>1?e.touchDeltaX=0:e.touchDeltaX=t.touches[0].clientX-e.touchStartX}(t)}),q.on(this._element,"touchend.bs.carousel",function(e){return n(e)}))},n._keydown=function(e){/input|textarea/i.test(e.target.tagName)||("ArrowLeft"===e.key?(e.preventDefault(),w?this.next():this.prev()):"ArrowRight"===e.key&&(e.preventDefault(),w?this.prev():this.next()))},n._getItemIndex=function(e){return this._items=e&&e.parentNode?X(".carousel-item",e.parentNode):[],this._items.indexOf(e)},n._getItemByDirection=function(e,t){var n="next"===e,i="prev"===e,r=this._getItemIndex(t),o=this._items.length-1;if((i&&0===r||n&&r===o)&&!this._config.wrap)return t;var s=(r+("prev"===e?-1:1))%this._items.length;return-1===s?this._items[this._items.length-1]:this._items[s]},n._triggerSlideEvent=function(e,t){var n=this._getItemIndex(e),i=this._getItemIndex(K(".active.carousel-item",this._element));return q.trigger(this._element,"slide.bs.carousel",{relatedTarget:e,direction:t,from:i,to:n})},n._setActiveIndicatorElement=function(e){if(this._indicatorsElement){var t=K(".active",this._indicatorsElement);t.classList.remove("active"),t.removeAttribute("aria-current");for(var n=X("[data-bs-target]",this._indicatorsElement),i=0;i0)for(var i=0;i0&&r--,"ArrowDown"===e.key&&rdocument.documentElement.clientHeight;t||(this._element.style.overflowY="hidden"),this._element.classList.add("modal-static");var n=d(this._dialog);q.off(this._element,"transitionend"),q.one(this._element,"transitionend",function(){e._element.classList.remove("modal-static"),t||(q.one(e._element,"transitionend",function(){e._element.style.overflowY=""}),g(e._element,n))}),g(this._element,n),this._element.focus()}},n._adjustDialog=function(){var e=this._element.scrollHeight>document.documentElement.clientHeight;(!this._isBodyOverflowing&&e&&!w||this._isBodyOverflowing&&!e&&w)&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),(this._isBodyOverflowing&&!e&&!w||!this._isBodyOverflowing&&e&&w)&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},n._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},n._checkScrollbar=function(){var e=document.body.getBoundingClientRect();this._isBodyOverflowing=Math.round(e.left+e.right)
',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:[0,0],container:!1,fallbackPlacements:["top","right","bottom","left"],boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},Te={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},ke=function(n){function s(e,i){var r;if(void 0===t)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");return(r=n.call(this,e)||this)._isEnabled=!0,r._timeout=0,r._hoverState="",r._activeTrigger={},r._popper=null,r.config=r._getConfig(i),r.tip=null,r._setListeners(),r}o(s,n);var a=s.prototype;return a.enable=function(){this._isEnabled=!0},a.disable=function(){this._isEnabled=!1},a.toggleEnabled=function(){this._isEnabled=!this._isEnabled},a.toggle=function(e){if(this._isEnabled)if(e){var t=this._initializeOnDelegatedTarget(e);t._activeTrigger.click=!t._activeTrigger.click,t._isWithActiveTrigger()?t._enter(null,t):t._leave(null,t)}else{if(this.getTipElement().classList.contains("show"))return void this._leave(null,this);this._enter(null,this)}},a.dispose=function(){clearTimeout(this._timeout),q.off(this._element,this.constructor.EVENT_KEY),q.off(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this.tip&&this.tip.parentNode&&this.tip.parentNode.removeChild(this.tip),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.config=null,this.tip=null,n.prototype.dispose.call(this)},a.show=function(){var t=this;if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(this.isWithContent()&&this._isEnabled){var n=q.trigger(this._element,this.constructor.Event.SHOW),i=function e(t){if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){var n=t.getRootNode();return n instanceof ShadowRoot?n:null}return t instanceof ShadowRoot?t:t.parentNode?e(t.parentNode):null}(this._element),r=null===i?this._element.ownerDocument.documentElement.contains(this._element):i.contains(this._element);if(!n.defaultPrevented&&r){var o=this.getTipElement(),s=l(this.constructor.NAME);o.setAttribute("id",s),this._element.setAttribute("aria-describedby",s),this.setContent(),this.config.animation&&o.classList.add("fade");var a="function"==typeof this.config.placement?this.config.placement.call(this,o,this._element):this.config.placement,u=this._getAttachment(a);this._addAttachmentClass(u);var c=this._getContainer();T(o,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||c.appendChild(o),q.trigger(this._element,this.constructor.Event.INSERTED),this._popper=e.createPopper(this._element,o,this._getPopperConfig(u)),o.classList.add("show");var f,h,p="function"==typeof this.config.customClass?this.config.customClass():this.config.customClass;p&&(f=o.classList).add.apply(f,p.split(" ")),"ontouchstart"in document.documentElement&&(h=[]).concat.apply(h,document.body.children).forEach(function(e){q.on(e,"mouseover",function(){})});var m=function(){var e=t._hoverState;t._hoverState=null,q.trigger(t._element,t.constructor.Event.SHOWN),"out"===e&&t._leave(null,t)};if(this.tip.classList.contains("fade")){var v=d(this.tip);q.one(this.tip,"transitionend",m),g(this.tip,v)}else m()}}},a.hide=function(){var e=this;if(this._popper){var t=this.getTipElement(),n=function(){"show"!==e._hoverState&&t.parentNode&&t.parentNode.removeChild(t),e._cleanTipClass(),e._element.removeAttribute("aria-describedby"),q.trigger(e._element,e.constructor.Event.HIDDEN),e._popper&&(e._popper.destroy(),e._popper=null)};if(!q.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented){var i;if(t.classList.remove("show"),"ontouchstart"in document.documentElement&&(i=[]).concat.apply(i,document.body.children).forEach(function(e){return q.off(e,"mouseover",y)}),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,this.tip.classList.contains("fade")){var r=d(t);q.one(t,"transitionend",n),g(t,r)}else n();this._hoverState=""}}},a.update=function(){null!==this._popper&&this._popper.update()},a.isWithContent=function(){return Boolean(this.getTitle())},a.getTipElement=function(){if(this.tip)return this.tip;var e=document.createElement("div");return e.innerHTML=this.config.template,this.tip=e.children[0],this.tip},a.setContent=function(){var e=this.getTipElement();this.setElementContent(K(".tooltip-inner",e),this.getTitle()),e.classList.remove("fade","show")},a.setElementContent=function(e,t){if(null!==e)return"object"==typeof t&&p(t)?(t.jquery&&(t=t[0]),void(this.config.html?t.parentNode!==e&&(e.innerHTML="",e.appendChild(t)):e.textContent=t.textContent)):void(this.config.html?(this.config.sanitize&&(t=ye(t,this.config.allowList,this.config.sanitizeFn)),e.innerHTML=t):e.textContent=t)},a.getTitle=function(){var e=this._element.getAttribute("data-bs-original-title");return e||(e="function"==typeof this.config.title?this.config.title.call(this._element):this.config.title),e},a.updateAttachment=function(e){return"right"===e?"end":"left"===e?"start":e},a._initializeOnDelegatedTarget=function(e,t){var n=this.constructor.DATA_KEY;return(t=t||k(e.delegateTarget,n))||(t=new this.constructor(e.delegateTarget,this._getDelegateConfig()),T(e.delegateTarget,n,t)),t},a._getOffset=function(){var e=this,t=this.config.offset;return"string"==typeof t?t.split(",").map(function(e){return Number.parseInt(e,10)}):"function"==typeof t?function(n){return t(n,e._element)}:t},a._getPopperConfig=function(e){var t=this,n={placement:e,modifiers:[{name:"flip",options:{altBoundary:!0,fallbackPlacements:this.config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this.config.boundary}},{name:"arrow",options:{element:"."+this.constructor.NAME+"-arrow"}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:function(e){return t._handlePopperPlacementChange(e)}}],onFirstUpdate:function(e){e.options.placement!==e.placement&&t._handlePopperPlacementChange(e)}};return r({},n,"function"==typeof this.config.popperConfig?this.config.popperConfig(n):this.config.popperConfig)},a._addAttachmentClass=function(e){this.getTipElement().classList.add("bs-tooltip-"+this.updateAttachment(e))},a._getContainer=function(){return!1===this.config.container?document.body:p(this.config.container)?this.config.container:K(this.config.container)},a._getAttachment=function(e){return xe[e.toUpperCase()]},a._setListeners=function(){var e=this;this.config.trigger.split(" ").forEach(function(t){if("click"===t)q.on(e._element,e.constructor.Event.CLICK,e.config.selector,function(t){return e.toggle(t)});else if("manual"!==t){var n="hover"===t?e.constructor.Event.MOUSEENTER:e.constructor.Event.FOCUSIN,i="hover"===t?e.constructor.Event.MOUSELEAVE:e.constructor.Event.FOCUSOUT;q.on(e._element,n,e.config.selector,function(t){return e._enter(t)}),q.on(e._element,i,e.config.selector,function(t){return e._leave(t)})}}),this._hideModalHandler=function(){e._element&&e.hide()},q.on(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=r({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},a._fixTitle=function(){var e=this._element.getAttribute("title"),t=typeof this._element.getAttribute("data-bs-original-title");(e||"string"!==t)&&(this._element.setAttribute("data-bs-original-title",e||""),!e||this._element.getAttribute("aria-label")||this._element.textContent||this._element.setAttribute("aria-label",e),this._element.setAttribute("title",""))},a._enter=function(e,t){t=this._initializeOnDelegatedTarget(e,t),e&&(t._activeTrigger["focusin"===e.type?"focus":"hover"]=!0),t.getTipElement().classList.contains("show")||"show"===t._hoverState?t._hoverState="show":(clearTimeout(t._timeout),t._hoverState="show",t.config.delay&&t.config.delay.show?t._timeout=setTimeout(function(){"show"===t._hoverState&&t.show()},t.config.delay.show):t.show())},a._leave=function(e,t){t=this._initializeOnDelegatedTarget(e,t),e&&(t._activeTrigger["focusout"===e.type?"focus":"hover"]=!1),t._isWithActiveTrigger()||(clearTimeout(t._timeout),t._hoverState="out",t.config.delay&&t.config.delay.hide?t._timeout=setTimeout(function(){"out"===t._hoverState&&t.hide()},t.config.delay.hide):t.hide())},a._isWithActiveTrigger=function(){for(var e in this._activeTrigger)if(this._activeTrigger[e])return!0;return!1},a._getConfig=function(e){var t=U.getDataAttributes(this._element);return Object.keys(t).forEach(function(e){_e.has(e)&&delete t[e]}),e&&"object"==typeof e.container&&e.container.jquery&&(e.container=e.container[0]),"number"==typeof(e=r({},this.constructor.Default,t,"object"==typeof e&&e?e:{})).delay&&(e.delay={show:e.delay,hide:e.delay}),"number"==typeof e.title&&(e.title=e.title.toString()),"number"==typeof e.content&&(e.content=e.content.toString()),m("tooltip",e,this.constructor.DefaultType),e.sanitize&&(e.template=ye(e.template,e.allowList,e.sanitizeFn)),e},a._getDelegateConfig=function(){var e={};if(this.config)for(var t in this.config)this.constructor.Default[t]!==this.config[t]&&(e[t]=this.config[t]);return e},a._cleanTipClass=function(){var e=this.getTipElement(),t=e.getAttribute("class").match(be);null!==t&&t.length>0&&t.map(function(e){return e.trim()}).forEach(function(t){return e.classList.remove(t)})},a._handlePopperPlacementChange=function(e){var t=e.state;t&&(this.tip=t.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(t.placement)))},s.jQueryInterface=function(e){return this.each(function(){var t=k(this,"bs.tooltip"),n="object"==typeof e&&e;if((t||!/dispose|hide/.test(e))&&(t||(t=new s(this,n)),"string"==typeof e)){if(void 0===t[e])throw new TypeError('No method named "'+e+'"');t[e]()}})},i(s,null,[{key:"Default",get:function(){return Ee}},{key:"NAME",get:function(){return"tooltip"}},{key:"DATA_KEY",get:function(){return"bs.tooltip"}},{key:"Event",get:function(){return Te}},{key:"EVENT_KEY",get:function(){return".bs.tooltip"}},{key:"DefaultType",get:function(){return we}}]),s}(F);x("tooltip",ke);var Ce=new RegExp("(^|\\s)bs-popover\\S+","g"),Ae=r({},ke.Default,{placement:"right",offset:[0,8],trigger:"click",content:"",template:''}),Le=r({},ke.DefaultType,{content:"(string|element|function)"}),Se={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"},De=function(e){function t(){return e.apply(this,arguments)||this}o(t,e);var n=t.prototype;return n.isWithContent=function(){return this.getTitle()||this._getContent()},n.setContent=function(){var e=this.getTipElement();this.setElementContent(K(".popover-header",e),this.getTitle());var t=this._getContent();"function"==typeof t&&(t=t.call(this._element)),this.setElementContent(K(".popover-body",e),t),e.classList.remove("fade","show")},n._addAttachmentClass=function(e){this.getTipElement().classList.add("bs-popover-"+this.updateAttachment(e))},n._getContent=function(){return this._element.getAttribute("data-bs-content")||this.config.content},n._cleanTipClass=function(){var e=this.getTipElement(),t=e.getAttribute("class").match(Ce);null!==t&&t.length>0&&t.map(function(e){return e.trim()}).forEach(function(t){return e.classList.remove(t)})},t.jQueryInterface=function(e){return this.each(function(){var n=k(this,"bs.popover"),i="object"==typeof e?e:null;if((n||!/dispose|hide/.test(e))&&(n||(n=new t(this,i),T(this,"bs.popover",n)),"string"==typeof e)){if(void 0===n[e])throw new TypeError('No method named "'+e+'"');n[e]()}})},i(t,null,[{key:"Default",get:function(){return Ae}},{key:"NAME",get:function(){return"popover"}},{key:"DATA_KEY",get:function(){return"bs.popover"}},{key:"Event",get:function(){return Se}},{key:"EVENT_KEY",get:function(){return".bs.popover"}},{key:"DefaultType",get:function(){return Le}}]),t}(ke);x("popover",De);var Ne={offset:10,method:"auto",target:""},je={offset:"number",method:"string",target:"(string|element)"},Pe=function(e){function t(t,n){var i;return(i=e.call(this,t)||this)._scrollElement="BODY"===t.tagName?window:t,i._config=i._getConfig(n),i._selector=i._config.target+" .nav-link, "+i._config.target+" .list-group-item, "+i._config.target+" .dropdown-item",i._offsets=[],i._targets=[],i._activeTarget=null,i._scrollHeight=0,q.on(i._scrollElement,"scroll.bs.scrollspy",function(){return i._process()}),i.refresh(),i._process(),i}o(t,e);var n=t.prototype;return n.refresh=function(){var e=this,t=this._scrollElement===this._scrollElement.window?"offset":"position",n="auto"===this._config.method?t:this._config.method,i="position"===n?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),X(this._selector).map(function(e){var t=c(e),r=t?K(t):null;if(r){var o=r.getBoundingClientRect();if(o.width||o.height)return[U[n](r).top+i,t]}return null}).filter(function(e){return e}).sort(function(e,t){return e[0]-t[0]}).forEach(function(t){e._offsets.push(t[0]),e._targets.push(t[1])})},n.dispose=function(){e.prototype.dispose.call(this),q.off(this._scrollElement,".bs.scrollspy"),this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},n._getConfig=function(e){if("string"!=typeof(e=r({},Ne,"object"==typeof e&&e?e:{})).target&&p(e.target)){var t=e.target.id;t||(t=l("scrollspy"),e.target.id=t),e.target="#"+t}return m("scrollspy",e,je),e},n._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},n._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},n._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},n._process=function(){var e=this._getScrollTop()+this._config.offset,t=this._getScrollHeight(),n=this._config.offset+t-this._getOffsetHeight();if(this._scrollHeight!==t&&this.refresh(),e>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&e0)return this._activeTarget=null,void this._clear();for(var r=this._offsets.length;r--;)this._activeTarget!==this._targets[r]&&e>=this._offsets[r]&&(void 0===this._offsets[r+1]||e li > .active":".active";t=(t=X(r,i))[t.length-1]}var o=t?q.trigger(t,"hide.bs.tab",{relatedTarget:this._element}):null;if(!(q.trigger(this._element,"show.bs.tab",{relatedTarget:t}).defaultPrevented||null!==o&&o.defaultPrevented)){this._activate(this._element,i);var s=function(){q.trigger(t,"hidden.bs.tab",{relatedTarget:e._element}),q.trigger(e._element,"shown.bs.tab",{relatedTarget:t})};n?this._activate(n,n.parentNode,s):s()}}},n._activate=function(e,t,n){var i=this,r=(!t||"UL"!==t.nodeName&&"OL"!==t.nodeName?Y(t,".active"):X(":scope > li > .active",t))[0],o=n&&r&&r.classList.contains("fade"),s=function(){return i._transitionComplete(e,r,n)};if(r&&o){var a=d(r);r.classList.remove("show"),q.one(r,"transitionend",s),g(r,a)}else s()},n._transitionComplete=function(e,t,n){if(t){t.classList.remove("active");var i=K(":scope > .dropdown-menu .active",t.parentNode);i&&i.classList.remove("active"),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!1)}e.classList.add("active"),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!0),b(e),e.classList.contains("fade")&&e.classList.add("show"),e.parentNode&&e.parentNode.classList.contains("dropdown-menu")&&(e.closest(".dropdown")&&X(".dropdown-toggle").forEach(function(e){return e.classList.add("active")}),e.setAttribute("aria-expanded",!0)),n&&n()},t.jQueryInterface=function(e){return this.each(function(){var n=k(this,"bs.tab")||new t(this);if("string"==typeof e){if(void 0===n[e])throw new TypeError('No method named "'+e+'"');n[e]()}})},i(t,null,[{key:"DATA_KEY",get:function(){return"bs.tab"}}]),t}(F);q.on(document,"click.bs.tab.data-api",'[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',function(e){e.preventDefault(),(k(this,"bs.tab")||new Oe(this)).show()}),x("tab",Oe);var Ie={animation:"boolean",autohide:"boolean",delay:"number"},Be={animation:!0,autohide:!0,delay:5e3},He=function(e){function t(t,n){var i;return(i=e.call(this,t)||this)._config=i._getConfig(n),i._timeout=null,i._setListeners(),i}o(t,e);var n=t.prototype;return n.show=function(){var e=this;if(!q.trigger(this._element,"show.bs.toast").defaultPrevented){this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");var t=function(){e._element.classList.remove("showing"),e._element.classList.add("show"),q.trigger(e._element,"shown.bs.toast"),e._config.autohide&&(e._timeout=setTimeout(function(){e.hide()},e._config.delay))};if(this._element.classList.remove("hide"),b(this._element),this._element.classList.add("showing"),this._config.animation){var n=d(this._element);q.one(this._element,"transitionend",t),g(this._element,n)}else t()}},n.hide=function(){var e=this;if(this._element.classList.contains("show")&&!q.trigger(this._element,"hide.bs.toast").defaultPrevented){var t=function(){e._element.classList.add("hide"),q.trigger(e._element,"hidden.bs.toast")};if(this._element.classList.remove("show"),this._config.animation){var n=d(this._element);q.one(this._element,"transitionend",t),g(this._element,n)}else t()}},n.dispose=function(){this._clearTimeout(),this._element.classList.contains("show")&&this._element.classList.remove("show"),q.off(this._element,"click.dismiss.bs.toast"),e.prototype.dispose.call(this),this._config=null},n._getConfig=function(e){return e=r({},Be,U.getDataAttributes(this._element),"object"==typeof e&&e?e:{}),m("toast",e,this.constructor.DefaultType),e},n._setListeners=function(){var e=this;q.on(this._element,"click.dismiss.bs.toast",'[data-bs-dismiss="toast"]',function(){return e.hide()})},n._clearTimeout=function(){clearTimeout(this._timeout),this._timeout=null},t.jQueryInterface=function(e){return this.each(function(){var n=k(this,"bs.toast");if(n||(n=new t(this,"object"==typeof e&&e)),"string"==typeof e){if(void 0===n[e])throw new TypeError('No method named "'+e+'"');n[e](this)}})},i(t,null,[{key:"DefaultType",get:function(){return Ie}},{key:"Default",get:function(){return Be}},{key:"DATA_KEY",get:function(){return"bs.toast"}}]),t}(F);return x("toast",He),{Alert:R,Button:$,Carousel:J,Collapse:te,Dropdown:fe,Modal:pe,Popover:De,ScrollSpy:Pe,Tab:Oe,Toast:He,Tooltip:ke}}),function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e("object"==typeof exports?require("jquery"):jQuery)}(function(e){function t(t,i,r){i={content:{message:"object"==typeof i?i.message:i,title:i.title?i.title:"",icon:i.icon?i.icon:"",url:i.url?i.url:"#",target:i.target?i.target:"-"}},r=e.extend(!0,{},i,r),this.settings=e.extend(!0,{},n,r),this._defaults=n,"-"==this.settings.content.target&&(this.settings.content.target=this.settings.url_target),this.animations={start:"webkitAnimationStart oanimationstart MSAnimationStart animationstart",end:"webkitAnimationEnd oanimationend MSAnimationEnd animationend"},"number"==typeof this.settings.offset&&(this.settings.offset={x:this.settings.offset,y:this.settings.offset}),this.init()}var n={element:"body",position:null,type:"info",allow_dismiss:!0,newest_on_top:!1,showProgressbar:!1,placement:{from:"top",align:"right"},offset:20,spacing:10,z_index:1031,delay:5e3,timer:1e3,url_target:"_blank",mouse_over:null,animate:{enter:"animated fadeInDown",exit:"animated fadeOutUp"},onShow:null,onShown:null,onClose:null,onClosed:null,icon_type:"class",template:''};String.format=function(){for(var e=arguments[0],t=1;t .progress-bar').removeClass("progress-bar-"+e.settings.type),e.settings.type=i[t],this.$ele.addClass("alert-"+i[t]).find('[data-notify="progressbar"] > .progress-bar').addClass("progress-bar-"+i[t]);break;case"icon":var r=this.$ele.find('[data-notify="icon"]');"class"==e.settings.icon_type.toLowerCase()?r.removeClass(e.settings.content.icon).addClass(i[t]):(r.is("img")||r.find("img"),r.attr("src",i[t]));break;case"progress":var o=e.settings.delay-e.settings.delay*(i[t]/100);this.$ele.data("notify-delay",o),this.$ele.find('[data-notify="progressbar"] > div').attr("aria-valuenow",i[t]).css("width",i[t]+"%");break;case"url":this.$ele.find('[data-notify="url"]').attr("href",i[t]);break;case"target":this.$ele.find('[data-notify="url"]').attr("target",i[t]);break;default:this.$ele.find('[data-notify="'+t+'"]').html(i[t])}var s=this.$ele.outerHeight()+parseInt(e.settings.spacing)+parseInt(e.settings.offset.y);e.reposition(s)},close:function(){e.close()}}},buildNotify:function(){var t=this.settings.content;this.$ele=e(String.format(this.settings.template,this.settings.type,t.title,t.message,t.url,t.target)),this.$ele.attr("data-notify-position",this.settings.placement.from+"-"+this.settings.placement.align),this.settings.allow_dismiss||this.$ele.find('[data-notify="dismiss"]').css("display","none"),(this.settings.delay<=0&&!this.settings.showProgressbar||!this.settings.showProgressbar)&&this.$ele.find('[data-notify="progressbar"]').remove()},setIcon:function(){"class"==this.settings.icon_type.toLowerCase()?this.$ele.find('[data-notify="icon"]').addClass(this.settings.content.icon):this.$ele.find('[data-notify="icon"]').is("img")?this.$ele.find('[data-notify="icon"]').attr("src",this.settings.content.icon):this.$ele.find('[data-notify="icon"]').append('Notify Icon')},styleDismiss:function(){this.$ele.find('[data-notify="dismiss"]').css({position:"absolute",right:"10px",top:"5px",zIndex:this.settings.z_index+2})},styleURL:function(){this.$ele.find('[data-notify="url"]').css({backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)",height:"100%",left:"0px",position:"absolute",top:"0px",width:"100%",zIndex:this.settings.z_index+1})},placement:function(){var t=this,n=this.settings.offset.y,i={display:"inline-block",margin:"0px auto",position:this.settings.position?this.settings.position:"body"===this.settings.element?"fixed":"absolute",transition:"all .5s ease-in-out",zIndex:this.settings.z_index},r=!1,o=this.settings;switch(e('[data-notify-position="'+this.settings.placement.from+"-"+this.settings.placement.align+'"]:not([data-closing="true"])').each(function(){return n=Math.max(n,parseInt(e(this).css(o.placement.from))+parseInt(e(this).outerHeight())+parseInt(o.spacing))}),1==this.settings.newest_on_top&&(n=this.settings.offset.y),i[this.settings.placement.from]=n+"px",this.settings.placement.align){case"left":case"right":i[this.settings.placement.align]=this.settings.offset.x+"px";break;case"center":i.left=0,i.right=0}this.$ele.css(i).addClass(this.settings.animate.enter),e.each(Array("webkit","moz","o","ms",""),function(e,n){t.$ele[0].style[n+"AnimationIterationCount"]=1}),e(this.settings.element).append(this.$ele),1==this.settings.newest_on_top&&(n=parseInt(n)+parseInt(this.settings.spacing)+this.$ele.outerHeight(),this.reposition(n)),e.isFunction(t.settings.onShow)&&t.settings.onShow.call(this.$ele),this.$ele.one(this.animations.start,function(e){r=!0}).one(this.animations.end,function(n){e.isFunction(t.settings.onShown)&&t.settings.onShown.call(this)}),setTimeout(function(){r||e.isFunction(t.settings.onShown)&&t.settings.onShown.call(this)},600)},bind:function(){var t=this;if(this.$ele.find('[data-notify="dismiss"]').on("click",function(){t.close()}),this.$ele.mouseover(function(t){e(this).data("data-hover","true")}).mouseout(function(t){e(this).data("data-hover","false")}),this.$ele.data("data-hover","false"),this.settings.delay>0){t.$ele.data("notify-delay",t.settings.delay);var n=setInterval(function(){var e=parseInt(t.$ele.data("notify-delay"))-t.settings.timer;if("false"===t.$ele.data("data-hover")&&"pause"==t.settings.mouse_over||"pause"!=t.settings.mouse_over){var i=(t.settings.delay-e)/t.settings.delay*100;t.$ele.data("notify-delay",e),t.$ele.find('[data-notify="progressbar"] > div').attr("aria-valuenow",i).css("width",i+"%")}e<=-t.settings.timer&&(clearInterval(n),t.close())},t.settings.timer)}},close:function(){var t=this,n=parseInt(this.$ele.css(this.settings.placement.from)),i=!1;this.$ele.data("closing","true").addClass(this.settings.animate.exit),t.reposition(n),e.isFunction(t.settings.onClose)&&t.settings.onClose.call(this.$ele),this.$ele.one(this.animations.start,function(e){i=!0}).one(this.animations.end,function(n){e(this).remove(),e.isFunction(t.settings.onClosed)&&t.settings.onClosed.call(this)}),setTimeout(function(){i||(t.$ele.remove(),t.settings.onClosed&&t.settings.onClosed(t.$ele))},600)},reposition:function(t){var n=this,i='[data-notify-position="'+this.settings.placement.from+"-"+this.settings.placement.align+'"]:not([data-closing="true"])',r=this.$ele.nextAll(i);1==this.settings.newest_on_top&&(r=this.$ele.prevAll(i)),r.each(function(){e(this).css(n.settings.placement.from,t),t=parseInt(t)+parseInt(n.settings.spacing)+e(this).outerHeight()})}}),e.notify=function(e,n){return new t(this,e,n).notify},e.notifyDefaults=function(t){return n=e.extend(!0,{},n,t)},e.notifyClose=function(t){void 0===t||"all"==t?e("[data-notify]").find('[data-notify="dismiss"]').trigger("click"):e('[data-notify-position="'+t+'"]').find('[data-notify="dismiss"]').trigger("click")}});var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(){var e=/\blang(?:uage)?-([\w-]+)\b/i,t=0,n=_self.Prism={manual:_self.Prism&&_self.Prism.manual,disableWorkerMessageHandler:_self.Prism&&_self.Prism.disableWorkerMessageHandler,util:{encode:function(e){return e instanceof i?new i(e.type,n.util.encode(e.content),e.alias):"Array"===n.util.type(e)?e.map(n.util.encode):e.replace(/&/g,"&").replace(/e.length)return;if(!(w instanceof l)){if(g&&b!=t.length-1){if(d.lastIndex=_,!(A=d.exec(e)))break;for(var x=A.index+(p?A[1].length:0),E=A.index+A[0].length,T=b,k=_,C=t.length;T"+o.content+""},!_self.document)return _self.addEventListener&&(n.disableWorkerMessageHandler||_self.addEventListener("message",function(e){var t=JSON.parse(e.data),i=t.language,r=t.code,o=t.immediateClose;_self.postMessage(n.highlight(r,n.languages[i],i)),o&&_self.close()},!1)),_self.Prism;var r=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return r&&(n.filename=r.src,n.manual||r.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),_self.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism),Prism.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),Prism.languages.xml=Prism.languages.markup,Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},Prism.languages.css.atrule.inside.rest=Prism.languages.css,Prism.languages.markup&&(Prism.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:Prism.languages.css,alias:"language-css",greedy:!0}}),Prism.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:Prism.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:Prism.languages.css}},alias:"language-css"}},Prism.languages.markup.tag)),Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(?:true|false)\b/,function:/[a-z0-9_]+(?=\()/i,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/,number:/\b(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|NaN|Infinity)\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][+-]?\d+)?/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})\]]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"},constant:/\b[A-Z][A-Z\d_]*\b/}),Prism.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|\${[^}]+}|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\${[^}]+}/,inside:{"interpolation-punctuation":{pattern:/^\${|}$/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}}}),Prism.languages.javascript["template-string"].inside.interpolation.inside.rest=Prism.languages.javascript,Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:Prism.languages.javascript,alias:"language-javascript",greedy:!0}}),Prism.languages.js=Prism.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,i=t.getAttribute("data-src"),r=t,o=/\blang(?:uage)?-([\w-]+)\b/i;r&&!o.test(r.className);)r=r.parentNode;if(r&&(n=(t.className.match(o)||[,""])[1]),!n){var s=(i.match(/\.(\w+)$/)||[,""])[1];n=e[s]||s}var a=document.createElement("code");a.className="language-"+n,t.textContent="",a.textContent="Loading…",t.appendChild(a);var l=new XMLHttpRequest;l.open("GET",i,!0),l.onreadystatechange=function(){4==l.readyState&&(l.status<400&&l.responseText?(a.textContent=l.responseText,Prism.highlightElement(a)):400<=l.status?a.textContent="✖ Error "+l.status+" while fetching file: "+l.statusText:a.textContent="✖ Error: File does not exist or is empty")},l.send(null)}),Prism.plugins.toolbar&&Prism.plugins.toolbar.registerButton("download-file",function(e){var t=e.element.parentNode;if(t&&/pre/i.test(t.nodeName)&&t.hasAttribute("data-src")&&t.hasAttribute("data-download-link")){var n=t.getAttribute("data-src"),i=document.createElement("a");return i.textContent=t.getAttribute("data-download-link-label")||"Download",i.setAttribute("download",""),i.href=n,i}})},document.addEventListener("DOMContentLoaded",self.Prism.fileHighlight)),function(e,t,n){var i,r=e.getElementsByTagName(t)[0];e.getElementById(n)||((i=e.createElement(t)).id=n,i.src="https://connect.facebook.net/en_US/sdk.js",r.parentNode.insertBefore(i,r))}(document,"script","facebook-jssdk"),function(e,t,n,i,r,o){(i=e.gapi||(e.gapi={})).analytics={q:[],ready:function(e){this.q.push(e)}},r=t.createElement(n),o=t.getElementsByTagName(n)[0],r.src="https://apis.google.com/js/platform.js",o.parentNode.insertBefore(r,o),r.onload=function(){i.load("analytics")}}(window,document,"script"),function(e,t,n){var i,r=e.getElementsByTagName(t)[0];e.getElementById(n)||((i=e.createElement(t)).id=n,i.src="https://connect.facebook.net/vi_VN/sdk/xfbml.customerchat.js",r.parentNode.insertBefore(i,r))}(document,"script","facebook-jssdk"),function(e){e.fn.qrcode=function(t){var n;function i(e){this.mode=n,this.data=e}function r(e,t){this.typeNumber=e,this.errorCorrectLevel=t,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}function o(e,t){if(null==e.length)throw Error(e.length+"/"+t);for(var n=0;ne||this.moduleCount<=e||0>t||this.moduleCount<=t)throw Error(e+","+t);return this.modules[e][t]},getModuleCount:function(){return this.moduleCount},make:function(){if(1>this.typeNumber){var e=1;for(e=1;40>e;e++){for(var t=s.getRSBlocks(e,this.errorCorrectLevel),n=new a,i=0,r=0;r=n;n++)if(!(-1>=e+n||this.moduleCount<=e+n))for(var i=-1;7>=i;i++)-1>=t+i||this.moduleCount<=t+i||(this.modules[e+n][t+i]=0<=n&&6>=n&&(0==i||6==i)||0<=i&&6>=i&&(0==n||6==n)||2<=n&&4>=n&&2<=i&&4>=i)},getBestMaskPattern:function(){for(var e=0,t=0,n=0;8>n;n++){this.makeImpl(!0,n);var i=l.getLostPoint(this);(0==n||e>i)&&(e=i,t=n)}return t},createMovieClip:function(e,t,n){for(e=e.createEmptyMovieClip(t,n),this.make(),t=0;t=o;o++)for(var s=-2;2>=s;s++)this.modules[i+o][r+s]=-2==o||2==o||-2==s||2==s||0==o&&0==s}},setupTypeNumber:function(e){for(var t=l.getBCHTypeNumber(this.typeNumber),n=0;18>n;n++){var i=!e&&1==(t>>n&1);this.modules[Math.floor(n/3)][n%3+this.moduleCount-8-3]=i}for(n=0;18>n;n++)i=!e&&1==(t>>n&1),this.modules[n%3+this.moduleCount-8-3][Math.floor(n/3)]=i},setupTypeInfo:function(e,t){for(var n=l.getBCHTypeInfo(this.errorCorrectLevel<<3|t),i=0;15>i;i++){var r=!e&&1==(n>>i&1);6>i?this.modules[i][8]=r:8>i?this.modules[i+1][8]=r:this.modules[this.moduleCount-15+i][8]=r}for(i=0;15>i;i++)r=!e&&1==(n>>i&1),8>i?this.modules[8][this.moduleCount-i-1]=r:9>i?this.modules[8][15-i-1+1]=r:this.modules[8][15-i-1]=r;this.modules[this.moduleCount-8][8]=!e},mapData:function(e,t){for(var n=-1,i=this.moduleCount-1,r=7,o=0,s=this.moduleCount-1;0a;a++)if(null==this.modules[i][s-a]){var u=!1;o>>r&1)),l.getMask(t,i,s-a)&&(u=!u),this.modules[i][s-a]=u,-1==--r&&(o++,r=7)}if(0>(i+=n)||this.moduleCount<=i){i-=n,n=-n;break}}}},r.PAD0=236,r.PAD1=17,r.createData=function(e,t,n){t=s.getRSBlocks(e,t);for(var i=new a,o=0;o8*e)throw Error("code length overflow. ("+i.getLengthInBits()+">"+8*e+")");for(i.getLengthInBits()+4<=8*e&&i.put(0,4);0!=i.getLengthInBits()%8;)i.putBit(!1);for(;!(i.getLengthInBits()>=8*e||(i.put(r.PAD0,8),i.getLengthInBits()>=8*e));)i.put(r.PAD1,8);return r.createBytes(i,t)},r.createBytes=function(e,t){for(var n=0,i=0,r=0,s=Array(t.length),a=Array(t.length),u=0;u>>=1;return t},getPatternPosition:function(e){return l.PATTERN_POSITION_TABLE[e-1]},getMask:function(e,t,n){switch(e){case 0:return 0==(t+n)%2;case 1:return 0==t%2;case 2:return 0==n%3;case 3:return 0==(t+n)%3;case 4:return 0==(Math.floor(t/2)+Math.floor(n/3))%2;case 5:return 0==t*n%2+t*n%3;case 6:return 0==(t*n%2+t*n%3)%2;case 7:return 0==(t*n%3+(t+n)%2)%2;default:throw Error("bad maskPattern:"+e)}},getErrorCorrectPolynomial:function(e){for(var t=new o([1],0),n=0;nt)switch(e){case 1:return 10;case 2:return 9;case n:case 8:return 8;default:throw Error("mode:"+e)}else if(27>t)switch(e){case 1:return 12;case 2:return 11;case n:return 16;case 8:return 10;default:throw Error("mode:"+e)}else{if(!(41>t))throw Error("type:"+t);switch(e){case 1:return 14;case 2:return 13;case n:return 16;case 8:return 12;default:throw Error("mode:"+e)}}},getLostPoint:function(e){for(var t=e.getModuleCount(),n=0,i=0;i=a;a++)if(!(0>i+a||t<=i+a))for(var l=-1;1>=l;l++)0>r+l||t<=r+l||0==a&&0==l||s==e.isDark(i+a,r+l)&&o++;5e)throw Error("glog("+e+")");return u.LOG_TABLE[e]},gexp:function(e){for(;0>e;)e+=255;for(;256<=e;)e-=255;return u.EXP_TABLE[e]},EXP_TABLE:Array(256),LOG_TABLE:Array(256)},c=0;8>c;c++)u.EXP_TABLE[c]=1<c;c++)u.EXP_TABLE[c]=u.EXP_TABLE[c-4]^u.EXP_TABLE[c-5]^u.EXP_TABLE[c-6]^u.EXP_TABLE[c-8];for(c=0;255>c;c++)u.LOG_TABLE[u.EXP_TABLE[c]]=c;return o.prototype={get:function(e){return this.num[e]},getLength:function(){return this.num.length},multiply:function(e){for(var t=Array(this.getLength()+e.getLength()-1),n=0;nthis.getLength()-e.getLength())return this;for(var t=u.glog(this.get(0))-u.glog(e.get(0)),n=Array(this.getLength()),i=0;i>>7-e%8&1)},put:function(e,t){for(var n=0;n>>t-n-1&1))},getLengthInBits:function(){return this.length},putBit:function(e){var t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}},"string"==typeof t&&(t={text:t}),t=e.extend({},{render:"canvas",width:256,height:256,typeNumber:-1,correctLevel:2,background:"#ffffff",foreground:"#000000"},t),this.each(function(){var n;if("canvas"==t.render){(n=new r(t.typeNumber,t.correctLevel)).addData(t.text),n.make();var i=document.createElement("canvas");i.width=t.width,i.height=t.height;for(var o=i.getContext("2d"),s=t.width/n.getModuleCount(),a=t.height/n.getModuleCount(),l=0;l").css("width",t.width+"px").css("height",t.height+"px").css("border","0px").css("border-collapse","collapse").css("background-color",t.background),o=t.width/n.getModuleCount(),s=t.height/n.getModuleCount(),a=0;a").css("height",s+"px").appendTo(i),u=0;u").css("width",o+"px").css("background-color",n.isDark(a,u)?t.foreground:t.background).appendTo(l);n=i,jQuery(n).appendTo(this)})}}(jQuery),function(){"use strict";var e="undefined"!=typeof window&&void 0!==window.document?window.document:{},t="undefined"!=typeof module&&module.exports,n=function(){for(var t,n=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],i=0,r=n.length,o={};i 0) { - const file = files[0]; - $scope.importFile.folder = "imports"; - $scope.importFile.title = $scope.attributeSetName; - $scope.importFile.description = $scope.attributeSetName + "'s data"; - $scope.importFile.file = file; + }, +]); - // if (ctrl.auto=='true') { - // ctrl.uploadFile(file); - // } - // else { - // ctrl.getBase64(file); - // } - } - }; - $scope.getList = async function (pageIndex) { - if (pageIndex !== undefined) { - $scope.request.pageIndex = pageIndex; - } - if ($scope.request.fromDate !== null) { - var df = new Date($scope.request.fromDate); - $scope.request.fromDate = df.toISOString(); - } - if ($scope.request.toDate !== null) { - var dt = new Date($scope.request.toDate); - $scope.request.toDate = dt.toISOString(); - } - var query = {}; - if ($routeParams.attributeSetId) { - $scope.request.attributeSetId = $routeParams.attributeSetId; - } - $scope.request.attributeSetName = $routeParams.attributeSetName; - $scope.request.filterType = $routeParams.filterType || "contain"; - Object.keys($scope.queries).forEach((e) => { - if ($scope.queries[e]) { - query[e] = $scope.queries[e]; - } - }); - $scope.request.query = JSON.stringify(query); - $rootScope.isBusy = true; - var resp = await service.getList($scope.request); - if (resp && resp.isSucceed) { - $scope.data = resp.data; - $.each($scope.data.items, function (i, data) { - $.each($scope.activeddata, function (i, e) { - if (e.dataId === data.id) { - data.isHidden = true; - } - }); - }); - if ($scope.getListSuccessCallback) { - $scope.getListSuccessCallback(); - } - $("html, body").animate( - { - scrollTop: "0px", - }, - 500 - ); - if (!resp.data || !resp.data.items.length) { - $scope.queries = {}; - } - $rootScope.isBusy = false; - $scope.$apply(); - } else { - if (resp) { - $rootScope.showErrors(resp.errors); - } - if ($scope.getListFailCallback) { - $scope.getListFailCallback(); - } - $scope.queries = {}; - $rootScope.isBusy = false; - $scope.$apply(); - } - }; - $scope.export = async function (pageIndex, exportAll) { - if (pageIndex !== undefined) { - $scope.request.pageIndex = pageIndex; - } - if ($scope.request.fromDate !== null) { - var df = new Date($scope.request.fromDate); - $scope.request.fromDate = df.toISOString(); - } - if ($scope.request.toDate !== null) { - var dt = new Date($scope.request.toDate); - $scope.request.toDate = dt.toISOString(); - } - var query = {}; - if ($routeParams.attributeSetId) { - $scope.request.attributeSetId = $routeParams.attributeSetId; - } - $scope.request.attributeSetName = $routeParams.attributeSetName; - $scope.request.filterType = $routeParams.filterType || "contain"; - Object.keys($scope.queries).forEach((e) => { - if ($scope.queries[e]) { - query[e] = $scope.queries[e]; - } - }); - $scope.request.query = JSON.stringify(query); - var request = angular.copy($scope.request); - $scope.exportAll = $scope.exportAll; - if (exportAll) { - request.pageSize = 10000; - request.pageIndex = 0; - } - $rootScope.isBusy = true; - var resp = await service.export(request); - if (resp && resp.isSucceed) { - if (resp.data) { - window.top.location = resp.data.webPath; - } else { - $rootScope.showMessage("Nothing to export"); - } - $rootScope.isBusy = false; - $scope.$apply(); - } else { - if (resp) { - $rootScope.showErrors(resp.errors); - } - $rootScope.isBusy = false; - $scope.$apply(); - } - }; - }, -]); - -'use strict'; -app.factory('MixRestAttributeSetPortalService', ['BaseService', 'CommonService', function (baseService, commonService) { - - var serviceFactory = Object.create(baseService); - serviceFactory.init('attribute-set-data'); - var _saveByName = async function (name, objData) { - var url = this.prefixUrl + '/save/' + name; - var req = { - serviceBase: this.serviceBase, - method: 'POST', - url: url, - data: JSON.stringify(objData) - }; - return await commonService.getApiResult(req); - }; - var _sendMail = async function (params = []) { - var url = (this.prefixUrl || '/' + this.lang + '/' + this.modelName) + '/sendmail'; - for (let i = 0; i < params.length; i++) { - if (params[i]) { - url += '/' + params[i]; - } - } - var req = { - method: 'GET', - url: url - }; - return await commonService.getApiResult(req); - }; - - var _import = async function (attributeSetName, file) { - var url = (this.prefixUrl || '/' + this.lang + '/' - + this.modelName) + '/import-data/' + attributeSetName; - var frm = new FormData(); - frm.append('file', file); - return serviceFactory.ajaxSubmitForm(frm, url); - }; - serviceFactory.saveByName = _saveByName; - serviceFactory.import = _import; - serviceFactory.sendMail = _sendMail; - return serviceFactory; - -}]); - -"use strict"; -app.controller("ConfigurationController", [ - "$scope", - "$rootScope", - "ngAppSettings", - "$routeParams", - "$location", - "ConfigurationService", - "CommonService", - function ( - $scope, - $rootScope, - ngAppSettings, - $routeParams, - $location, - service, - commonService - ) { - BaseRestCtrl.call( - this, - $scope, - $rootScope, - $location, - $routeParams, - ngAppSettings, - service - ); - $scope.cates = ngAppSettings.enums.configuration_cates; - $scope.settings = $rootScope.globalSettings; - $scope.request.category = $routeParams.category || ""; - $scope.getSingleSuccessCallback = function () { - if (!$scope.viewModel.category) { - $scope.viewModel.category = "Site"; - } - }; - $scope.saveSuccessCallback = function () { - commonService.initAllSettings().then(function () { - // $location.url($scope.referrerUrl); - $rootScope.isBusy = false; - $scope.$apply(); - }); - }; - $scope.removeCallback = function () { - commonService.initAllSettings().then(function () { - $location.url($scope.referrerUrl); - }); - }; - }, -]); - -"use strict"; -app.factory("ConfigurationService", [ - "BaseRestService", - "CommonService", - function (baseService, commonService) { - var serviceFactory = Object.create(baseService); - serviceFactory.init("configuration"); - - var _uploadConfiguration = async function (configurationFile) { - //var container = $(this).parents('.model-configuration').first().find('.custom-file').first(); - if ( - configurationFile.file !== undefined && - configurationFile.file !== null - ) { - // Create FormData object - var files = new FormData(); - - // Looping over all files and add it to FormData object - files.append(configurationFile.file.name, configurationFile.file); - - // Adding one more key to FormData object - files.append("fileFolder", configurationFile.folder); - files.append("title", configurationFile.title); - files.append("description", configurationFile.description); - - var req = { - url: this.prefixUrl + "/upload", - type: "POST", - headers: {}, - contentType: false, // Not to set any content header - processData: false, // Not to process data - data: files, - }; - - return await commonService.getApiResult(req); +"use strict"; +app.factory("ConfigurationService", [ + "BaseRestService", + "CommonService", + function (baseService, commonService) { + var serviceFactory = Object.create(baseService); + serviceFactory.init("configuration"); + + var _uploadConfiguration = async function (configurationFile) { + //var container = $(this).parents('.model-configuration').first().find('.custom-file').first(); + if ( + configurationFile.file !== undefined && + configurationFile.file !== null + ) { + // Create FormData object + var files = new FormData(); + + // Looping over all files and add it to FormData object + files.append(configurationFile.file.name, configurationFile.file); + + // Adding one more key to FormData object + files.append("fileFolder", configurationFile.folder); + files.append("title", configurationFile.title); + files.append("description", configurationFile.description); + + var req = { + url: this.prefixUrl + "/upload", + type: "POST", + headers: {}, + contentType: false, // Not to set any content header + processData: false, // Not to process data + data: files, + }; + + return await commonService.getApiResult(req); } }; serviceFactory.uploadConfiguration = _uploadConfiguration; @@ -1641,136 +1240,23 @@ app.factory('JsonDataService', ['$http', '$rootScope', 'CommonService', function }]); -"use strict"; -app.controller("LocalizeController", [ - "$scope", - "$rootScope", - "ngAppSettings", - "$routeParams", - "$location", - "LocalizeService", - "CommonService", - function ( - $scope, - $rootScope, - ngAppSettings, - $routeParams, - $location, - service, - commonService - ) { - BaseRestCtrl.call( - this, - $scope, - $rootScope, - $location, - $routeParams, - ngAppSettings, - service - ); - $scope.cates = []; - $scope.settings = $rootScope.globalSettings; - $scope.defaultId = "default"; - $scope.languageFile = { - file: null, - fullPath: "", - folder: "Language", - title: "", - description: "", - }; - $scope.dataTypes = $rootScope.globalSettings.dataTypes; - $scope.$on("$viewContentLoaded", function () { - $scope.cates = ngAppSettings.enums.language_cates; - $scope.settings = $rootScope.globalSettings; - $scope.cate = $scope.cates[0]; - }); - $scope.getSingleSuccessCallback = function () { - $scope.viewModel.category = "Site"; +'use strict'; +app.controller('loginController', ['$rootScope', '$scope', 'ngAppSettings', '$location', 'AuthService', 'ngAppSettings', function ($rootScope, $scope, ngAppSettings, $location, authService, ngAuthSettings) { + if (authService.authentication && authService.authentication.isAuth && authService.authentication.isAdmin) { + authService.referredUrl = $location.path(); + $location.path('/portal'); + } + + $scope.pageClass = 'page-login'; + + $scope.loginData = { + username: "", + password: "", + rememberme: false }; - $scope.saveSuccessCallback = function () { - commonService.initAllSettings().then(function () { - $location.url($scope.referrerUrl || "/portal/localize/list"); - $rootScope.isBusy = false; - $scope.$apply(); - }); - }; - $scope.removeCallback = function () { - commonService.initAllSettings().then(function () { - // $location.url($scope.referrerUrl); - }); - }; - $scope.generateDefault = function (text, cate) { - if (!$routeParams.id && !$scope.viewModel.keyword) { - $scope.viewModel.defaultValue = text; - $scope.viewModel.keyword = - cate.prefix + - text - .replace(/[^a-zA-Z0-9]+/g, "_") - .replace(/([A-Z]+)([A-Z][a-z])/g, "$1-$2") - .replace(/([a-z])([A-Z])/g, "$1-$2") - .replace(/([0-9])([^0-9])/g, "$1-$2") - .replace(/([^0-9])([0-9])/g, "$1-$2") - .replace(/-+/g, "_") - .toLowerCase(); - } - }; - }, -]); - -'use strict'; -app.factory('LocalizeService', ['BaseRestService', 'CommonService', function (baseService, commonService) { - - var serviceFactory = Object.create(baseService); - serviceFactory.init('language'); - - var _uploadLanguage = async function (languageFile) { - //var container = $(this).parents('.model-language').first().find('.custom-file').first(); - if (languageFile.file !== undefined && languageFile.file !== null) { - // Create FormData object - var files = new FormData(); - - // Looping over all files and add it to FormData object - files.append(languageFile.file.name, languageFile.file); - - // Adding one more key to FormData object - files.append('fileFolder', languageFile.folder); files.append('title', languageFile.title); - files.append('description', languageFile.description); - - var req = { - url: this.prefixUrl + '/upload', - type: "POST", - headers: { - }, - contentType: false, // Not to set any content header - processData: false, // Not to process data - data: files, - }; - - return await commonService.getApiResult(req) - } - }; - serviceFactory.uploadLanguage = _uploadLanguage; - return serviceFactory; - -}]); - -'use strict'; -app.controller('loginController', ['$rootScope', '$scope', 'ngAppSettings', '$location', 'AuthService', 'ngAppSettings', function ($rootScope, $scope, ngAppSettings, $location, authService, ngAuthSettings) { - if (authService.authentication && authService.authentication.isAuth && authService.authentication.isAdmin) { - authService.referredUrl = $location.path(); - $location.path('/portal'); - } - - $scope.pageClass = 'page-login'; - - $scope.loginData = { - username: "", - password: "", - rememberme: false - }; - - $scope.message = ""; - $scope.$on('$viewContentLoaded', function () { + + $scope.message = ""; + $scope.$on('$viewContentLoaded', function () { $rootScope.isBusy = false; }); $scope.login = async function () { @@ -1832,26 +1318,22 @@ app.controller('loginController', ['$rootScope', '$scope', 'ngAppSettings', '$lo } }]); "use strict"; -app.controller("ModuleController", [ +app.controller("LocalizeController", [ "$scope", "$rootScope", "ngAppSettings", - "$location", "$routeParams", - "ModuleRestService", - "SharedModuleDataService", - "RestRelatedAttributeSetPortalService", - "RestAttributeSetDataPortalService", + "$location", + "LocalizeService", + "CommonService", function ( $scope, $rootScope, ngAppSettings, - $location, $routeParams, - moduleServices, - moduleDataService, - RestRelatedAttributeSetPortalService, - dataService + $location, + service, + commonService ) { BaseRestCtrl.call( this, @@ -1860,263 +1342,481 @@ app.controller("ModuleController", [ $location, $routeParams, ngAppSettings, - moduleServices, - "product" + service ); - $scope.contentUrl = ""; + $scope.cates = []; + $scope.settings = $rootScope.globalSettings; + $scope.defaultId = "default"; + $scope.languageFile = { + file: null, + fullPath: "", + folder: "Language", + title: "", + description: "", + }; + $scope.dataTypes = $rootScope.globalSettings.dataTypes; + $scope.$on("$viewContentLoaded", function () { + $scope.cates = ngAppSettings.enums.language_cates; + $scope.settings = $rootScope.globalSettings; + $scope.cate = $scope.cates[0]; + }); $scope.getSingleSuccessCallback = function () { - $scope.loadAdditionalData(); + $scope.viewModel.category = "Site"; + }; + $scope.saveSuccessCallback = function () { + commonService.initAllSettings().then(function () { + $location.url($scope.referrerUrl || "/portal/localize/list"); + $rootScope.isBusy = false; + $scope.$apply(); + }); + }; + $scope.removeCallback = function () { + commonService.initAllSettings().then(function () { + // $location.url($scope.referrerUrl); + }); + }; + $scope.generateDefault = function (text, cate) { + if (!$routeParams.id && !$scope.viewModel.keyword) { + $scope.viewModel.defaultValue = text; + $scope.viewModel.keyword = + cate.prefix + + text + .replace(/[^a-zA-Z0-9]+/g, "_") + .replace(/([A-Z]+)([A-Z][a-z])/g, "$1-$2") + .replace(/([a-z])([A-Z])/g, "$1-$2") + .replace(/([0-9])([^0-9])/g, "$1-$2") + .replace(/([^0-9])([0-9])/g, "$1-$2") + .replace(/-+/g, "_") + .toLowerCase(); + } + }; + }, +]); - if ($scope.viewModel.id > 0) { - // module => list post or list product - if ($scope.viewModel.type == 2 || $scope.viewModel.type == 6) { - $scope.contentUrl = - "/portal/module-post/list/" + $scope.viewModel.id; - } else { - $scope.contentUrl = "/portal/module/data/" + $scope.viewModel.id; +'use strict'; +app.factory('LocalizeService', ['BaseRestService', 'CommonService', function (baseService, commonService) { + + var serviceFactory = Object.create(baseService); + serviceFactory.init('language'); + + var _uploadLanguage = async function (languageFile) { + //var container = $(this).parents('.model-language').first().find('.custom-file').first(); + if (languageFile.file !== undefined && languageFile.file !== null) { + // Create FormData object + var files = new FormData(); + + // Looping over all files and add it to FormData object + files.append(languageFile.file.name, languageFile.file); + + // Adding one more key to FormData object + files.append('fileFolder', languageFile.folder); files.append('title', languageFile.title); + files.append('description', languageFile.description); + + var req = { + url: this.prefixUrl + '/upload', + type: "POST", + headers: { + }, + contentType: false, // Not to set any content header + processData: false, // Not to process data + data: files, + }; + + return await commonService.getApiResult(req) } - } - if ($scope.viewModel.sysCategories) { - angular.forEach($scope.viewModel.sysCategories, function (e) { - e.attributeData.obj.isActived = true; - }); - } + }; + serviceFactory.uploadLanguage = _uploadLanguage; + return serviceFactory; - if ($scope.viewModel.sysTags) { - angular.forEach($scope.viewModel.sysTags, function (e) { - e.attributeData.obj.isActived = true; - }); - } +}]); - if ($routeParams.template) { - $scope.viewModel.view = $rootScope.findObjectByKey( - $scope.viewModel.templates, - "fileName", - $routeParams.template - ); +"use strict"; +app.controller("MixDatabaseController", [ + "$scope", + "$rootScope", + "$location", + "ngAppSettings", + "$routeParams", + "RestMixDatabaseColumnPortalService", + "RestMixDatabasePortalService", + function ( + $scope, + $rootScope, + $location, + ngAppSettings, + $routeParams, + mixDatabaseColumnService, + service + ) { + BaseRestCtrl.call( + this, + $scope, + $rootScope, + $location, + $routeParams, + ngAppSettings, + service + ); + $scope.defaultAttr = null; + $scope.actions = ["Delete"]; + // $scope.request.selects = 'id,title,name,createdDateTime'; + $scope.orders = [ + { title: "Id", value: "id" }, + { title: "Name", value: "name" }, + { title: "Created Date", value: "createdDateTime" }, + ]; + $scope.request.orderBy = "createdDateTime"; + $scope.getSingleSuccessCallback = async function () { + var getDefaultAttr = await mixDatabaseColumnService.getDefault(); + if (getDefaultAttr.isSucceed) { + $scope.defaultAttr = getDefaultAttr.data; + $scope.defaultAttr.options = []; } + $scope.$apply(); }; - $scope.getListByType = async function (pageIndex) { - $scope.request.query = "?type=" + $scope.type; - await $scope.getList(pageIndex); - }; - $scope.defaultAttr = { - name: "", - options: [], - priority: 0, - dataType: 7, - isGroupBy: false, - isSelect: false, - isDisplay: true, - width: 3, - }; - $scope.type = "-1"; + }, +]); - $scope.settings = $rootScope.globalSettings; - $scope.viewModel = null; - $scope.editDataUrl = ""; +"use strict"; +app.factory("MixDatabaseService", [ + "BaseRestService", + function (baseService) { + var serviceFactory = Object.create(baseService); + serviceFactory.init("mix-database/portal", true); + // Define more service methods here + return serviceFactory; + }, +]); - $scope.loadModuleDatas = async function () { - $rootScope.isBusy = true; - var id = $routeParams.id; - $scope.dataColumns = []; - var response = await moduleServices.getSingle([id]); - if (response.isSucceed) { - $scope.viewModel = response.data; - $scope.editDataUrl = - "/portal/module-data/details/" + $scope.viewModel.id; - $scope.loadMoreModuleDatas(); - angular.forEach($scope.viewModel.columns, function (e, i) { - if (e.isDisplay) { - $scope.dataColumns.push({ - title: e.title, - name: e.name, - filter: true, - type: 0, // string - ngAppSettings.dataTypes[0] - }); - } - }); - $rootScope.isBusy = false; - $scope.$apply(); - } else { - $rootScope.showErrors(response.errors); - $rootScope.isBusy = false; - $scope.$apply(); - } +"use strict"; +app.controller("MixDatabaseDataController", [ + "$scope", + "$rootScope", + "ngAppSettings", + "$routeParams", + "$location", + "RestMixDatabaseDataPortalService", + "RestMixDatabaseColumnPortalService", + function ( + $scope, + $rootScope, + ngAppSettings, + $routeParams, + $location, + service, + fieldService + ) { + BaseRestCtrl.call( + this, + $scope, + $rootScope, + $location, + $routeParams, + ngAppSettings, + service + ); + $scope.queries = {}; + $scope.data = {}; + $scope.exportAll = true; + $scope.settings = $rootScope.globalSettings; + $scope.request.orderBy = "Priority"; + $scope.request.direction = "Asc"; + $scope.filterType = "contain"; + $scope.defaultId = "default"; + $scope.importFile = { + file: null, + fullPath: "", + folder: "import", + title: "", + description: "", }; - - $scope.loadMoreModuleDatas = async function (pageIndex) { - $scope.request.query = "&module_id=" + $scope.viewModel.id; - if (pageIndex !== undefined) { - $scope.request.pageIndex = pageIndex; + $scope.initRouteParams = () => { + $scope.mixDatabaseId = $routeParams.mixDatabaseId; + $scope.mixDatabaseName = $routeParams.mixDatabaseName; + $scope.mixDatabaseTitle = $routeParams.mixDatabaseTitle; + $scope.parentId = $routeParams.parentId; + $scope.parentType = $routeParams.parentType; + $scope.request.mixDatabaseName = $routeParams.mixDatabaseName; + if ($routeParams.backUrl) { + $scope.backUrl = decodeURIComponent($routeParams.backUrl); } - if ($scope.request.fromDate !== null) { - var d = new Date($scope.request.fromDate); - $scope.request.fromDate = d.toISOString(); + if ($routeParams.dataId != $scope.defaultId) { + $scope.dataId = $routeParams.dataId; } - if ($scope.request.toDate !== null) { - var d = new Date($scope.request.toDate); - $scope.request.toDate = d.toISOString(); + + if ($scope.parentId && $scope.parentType) { + $scope.refDataModel = { + parentId: $scope.parentId, + parentType: $scope.parentType, + }; } - $rootScope.isBusy = true; - var resp = await moduleDataService.getModuleDatas($scope.request); - if (resp && resp.isSucceed) { - $scope.viewModel.data = resp.data; - $rootScope.isBusy = false; - $scope.$apply(); - } else { - if (resp) { - $rootScope.showErrors(resp.errors); + }; + $scope.init = async function () { + $scope.initRouteParams(); + if ($scope.mixDatabaseName || $scope.mixDatabaseId) { + var getFields = await fieldService.initData( + $scope.mixDatabaseName || $scope.mixDatabaseId + ); + if (getFields.isSucceed) { + $scope.fields = getFields.data; + $scope.$apply(); } - $rootScope.isBusy = false; - $scope.$apply(); } }; - $scope.exportModuleData = async function (pageIndex) { - $scope.request.query = "&module_id=" + $scope.viewModel.id; - if (pageIndex !== undefined) { - $scope.request.pageIndex = pageIndex; - } - if ($scope.request.fromDate !== null) { - var d = new Date($scope.request.fromDate); - $scope.request.fromDate = d.toISOString(); - } - if ($scope.request.toDate !== null) { - var d = new Date($scope.request.toDate); - $scope.request.toDate = d.toISOString(); + $scope.saveData = function (data) { + $scope.viewModel = data; + $scope.save(); + }; + $scope.selectData = function () { + if ($scope.selectedList.data.length) { + $scope.viewModel = $scope.selectedList.data[0]; } - $rootScope.isBusy = true; - var resp = await moduleDataService.exportModuleData($scope.request); - if (resp && resp.isSucceed) { - window.top.location = resp.data; - $rootScope.isBusy = false; - $scope.$apply(); + }; + $scope.saveSuccessCallback = function () { + if ($location.path() == "/portal/mix-database-data/create") { + let backUrl = + $scope.backUrl || + `/portal/mix-database-data/details?dataId=${$scope.viewModel.id}`; + $rootScope.goToSiteUrl(backUrl); } else { - if (resp) { - $rootScope.showErrors(resp.errors); + if ($scope.parentId && $scope.parentType == 'Set') { + $rootScope.goToSiteUrl(`/portal/mix-database-data/details?dataId=${$scope.parentId}`); + } else { + let backUrl = + $scope.backUrl || + `/portal/mix-database-data/list?mixDatabaseId=${$scope.viewModel.mixDatabaseId}&mixDatabaseName=${$scope.viewModel.mixDatabaseName}&mixDatabaseTitle=${$scope.viewModel.mixDatabaseName}`; + $rootScope.goToSiteUrl(backUrl); } - $rootScope.isBusy = false; - $scope.$apply(); } }; - $scope.removeData = function (id) { - if ($scope.viewModel) { - $rootScope.showConfirm( - $scope, - "removeDataConfirmed", - [id], - null, - "Remove Data", - "Deleted data will not able to recover, are you sure you want to delete this item?" - ); - } + $scope.preview = function (item) { + item.editUrl = "/portal/post/details/" + item.id; + $rootScope.preview("post", item, item.title, "modal-lg"); + }; + $scope.edit = function (data) { + $rootScope.goToPath( + "/portal/mix-database-data/details?dataId=" + data.id + "&abc" + ); + }; + $scope.remove = function (data) { + $rootScope.showConfirm( + $scope, + "removeConfirmed", + [data.id], + null, + "Remove", + "Deleted data will not able to recover, are you sure you want to delete this item?" + ); }; - $scope.removeDataConfirmed = async function (id) { + $scope.removeConfirmed = async function (dataId) { $rootScope.isBusy = true; - var result = await moduleDataService.removeModuleData(id); + var result = await service.delete([dataId]); if (result.isSucceed) { - $scope.loadModuleDatas(); + if ($scope.removeCallback) { + $rootScope.executeFunctionByName( + "removeCallback", + $scope.removeCallbackArgs, + $scope + ); + } + $scope.getList(); } else { $rootScope.showMessage("failed"); $rootScope.isBusy = false; $scope.$apply(); } }; - $scope.updateModuleDataField = async function (item, propertyName) { - var result = await moduleDataService.saveFields( - item.id, - propertyName, - item[propertyName] + $scope.import = async function () { + if ($scope.validateDataFile()) { + $rootScope.isBusy = true; + var form = document.getElementById("form-portal"); + var result = await service.import( + $scope.mixDatabaseName, + form["import-data-inp"].files[0] + ); + if (result.isSucceed) { + $rootScope.showMessage("success", "success"); + $rootScope.isBusy = false; + $scope.getList(0); + } else { + $rootScope.showMessage("failed"); + $rootScope.isBusy = false; + $scope.$apply(); + } + } + }; + $scope.validateDataFile = function () { + if (!$scope.importFile.file) { + $rootScope.showMessage("Please choose data file", "danger"); + return false; + } else { + return true; + } + }; + $scope.sendMail = function (data) { + var email = ""; + angular.forEach(data.values, function (e) { + if (e.mixDatabaseColumnName == "email") { + email = e.stringValue; + } + }); + $rootScope.showConfirm( + $scope, + "sendMailConfirmed", + [data], + null, + "Send mail", + "Are you sure to send mail to " + email ); + }; + $scope.sendMailConfirmed = async function (data) { + $rootScope.isBusy = true; + $rootScope.isBusy = true; + var result = await service.sendMail([data.id]); if (result.isSucceed) { - $scope.loadModuleDatas(); + $rootScope.showMessage("success", "success"); + $rootScope.isBusy = false; + $scope.$apply(); } else { $rootScope.showMessage("failed"); $rootScope.isBusy = false; $scope.$apply(); } }; - $scope.updateDataInfos = async function (items) { - $rootScope.isBusy = true; - var resp = await moduleDataService.updateInfos(items); - if (resp && resp.isSucceed) { - $scope.activedPage = resp.data; - $rootScope.showMessage("success", "success"); - $rootScope.isBusy = false; + $scope.saveOthers = async function () { + var response = await service.saveList($scope.others); + if (response.isSucceed) { + $scope.getList(); $scope.$apply(); } else { - if (resp) { - $rootScope.showErrors(resp.errors); - } + $rootScope.showErrors(response.errors); $rootScope.isBusy = false; $scope.$apply(); } }; - $scope.saveSuccessCallback = async function () { - if ($scope.additionalData) { - $scope.additionalData.parentId = $scope.viewModel.id; - $scope.additionalData.parentType = "Module"; - var saveData = await dataService.saveAdditionalData( - $scope.additionalData - ); - if (saveData.isSucceed) { - if ($location.path() == "/portal/module/create") { - $scope.goToDetail($scope.viewModel.id, "module"); - $rootScope.isBusy = false; - $scope.$apply(); - } else { - $scope.additionalData = saveData.data; - $rootScope.isBusy = false; - $scope.$apply(); - } - } + $scope.selectImportFile = function (files) { + if (files !== undefined && files !== null && files.length > 0) { + const file = files[0]; + $scope.importFile.folder = "imports"; + $scope.importFile.title = $scope.mixDatabaseName; + $scope.importFile.description = $scope.mixDatabaseName + "'s data"; + $scope.importFile.file = file; + + // if (ctrl.auto=='true') { + // ctrl.uploadFile(file); + // } + // else { + // ctrl.getBase64(file); + // } } }; - $scope.loadPosts = async function () { + $scope.getList = async function (pageIndex) { + if (pageIndex !== undefined) { + $scope.request.pageIndex = pageIndex; + } + if ($scope.request.fromDate !== null) { + var df = new Date($scope.request.fromDate); + $scope.request.fromDate = df.toISOString(); + } + if ($scope.request.toDate !== null) { + var dt = new Date($scope.request.toDate); + $scope.request.toDate = dt.toISOString(); + } + var query = {}; + if ($routeParams.mixDatabaseId) { + $scope.request.mixDatabaseId = $routeParams.mixDatabaseId; + } + $scope.request.mixDatabaseName = $routeParams.mixDatabaseName; + $scope.request.filterType = $routeParams.filterType || "contain"; + Object.keys($scope.queries).forEach((e) => { + if ($scope.queries[e]) { + query[e] = $scope.queries[e]; + } + }); + $scope.request.query = JSON.stringify(query); $rootScope.isBusy = true; - var id = $routeParams.id; - $scope.postRequest.query += "&page_id=" + id; - var response = await pagePostRestService.getList($scope.postRequest); - if (response.isSucceed) { - $scope.pageData.posts = response.data; + var resp = await service.getList($scope.request); + if (resp && resp.isSucceed) { + $scope.data = resp.data; + $.each($scope.data.items, function (i, data) { + $.each($scope.activeddata, function (i, e) { + if (e.dataId === data.id) { + data.isHidden = true; + } + }); + }); + if ($scope.getListSuccessCallback) { + $scope.getListSuccessCallback(); + } + $("html, body").animate( + { + scrollTop: "0px", + }, + 500 + ); + if (!resp.data || !resp.data.items.length) { + $scope.queries = {}; + } $rootScope.isBusy = false; $scope.$apply(); } else { - $rootScope.showErrors(response.errors); + if (resp) { + $rootScope.showErrors(resp.errors); + } + if ($scope.getListFailCallback) { + $scope.getListFailCallback(); + } + $scope.queries = {}; $rootScope.isBusy = false; $scope.$apply(); } }; - $scope.selectedCol = null; - $scope.dragoverCallback = function (index, item, external, type) { - //console.log('drop ', index, item, external, type); - }; - $scope.insertColCallback = function (index, item, external, type) { }; - $scope.removeAttribute = function (attr, index) { - $rootScope.showConfirm( - $scope, - "removeAttributeConfirmed", - [attr, index], - null, - "Remove Field", - "Deleted data will not able to recover, are you sure you want to delete this item?" - ); - }; - $scope.removeAttributeConfirmed = function (attr, index) { - RestRelatedAttributeSetPortalService.delete([]); - $scope.viewModel.attributeData.data.values.splice(index, 1); - }; - $scope.loadAdditionalData = async function () { - const obj = { - parentType: "Module", - parentId: $scope.viewModel.id, - databaseName: "sys_additional_field_module", - }; - const getData = await dataService.getAdditionalData(obj); - if (getData.isSucceed) { - $scope.additionalData = getData.data; + $scope.export = async function (pageIndex, exportAll) { + if (pageIndex !== undefined) { + $scope.request.pageIndex = pageIndex; + } + if ($scope.request.fromDate !== null) { + var df = new Date($scope.request.fromDate); + $scope.request.fromDate = df.toISOString(); + } + if ($scope.request.toDate !== null) { + var dt = new Date($scope.request.toDate); + $scope.request.toDate = dt.toISOString(); + } + var query = {}; + if ($routeParams.mixDatabaseId) { + $scope.request.mixDatabaseId = $routeParams.mixDatabaseId; + } + $scope.request.mixDatabaseName = $routeParams.mixDatabaseName; + $scope.request.filterType = $routeParams.filterType || "contain"; + Object.keys($scope.queries).forEach((e) => { + if ($scope.queries[e]) { + query[e] = $scope.queries[e]; + } + }); + $scope.request.query = JSON.stringify(query); + var request = angular.copy($scope.request); + $scope.exportAll = $scope.exportAll; + if (exportAll) { + request.pageSize = 10000; + request.pageIndex = 0; + } + $rootScope.isBusy = true; + var resp = await service.export(request); + if (resp && resp.isSucceed) { + if (resp.data) { + window.top.location = resp.data.webPath; + } else { + $rootScope.showMessage("Nothing to export"); + } + $rootScope.isBusy = false; + $scope.$apply(); + } else { + if (resp) { + $rootScope.showErrors(resp.errors); + } $rootScope.isBusy = false; $scope.$apply(); } @@ -2124,34 +1824,76 @@ app.controller("ModuleController", [ }, ]); -'use strict'; -app.factory('ModuleRestService', ['BaseRestService', - function (baseService) { - var serviceFactory = Object.create(baseService); - serviceFactory.init('module/portal'); - // Define more service methods here - return serviceFactory; - }]); +"use strict"; +app.factory("MixRestMixDatabasePortalService", [ + "BaseService", + "CommonService", + function (baseService, commonService) { + var serviceFactory = Object.create(baseService); + serviceFactory.init("mix-database-data"); + var _saveByName = async function (name, objData) { + var url = this.prefixUrl + "/save/" + name; + var req = { + serviceBase: this.serviceBase, + method: "POST", + url: url, + data: JSON.stringify(objData), + }; + return await commonService.getApiResult(req); + }; + var _sendMail = async function (params = []) { + var url = + (this.prefixUrl || "/" + this.lang + "/" + this.modelName) + + "/sendmail"; + for (let i = 0; i < params.length; i++) { + if (params[i]) { + url += "/" + params[i]; + } + } + var req = { + method: "GET", + url: url, + }; + return await commonService.getApiResult(req); + }; + + var _import = async function (mixDatabaseName, file) { + var url = + (this.prefixUrl || "/" + this.lang + "/" + this.modelName) + + "/import-data/" + + mixDatabaseName; + var frm = new FormData(); + frm.append("file", file); + return serviceFactory.ajaxSubmitForm(frm, url); + }; + serviceFactory.saveByName = _saveByName; + serviceFactory.import = _import; + serviceFactory.sendMail = _sendMail; + return serviceFactory; + }, +]); "use strict"; -app.controller("ModuleDataController", [ +app.controller("ModuleController", [ "$scope", "$rootScope", "ngAppSettings", - "$routeParams", "$location", - "ModuleDataRestService", + "$routeParams", "ModuleRestService", - "CommonService", + "SharedModuleDataService", + "RestRelatedMixDatabasePortalService", + "RestMixDatabaseDataPortalService", function ( $scope, $rootScope, ngAppSettings, - $routeParams, $location, - service, - moduleService, - commonService + $routeParams, + moduleServices, + moduleDataService, + RestRelatedMixDatabasePortalService, + dataService ) { BaseRestCtrl.call( this, @@ -2160,75 +1902,107 @@ app.controller("ModuleDataController", [ $location, $routeParams, ngAppSettings, - service + moduleServices, + "product" ); - $scope.request.orderBy = "Priority"; - $scope.request.direction = "Asc"; - $scope.cates = ["Site", "System"]; - $scope.others = []; - $scope.settings = $rootScope.globalSettings; - $scope.moduleId = $routeParams.moduleId; - $scope.backUrl = `/portal/module-data/list/${$scope.moduleId}`; - $scope.module = null; - $scope.dataColumns = []; - $scope.editDataUrl = "/portal/module-data/details/" + $scope.moduleId; - $scope.init = async function () { - $scope.id = $routeParams.id; - if (!$scope.module) { - var getModule = await moduleService.getSingle([$scope.moduleId]); - if (getModule.isSucceed) { - $scope.module = getModule.data; - angular.forEach($scope.module.columns, function (e, i) { - if (e.isDisplay) { - $scope.dataColumns.push({ - title: e.title, - name: e.name, - datatype: e.dataType, - filter: true, - type: 0, // string - ngAppSettings.dataTypes[0] - }); - } - }); - $scope.$apply(); + $scope.contentUrl = ""; + $scope.getSingleSuccessCallback = function () { + $scope.loadAdditionalData(); + + if ($scope.viewModel.id > 0) { + // module => list post or list product + if ($scope.viewModel.type == 2 || $scope.viewModel.type == 6) { + $scope.contentUrl = "/portal/module-post/list/" + $scope.viewModel.id; + } else { + $scope.contentUrl = "/portal/module/data/" + $scope.viewModel.id; } } - }; - $scope.getList = async function () { - $rootScope.isBusy = true; - $scope.request.module_id = $scope.moduleId; - var response = await service.getList($scope.request); - if (response.isSucceed) { - $scope.data = response.data; - $rootScope.isBusy = false; - $scope.$apply(); - } else { - $rootScope.showErrors(response.errors); - $rootScope.isBusy = false; - $scope.$apply(); + if ($scope.viewModel.sysCategories) { + angular.forEach($scope.viewModel.sysCategories, function (e) { + e.attributeData.obj.isActived = true; + }); } - }; - $scope.export = async function () { - $rootScope.isBusy = true; - $scope.request.module_id = $scope.moduleId; - var response = await service.export($scope.request); - if (response.isSucceed) { - window.top.location = response.data.webPath; - $rootScope.isBusy = false; - $scope.$apply(); - } else { - $rootScope.showErrors(response.errors); - $rootScope.isBusy = false; + if ($scope.viewModel.sysTags) { + angular.forEach($scope.viewModel.sysTags, function (e) { + e.attributeData.obj.isActived = true; + }); + } + + if ($routeParams.template) { + $scope.viewModel.view = $rootScope.findObjectByKey( + $scope.viewModel.templates, + "fileName", + $routeParams.template + ); + } + }; + $scope.getListByType = async function (pageIndex) { + $scope.request.query = "?type=" + $scope.type; + await $scope.getList(pageIndex); + }; + $scope.defaultAttr = { + name: "", + options: [], + priority: 0, + dataType: 7, + isGroupBy: false, + isSelect: false, + isDisplay: true, + width: 3, + }; + $scope.type = "-1"; + + $scope.settings = $rootScope.globalSettings; + $scope.viewModel = null; + $scope.editDataUrl = ""; + + $scope.loadModuleDatas = async function () { + $rootScope.isBusy = true; + var id = $routeParams.id; + $scope.dataColumns = []; + var response = await moduleServices.getSingle([id]); + if (response.isSucceed) { + $scope.viewModel = response.data; + $scope.editDataUrl = + "/portal/module-data/details/" + $scope.viewModel.id; + $scope.loadMoreModuleDatas(); + angular.forEach($scope.viewModel.columns, function (e, i) { + if (e.isDisplay) { + $scope.dataColumns.push({ + title: e.title, + name: e.name, + filter: true, + type: 0, // string - ngAppSettings.dataTypes[0] + }); + } + }); + $rootScope.isBusy = false; + $scope.$apply(); + } else { + $rootScope.showErrors(response.errors); + $rootScope.isBusy = false; $scope.$apply(); } }; - $scope.getSingle = async function () { + $scope.loadMoreModuleDatas = async function (pageIndex) { + $scope.request.query = "&module_id=" + $scope.viewModel.id; + if (pageIndex !== undefined) { + $scope.request.pageIndex = pageIndex; + } + if ($scope.request.fromDate !== null) { + var d = new Date($scope.request.fromDate); + $scope.request.fromDate = d.toISOString(); + } + if ($scope.request.toDate !== null) { + var d = new Date($scope.request.toDate); + $scope.request.toDate = d.toISOString(); + } $rootScope.isBusy = true; - var resp = await service.getSingle($routeParams.id, "portal"); + var resp = await moduleDataService.getModuleDatas($scope.request); if (resp && resp.isSucceed) { - $scope.activedModuleData = resp.data; - $rootScope.initEditor(); + $scope.viewModel.data = resp.data; $rootScope.isBusy = false; $scope.$apply(); } else { @@ -2239,42 +2013,116 @@ app.controller("ModuleDataController", [ $scope.$apply(); } }; - $scope.remove = function (dataId) { - $rootScope.showConfirm( - $scope, - "removeConfirmed", - [dataId], - null, - "Remove", - "Deleted data will not able to recover, are you sure you want to delete this item?" - ); + $scope.exportModuleData = async function (pageIndex) { + $scope.request.query = "&module_id=" + $scope.viewModel.id; + if (pageIndex !== undefined) { + $scope.request.pageIndex = pageIndex; + } + if ($scope.request.fromDate !== null) { + var d = new Date($scope.request.fromDate); + $scope.request.fromDate = d.toISOString(); + } + if ($scope.request.toDate !== null) { + var d = new Date($scope.request.toDate); + $scope.request.toDate = d.toISOString(); + } + $rootScope.isBusy = true; + var resp = await moduleDataService.exportModuleData($scope.request); + if (resp && resp.isSucceed) { + window.top.location = resp.data; + $rootScope.isBusy = false; + $scope.$apply(); + } else { + if (resp) { + $rootScope.showErrors(resp.errors); + } + $rootScope.isBusy = false; + $scope.$apply(); + } }; - $scope.removeConfirmed = async function (dataId) { + $scope.removeData = function (id) { + if ($scope.viewModel) { + $rootScope.showConfirm( + $scope, + "removeDataConfirmed", + [id], + null, + "Remove Data", + "Deleted data will not able to recover, are you sure you want to delete this item?" + ); + } + }; + + $scope.removeDataConfirmed = async function (id) { $rootScope.isBusy = true; - var result = await service.delete([dataId]); + var result = await moduleDataService.removeModuleData(id); if (result.isSucceed) { - if ($scope.removeCallback) { - $rootScope.executeFunctionByName( - "removeCallback", - $scope.removeCallbackArgs, - $scope - ); - } - $scope.getList(); + $scope.loadModuleDatas(); } else { $rootScope.showMessage("failed"); $rootScope.isBusy = false; $scope.$apply(); } }; - - $scope.removeCallback = function () { }; - - $scope.saveOthers = async function () { - var response = await service.saveList($scope.others); + $scope.updateModuleDataField = async function (item, propertyName) { + var result = await moduleDataService.saveFields( + item.id, + propertyName, + item[propertyName] + ); + if (result.isSucceed) { + $scope.loadModuleDatas(); + } else { + $rootScope.showMessage("failed"); + $rootScope.isBusy = false; + $scope.$apply(); + } + }; + $scope.updateDataInfos = async function (items) { + $rootScope.isBusy = true; + var resp = await moduleDataService.updateInfos(items); + if (resp && resp.isSucceed) { + $scope.activedPage = resp.data; + $rootScope.showMessage("success", "success"); + $rootScope.isBusy = false; + $scope.$apply(); + } else { + if (resp) { + $rootScope.showErrors(resp.errors); + } + $rootScope.isBusy = false; + $scope.$apply(); + } + }; + $scope.saveSuccessCallback = async function () { + if ($scope.additionalData) { + $scope.additionalData.parentId = $scope.viewModel.id; + $scope.additionalData.parentType = "Module"; + var saveData = await dataService.saveAdditionalData( + $scope.additionalData + ); + if (saveData.isSucceed) { + if ($location.path() == "/portal/module/create") { + $scope.goToDetail($scope.viewModel.id, "module"); + $rootScope.isBusy = false; + $scope.$apply(); + } else { + $scope.additionalData = saveData.data; + $rootScope.isBusy = false; + $scope.$apply(); + } + } + } + }; + $scope.loadPosts = async function () { + $rootScope.isBusy = true; + var id = $routeParams.id; + $scope.postRequest.query += "&page_id=" + id; + var response = await pagePostRestService.getList($scope.postRequest); if (response.isSucceed) { - $scope.getList(); + $scope.pageData.posts = response.data; + $rootScope.isBusy = false; $scope.$apply(); } else { $rootScope.showErrors(response.errors); @@ -2282,36 +2130,229 @@ app.controller("ModuleDataController", [ $scope.$apply(); } }; + $scope.selectedCol = null; + $scope.dragoverCallback = function (index, item, external, type) { + //console.log('drop ', index, item, external, type); + }; + $scope.insertColCallback = function (index, item, external, type) {}; + $scope.removeAttribute = function (attr, index) { + $rootScope.showConfirm( + $scope, + "removeAttributeConfirmed", + [attr, index], + null, + "Remove Field", + "Deleted data will not able to recover, are you sure you want to delete this item?" + ); + }; + $scope.removeAttributeConfirmed = function (attr, index) { + RestRelatedMixDatabasePortalService.delete([]); + $scope.viewModel.attributeData.data.values.splice(index, 1); + }; + $scope.loadAdditionalData = async function () { + const obj = { + parentType: "Module", + parentId: $scope.viewModel.id, + databaseName: "sys_additional_field_module", + }; + const getData = await dataService.getAdditionalData(obj); + if (getData.isSucceed) { + $scope.additionalData = getData.data; + $rootScope.isBusy = false; + $scope.$apply(); + } + }; }, ]); 'use strict'; -app.factory('ModuleDataRestService', ['BaseRestService', 'CommonService', - function (baseService, commonService) { +app.factory('ModuleRestService', ['BaseRestService', + function (baseService) { var serviceFactory = Object.create(baseService); - serviceFactory.init('module-data/portal'); + serviceFactory.init('module/portal'); // Define more service methods here - - var _initForm = async function (moduleId) { - var url = `${this.prefixUrl}/init-form/${moduleId}`; - var req = { - method: 'GET', - url: url - }; - return await commonService.getRestApiResult(req); - }; - serviceFactory.initForm = _initForm; return serviceFactory; }]); -'use strict'; -app.controller('ModuleGalleryController', - ['$scope', '$rootScope', 'ngAppSettings', '$routeParams', '$location', 'ModuleGalleryService', 'CommonService', - function ($scope, $rootScope, ngAppSettings, $routeParams, $location, service, commonService) { - BaseCtrl.call(this, $scope, $rootScope, $routeParams, ngAppSettings, service); - $scope.cates = ['Site', 'System']; - $scope.others = []; - $scope.settings = $rootScope.globalSettings; +"use strict"; +app.controller("ModuleDataController", [ + "$scope", + "$rootScope", + "ngAppSettings", + "$routeParams", + "$location", + "ModuleDataRestService", + "ModuleRestService", + "CommonService", + function ( + $scope, + $rootScope, + ngAppSettings, + $routeParams, + $location, + service, + moduleService, + commonService + ) { + BaseRestCtrl.call( + this, + $scope, + $rootScope, + $location, + $routeParams, + ngAppSettings, + service + ); + $scope.request.orderBy = "Priority"; + $scope.request.direction = "Asc"; + $scope.cates = ["Site", "System"]; + $scope.others = []; + $scope.settings = $rootScope.globalSettings; + $scope.moduleId = $routeParams.moduleId; + $scope.backUrl = `/portal/module-data/list/${$scope.moduleId}`; + $scope.module = null; + $scope.dataColumns = []; + $scope.editDataUrl = "/portal/module-data/details/" + $scope.moduleId; + $scope.init = async function () { + $scope.id = $routeParams.id; + if (!$scope.module) { + var getModule = await moduleService.getSingle([$scope.moduleId]); + if (getModule.isSucceed) { + $scope.module = getModule.data; + angular.forEach($scope.module.columns, function (e, i) { + if (e.isDisplay) { + $scope.dataColumns.push({ + title: e.title, + name: e.name, + datatype: e.dataType, + filter: true, + type: 0, // string - ngAppSettings.dataTypes[0] + }); + } + }); + $scope.$apply(); + } + } + }; + $scope.getList = async function () { + $rootScope.isBusy = true; + $scope.request.module_id = $scope.moduleId; + var response = await service.getList($scope.request); + if (response.isSucceed) { + $scope.data = response.data; + $rootScope.isBusy = false; + $scope.$apply(); + } else { + $rootScope.showErrors(response.errors); + $rootScope.isBusy = false; + $scope.$apply(); + } + }; + + $scope.export = async function () { + $rootScope.isBusy = true; + $scope.request.module_id = $scope.moduleId; + var response = await service.export($scope.request); + if (response.isSucceed) { + window.top.location = response.data.webPath; + $rootScope.isBusy = false; + $scope.$apply(); + } else { + $rootScope.showErrors(response.errors); + $rootScope.isBusy = false; + $scope.$apply(); + } + }; + + $scope.getSingle = async function () { + $rootScope.isBusy = true; + var resp = await service.getSingle($routeParams.id, "portal"); + if (resp && resp.isSucceed) { + $scope.activedModuleData = resp.data; + $rootScope.initEditor(); + $rootScope.isBusy = false; + $scope.$apply(); + } else { + if (resp) { + $rootScope.showErrors(resp.errors); + } + $rootScope.isBusy = false; + $scope.$apply(); + } + }; + $scope.remove = function (dataId) { + $rootScope.showConfirm( + $scope, + "removeConfirmed", + [dataId], + null, + "Remove", + "Deleted data will not able to recover, are you sure you want to delete this item?" + ); + }; + + $scope.removeConfirmed = async function (dataId) { + $rootScope.isBusy = true; + var result = await service.delete([dataId]); + if (result.isSucceed) { + if ($scope.removeCallback) { + $rootScope.executeFunctionByName( + "removeCallback", + $scope.removeCallbackArgs, + $scope + ); + } + $scope.getList(); + } else { + $rootScope.showMessage("failed"); + $rootScope.isBusy = false; + $scope.$apply(); + } + }; + + $scope.removeCallback = function () { }; + + $scope.saveOthers = async function () { + var response = await service.saveList($scope.others); + if (response.isSucceed) { + $scope.getList(); + $scope.$apply(); + } else { + $rootScope.showErrors(response.errors); + $rootScope.isBusy = false; + $scope.$apply(); + } + }; + }, +]); + +'use strict'; +app.factory('ModuleDataRestService', ['BaseRestService', 'CommonService', + function (baseService, commonService) { + var serviceFactory = Object.create(baseService); + serviceFactory.init('module-data/portal'); + // Define more service methods here + + var _initForm = async function (moduleId) { + var url = `${this.prefixUrl}/init-form/${moduleId}`; + var req = { + method: 'GET', + url: url + }; + return await commonService.getRestApiResult(req); + }; + serviceFactory.initForm = _initForm; + return serviceFactory; + }]); + +'use strict'; +app.controller('ModuleGalleryController', + ['$scope', '$rootScope', 'ngAppSettings', '$routeParams', '$location', 'ModuleGalleryService', 'CommonService', + function ($scope, $rootScope, ngAppSettings, $routeParams, $location, service, commonService) { + BaseCtrl.call(this, $scope, $rootScope, $routeParams, ngAppSettings, service); + $scope.cates = ['Site', 'System']; + $scope.others = []; + $scope.settings = $rootScope.globalSettings; $scope.moduleId = $routeParams.id; $scope.canDrag = $scope.request.orderBy !== 'Priority' || $scope.request.direction !== '0'; $scope.translate = $rootScope.translate; @@ -2776,7 +2817,7 @@ app.controller("PageController", [ "PagePostRestService", "PagePageRestService", "UrlAliasService", - "RestAttributeSetDataPortalService", + "RestMixDatabaseDataPortalService", function ( $scope, $rootScope, @@ -2960,7 +3001,7 @@ app.controller("PageController", [ $scope.viewModel.sysCategories.push({ id: e.id, parentId: $scope.viewModel.id, - attributeSetName: "sys_category", + mixDatabaseName: "sys_category", }); } }); @@ -2978,7 +3019,7 @@ app.controller("PageController", [ $scope.viewModel.sysCategories.push({ id: e.id, parentId: $scope.viewModel.id, - attributeSetName: "sys_tag", + mixDatabaseName: "sys_tag", }); } }); @@ -3667,7 +3708,7 @@ app.controller("PostController", [ "$routeParams", "PostRestService", "UrlAliasService", - "RestAttributeSetDataPortalService", + "RestMixDatabaseDataPortalService", function ( $scope, $rootScope, @@ -3696,11 +3737,11 @@ app.controller("PostController", [ { title: "All", attribute_set_name: "", - } + }, ]; $scope.postTypeRequest = angular.copy(ngAppSettings.request); - $scope.postTypeRequest.attributeSetName = "post_type"; + $scope.postTypeRequest.mixDatabaseName = "post_type"; $scope.postTypeRequest.orderBy = "Priority"; $scope.postTypeRequest.direction = "Asc"; @@ -3715,8 +3756,14 @@ app.controller("PostController", [ $scope.loadPostTypes = async function () { let getTypes = await dataService.getList($scope.postTypeRequest); if (getTypes.isSucceed) { - $scope.postTypes = $scope.postTypes.concat(getTypes.data.items.map(m => m.obj)); - $scope.postType = $rootScope.findObjectByKey($scope.postTypes, 'attribute_set_name', $scope.request.type); + $scope.postTypes = $scope.postTypes.concat( + getTypes.data.items.map((m) => m.obj) + ); + $scope.postType = $rootScope.findObjectByKey( + $scope.postTypes, + "attribute_set_name", + $scope.request.type + ); $scope.request.type = $routeParams.type || ""; $scope.$apply(); } @@ -3804,11 +3851,11 @@ app.controller("PostController", [ } }; $scope.saveFailCallback = function () { - angular.forEach($scope.viewModel.attributeSetNavs, function (nav) { + angular.forEach($scope.viewModel.mixDatabaseNavs, function (nav) { if (nav.isActived) { - $rootScope.decryptAttributeSet( - nav.attributeSet.attributes, - nav.attributeSet.postData.items + $rootScope.decryptMixDatabase( + nav.mixDatabase.attributes, + nav.mixDatabase.postData.items ); } }); @@ -3835,10 +3882,7 @@ app.controller("PostController", [ $scope.request.type = $scope.viewModel.type; var moduleIds = $routeParams.module_ids; var pageIds = $routeParams.page_ids; - if ($scope.viewModel.id) { - $scope.viewModel.detailsUrl = `/post/${$scope.viewModel.specificulture}/${$scope.viewModel.id}/${$scope.viewModel.seoName}`; - } - await $scope.loadPostTypes() + await $scope.loadPostTypes(); $scope.loadAdditionalData(); if (moduleIds) { for (var moduleId of moduleIds.split(",")) { @@ -3963,7 +4007,7 @@ app.controller("PostController", [ $scope.viewModel.sysCategories.push({ id: e.id, parentId: $scope.viewModel.id, - attributeSetName: "sys_category", + mixDatabaseName: "sys_category", }); } }); @@ -3981,17 +4025,17 @@ app.controller("PostController", [ $scope.viewModel.sysCategories.push({ id: e.id, parentId: $scope.viewModel.id, - attributeSetName: "sys_tag", + mixDatabaseName: "sys_tag", }); } }); }; $scope.validate = function () { - angular.forEach($scope.viewModel.attributeSetNavs, function (nav) { + angular.forEach($scope.viewModel.mixDatabaseNavs, function (nav) { if (nav.isActived) { - $rootScope.encryptAttributeSet( - nav.attributeSet.attributes, - nav.attributeSet.postData.items + $rootScope.encryptMixDatabase( + nav.mixDatabase.attributes, + nav.mixDatabase.postData.items ); } }); @@ -4067,117 +4111,161 @@ app.factory('RoleService', ['BaseService', 'CommonService', function (baseServic }]); -'use strict'; -app.controller('ServiceController', - [ - '$scope', '$rootScope', 'ngAppSettings', '$routeParams', '$location', - 'RestAttributeSetPortalService', 'CommonService', - function ($scope, $rootScope, ngAppSettings, $routeParams, $location, - service, commonService) { - BaseODataCtrl.call(this, $scope, $rootScope, $routeParams, ngAppSettings, service); - $scope.defaultId = 'default'; - $scope.parentId = null; - $scope.parentType = null; - $scope.cates = ['Site', 'System']; - $scope.others = []; - $scope.settings = $rootScope.globalSettings; - $scope.canDrag = $scope.request.orderBy !== 'Priority' || $scope.request.direction !== '0'; - $scope.init = async function () { - $scope.attributeSetId = $routeParams.attributeSetId; - $scope.attributeSetName = $routeParams.attributeSetName; - $scope.dataId = $routeParams.dataId; - - }; - $scope.saveSuccessCallback = function () { - $rootScope.isBusy = false; - $scope.$apply(); - // if($scope.parentId){ - // $location.url('/portal/attribute-set-data/details?dataId='+ $scope.parentId); - // } - // else{ - // $location.url('/portal/attribute-set-data/list?attributeSetId='+ $scope.viewModel.attributeSetId); - // } - }; - $scope.getList = async function () { - $rootScope.isBusy = true; - $scope.attributeSetId = $routeParams.attributeSetId; - $scope.attributeSetName = $routeParams.attributeSetName; - var type = $routeParams.type; - var parentId = $routeParams.parentId; - var response = await service.getList('read', $scope.request, $scope.attributeSetId, $scope.attributeSetName, type, parentId); - $scope.canDrag = $scope.request.orderBy !== 'Priority' || $scope.request.direction !== '0'; - if (response) { - $scope.data = response; - $rootScope.isBusy = false; - $scope.$apply(); - } - else { - $rootScope.showErrors('Failed'); - $rootScope.isBusy = false; - $scope.$apply(); - } - }; - $scope.getSingle = async function () { - $rootScope.isBusy = true; - var id = $routeParams.id || $scope.defaultId; - $scope.attributeSetId = $routeParams.attributeSetId; - $scope.attributeSetName = $routeParams.attributeSetName; - var resp = await service.getSingle('portal', [id, $scope.attributeSetId, $scope.attributeSetName]); - if (resp) { - $scope.viewModel = resp; - $scope.viewModel.parentType = $scope.parentType; - $scope.viewModel.parentId = $scope.parentId; - $rootScope.isBusy = false; - $scope.$apply(); - } else { - if (resp) { - $rootScope.showErrors('Failed'); - } - $rootScope.isBusy = false; - $scope.$apply(); - } - }; - $scope.preview = function (item) { - item.editUrl = '/portal/post/details/' + item.id; - $rootScope.preview('post', item, item.title, 'modal-lg'); - }; - $scope.edit = function (data) { - $scope.goToPath('/portal/attribute-set-data/details?dataId=' + data.id + '&attributeSetId=' + $scope.attributeSetId) - }; - $scope.remove = function (data) { - $rootScope.showConfirm($scope, 'removeConfirmed', [data.id], null, 'Remove', 'Deleted data will not able to recover, are you sure you want to delete this item?'); - }; - - $scope.removeConfirmed = async function (dataId) { - $rootScope.isBusy = true; - var result = await service.delete([dataId]); - if (result.isSucceed) { - if ($scope.removeCallback) { - $rootScope.executeFunctionByName('removeCallback', $scope.removeCallbackArgs, $scope) - } - $scope.getList(); - } - else { - $rootScope.showMessage('failed'); - $rootScope.isBusy = false; - $scope.$apply(); - } - }; - - $scope.saveOthers = async function () { - var response = await service.saveList($scope.others); - if (response.isSucceed) { - $scope.getList(); - $scope.$apply(); - } - else { - $rootScope.showErrors(response.errors); - $rootScope.isBusy = false; - $scope.$apply(); - } - }; - - }]); +"use strict"; +app.controller("ServiceController", [ + "$scope", + "$rootScope", + "ngAppSettings", + "$routeParams", + "$location", + "RestMixDatabasePortalService", + "CommonService", + function ( + $scope, + $rootScope, + ngAppSettings, + $routeParams, + $location, + service, + commonService + ) { + BaseODataCtrl.call( + this, + $scope, + $rootScope, + $routeParams, + ngAppSettings, + service + ); + $scope.defaultId = "default"; + $scope.parentId = null; + $scope.parentType = null; + $scope.cates = ["Site", "System"]; + $scope.others = []; + $scope.settings = $rootScope.globalSettings; + $scope.canDrag = + $scope.request.orderBy !== "Priority" || $scope.request.direction !== "0"; + $scope.init = async function () { + $scope.mixDatabaseId = $routeParams.mixDatabaseId; + $scope.mixDatabaseName = $routeParams.mixDatabaseName; + $scope.dataId = $routeParams.dataId; + }; + $scope.saveSuccessCallback = function () { + $rootScope.isBusy = false; + $scope.$apply(); + // if($scope.parentId){ + // $location.url('/portal/mix-database-data/details?dataId='+ $scope.parentId); + // } + // else{ + // $location.url('/portal/mix-database-data/list?mixDatabaseId='+ $scope.viewModel.mixDatabaseId); + // } + }; + $scope.getList = async function () { + $rootScope.isBusy = true; + $scope.mixDatabaseId = $routeParams.mixDatabaseId; + $scope.mixDatabaseName = $routeParams.mixDatabaseName; + var type = $routeParams.type; + var parentId = $routeParams.parentId; + var response = await service.getList( + "read", + $scope.request, + $scope.mixDatabaseId, + $scope.mixDatabaseName, + type, + parentId + ); + $scope.canDrag = + $scope.request.orderBy !== "Priority" || + $scope.request.direction !== "0"; + if (response) { + $scope.data = response; + $rootScope.isBusy = false; + $scope.$apply(); + } else { + $rootScope.showErrors("Failed"); + $rootScope.isBusy = false; + $scope.$apply(); + } + }; + $scope.getSingle = async function () { + $rootScope.isBusy = true; + var id = $routeParams.id || $scope.defaultId; + $scope.mixDatabaseId = $routeParams.mixDatabaseId; + $scope.mixDatabaseName = $routeParams.mixDatabaseName; + var resp = await service.getSingle("portal", [ + id, + $scope.mixDatabaseId, + $scope.mixDatabaseName, + ]); + if (resp) { + $scope.viewModel = resp; + $scope.viewModel.parentType = $scope.parentType; + $scope.viewModel.parentId = $scope.parentId; + $rootScope.isBusy = false; + $scope.$apply(); + } else { + if (resp) { + $rootScope.showErrors("Failed"); + } + $rootScope.isBusy = false; + $scope.$apply(); + } + }; + $scope.preview = function (item) { + item.editUrl = "/portal/post/details/" + item.id; + $rootScope.preview("post", item, item.title, "modal-lg"); + }; + $scope.edit = function (data) { + $scope.goToPath( + "/portal/mix-database-data/details?dataId=" + + data.id + + "&mixDatabaseId=" + + $scope.mixDatabaseId + ); + }; + $scope.remove = function (data) { + $rootScope.showConfirm( + $scope, + "removeConfirmed", + [data.id], + null, + "Remove", + "Deleted data will not able to recover, are you sure you want to delete this item?" + ); + }; + + $scope.removeConfirmed = async function (dataId) { + $rootScope.isBusy = true; + var result = await service.delete([dataId]); + if (result.isSucceed) { + if ($scope.removeCallback) { + $rootScope.executeFunctionByName( + "removeCallback", + $scope.removeCallbackArgs, + $scope + ); + } + $scope.getList(); + } else { + $rootScope.showMessage("failed"); + $rootScope.isBusy = false; + $scope.$apply(); + } + }; + + $scope.saveOthers = async function () { + var response = await service.saveList($scope.others); + if (response.isSucceed) { + $scope.getList(); + $scope.$apply(); + } else { + $rootScope.showErrors(response.errors); + $rootScope.isBusy = false; + $scope.$apply(); + } + }; + }, +]); 'use strict'; app.controller('SocialFeedController', @@ -4439,40 +4527,25 @@ app.controller('SocialFeedController', app.controller('StoreController', ['$scope', '$rootScope', 'ngAppSettings', '$routeParams', '$location', 'StoreService', function ($scope, $rootScope, ngAppSettings, $routeParams, $location, service) { - BaseCtrl.call(this, $scope, $rootScope, $routeParams, ngAppSettings, service); + BaseRestCtrl.call( + this, + $scope, + $rootScope, + $location, + $routeParams, + ngAppSettings, + service + ); $scope.request.key = 'service.store'; $scope.cates = ngAppSettings.enums.configuration_cates; $scope.settings = $rootScope.globalSettings; - // $scope.items = []; - // $scope.init = function () { - // var req = { - // method: 'GET', - // url: 'https://api.github.com/repos/mixcore/mix.core/contributors' - // }; - // $scope.getGithubApiResult(req); - // }; - - // $scope.getGithubApiResult = async function (req) { - // return $http(req).then(function (resp) { - // if (resp.status == '200') { - // $scope.items = resp.data; - // } - // else { - // console.log(resp); - - // } - // }, - // function (error) { - // return { isSucceed: false, errors: [error.statusText || error.status] }; - // }); - // }; }]); 'use strict'; -app.factory('StoreService', ['BaseService', function (baseService) { +app.factory('StoreService', ['BaseRestService', function (baseService) { var serviceFactory = Object.create(baseService); - serviceFactory.init('post', false, 'https://store.mixcore.org'); + serviceFactory.init('post/portal', null, false, 'https://store.mixcore.org'); // Define more service methods here return serviceFactory; @@ -4649,109 +4722,132 @@ app.controller("TemplateController", [ }, ]); -'use strict'; -app.controller('ThemeController', ['$scope', '$rootScope', 'ngAppSettings', '$routeParams', '$location', 'ThemeService', 'CommonService', - function ($scope, $rootScope, ngAppSettings, $routeParams, $location, service, commonService) { - BaseCtrl.call(this, $scope, $rootScope, $routeParams, ngAppSettings, service); - $scope.exportData = null; - $scope.selectedExport = { - pages: [], - modules: [], - attributeSets: [] - }; +"use strict"; +app.controller("ThemeController", [ + "$scope", + "$rootScope", + "ngAppSettings", + "$routeParams", + "$location", + "ThemeService", + "CommonService", + function ( + $scope, + $rootScope, + ngAppSettings, + $routeParams, + $location, + service, + commonService + ) { + BaseCtrl.call( + this, + $scope, + $rootScope, + $routeParams, + ngAppSettings, + service + ); + $scope.exportData = null; + $scope.selectedExport = { + pages: [], + modules: [], + mixDatabases: [], + }; - $scope.getSingleSuccessCallback = function () { - $scope.assets = null; - $scope.theme = null; - } - $scope.save = async function (viewModel) { - var form = document.getElementById('form-portal'); - var frm = new FormData(); - var url = service.prefixUrl + '/save'; + $scope.getSingleSuccessCallback = function () { + $scope.assets = null; + $scope.theme = null; + }; + $scope.save = async function (viewModel) { + var form = document.getElementById("form-portal"); + var frm = new FormData(); + var url = service.prefixUrl + "/save"; - $rootScope.isBusy = true; - // Looping over all files and add it to FormData object - frm.append('assets', form['assets'].files[0]); - frm.append('theme', form['theme'].files[0]); - // Adding one more key to FormData object - frm.append('model', angular.toJson(viewModel || $scope.viewModel)); + $rootScope.isBusy = true; + // Looping over all files and add it to FormData object + frm.append("assets", form["assets"].files[0]); + frm.append("theme", form["theme"].files[0]); + // Adding one more key to FormData object + frm.append("model", angular.toJson(viewModel || $scope.viewModel)); - var response = await service.ajaxSubmitForm(frm, url); - if (response.isSucceed) { - $scope.viewModel = response.data; - $rootScope.isBusy = false; - $location.url($scope.referrerUrl); - $scope.$apply(); - } - else { - $rootScope.showErrors(response.errors); - $rootScope.isBusy = false; - $scope.$apply(); - } + var response = await service.ajaxSubmitForm(frm, url); + if (response.isSucceed) { + $scope.viewModel = response.data; + $rootScope.isBusy = false; + $location.url($scope.referrerUrl); + $scope.$apply(); + } else { + $rootScope.showErrors(response.errors); + $rootScope.isBusy = false; + $scope.$apply(); + } + }; + $scope.syncTemplates = async function (id) { + $rootScope.isBusy = true; + var response = await service.syncTemplates(id); + if (response.isSucceed) { + $scope.viewModel = response.data; + $rootScope.isBusy = false; + $scope.$apply(); + } else { + $rootScope.showErrors(response.errors); + $rootScope.isBusy = false; + $scope.$apply(); + } + }; + + $scope.export = async function () { + var id = $routeParams.id; + $rootScope.isBusy = true; + var response = await service.export(id, $scope.selectedExport); + if (response.isSucceed) { + $rootScope.isBusy = false; + window.open(response.data, "_blank"); + $scope.$apply(); + } else { + $rootScope.showErrors(response.errors); + $rootScope.isBusy = false; + $scope.$apply(); + } + }; + $scope.saveSuccessCallback = function () { + commonService.initAllSettings().then(function () { + $location.path("/portal/theme/list"); + $rootScope.isBusy = false; + $scope.$apply(); + }); + }; + $scope.removeCallback = function () { + commonService.initAllSettings().then(function () { + $location.path("/portal/theme/list"); + }); + }; + + $scope.getExportData = async function () { + var id = $routeParams.id; + var resp = await service.getExportData(id); + if (resp && resp.isSucceed) { + $scope.exportData = resp.data; + $rootScope.isBusy = false; + $scope.$apply(); + } else { + if (resp) { + $rootScope.showErrors(resp.errors); } - $scope.syncTemplates = async function (id) { - $rootScope.isBusy = true; - var response = await service.syncTemplates(id); - if (response.isSucceed) { - $scope.viewModel = response.data; - $rootScope.isBusy = false; - $scope.$apply(); - } - else { - $rootScope.showErrors(response.errors); - $rootScope.isBusy = false; - $scope.$apply(); - } - }; + $rootScope.isBusy = false; + $scope.$apply(); + } + }; - $scope.export = async function () { - var id = $routeParams.id; - $rootScope.isBusy = true; - var response = await service.export(id, $scope.selectedExport); - if (response.isSucceed) { - $rootScope.isBusy = false; - window.open(response.data, '_blank'); - $scope.$apply(); - } - else { - $rootScope.showErrors(response.errors); - $rootScope.isBusy = false; - $scope.$apply(); - } - }; - $scope.saveSuccessCallback = function () { - commonService.initAllSettings().then(function () { - $location.path('/portal/theme/list'); - $rootScope.isBusy = false; - $scope.$apply(); - }); - }; - $scope.removeCallback = function () { - commonService.initAllSettings().then(function () { - $location.path('/portal/theme/list'); - }); - }; - - $scope.getExportData = async function () { - var id = $routeParams.id; - var resp = await service.getExportData(id); - if (resp && resp.isSucceed) { - $scope.exportData = resp.data; - $rootScope.isBusy = false; - $scope.$apply(); - } else { - if (resp) { - $rootScope.showErrors(resp.errors); - } - $rootScope.isBusy = false; - $scope.$apply(); - } - }; - - $scope.generateSEO = function () { - $scope.viewModel.name = $rootScope.generateKeyword($scope.viewModel.title, '-'); - }; - }]); + $scope.generateSEO = function () { + $scope.viewModel.name = $rootScope.generateKeyword( + $scope.viewModel.title, + "-" + ); + }; + }, +]); 'use strict'; app.factory('ThemeService', ['CommonService', 'BaseService', @@ -4895,7 +4991,7 @@ app.controller("UserController", [ "$location", "AuthService", "UserServices", - "RestAttributeSetDataPortalService", + "RestMixDatabaseDataPortalService", function ( $scope, $rootScope, @@ -5452,28 +5548,6 @@ app.component('appSettingsDefault', { } }); -app.component('appSettingsGeneral', { - templateUrl: '/mix-app/views/app-portal/pages/app-settings/components/general/view.html', - controller: ['ngAppSettings', function (ngAppSettings) { - var ctrl = this; - }], - bindings: { - appSettings: '=', - onDelete: '&', - onUpdate: '&' - } -}); - -app.component('appSettingsSmtp', { - templateUrl: '/mix-app/views/app-portal/pages/app-settings/components/smtp/view.html', - controller: ['ngAppSettings', function (ngAppSettings) { - var ctrl = this; - }], - bindings: { - appSettings: '=' - } -}); - modules.component('portalMenus', { templateUrl: '/mix-app/views/app-portal/pages/app-settings/components/portal-menus/view.html', bindings: { @@ -5492,39 +5566,25 @@ modules.component('portalMenus', { }] }); -app.component('attributeSetEdm', { - templateUrl: '/mix-app/views/app-portal/pages/attribute-set/components/edm/view.html', - controller: ['$rootScope', function ($rootScope) { +app.component('appSettingsGeneral', { + templateUrl: '/mix-app/views/app-portal/pages/app-settings/components/general/view.html', + controller: ['ngAppSettings', function (ngAppSettings) { var ctrl = this; - ctrl.settings = $rootScope.globalSettings; }], bindings: { - model: '=', + appSettings: '=', + onDelete: '&', + onUpdate: '&' } }); -app.component('attributeSetMain', { - templateUrl: '/mix-app/views/app-portal/pages/attribute-set/components/main/view.html', - controller: ['$rootScope', function ($rootScope) { +app.component('appSettingsSmtp', { + templateUrl: '/mix-app/views/app-portal/pages/app-settings/components/smtp/view.html', + controller: ['ngAppSettings', function (ngAppSettings) { var ctrl = this; - ctrl.settings = $rootScope.globalSettings; - ctrl.gennerateName = function () { - if (!ctrl.model.id || ctrl.model.name === null || ctrl.model.name === '') { - ctrl.model.name = $rootScope.generateKeyword(ctrl.model.title, '_'); - } - }; }], bindings: { - model: '=', - } -}); - -app.component('customerMain', { - templateUrl: '/mix-app/views/app-portal/pages/customer/components/main/customer-main.html', - bindings: { - customer: '=', - onDelete: '&', - onUpdate: '&' + appSettings: '=' } }); @@ -5556,6 +5616,54 @@ app.component('customerOrders', { } }); +app.component('customerMain', { + templateUrl: '/mix-app/views/app-portal/pages/customer/components/main/customer-main.html', + bindings: { + customer: '=', + onDelete: '&', + onUpdate: '&' + } +}); +app.component("mixDatabaseEdm", { + templateUrl: + "/mix-app/views/app-portal/pages/mix-database/components/edm/view.html", + controller: [ + "$rootScope", + function ($rootScope) { + var ctrl = this; + ctrl.settings = $rootScope.globalSettings; + }, + ], + bindings: { + model: "=", + }, +}); + +app.component("mixDatabaseMain", { + templateUrl: + "/mix-app/views/app-portal/pages/mix-database/components/main/view.html", + controller: [ + "$rootScope", + function ($rootScope) { + var ctrl = this; + ctrl.settings = $rootScope.globalSettings; + ctrl.gennerateName = function () { + if ( + !ctrl.model.id || + ctrl.model.name === null || + ctrl.model.name === "" + ) { + ctrl.model.name = $rootScope.generateKeyword(ctrl.model.title, "_"); + } + }; + }, + ], + bindings: { + model: "=", + }, +}); + + app.component('moduleMain', { templateUrl: '/mix-app/views/app-portal/pages/module/components/main/main.html', controller: ['$rootScope', function ($rootScope) { @@ -5571,6 +5679,18 @@ app.component('moduleMain', { module: '=', } }); + +app.component('moduleContent', { + templateUrl: '/mix-app/views/app-portal/pages/module/components/module-content/view.html', + bindings: { + model: '=', + additionalData: "=", + }, + controller: ['$rootScope', function ($rootScope) { + var ctrl = this; + ctrl.settings = $rootScope.globalSettings; + }] +}); app.component("moduleAdvanced", { templateUrl: "/mix-app/views/app-portal/pages/module/components/module-advanced/view.html", @@ -5591,18 +5711,6 @@ app.component("moduleAdvanced", { }); -app.component('moduleContent', { - templateUrl: '/mix-app/views/app-portal/pages/module/components/module-content/view.html', - bindings: { - model: '=', - additionalData: "=", - }, - controller: ['$rootScope', function ($rootScope) { - var ctrl = this; - ctrl.settings = $rootScope.globalSettings; - }] -}); - app.component('moduleType', { templateUrl: '/mix-app/views/app-portal/pages/module/components/module-type/view.html', controller: ['$rootScope', function ($rootScope) { @@ -5760,26 +5868,6 @@ app.component('pageModules', { onUpdate: '&' } }); -app.component("pageAdvanced", { - templateUrl: "/mix-app/views/app-portal/pages/page/components/page-advanced/view.html", - bindings: { - model: "=", - additionalData: "=", - }, - controller: [ - "$rootScope", - "$scope", - function ($rootScope, $scope) { - var ctrl = this; - - ctrl.translate = $rootScope.translate; - ctrl.$onInit = function () { - ctrl.isAdmin = $rootScope.isAdmin; - }; - }, - ], -}); - app.component("pageContent", { templateUrl: "/mix-app/views/app-portal/pages/page/components/page-content/view.html", @@ -5822,6 +5910,26 @@ app.component("pageContent", { ], }); +app.component("pageAdvanced", { + templateUrl: "/mix-app/views/app-portal/pages/page/components/page-advanced/view.html", + bindings: { + model: "=", + additionalData: "=", + }, + controller: [ + "$rootScope", + "$scope", + function ($rootScope, $scope) { + var ctrl = this; + + ctrl.translate = $rootScope.translate; + ctrl.$onInit = function () { + ctrl.isAdmin = $rootScope.isAdmin; + }; + }, + ], +}); + app.component('pageType', { templateUrl: '/mix-app/views/app-portal/pages/page/components/page-type/view.html', @@ -5942,6 +6050,32 @@ app.component('permissionParents', { onUpdate: '&' } }); + +app.component('postGeneral', { + templateUrl: '/mix-app/views/app-portal/pages/post/components/general/view.html', + controller: ['$rootScope', 'ngAppSettings', function ($rootScope, ngAppSettings) { + var ctrl = this; + ctrl.dataTypes = $rootScope.globalSettings.dataTypes; + ctrl.$onInit = function () { + + }; + ctrl.addProperty = function (type) { + var i = $(".property").length; + ctrl.post.properties.push({ + title: '', + name: '', + value: null, + dataType: 'text' + }); + }; + }], + bindings: { + post: '=', + isAdmin: '=', + onDelete: '&', + onUpdate: '&' + } +}); app.component('permissionPlugPlay', { templateUrl: '/mix-app/views/app-portal/pages/permission/components/plug-play/plug-play.html', bindings: { @@ -6030,235 +6164,56 @@ app.component('permissionPlugPlay', { } ] }); -'use strict'; -app.factory('PostAttributeValueService', ['BaseService', - function (baseService) { - var serviceFactory = Object.create(baseService); - serviceFactory.init('post-attribute-value'); - // Define more service methods here - return serviceFactory; - }]); - -'use strict'; -app.factory('PostAttributeDataService', ['BaseService', - function (baseService) { - var serviceFactory = Object.create(baseService); - serviceFactory.init('post-attribute-data'); - // Define more service methods here - return serviceFactory; - }]); - -app.component('postAttributeSet', { - templateUrl: '/mix-app/views/app-portal/pages/post/components/attribute-set/view.html', - bindings: { - set: '=', - parentType: '=?', - parentId: '=?', +app.component('postMedias', { + templateUrl: '/mix-app/views/app-portal/pages/post/components/medias/view.html', + controller: function () { + var ctrl = this; + ctrl.activeMedia = function (media) { + var currentItem = null; + if (ctrl.post.mediaNavs === null) { + ctrl.post.mediaNavs = []; + } + $.each(ctrl.post.mediaNavs, function (i, e) { + if (e.mediaId === media.id) { + e.isActived = media.isActived; + currentItem = e; + return false; + } + }); + if (currentItem === null) { + currentItem = { + description: media.description !== 'undefined' ? media.description : '', + image: media.filePath, + mediaId: media.id, + post: ctrl.post.id, + specificulture: media.specificulture, + position: 0, + priority: ctrl.post.mediaNavs.length + 1, + isActived: true + }; + media.isHidden = true; + ctrl.post.mediaNavs.push(currentItem); + } + } }, - controller: ['$rootScope', '$scope', 'RestRelatedAttributeSetPortalService', 'RestAttributeSetPortalService', - function ($rootScope, $scope, navService, dataService) { + bindings: { + post: '=', + medias: '=', + loadMedia: '&', + onDelete: '&', + onUpdate: '&' + } +}); + +app.component('postModules', { + templateUrl: '/mix-app/views/app-portal/pages/post/components/modules/view.html', + controller: ['$rootScope', '$scope', 'ngAppSettings', 'SharedModuleDataService', + function ($rootScope, $scope, ngAppSettings, moduleDataService) { var ctrl = this; - ctrl.dataTypes = $rootScope.globalSettings.dataTypes; - ctrl.viewModel = null; - ctrl.defaultData = null; - ctrl.$onInit = async function () { - navService.getSingle('portal', [ctrl.parentId, ctrl.parentType, 'default']).then(resp => { - ctrl.defaultData = resp; - ctrl.viewModel = angular.copy(ctrl.defaultData); - }); - }; - ctrl.update = function (nav) { - ctrl.viewModel = nav; - var e = $(".pane-form-" + ctrl.set.attributeSet.id)[0]; - angular.element(e).triggerHandler('click'); - }; - - ctrl.removeValue = function (nav) { - $rootScope.showConfirm(ctrl, 'removeValueConfirmed', [nav], null, 'Remove', 'Deleted data will not able to recover, are you sure you want to delete this item?'); - }; - - ctrl.removeValueConfirmed = async function (nav) { - $rootScope.isBusy = true; - var result = await navService.delete([nav.parentId, nav.parentType, nav.id]); - if (result.isSucceed) { - $rootScope.removeObjectByKey(ctrl.set.attributeSet.postData.items, 'id', nav.id); - $rootScope.isBusy = false; - $scope.$apply(); - } - else { - $rootScope.showMessage('failed'); - $rootScope.isBusy = false; - $scope.$apply(); - } - - // if (data.id) { - // $rootScope.isBusy = true; - // var result = await dataService.delete(data.id); - // if (result.isSucceed) { - // $rootScope.removeObjectByKey(ctrl.set.attributeSet.postData.items, 'id', data.id); - // $rootScope.isBusy = false; - // $scope.$apply(); - // } else { - // $rootScope.showMessage('failed'); - // $rootScope.isBusy = false; - // $scope.$apply(); - // } - // } - // else { - // var i = ctrl.set.attributeSet.postData.items.indexOf(data); - // if(i >=0){ - // ctrl.set.attributeSet.postData.items.splice(i,1); - // } - // } - }; - - ctrl.saveData = async function (data) { - $rootScope.isBusy = true; - ctrl.viewModel.data = data; - dataService.save('portal', data).then(resp => { - if (resp.isSucceed) { - ctrl.viewModel.id = resp.data.id; - ctrl.viewModel.data = resp.data; - navService.save('portal', ctrl.viewModel).then(resp => { - if (resp.isSucceed) { - var tmp = $rootScope.findObjectByKey(ctrl.set.attributeSet.postData.items, ['parentId', 'parentType', 'id'], - [resp.data.parentId, resp.data.parentType, resp.data.id]); - if (!tmp) { - ctrl.set.attributeSet.postData.items.push(resp.data); - var e = $(".pane-data-" + ctrl.set.attributeSet.id)[0]; - angular.element(e).triggerHandler('click'); - } - ctrl.viewModel = angular.copy(ctrl.defaultData); - $rootScope.isBusy = false; - $scope.$apply(); - } else { - $rootScope.showMessage('failed'); - $rootScope.isBusy = false; - $scope.$apply(); - } - }) - - } - else { - $rootScope.showMessage('failed'); - $rootScope.isBusy = false; - $scope.$apply(); - } - }); - }; - }] -}); - -app.component('postGeneral', { - templateUrl: '/mix-app/views/app-portal/pages/post/components/general/view.html', - controller: ['$rootScope', 'ngAppSettings', function ($rootScope, ngAppSettings) { - var ctrl = this; - ctrl.dataTypes = $rootScope.globalSettings.dataTypes; - ctrl.$onInit = function () { - - }; - ctrl.addProperty = function (type) { - var i = $(".property").length; - ctrl.post.properties.push({ - title: '', - name: '', - value: null, - dataType: 'text' - }); - }; - }], - bindings: { - post: '=', - isAdmin: '=', - onDelete: '&', - onUpdate: '&' - } -}); -app.component("postMain", { - templateUrl: "/mix-app/views/app-portal/pages/post/components/main/view.html", - bindings: { - post: "=", - }, - controller: [ - "$rootScope", - "$scope", - function ($rootScope, $scope) { - var ctrl = this; - ctrl.translate = $rootScope.translate; - ctrl.generateSeo = function () { - if (ctrl.post) { - if (!ctrl.post.seoName) { - ctrl.post.seoName = $rootScope.generateKeyword( - ctrl.post.title, - "-" - ); - } - if (!ctrl.post.seoTitle) { - ctrl.post.seoTitle = ctrl.post.title; - } - if (!ctrl.post.seoDescription === null) { - ctrl.post.seoDescription = ctrl.post.excerpt; - } - if (!ctrl.post.seoKeywords) { - ctrl.post.seoKeywords = ctrl.post.title; - } - } - }; - }, - ], -}); - - -app.component('postMedias', { - templateUrl: '/mix-app/views/app-portal/pages/post/components/medias/view.html', - controller: function () { - var ctrl = this; - ctrl.activeMedia = function (media) { - var currentItem = null; - if (ctrl.post.mediaNavs === null) { - ctrl.post.mediaNavs = []; - } - $.each(ctrl.post.mediaNavs, function (i, e) { - if (e.mediaId === media.id) { - e.isActived = media.isActived; - currentItem = e; - return false; - } - }); - if (currentItem === null) { - currentItem = { - description: media.description !== 'undefined' ? media.description : '', - image: media.filePath, - mediaId: media.id, - post: ctrl.post.id, - specificulture: media.specificulture, - position: 0, - priority: ctrl.post.mediaNavs.length + 1, - isActived: true - }; - media.isHidden = true; - ctrl.post.mediaNavs.push(currentItem); - } - } - }, - bindings: { - post: '=', - medias: '=', - loadMedia: '&', - onDelete: '&', - onUpdate: '&' - } -}); - -app.component('postModules', { - templateUrl: '/mix-app/views/app-portal/pages/post/components/modules/view.html', - controller: ['$rootScope', '$scope', 'ngAppSettings', 'SharedModuleDataService', - function ($rootScope, $scope, ngAppSettings, moduleDataService) { - var ctrl = this; - ctrl.request = angular.copy(ngAppSettings.request); - ctrl.translate = function (keyword, wrap, defaultValue) { - return $rootScope.translate(keyword, wrap, defaultValue); + ctrl.request = angular.copy(ngAppSettings.request); + ctrl.translate = function (keyword, wrap, defaultValue) { + return $rootScope.translate(keyword, wrap, defaultValue); }; ctrl.removeData = function (id, moduleId) { @@ -6327,6 +6282,40 @@ app.component('postModules', { onUpdate: '&' } }); +app.component("postMain", { + templateUrl: "/mix-app/views/app-portal/pages/post/components/main/view.html", + bindings: { + post: "=", + }, + controller: [ + "$rootScope", + "$scope", + function ($rootScope, $scope) { + var ctrl = this; + ctrl.translate = $rootScope.translate; + ctrl.generateSeo = function () { + if (ctrl.post) { + if (!ctrl.post.seoName) { + ctrl.post.seoName = $rootScope.generateKeyword( + ctrl.post.title, + "-" + ); + } + if (!ctrl.post.seoTitle) { + ctrl.post.seoTitle = ctrl.post.title; + } + if (!ctrl.post.seoDescription === null) { + ctrl.post.seoDescription = ctrl.post.excerpt; + } + if (!ctrl.post.seoKeywords) { + ctrl.post.seoKeywords = ctrl.post.title; + } + } + }; + }, + ], +}); + app.component('postParents', { templateUrl: '/mix-app/views/app-portal/pages/post/components/parents/view.html', @@ -6488,6 +6477,22 @@ app.component('postSeo', { } }); +app.component('serviceMain', { + templateUrl: '/mix-app/views/app-portal/pages/service/components/main/view.html', + controller: ['$rootScope', function ($rootScope) { + var ctrl = this; + ctrl.settings = $rootScope.globalSettings; + ctrl.gennerateName = function () { + if (!ctrl.model.id || ctrl.model.name === null || ctrl.model.name === '') { + ctrl.model.name = $rootScope.generateKeyword(ctrl.model.title, '_'); + } + }; + }], + bindings: { + model: '=', + } +}); + modules.component('rolePageNav', { templateUrl: '/mix-app/views/app-portal/pages/role/components/role-page-navigation/role-page-navigations.html', controller: ['$rootScope', '$scope', 'ngAppSettings', 'RoleService', function ($rootScope, $scope, ngAppSettings, roleServices) { @@ -6521,47 +6526,43 @@ modules.component('rolePageNav', { callback: '&' } }); - -app.component('serviceMain', { - templateUrl: '/mix-app/views/app-portal/pages/service/components/main/view.html', - controller: ['$rootScope', function ($rootScope) { - var ctrl = this; - ctrl.settings = $rootScope.globalSettings; - ctrl.gennerateName = function () { - if (!ctrl.model.id || ctrl.model.name === null || ctrl.model.name === '') { - ctrl.model.name = $rootScope.generateKeyword(ctrl.model.title, '_'); - } - }; - }], - bindings: { - model: '=', - } +app.component("themeExportMixDatabases", { + templateUrl: + "/mix-app/views/app-portal/pages/theme/components/theme-export-mix-databases/view.html", + controller: [ + "$rootScope", + "$scope", + "ngAppSettings", + function ($rootScope, $scope) { + var ctrl = this; + ctrl.updateMixDatabaseExport = function () { + ctrl.selectedExport.mixDatabases = angular.copy( + $rootScope.filterArray( + ctrl.exportData.mixDatabases, + ["isActived"], + [true] + ) + ); + // angular.forEach(ctrl.selectedExport.mixDatabases,function(e){ + // e.data = angular.copy($rootScope.filterArray(e.data, ['isActived'], [true])); + // }); + }; + ctrl.selectAll = function (arr) { + ctrl.selectedList.data = []; + angular.forEach(arr, function (e) { + e.isActived = ctrl.selectedList.isSelectAll; + e.isExportData = ctrl.selectedList.isExportData; + }); + ctrl.updateMixDatabaseExport(); + }; + }, + ], + bindings: { + exportData: "=", + selectedExport: "=", + }, }); -app.component('themeExportAttributeSets', { - templateUrl: '/mix-app/views/app-portal/pages/theme/components/theme-export-attribute-sets/view.html', - controller: ['$rootScope', '$scope', 'ngAppSettings', function ($rootScope, $scope) { - var ctrl = this; - ctrl.updateAttributeSetExport = function () { - ctrl.selectedExport.attributeSets = angular.copy($rootScope.filterArray(ctrl.exportData.attributeSets, ['isActived'], [true])); - // angular.forEach(ctrl.selectedExport.attributeSets,function(e){ - // e.data = angular.copy($rootScope.filterArray(e.data, ['isActived'], [true])); - // }); - }; - ctrl.selectAll = function (arr) { - ctrl.selectedList.data = []; - angular.forEach(arr, function (e) { - e.isActived = ctrl.selectedList.isSelectAll; - e.isExportData = ctrl.selectedList.isExportData; - }); - ctrl.updateAttributeSetExport(); - }; - }], - bindings: { - exportData: '=', - selectedExport: '=' - } -}); app.component('themeExportModules', { templateUrl: '/mix-app/views/app-portal/pages/theme/components/theme-export-modules/view.html', @@ -6968,117 +6969,118 @@ modules.component("actions", { }); modules.component("additionalField", { - templateUrl: "/mix-app/views/app-portal/components/additional-field/view.html", - bindings: { - model: "=", - additionalData: "=", - }, - controller: [ - "$rootScope", - "$scope", - "RestAttributeFieldPortalService", - function ($rootScope, $scope, fieldService) { - var ctrl = this; - ctrl.value = {}; - ctrl.field = { - dataType: "Text", - attributeSetName: "sys_additional_field", - attributeSetId: 6, - }; - ctrl.selectedCol = null; - ctrl.settings = $rootScope.globalSettings; - ctrl.$onInit = async function () { }; - ctrl.addAttr = async function () { - if (ctrl.field.name) { - var current = $rootScope.findObjectByKey( - ctrl.additionalData.fields, - "name", - ctrl.field.name - ); - if (current) { - $rootScope.showErrors(["Field " + ctrl.field.name + " existed!"]); + templateUrl: "/mix-app/views/app-portal/components/additional-field/view.html", + bindings: { + model: "=", + additionalData: "=", + }, + controller: [ + "$rootScope", + "$scope", + "RestMixDatabaseColumnPortalService", + function ($rootScope, $scope, fieldService) { + var ctrl = this; + ctrl.value = {}; + ctrl.field = { + dataType: "Text", + mixDatabaseName: "sys_additional_field", + mixDatabaseId: 6, + }; + ctrl.selectedCol = null; + ctrl.settings = $rootScope.globalSettings; + ctrl.$onInit = async function () { }; + ctrl.addAttr = async function () { + if (ctrl.field.name) { + var current = $rootScope.findObjectByKey( + ctrl.additionalData.fields, + "name", + ctrl.field.name + ); + if (current) { + $rootScope.showErrors(["Field " + ctrl.field.name + " existed!"]); + } else { + ctrl.field.priority = ctrl.additionalData.fields.length + 1; + $rootScope.isBusy = true; + var saveField = await fieldService.create(ctrl.field); + $rootScope.isBusy = false; + if (saveField.isSucceed) { + ctrl.additionalData.fields.push(saveField.data); + + //reset field option + ctrl.field.title = ""; + ctrl.field.name = ""; + ctrl.field.dataType = "Text"; + $scope.$apply(); + } + } } else { - ctrl.field.priority = ctrl.additionalData.fields.length + 1; + $rootScope.showErrors(["Please add column Name"]); + } + }; + + ctrl.generateName = function (col) { + col.name = $rootScope.generateKeyword(col.title, "_"); + }; + ctrl.showReferences = function (col) { + ctrl.colRef = col; + $("#modal-navs").modal("show"); + }; + ctrl.referenceCallback = function (selected) { + if (selected && selected.length) { + ctrl.colRef.reference = selected; + ctrl.colRef.referenceId = selected[0].id; + } + $("#modal-navs").modal("hide"); + }; + ctrl.updateOrders = function (index) { + if (index > ctrl.dragStartIndex) { + ctrl.fields.splice(ctrl.dragStartIndex, 1); + } else { + ctrl.fields.splice(ctrl.dragStartIndex + 1, 1); + } + angular.forEach(ctrl.fields, function (e, i) { + e.priority = i; + }); + }; + + ctrl.dragStart = function (index) { + ctrl.dragStartIndex = index; + }; + + ctrl.removeAttribute = function (val, index) { + $rootScope.showConfirm( + ctrl, + "removeAttributeConfirmed", + [val, index], + null, + "Remove Field", + "Deleted data will not able to recover, are you sure you want to delete this item?" + ); + }; + ctrl.removeAttributeConfirmed = async function (val, index) { + if (val.id) { $rootScope.isBusy = true; - var saveField = await fieldService.create(ctrl.field); - $rootScope.isBusy = false; - if (saveField.isSucceed) { - ctrl.additionalData.fields.push(saveField.data); - - //reset field option - ctrl.field.title = ""; - ctrl.field.name = ""; - ctrl.field.dataType = "Text"; + var result = await fieldService.delete([val.id]); + if (result.isSucceed) { + ctrl.additionalData.fields.splice(index, 1); + $rootScope.isBusy = false; + $scope.$apply(); + } else { + $rootScope.showErrors(result.errors); + $rootScope.isBusy = false; $scope.$apply(); } - } - } else { - $rootScope.showErrors(["Please add column Name"]); - } - }; - - ctrl.generateName = function (col) { - col.name = $rootScope.generateKeyword(col.title, "_"); - }; - ctrl.showReferences = function (col) { - ctrl.colRef = col; - $("#modal-navs").modal("show"); - }; - ctrl.referenceCallback = function (selected) { - if (selected && selected.length) { - ctrl.colRef.reference = selected; - ctrl.colRef.referenceId = selected[0].id; - } - $("#modal-navs").modal("hide"); - }; - ctrl.updateOrders = function (index) { - if (index > ctrl.dragStartIndex) { - ctrl.fields.splice(ctrl.dragStartIndex, 1); - } else { - ctrl.fields.splice(ctrl.dragStartIndex + 1, 1); - } - angular.forEach(ctrl.fields, function (e, i) { - e.priority = i; - }); - }; - - ctrl.dragStart = function (index) { - ctrl.dragStartIndex = index; - }; - - ctrl.removeAttribute = function (val, index) { - $rootScope.showConfirm( - ctrl, - "removeAttributeConfirmed", - [val, index], - null, - "Remove Field", - "Deleted data will not able to recover, are you sure you want to delete this item?" - ); - }; - ctrl.removeAttributeConfirmed = async function (val, index) { - if (val.id) { - $rootScope.isBusy = true; - var result = await fieldService.delete([val.id]); - if (result.isSucceed) { - ctrl.additionalData.fields.splice(index, 1); - $rootScope.isBusy = false; - $scope.$apply(); } else { - $rootScope.showErrors(result.errors); - $rootScope.isBusy = false; - $scope.$apply(); + ctrl.additionalData.fields.splice(index, 1); } - } else { - ctrl.additionalData.fields.splice(index, 1); - } - }; - }, - ], -}); - + }; + }, + ], + }); + modules.component("additionalValue", { - templateUrl: "/mix-app/views/app-portal/components/additional-value/view.html", + templateUrl: + "/mix-app/views/app-portal/components/additional-value/view.html", bindings: { additionalData: "=?", additionalDataId: "=?", @@ -7089,8 +7091,8 @@ modules.component("additionalValue", { controller: [ "$rootScope", "$scope", - "RestAttributeSetDataPortalService", - "RestAttributeValuePortalService", + "RestMixDatabaseDataPortalService", + "RestMixDatabaseDataValuePortalService", function ($rootScope, $scope, dataService, valueService) { var ctrl = this; ctrl.value = {}; @@ -7108,7 +7110,7 @@ modules.component("additionalValue", { const getData = await dataService.getAdditionalData(obj); if (getData.isSucceed) { ctrl.additionalData = getData.data; - ctrl.additionalData.attributeSetName = ctrl.databaseName; + ctrl.additionalData.mixDatabaseName = ctrl.databaseName; ctrl.additionalData.parentType = ctrl.parentType; ctrl.additionalData.parentId = ctrl.parentId; $scope.$apply(); @@ -7126,1477 +7128,1175 @@ modules.component("additionalValue", { ], }); -modules.component("attributeList", { - templateUrl: "/mix-app/views/app-portal/components/attribute-list/view.html", +modules.component("customImage", { + templateUrl: "/mix-app/views/app-portal/components/custom-image/custom-image.html", + bindings: { + header: "=?", + description: "=?", + src: "=", + srcUrl: "=", + w: "=?", + h: "=?", + rto: "=?", + postedFile: "=?", + type: "=?", + folder: "=?", + auto: "=", + onDelete: "&?", + onUpdate: "&?", + }, controller: [ "$rootScope", "$scope", - "RestAttributeFieldPortalService", - function ($rootScope, $scope, service) { + "$uibModal", + "ngAppSettings", + "MediaService", + function ($rootScope, $scope, $uibModal, ngAppSettings, mediaService) { var ctrl = this; - ctrl.selectedCol = null; - ctrl.settings = $rootScope.globalSettings; - ctrl.$onInit = async function () { - var getDefaultAttr = await service.getDefault(); - if (getDefaultAttr.isSucceed) { - ctrl.defaultAttr = getDefaultAttr.data; - ctrl.defaultAttr.options = []; - } + ctrl.isAdmin = $rootScope.isAdmin; + var image_placeholder = "/mix-app/assets/img/image_placeholder.jpg"; + ctrl.isImage = false; + ctrl.croppedStream = null; + ctrl.mediaNavs = []; + ctrl.options = {}; + ctrl.$onInit = function () { + ctrl.srcUrl = ctrl.srcUrl || image_placeholder; + ctrl.isImage = ctrl.srcUrl + .toLowerCase() + .match(/([/|.|\w|\s|-])*\.(?:jpg|jpeg|gif|png|svg)/g); + ctrl.id = Math.floor(Math.random() * 100); }; - ctrl.addAttr = function () { - if (ctrl.fields) { - var t = angular.copy(ctrl.defaultAttr); - t.priority = ctrl.fields.length + 1; - ctrl.fields.push(t); + ctrl.calImageSize = function () { + if (ctrl.w) { + ctrl.h = ctrl.h || ctrl.w / ctrl.rto; + ctrl.rto = ctrl.rto || ctrl.w / ctrl.h; } - }; - ctrl.removeAttribute = async function (attr, index) { - if (confirm("Remove this field ?")) { - if (attr.id) { - $rootScope.isBusy = true; - var remove = await service.delete([attr.id]); - if (remove.isSucceed) { - ctrl.fields.splice(index, 1); - } - $rootScope.isBusy = false; - $scope.$apply(); - } else { - ctrl.fields.splice(index, 1); - } + if (ctrl.h) { + ctrl.w = ctrl.w || ctrl.h * ctrl.rto; + ctrl.rto = ctrl.rto || ctrl.w / ctrl.h; } - }; - ctrl.addOption = function (col, index) { - var val = $("#option_" + index).val(); - col.options = col.options || []; - var opt = { - value: val, - dataType: 7, + + ctrl.maxHeight = ctrl.maxHeight || "200px"; + ctrl.options = { + boundary: { width: 150 * ctrl.rto, height: 150 }, + render: { width: 1000 * ctrl.rto, height: 1000 }, + output: { width: ctrl.w, height: ctrl.h }, }; - col.options.push(opt); - $("#option_" + index).val(""); }; - ctrl.generateForm = function () { - var formHtml = document.createElement("module-form"); - formHtml.setAttribute("class", "row"); - angular.forEach(ctrl.viewModel.attributes, function (e, i) { - var el; - var label = document.createElement("label"); - label.setAttribute("class", "form-label"); - label.setAttribute("ng-bind", "{{data.title}}"); - - switch (e.dataType) { - case "datetime": - el = document.createElement("input"); - el.setAttribute("type", "datetime-local"); - break; + ctrl.openCroppie = function (file) { + const w = parseInt(ctrl.w); + const h = parseInt(ctrl.h); + const rto = ctrl.w / ctrl.h; - case "date": - el = document.createElement("input"); - el.setAttribute("type", "date"); - break; + var modalInstance = $uibModal.open({ + animation: true, + windowClass: "show", + templateUrl: "/mix-app/views/app-shared/components/modal-croppie/croppie.html", + controller: "ModalCroppieController", + controllerAs: "$ctrl", + size: "lg", + resolve: { + mediaService: mediaService, + file: function () { + return file; + }, + w, + h, + rto, + }, + }); - case "time": - el = document.createElement("input"); - el.setAttribute("type", "time"); - break; + modalInstance.result.then( + function (result) { + ctrl.srcUrl = result.fullPath; + }, + function () { } + ); + }; - case "phonenumber": - el = document.createElement("input"); - el.setAttribute("type", "tel"); - break; - - case "number": - el = document.createElement("input"); - el.setAttribute("type", "number"); - break; - - case "html": - el = document.createElement("trumbowyg"); - el.setAttribute("options", "{}"); - el.setAttribute("type", "number"); - break; - - case "textarea": - el = document.createElement("textarea"); - break; - - default: - el = document.createElement("input"); - el.setAttribute("type", "text"); - formHtml.appendChild(el); - break; - } - el.setAttribute("ng-model", "data.jItem[" + e.name + "].value"); - el.setAttribute("placeholder", "{{$ctrl.title}}"); - formHtml.appendChild(label); - formHtml.appendChild(el); - }); - ctrl.viewModel.formView.content = formHtml.innerHTML; + ctrl.mediaFile = { + file: null, + fullPath: "", + folder: ctrl.folder, + title: ctrl.title, + description: ctrl.description, }; + ctrl.media = {}; + ctrl.$doCheck = function () { + if (ctrl.src !== ctrl.srcUrl && ctrl.srcUrl != image_placeholder) { + ctrl.src = ctrl.srcUrl; + ctrl.isImage = ctrl.srcUrl + .toLowerCase() + .match(/([/|.|\w|\s|-])*\.(?:jpg|jpeg|gif|png|svg)/g); + } + }.bind(ctrl); - ctrl.generateName = function (col) { - col.name = $rootScope.generateKeyword(col.title, "_"); - }; - ctrl.removeAttr = function (index) { - if (ctrl.fields) { - ctrl.fields.splice(index, 1); + ctrl.selectFile = function (files) { + if (files !== undefined && files !== null && files.length > 0) { + const file = files[0]; + ctrl.mediaFile.folder = ctrl.folder ? ctrl.folder : "Media"; + ctrl.mediaFile.title = ctrl.title ? ctrl.title : ""; + ctrl.mediaFile.description = ctrl.description ? ctrl.description : ""; + ctrl.mediaFile.file = file; + if (ctrl.w || ctrl.h || ctrl.rto) { + ctrl.openCroppie(file); + } else { + if (ctrl.auto == "true") { + ctrl.uploadFile(file); + } else { + ctrl.getBase64(file); + } + } } }; - ctrl.updateOrders = function (index) { - if (index > ctrl.dragStartIndex) { - ctrl.fields.splice(ctrl.dragStartIndex, 1); + + ctrl.uploadFile = async function (file) { + if (file !== null) { + $rootScope.isBusy = true; + var reader = new FileReader(); + reader.readAsDataURL(file); + reader.onload = async function () { + var getMedia = await mediaService.getSingle(["portal"]); + if (getMedia.isSucceed) { + ctrl.mediaFile.fileName = file.name.substring( + 0, + file.name.lastIndexOf(".") + ); + ctrl.mediaFile.extension = file.name.substring( + file.name.lastIndexOf(".") + ); + ctrl.mediaFile.fileStream = reader.result; + var media = getMedia.data; + media.title = ctrl.title; + media.description = ctrl.description; + media.mediaFile = ctrl.mediaFile; + var resp = await mediaService.save(media); + if (resp && resp.isSucceed) { + ctrl.src = resp.data.fullPath; + ctrl.srcUrl = resp.data.fullPath; + ctrl.isImage = ctrl.srcUrl + .toLowerCase() + .match(/([/|.|\w|\s|-])*\.(?:jpg|jpeg|gif|png|svg)/g); + $rootScope.isBusy = false; + $scope.$apply(); + } else { + if (resp) { + $rootScope.showErrors(resp.errors); + } + $rootScope.isBusy = false; + $scope.$apply(); + } + } + }; + reader.onerror = function (error) { }; } else { - ctrl.fields.splice(ctrl.dragStartIndex + 1, 1); + return null; } - angular.forEach(ctrl.fields, function (e, i) { - e.priority = i; - }); - }; - ctrl.dragStart = function (index) { - ctrl.dragStartIndex = index; - }; - ctrl.showReferences = function (col) { - ctrl.colRef = col; - $("#modal-navs").modal("show"); }; - ctrl.referenceCallback = function (selected) { - if (selected && selected.length) { - ctrl.colRef.reference = selected; - ctrl.colRef.referenceId = selected[0].id; + ctrl.getBase64 = function (file) { + if (file !== null) { + $rootScope.isBusy = true; + var reader = new FileReader(); + reader.readAsDataURL(file); + reader.onload = function () { + var index = reader.result.indexOf(",") + 1; + var base64 = reader.result.substring(index); + if (ctrl.postedFile) { + ctrl.postedFile.fileName = file.name.substring( + 0, + file.name.lastIndexOf(".") + ); + ctrl.postedFile.extension = file.name.substring( + file.name.lastIndexOf(".") + ); + ctrl.postedFile.fileStream = reader.result; + } + ctrl.srcUrl = reader.result; + ctrl.isImage = + ctrl.srcUrl.indexOf("data:image/") >= 0 || + ctrl.srcUrl + .toLowerCase() + .match(/([/|.|\w|\s|-])*\.(?:jpg|jpeg|gif|png|svg)/g); + ctrl.src = reader.result; + $rootScope.isBusy = false; + $scope.$apply(); + }; + reader.onerror = function (error) { + $rootScope.isBusy = false; + $rootScope.showErrors([error]); + }; + } else { + return null; } - $("#modal-navs").modal("hide"); }; }, ], - bindings: { - header: "=", - fields: "=", - removeAttributes: "=", - }, }); -modules.component('attributeSetDataFilter', { - templateUrl: '/mix-app/views/app-portal/components/attribute-set-data-filter/view.html', +modules.component('confirm', { + templateUrl: '/mix-app/views/app-portal/components/confirm/confirm.html', + controller: ['$rootScope', '$scope', 'ngAppSettings', function ($rootScope, $scope) { + var ctrl = this; + ctrl.executeFunctionByName = async function (functionName, args, context) { + var result = await $rootScope.executeFunctionByName(functionName, args, context); + if (result) { + $scope.$apply(); + } + } + }], bindings: { - query: '=', - attributeSetName: '=?', - attributeSetId: '=?', - selectedList: '=', - initData: '=?', - fields: '=?', - selected: '=', - callback: '&?', - save: '&?' - }, - controller: ['$rootScope', '$scope', 'ngAppSettings', 'RestAttributeSetDataPortalService', - function ($rootScope, $scope, ngAppSettings, dataService) { - var ctrl = this; - ctrl.request = angular.copy(ngAppSettings.request); - ctrl.types = ['Page', 'Post']; - ctrl.type = 'Page'; - ctrl.navs = []; - ctrl.data = { items: [] }; - ctrl.goToPath = $rootScope.goToPath; - ctrl.$onInit = function () { - if (ctrl.initData) { - ctrl.data = ctrl.initData; - } - else { - ctrl.loadData(); - } - }; - ctrl.loadData = async function (pageIndex) { - ctrl.isBusy = true; + message: '=' + } +}); - // ctrl.request.query = ctrl.query + ctrl.srcId; - ctrl.navs = []; - if (pageIndex !== undefined) { - ctrl.request.pageIndex = pageIndex; - } - if (ctrl.request.fromDate !== null) { - var df = new Date(ctrl.request.fromDate); - ctrl.request.fromDate = df.toISOString(); - } - if (ctrl.request.toDate !== null) { - var dt = new Date(ctrl.request.toDate); - ctrl.request.toDate = dt.toISOString(); - } - if (ctrl.attributeSetId) { - ctrl.request.attributeSetId = ctrl.attributeSetId; - } - ctrl.request.attributeSetName = ctrl.attributeSetName; - if (ctrl.filterType) { - ctrl.request.filterType = ctrl.filterType; - } +modules.component('filterList', { + templateUrl: '/mix-app/views/app-portal/components/filter-list/filter-list.html', + controller: ['$scope', '$rootScope', 'ngAppSettings', function ($scope, $rootScope, ngAppSettings) { + var ctrl = this; + ctrl.dateRange = { + fromDate: null, + toDate: null + }; + ctrl.init = function () { + if (!ctrl.orders) { + ctrl.orders = ngAppSettings.orders; + } + ctrl.directions = ngAppSettings.directions; + ctrl.pageSizes = ngAppSettings.pageSizes; + ctrl.statuses = []; + var statuses = ngAppSettings.contentStatuses; + if (ctrl.request && ctrl.request.contentStatuses) { + statuses = ctrl.request.contentStatuses; + } + angular.forEach(statuses, function (val, i) { + ctrl.statuses.push({ + value: val, + title: val + }); + }); - var response = await dataService.getList(ctrl.request); - if (response.isSucceed) { - ctrl.data = response.data; - ctrl.isBusy = false; - $scope.$apply(); - } - else { - $rootScope.showErrors(response.errors); - ctrl.isBusy = false; - $scope.$apply(); - } - }; - ctrl.edit = function (nav) { - switch (ctrl.type) { - case 'Page': - ctrl.goToPath(`/portal/page/details/${nav.id}`); - break; - case 'Post': - ctrl.goToPath(`/portal/post/details/${nav.id}`); - break; - case 'Module': - ctrl.goToPath(`/portal/module/details/${nav.id}`); - break; - } - }; - ctrl.onClose = function () { - ctrl.callback(); - }; - ctrl.select = function (nav) { - var current = $rootScope.findObjectByKey(ctrl.data.items, 'id', nav.id); - if (!nav.isActive && ctrl.callback) { - ctrl.callback({ nav: nav }); - } - if (ctrl.isMultiple) { - current.isActive = !current.isActive; - } - else { - if (!nav.isActive) { - angular.forEach(ctrl.data.items, element => { - element.isActive = false; - }); - } - current.isActive = !nav.isActive; - } - }; - ctrl.saveSelected = function () { - ctrl.selected = $rootScope.filterArray(ctrl.data, ['isActived'], [true]); - setTimeout(() => { - ctrl.save().then(() => { - ctrl.loadPosts(); - }); - - }, 500); - - }; - ctrl.limString = function (str, max) { - if (str) { - return (str.length > max) ? str.substring(0, max) + ' ...' : str; - } - }; - } - - ] + }; + ctrl.updateDate = function () { + if (Date.parse(ctrl.dateRange.fromDate)) { + ctrl.request.fromDate = new Date(ctrl.dateRange.fromDate).toISOString(); + } + else { + $scope.request.fromDate = null; + } + if (Date.parse(ctrl.dateRange.toDate)) { + ctrl.request.toDate = new Date(ctrl.dateRange.toDate).toISOString(); + } + else { + ctrl.request.toDate = null; + } + ctrl.callback({ pageIndex: 0 }); + }; + }], + bindings: { + request: '=', + orders: '=?', + createUrl: '=', + createText: '=', + callback: '&' + } }); -modules.component("attributeSetForm", { - templateUrl: - "/mix-app/views/app-portal/components/attribute-set-form/view.html", - bindings: { - attributeSetId: "=", - attributeSetName: "=", - fields: "=?", - attrDataId: "=?", - attrData: "=?", - parentType: "=?", // attribute set = 1 | post = 2 | page = 3 | module = 4 - parentId: "=?", - defaultId: "=", - backUrl: "=?", - level: "=?", - hideAction: "=?", - saveData: "&?", - }, +modules.component('funding', { + templateUrl: '/mix-app/views/app-portal/components/funding/view.html', controller: [ - "$rootScope", - "$scope", - "$location", - "$routeParams", - "RestAttributeSetDataPortalService", - "RestAttributeFieldPortalService", - function ( - $rootScope, - $scope, - $location, - $routeParams, - service, - fieldService - ) { + '$rootScope', '$http', + function ($rootScope, $http) { var ctrl = this; - ctrl.isBusy = false; - ctrl.attributes = []; - - ctrl.defaultData = null; - ctrl.selectedProp = null; - ctrl.settings = $rootScope.globalSettings; - ctrl.$onInit = async function () { - ctrl.level = ctrl.level || 0; - ctrl.loadData(); + ctrl.items = [ + { + "title": "opencollective.com/mixcore", + "href": "https://opencollective.com/mixcore", + "logo": "https://github.githubassets.com/images/modules/site/icons/funding_platforms/open_collective.svg" + }, + { + "title": "funding.communitybridge.org/projects/mixcore", + "href": "https://crowdfunding.lfx.linuxfoundation.org/projects/mixcore", + "logo": "https://github.githubassets.com/images/modules/site/icons/funding_platforms/community_bridge.svg" + }, + { + "title": "patreon.com/mixcore", + "href": "https://www.patreon.com/mixcore/creators", + "logo": "https://github.githubassets.com/images/modules/site/icons/funding_platforms/patreon.svg" + }, + { + "title": "paypalme/mixcore", + "href": "https://www.paypal.me/mixcore", + "logo": "/mix-app/assets/img/svg/heart.svg" + }, + { + "title": "buymeacoffee.com/mixcore", + "href": "https://www.buymeacoffee.com/mixcore", + "logo": "/mix-app/assets/img/svg/heart.svg" + }, + ]; + ctrl.init = function () { }; - ctrl.loadData = async function () { - /* - If input is data id => load ctrl.attrData from service and handle it independently - Else modify input ctrl.attrData - */ - ctrl.isBusy = true; - if (ctrl.attrDataId) { - var getData = await service.getSingle([ctrl.attrDataId]); - ctrl.attrData = getData.data; - if (ctrl.attrData) { - ctrl.attrData.parentId = ctrl.parentId; - ctrl.attrData.parentType = ctrl.parentType; - ctrl.attributeSetId = ctrl.attrData.attributeSetId; - ctrl.attributeSetName = ctrl.attrData.attributeSetName; - ctrl.attributeSetTitle = $routeParams.attributeSetTitle; - await ctrl.loadDefaultModel(); - ctrl.isBusy = false; - $scope.$apply(); - } else { - if (getData) { - $rootScope.showErrors(getData.errors); - } - ctrl.isBusy = false; - $scope.$apply(); - } - } - if ( - (ctrl.attributeSetName || ctrl.attributeSetId) && - !ctrl.defaultData - ) { - await ctrl.loadDefaultModel(); - ctrl.isBusy = false; - $scope.$apply(); - } + } + ], + bindings: { + } +}); +modules.component('githubContributers', { + templateUrl: '/mix-app/views/app-portal/components/github-contributers/view.html', + controller: [ + '$rootScope', '$http', + function ($rootScope, $http) { + var ctrl = this; + ctrl.items = []; + ctrl.init = function () { + var req = { + method: 'GET', + url: 'https://api.github.com/repos/mixcore/mix.core/contributors' + }; + ctrl.getGithubApiResult(req); }; - ctrl.loadDefaultModel = async function () { - if ($routeParams.parentId) { - ctrl.parentId = $routeParams.parentId; - } - if ($routeParams.parentType) { - ctrl.parentType = $routeParams.parentType; - } - if (!ctrl.backUrl) { - if (ctrl.parentType) { - switch (ctrl.parentType) { - case "Post": - case "Page": - case "Module": - ctrl.backUrl = `/portal/${ctrl.parentType.toLowerCase()}/details/${ctrl.parentId - }`; - break; - default: - ctrl.backUrl = `/portal/attribute-set-data/details?dataId=${ctrl.parentId}&attributeSetId=${ctrl.attributeSetId}&attributeSetName=${ctrl.attributeSetName}&attributeSetTitle=${$routeParams.attributeSetTitle}`; - break; - } + ctrl.getGithubApiResult = async function (req) { + return $http(req).then(function (resp) { + if (resp.status == '200') { + ctrl.items = resp.data; } - } - var getDefault = await service.initData( - ctrl.attributeSetName || ctrl.attributeSetId - ); - ctrl.defaultData = getDefault.data; - if (ctrl.defaultData) { - ctrl.defaultData.attributeSetId = ctrl.attributeSetId || 0; - ctrl.defaultData.attributeSetName = ctrl.attributeSetName; - ctrl.defaultData.parentId = ctrl.parentId; - ctrl.defaultData.parentType = ctrl.parentType; - - ctrl.fields = ctrl.fields || ctrl.defaultData.fields; - } - - if (!ctrl.attrData) { - ctrl.attrData = angular.copy(ctrl.defaultData); - } - }; + else { - ctrl.reload = async function () { - ctrl.attrData = angular.copy(ctrl.defaultData); + } + }, + function (error) { + return { isSucceed: false, errors: [error.statusText || error.status] }; + }); }; - ctrl.loadSelected = function () { - if (ctrl.selectedList.data.length) { - ctrl.attrData = ctrl.selectedList.data[0]; - ctrl.attrData.attributeSetId = ctrl.attributeSetId; - ctrl.attrData.attributeSetName = ctrl.attributeSetName; - ctrl.attrData.parentId = ctrl.parentId; - ctrl.attrData.parentType = ctrl.parentType; - } + } + ], + bindings: { + } +}); +modules.component('githubReleases', { + templateUrl: '/mix-app/views/app-portal/components/github-releases/view.html', + controller: [ + '$rootScope', '$http', + function ($rootScope, $http) { + var ctrl = this; + ctrl.items = []; + ctrl.init = function () { + var req = { + method: 'GET', + url: 'https://api.github.com/repos/mixcore/mix.core/releases' + }; + ctrl.getGithubApiResult(req); }; - ctrl.submit = async function () { - if (ctrl.validate()) { - if (ctrl.saveData) { - ctrl.isBusy = true; - var result = await ctrl.saveData({ data: ctrl.attrData }); - if (result && result.isSucceed) { - ctrl.isBusy = false; - ctrl.attrData = result.data; - $scope.$apply(); - } else { - ctrl.isBusy = false; - // ctrl.attrData = await service.getSingle('portal', [ctrl.defaultId, ctrl.attributeSetId, ctrl.attributeSetName]); - $scope.$apply(); - } - } else { - ctrl.isBusy = true; - var saveResult = await service.save(ctrl.attrData); - if (saveResult.isSucceed) { - ctrl.attrData.id = saveResult.data.id; - ctrl.isBusy = false; - $rootScope.showMessage("success"); - if ($location.path() == "/portal/attribute-set-data/create") { - const url = - ctrl.backUrl || - `/portal/attribute-set-data/details?dataId=${ctrl.attrData.id}&attributeSetId=${ctrl.attributeSetId}&attributeSetName=${ctrl.attributeSetName}&attributeSetTitle=${$routeParams.attributeSetTitle}`; - $location.url(url); - } - $scope.$apply(); - } else { - ctrl.isBusy = false; - if (saveResult) { - $rootScope.showErrors(saveResult.errors); - } - $scope.$apply(); - } - } - } - }; - ctrl.validate = function () { - var isValid = true; - ctrl.errors = []; - angular.forEach(ctrl.fields, function (field) { - if (field.regex) { - var regex = RegExp(field.regex, "g"); - isValid = regex.test(ctrl.attrData.obj[field.name]); - if (!isValid) { - ctrl.errors.push(`${field.name} is not match Regex`); - } - } - if (!isValid) { - $rootScope.showErrors(ctrl.errors); - } - if (isValid && field.isEncrypt) { - ctrl.attrData.obj[field.name] = $rootScope.encrypt( - ctrl.attrData.obj[field.name] - ); + ctrl.getGithubApiResult = async function (req) { + return $http(req).then(function (resp) { + if (resp.status == '200') { + ctrl.items = resp.data; } - }); - return isValid; - }; - ctrl.showContentFilter = function ($event) { - $rootScope.showContentFilter(ctrl.loadSelectedLink); - }; - ctrl.loadSelectedLink = function (data, type) { - if (data) { - ctrl.attrData.obj.target_id = data.id; - ctrl.attrData.obj.title = data.title; - ctrl.attrData.obj.type = type; - ctrl.attrData.obj.uri = data.detailsUrl; - } - }; - ctrl.filterData = function (attributeName) { - if (ctrl.attrData) { - var attr = $rootScope.findObjectByKey( - ctrl.attrData.obj, - "attributeFieldName", - attributeName - ); - if (!attr) { - attr = angular.copy( - $rootScope.findObjectByKey( - ctrl.defaultData.data, - "attributeFieldName", - attributeName - ) - ); - ctrl.attrData.obj.push(attr); + else { } - return attr; - } + }, + function (error) { + return { isSucceed: false, errors: [error.statusText || error.status] }; + }); }; - }, + } ], + bindings: { + } }); - -modules.component('attributeSetNavData', { - templateUrl: '/mix-app/views/app-portal/components/attribute-set-nav-data/view.html', - bindings: { - nav: '=', - parentId: '=', - parentType: '=', - onUpdate: '&?', - onDelete: '&?', - }, - controller: ['$rootScope', '$scope', 'ngAppSettings', 'RestRelatedAttributeDataPortalService', - 'RestAttributeSetDataPortalService', - function ($rootScope, $scope, ngAppSettings, navService, dataService) { - var ctrl = this; - ctrl.data = null; - ctrl.selected = null; - ctrl.navRequest = angular.copy(ngAppSettings.request); - ctrl.setRequest = angular.copy(ngAppSettings.request); - ctrl.settings = $rootScope.globalSettings; - ctrl.$onInit = function () { - navService.getDefault([ctrl.parentId, ctrl.parentType, 'default']).then(resp => { - ctrl.defaultData = resp.data; - ctrl.defaultData.parentId = ctrl.parentId; - ctrl.defaultData.parentType = ctrl.parentType; - ctrl.selected = angular.copy(ctrl.defaultData); - ctrl.loadData(); - }); - ctrl.navRequest.parentType = ctrl.parentType; - ctrl.navRequest.parentId = ctrl.parentId; - }; - ctrl.selectPane = function (pane) { - }; - ctrl.loadData = function () { - navService.getList(ctrl.navRequest) - .then(resp => { - if (resp) { - ctrl.data = resp.data; - $scope.$apply(); - } else { - if (resp) { - $rootScope.showErrors('Failed'); - } - $scope.$apply(); - } - }); - }; - ctrl.updateData = function (nav) { - ctrl.selected = nav; - var e = $(".pane-form-" + ctrl.nav.data.id)[0]; - angular.element(e).triggerHandler('click'); - // $location.url('/portal/attribute-set-data/details?dataId='+ item.id +'&attributeSetId=' + item.attributeSetId+'&parentType=' + item.parentType+'&parentId=' + item.parentId); - }; - ctrl.saveData = function (data) { - $rootScope.isBusy = true; - ctrl.selected.data = data; - dataService.save(data).then(resp => { - if (resp.isSucceed) { - ctrl.selected.dataId = resp.data.id; - ctrl.selected.attributeSetId = resp.data.attributeSetId; - ctrl.selected.attributeSetName = resp.data.attributeSetName; - ctrl.selected.attributeData = resp.data; - navService.save(ctrl.selected).then(resp => { - if (resp.isSucceed) { - var tmp = $rootScope.findObjectByKey(ctrl.data, ['parentId', 'parentType', 'id'], - [resp.data.parentId, resp.data.parentType, resp.data.id]); - if (!tmp) { - ctrl.data.items.push(resp.data); - var e = $(".pane-data-" + ctrl.nav.data.id)[0]; - angular.element(e).triggerHandler('click'); - } - ctrl.selected = angular.copy(ctrl.defautData); - $rootScope.isBusy = false; - $scope.$apply(); - } else { - $rootScope.showMessage('failed'); - $rootScope.isBusy = false; - $scope.$apply(); - } - }) - - } - else { - $rootScope.showMessage('failed'); - $rootScope.isBusy = false; - $scope.$apply(); - } - }) - } - ctrl.removeData = async function (nav) { - $rootScope.showConfirm(ctrl, 'removeDataConfirmed', [nav], null, 'Remove', 'Deleted data will not able to recover, are you sure you want to delete this item?'); - }; - ctrl.removeDataConfirmed = async function (nav) { - $rootScope.isBusy = true; - var result = await navService.delete([nav.id]); - if (result.isSucceed) { - $rootScope.removeObjectByKey(ctrl.data, 'id', nav.id); - $rootScope.isBusy = false; - $scope.$apply(); - } - else { - $rootScope.showMessage('failed'); - $rootScope.isBusy = false; - $scope.$apply(); - } - }; - ctrl.dragStart = function (index) { - ctrl.dragStartIndex = index; - ctrl.minPriority = ctrl.data[0].priority; - }; - ctrl.updateOrders = function (index) { - if (index > ctrl.dragStartIndex) { - ctrl.data.splice(ctrl.dragStartIndex, 1); - } - else { - ctrl.data.splice(ctrl.dragStartIndex + 1, 1); - } - var arrNavs = []; - angular.forEach(ctrl.data, function (e, i) { - e.priority = ctrl.minPriority + i; - var keys = { - parentId: e.parentId, - parentType: e.parentType, - id: e.id - }; - var properties = { - priority: e.priority - } - arrNavs.push({ - keys: keys, - properties: properties - }); - }); - navService.saveProperties('portal', arrNavs).then(resp => { - $rootScope.isBusy = false; - $scope.$apply(); - }); - }; - }] -}); -modules.component("attributeSetNavValues", { - templateUrl: "/mix-app/views/app-portal/components/attribute-set-nav-values/view.html", +modules.component("googleAnalytic", { + templateUrl: "/mix-app/views/app-portal/components/google-analytic/view.html", bindings: { - attributeSetId: "=", - attributeSetName: "=", - parentId: "=", - parentType: "=", - fields: "=?", - header: "=", - data: "=?", - maxCol: "=?", - createUrl: "=?", - updateUrl: "=?", - onUpdate: "&?", - onDelete: "&?", }, controller: [ "$rootScope", - "$scope", - "ngAppSettings", - "RestRelatedAttributeDataPortalService", - "RestAttributeFieldPortalService", - function ($rootScope, $scope, ngAppSettings, navService, fieldService) { + "CommonService", + function ($rootScope, commonService) { var ctrl = this; - ctrl.selectedProp = null; - ctrl.request = angular.copy(ngAppSettings.restRequest); - ctrl.request.orderBy = "priority"; - ctrl.request.query = "{}"; + ctrl.init = function () { + if (gapi) { + gapi.analytics.ready(function () { + if ($rootScope.settings.data.Google_Client_Id) { + /** + * Authorize the user immediately if the user has already granted access. + * If no access has been created, render an authorize button inside the + * element with the ID "embed-api-auth-container". + */ + gapi.analytics.auth.authorize({ + container: "embed-api-auth-container", + //REPLACE WITH YOUR CLIENT ID + clientid: $rootScope.settings.data.Google_Client_Id, + }); - ctrl.request.direction = 0; - ctrl.settings = $rootScope.globalSettings; - ctrl.$onInit = async function () { - ctrl.maxCol = ctrl.maxCol || 3; - if (!ctrl.createUrl) { - ctrl.createUrl = "/portal/attribute-set-data/create"; - } - if (!ctrl.updateUrl) { - ctrl.updateUrl = "/portal/attribute-set-data/details"; - } - if (!ctrl.fields) { - var getFields = await fieldService.initData( - ctrl.attributeSetName || ctrl.attributeSetId - ); - if (getFields.isSucceed) { - ctrl.fields = getFields.data; - $scope.$apply(); - } - } - if (!ctrl.data) { - ctrl.loadData(); - } - }; + /** + * Create a ViewSelector for the first view to be rendered inside of an + * element with the id "view-selector-1-container". + */ + var viewSelector1 = new gapi.analytics.ViewSelector({ + container: "view-selector-1-container", + }); - ctrl.update = function (data) { - ctrl.onUpdate({ data: data }); - }; + /** + * Create a ViewSelector for the second view to be rendered inside of an + * element with the id "view-selector-2-container". + */ + var viewSelector2 = new gapi.analytics.ViewSelector({ + container: "view-selector-2-container", + }); - ctrl.delete = function (data) { - ctrl.onDelete({ data: data }); - }; + /** + * Create a new ActiveUsers instance to be rendered inside of an + * element with the id "active-users-container" and poll for changes every + * five seconds. + */ + var activeUsers = new gapi.analytics.ext.ActiveUsers({ + container: "active-users-container", + pollingInterval: 5, + }); + /** + * Add CSS animation to visually show the when users come and go. + */ + activeUsers.once("success", function () { + var element = this.container.firstChild; + var timeout; - ctrl.filterData = function (item, attributeName) { - return $rootScope.findObjectByKey( - item.data, - "attributeName", - attributeName - ); - }; + this.on("change", function (data) { + var element = this.container.firstChild; + var animationClass = + data.delta > 0 ? "is-increasing" : "is-decreasing"; + element.className += " " + animationClass; - ctrl.dragStart = function (index) { - ctrl.dragStartIndex = index; - ctrl.minPriority = ctrl.data.items[0].priority; - }; - ctrl.updateOrders = function (index) { - if (index > ctrl.dragStartIndex) { - ctrl.data.items.splice(ctrl.dragStartIndex, 1); - } else { - ctrl.data.items.splice(ctrl.dragStartIndex + 1, 1); - } - angular.forEach(ctrl.data.items, function (e, i) { - e.priority = ctrl.minPriority + i; - navService.saveFields(e.id, { priority: e.priority }).then((resp) => { - $rootScope.isBusy = false; - $scope.$apply(); - }); - }); - }; + clearTimeout(timeout); + timeout = setTimeout(function () { + element.className = element.className.replace( + / is-(increasing|decreasing)/g, + "" + ); + }, 3000); + }); + }); - ctrl.loadData = function () { - ctrl.request.attributeSetId = ctrl.attributeSetId || 0; - ctrl.request.attributeSetName = ctrl.attributeSetName || null; - ctrl.request.parentId = ctrl.parentId; - ctrl.request.parentType = ctrl.parentType; - navService.getList(ctrl.request).then((resp) => { - if (resp) { - ctrl.data = resp.data; - $rootScope.isBusy = false; - $scope.$apply(); - } else { - if (resp) { - $rootScope.showErrors("Failed"); + /** + * Create a ViewSelector for the second view to be rendered inside of an + * element with the id "view-selector-2-container". + */ + var viewSelector2 = new gapi.analytics.ViewSelector({ + container: "view-selector-2-container", + }); + + // Render both view selectors to the page. + // viewSelector1.execute(); + // viewSelector2.execute(); + + /** + * Create the first DataChart for top countries over the past 30 days. + * It will be rendered inside an element with the id "chart-1-container". + */ + var dataChart1 = new gapi.analytics.googleCharts.DataChart({ + query: { + // ids: $rootScope.settings.data.Google_Analytic_Ids, + metrics: "ga:sessions", + dimensions: "ga:date", + "start-date": "30daysAgo", + "end-date": "yesterday", + }, + chart: { + container: "chart-1-container", + type: "LINE", + options: { + width: "95%", + legendTextStyle: { color: "#333" }, + titleTextStyle: { color: "#333" }, + backgroundColor: { fill: "transparent" }, + hAxis: { + textStyle: { color: "#333" }, + }, + vAxis: { + textStyle: { color: "#333" }, + }, + series: { + 0: { + color: + $rootScope.globalSettings.portalThemeSettings + .primaryColor, + }, + 1: { color: "#e7711b" }, + 2: { color: "#f1ca3a" }, + 3: { color: "#6f9654" }, + 4: { color: "#1c91c0" }, + 5: { color: "#43459d" }, + }, + }, + }, + }); + + /** + * Create the second DataChart for top countries over the past 30 days. + * It will be rendered inside an element with the id "chart-2-container". + */ + var dataChart2 = new gapi.analytics.googleCharts.DataChart({ + query: { + // ids: $rootScope.settings.data.Google_Analytic_Ids, + metrics: "ga:sessions", + dimensions: "ga:country", + "start-date": "90daysAgo", + "end-date": "yesterday", + "max-results": 6, + sort: "-ga:sessions", + }, + chart: { + container: "chart-2-container", + type: "GEO", + options: { + width: "95%", + pieHole: 4 / 9, + }, + }, + }); + + dataChart1 + .set({ + query: { ids: $rootScope.settings.data.Google_Analytic_Ids }, + }) + .execute(); + dataChart2 + .set({ + query: { ids: $rootScope.settings.data.Google_Analytic_Ids }, + }) + .execute(); + activeUsers + .set({ ids: $rootScope.settings.data.Google_Analytic_Ids }) + .execute(); + + // /** + // * Update the first dataChart when the first view selecter is changed. + // */ + // viewSelector1.on('change', function (ids) { + // dataChart1.set({ query: { ids: ids } }).execute(); + // // Start tracking active users for this view. + // activeUsers.set({ ids: ids }).execute(); + // }); + + // /** + // * Update the first dataChart when the first view selecter is changed. + // */ + // viewSelector2.on('change', function (ids) { + // dataChart2.set({ query: { ids: ids } }).execute(); + // // Start tracking active users for this view. + // activeUsers.set({ ids: ids }).execute(); + // }); + + // /** + // * Update the second dataChart when the second view selecter is changed. + // */ + // viewSelector2.on('change', function (ids) { + // dataChart2.set({ query: { ids: ids } }).execute(); + // }); } - ctrl.refData = []; - $rootScope.isBusy = false; - $scope.$apply(); - } - }); - }; - ctrl.updateData = function (nav) { - $rootScope.goToPath( - `${ctrl.updateUrl}?dataId=${nav.dataId}&attributeSetId=${nav.attributeSetId}&parentId=${ctrl.parentId}&parentType=${ctrl.parentType}` - ); - // ctrl.refDataModel = nav; - // var e = $(".pane-form-" + ctrl.attributeValue.field.referenceId)[0]; - // angular.element(e).triggerHandler('click'); - // $location.url('/portal/attribute-set-data/details?dataId='+ item.id +'&attributeSetId=' + item.attributeSetId+'&parentType=' + item.parentType+'&parentId=' + item.parentId); - }; - ctrl.saveData = function (data) { - $rootScope.isBusy = true; - ctrl.refDataModel.data = data; - dataService.save("portal", data).then((resp) => { - if (resp.isSucceed) { - ctrl.refDataModel.id = resp.data.id; - ctrl.refDataModel.data = resp.data; - navService.save("portal", ctrl.refDataModel).then((resp) => { - if (resp.isSucceed) { - var tmp = $rootScope.findObjectByKey( - ctrl.refData, - ["parentId", "parentType", "id"], - [resp.data.parentId, resp.data.parentType, resp.data.id] - ); - if (!tmp) { - ctrl.refData.push(resp.data); - } - ctrl.refDataModel = angular.copy(ctrl.defaultDataModel); - var e = $( - ".pane-data-" + ctrl.attributeValue.field.referenceId - )[0]; - angular.element(e).triggerHandler("click"); - $rootScope.isBusy = false; - $scope.$apply(); - } else { - $rootScope.showMessage("failed"); - $rootScope.isBusy = false; - $scope.$apply(); - } - }); - } else { - $rootScope.showMessage("failed"); - $rootScope.isBusy = false; - $scope.$apply(); - } - }); - }; - ctrl.removeData = async function (nav) { - $rootScope.showConfirm( - ctrl, - "removeDataConfirmed", - [nav], - null, - "Remove", - "Deleted data will not able to recover, are you sure you want to delete this item?" - ); - }; - ctrl.removeDataConfirmed = async function (nav) { - $rootScope.isBusy = true; - var result = await navService.delete([nav.id]); - if (result.isSucceed) { - $rootScope.removeObjectByKey(ctrl.data.items, "id", nav.id); - $rootScope.isBusy = false; - $scope.$apply(); - } else { - $rootScope.showMessage("failed"); - $rootScope.isBusy = false; - $scope.$apply(); + }); } }; - ctrl.view = function (item) { - var obj = { - fields: ctrl.fields, - item: item, - }; - $rootScope.preview("attribute-set-data", obj, null, "modal-lg"); - }; }, - ], + ] }); -modules.component("attributeSetNavs", { - templateUrl: "/mix-app/views/app-portal/components/attribute-set-navs/view.html", - bindings: { - parentId: "=", - parentType: "=", - attributeSetNavs: "=?", - onUpdate: "&?", - onDelete: "&?", - }, - controller: [ - "$rootScope", - "$scope", - "ngAppSettings", - "RestRelatedAttributeSetPortalService", - "RestAttributeSetPortalService", - function ($rootScope, $scope, ngAppSettings, navService, setService) { - var ctrl = this; - ctrl.attributeSetNavs = ctrl.attributeSetNavs || []; - ctrl.selected = {}; - ctrl.defaultData = null; - ctrl.navRequest = angular.copy(ngAppSettings.request); - ctrl.setRequest = angular.copy(ngAppSettings.request); - - ctrl.settings = $rootScope.globalSettings; - ctrl.$onInit = function () { - // ctrl.setRequest.type = ctrl.parentType; - navService.getDefault().then((resp) => { - resp.parentId = ctrl.parentId; - resp.parentType = ctrl.parentType; - ctrl.defaultData = resp; - ctrl.loadData(); - }); - }; - ctrl.goToPath = $rootScope.goToPath; - ctrl.selectPane = function (pane) { }; - ctrl.loadData = async function () { - // Load attr set navs if not in input - if (!ctrl.attributeSetNavs) { - ctrl.navRequest.parentType = ctrl.parentType; - ctrl.navRequest.parentId = ctrl.parentId; - var resp = await navService.getList(ctrl.navRequest); - if (resp) { - angular.forEach(resp.data.items, (e) => { - e.isActived = true; - ctrl.attributeSetNavs.push(e); - }); - } else { - if (resp) { - $rootScope.showErrors(resp.errors); - } - } - } else { - angular.forEach(ctrl.attributeSetNavs, (e) => { - e.isActived = true; - }); +(function (angular) { + app.component("headerNav", { + templateUrl: "/mix-app/views/app-portal/components/header-nav/headerNav.html", + controller: [ + "$rootScope", + "$location", + "CommonService", + "AuthService", + "TranslatorService", + "GlobalSettingsService", + function ( + $rootScope, + $location, + commonService, + authService, + translatorService, + globalSettingsService + ) { + var ctrl = this; + ctrl.globalSettings = $rootScope.globalSettings; + if (authService.authentication) { + ctrl.avatar = authService.authentication.avatar; } - - var setResult = await setService.getList(ctrl.setRequest); - if (setResult) { - angular.forEach(setResult.data.items, (element) => { - var e = $rootScope.findObjectByKey( - ctrl.attributeSetNavs, - "attributeSetId", - element.id - ); - if (!e) { - e = angular.copy(ctrl.defaultData); - e.status = "Published"; - e.attributeSetId = element.id; - e.specificulture = navService.lang; - e.data = element; - e.isActived = false; - ctrl.attributeSetNavs.push(e); - } + this.$onInit = function () { + ctrl.isAdmin = $rootScope.isAdmin; + ctrl.settings = $rootScope.settings; + ctrl.settings.cultures = $rootScope.globalSettings.cultures; + }; + ctrl.translate = $rootScope.translate; + ctrl.getConfiguration = function (keyword, isWrap, defaultText) { + return $rootScope.getConfiguration(keyword, isWrap, defaultText); + }; + ctrl.changeLang = function (lang, langIcon) { + ctrl.settings.lang = lang; + ctrl.settings.langIcon = langIcon; + commonService.fillAllSettings(lang).then(function () { + window.top.location = location.href; }); - } else { - if (setResult) { - $rootScope.showErrors("Others Failed"); + }; + ctrl.logOut = function () { + $rootScope.logOut(); + window.top.location = "/security/login"; + }; + ctrl.addPermission = function () { + $("#dlg-permission").modal("show"); + }; + ctrl.addBookmark = function () { + $("#dlg-bookmark").modal("show"); + }; + ctrl.toggleSidebar = function () { + $(".main-sidebar").toggle(); + $(".sub-sidebar").toggle(); + // $('.navbar-brand').toggle(); + }; + ctrl.showHelper = function (url) { + $rootScope.helperUrl = url; + $("#dev-helper-modal").modal("show"); + }; + ctrl.generateSitemap = async function () { + $rootScope.isBusy = true; + var resp = await commonService.genrateSitemap(); + if (resp) { + window.top.location.href = + "/portal/file/details?folder=" + + resp.fileFolder + + "&filename=" + + resp.fileName + + resp.extension; + } else { + $rootScope.isBusy = false; + $rootScope.showErrors(["Server error"]); } - } - $scope.$apply(); - }; - ctrl.change = async function (nav) { - $rootScope.isBusy = true; - var result; - if (nav.isActived) { - ctrl.active(nav); - } else { - ctrl.deactive(nav); - } - }; + }; + }, + ], + bindings: { + breadCrumbs: "=", + settings: "=", + }, + }); +})(window.angular); - ctrl.deactive = async function (nav) { - let result = null; - if (nav.id) { - result = await navService.delete([nav.id]); - $(".pane-container-" + nav.data.id) - .parent() - .remove(); - } - if (result && result.isSucceed) { - $rootScope.isBusy = false; - $scope.$apply(); - } else { - $rootScope.showMessage("failed"); - $rootScope.isBusy = false; - } - }; - ctrl.active = async function (nav) { - $rootScope.isBusy = true; - var result; - result = await navService.save(nav); - if (result && result.isSucceed) { - $rootScope.isBusy = false; - $scope.$apply(); - } else { - $rootScope.showMessage("failed"); - $rootScope.isBusy = false; - $scope.$apply(); - } - }; +modules.component('hubMessages', { + templateUrl: '/mix-app/views/app-portal/components/hub-messages/hub-messages.html', + controller: 'HubMessagesController', + bindings: { - ctrl.update = function (data) { - ctrl.onUpdate({ - data: data, - }); - }; + } +}); +app.controller('HubMessagesController', ['$scope', function ($scope) { + BaseHub.call(this, $scope); + $scope.init = function () { + // $scope.startConnection('portalhub'); + }; +}]); - ctrl.delete = function (data) { - ctrl.onDelete({ - data: data, - }); - }; - ctrl.dragStart = function (index) { - ctrl.dragStartIndex = index; - ctrl.minPriority = ctrl.attributeSetNavs[0].priority; - }; - ctrl.updateOrders = function (index) { - if (index > ctrl.dragStartIndex) { - ctrl.attributeSetNavs.splice(ctrl.dragStartIndex, 1); - } else { - ctrl.attributeSetNavs.splice(ctrl.dragStartIndex + 1, 1); - } - var arrNavs = []; - angular.forEach(ctrl.attributeSetNavs, function (e, i) { - e.priority = ctrl.minPriority + i; - var keys = { - parentId: e.parentId, - parentType: e.parentType, - id: e.id, - }; - var properties = { - priority: e.priority, - }; - arrNavs.push({ - keys: keys, - properties: properties, - }); - }); - navService.saveProperties("portal", arrNavs).then((resp) => { - $rootScope.isBusy = false; - $scope.$apply(); - }); - }; +modules.component('jsonBuilder', { + templateUrl: '/mix-app/views/app-portal/components/json-builder/view.html', + bindings: { + 'data': '=?', // json obj (ex: { field1: 'some val' }) + 'folder': '=?', // filepath (ex: 'data/jsonfile.json') + 'filename': '=?', // filepath (ex: 'data/jsonfile.json') + 'allowedTypes': '=?', // string array ( ex: [ 'type1', 'type2' ] ) + 'backUrl': '=?', // string array ( ex: [ 'type1', 'type2' ] ) + 'save': '&', + 'onUpdate': '&' }, - ], -}); + controller: ['$rootScope', '$scope', '$location', 'FileServices', 'ngAppSettings', + function ($rootScope, $scope, $location, fileService, ngAppSettings) { + var ctrl = this; + ctrl.file = null; + ctrl.translate = $rootScope.translate; + ctrl.settings = $rootScope.globalSettings; + ctrl.timestamp = Math.random(); + ctrl.templates = [ + { type: 'item', name: 'i1', dataType: 7, value: '' }, + { type: 'object', name: 'o1', columns: [{ allowedTypes: ['array', 'object', 'item'], items: [] }] }, + { type: 'array', name: 'a1', columns: [{ allowedTypes: ['object'], items: [] }] } + ]; + ctrl.draft = []; + ctrl.model = {}; + ctrl.dropzones = { + 'root': [] + }; + ctrl.selected = null; + ctrl.selectedModel = {}; + ctrl.strModel = null; + ctrl.init = async function () { + var arr = []; + if (!ctrl.data && ctrl.filename) { + await ctrl.loadFile(); + ctrl.parseObjToList(ctrl.data, arr); + ctrl.dropzones.root = arr; + } else { + ctrl.parseObjToList(ctrl.data, arr); + ctrl.dropzones.root = arr; + } -modules.component("attributeSetValues", { - templateUrl: - "/mix-app/views/app-portal/components/attribute-set-values/attribute-set-values.html?v=2", - bindings: { - header: "=", - data: "=", - canDrag: "=", - attributeSetName: "=?", - attributeSetId: "=?", - queries: "=?", - filterType: "=?", - selectedList: "=", - selectSingle: "=?", - fields: "=?", - onFilterList: "&?", - onApplyList: "&?", - onSendMail: "&?", - onUpdate: "&?", - onDuplicate: "&?", - onDelete: "&?", - }, - controller: [ - "$rootScope", - "$scope", - "RestAttributeFieldPortalService", - "RestAttributeSetDataPortalService", - function ($rootScope, $scope, fieldService, dataService) { - var ctrl = this; - ctrl.actions = ["Delete", "SendMail"]; - ctrl.filterTypes = ["contain", "equal"]; - ctrl.selectedProp = null; + }; + ctrl.loadFile = async function () { + $rootScope.isBusy = true; + $scope.listUrl = '/portal/json-data/list?folder=' + ctrl.folder; + + var response = await fileService.getFile(ctrl.folder, ctrl.filename); + if (response.isSucceed) { + ctrl.file = response.data; + ctrl.data = $.parseJSON(response.data.content); + $rootScope.isBusy = false; + $scope.$apply(); + } + else { + $rootScope.showErrors(response.errors); + $rootScope.isBusy = false; + $scope.$apply(); + } + }; + ctrl.saveFile = async function () { + $rootScope.isBusy = true; + ctrl.model = {}; + ctrl.update(); + if (ctrl.save) { + ctrl.save({ data: ctrl.model }); + } + else { + // ctrl.parseObj(ctrl.dropzones.root, ctrl.model); + ctrl.file.content = JSON.stringify(ctrl.model); + var resp = await fileService.saveFile(ctrl.file); + if (resp && resp.isSucceed) { + $scope.activedFile = resp.data; + $rootScope.showMessage('Update successfully!', 'success'); + $rootScope.isBusy = false; + $scope.$apply(); + } + else { + if (resp) { $rootScope.showErrors(resp.errors); } + $rootScope.isBusy = false; + $scope.$apply(); + } + } + ctrl.select(ctrl.selected); + + }; + ctrl.update = function () { + ctrl.model = {}; + var obj = { + type: 'object', + name: 'data', + columns: [ + { + items: ctrl.dropzones.root + } + ] + }; + ctrl.parseObj(obj, ctrl.model); + ctrl.onUpdate({ data: ctrl.model }); + }; + ctrl.parseObjToList = function (item, items) { + // key: the name of the object key + // index: the ordinal position of the key within the object + Object.keys(item).forEach(function (key, index) { + var obj = {}; + var objType = typeof (item[key]); + switch (objType) { + case 'object': + if (Array.isArray(item[key])) { + obj = angular.copy(ctrl.templates[2]); + obj.name = key; + ctrl.parseObjToList(item[key], obj.columns[0].items); + items.push(obj); + } else { + obj = angular.copy(ctrl.templates[1]); + obj.name = key; + ctrl.parseObjToList(item[key], obj.columns[0].items); + items.push(obj); + } + break; + default: + obj = angular.copy(ctrl.templates[0]); + obj.name = key; + obj.value = item[key]; + items.push(obj); + break; + } + + }); + }; + ctrl.parseObj = function (item, obj, name) { + switch (item.type) { + case 'array': + obj[item.name] = []; + angular.forEach(item.columns[0].items, sub => { + var o = {}; + ctrl.parseObj(sub, o); + obj[item.name].push(o); + }); + break; + case 'object': + angular.forEach(item.columns[0].items, sub => { + if (sub.type == 'object') { + var o = {}; + ctrl.parseObj(sub, o); + obj[item.name] = (o); + } + else { + ctrl.parseObj(sub, obj, item.name); + } + }); + break; + case 'item': + obj[item.name] = item.value; + break; + } + }; + ctrl.select = function (item) { + if (ctrl.selected == item) { + ctrl.parseObj(item, ctrl.selectedModel); + } + else { + ctrl.selected = item; + ctrl.selectedModel = {}; + ctrl.parseObj(item, ctrl.selectedModel); + } + ctrl.timestamp = Math.random(); + }; + ctrl.addField = function (item) { + var field = angular.copy(ctrl.templates[0]); + field.name = 'f' + (item.columns[0].items.length + 1); + item.columns[0].items.push(field); + item.showMenu = false; + }; + ctrl.addObj = function (item) { + var obj = angular.copy(ctrl.templates[1]); + obj.name = 'o' + (item.columns[0].items.length + 1); + item.columns[0].items.push(obj); + item.showMenu = false; + ctrl.update(); + }; + ctrl.addArray = function (item) { + var obj = angular.copy(ctrl.templates[2]); + obj.name = 'a' + (item.columns[0].items.length + 1); + item.columns[0].items.push(obj); + item.showMenu = false; + ctrl.update(); + }; + ctrl.clone = function (item, list) { + var obj = angular.copy(item); + obj.name = item.name + '_copy'; + item.showMenu = false; + obj.showMenu = false; + list.items.push(obj); + ctrl.update(); + }; + + ctrl.remove = function (index, list) { + if (confirm('Remove this')) { + list.items.splice(index, 1); + ctrl.update(); + } + }; + + }] +}); + +modules.component('jumbotrons', { + templateUrl: '/mix-app/views/app-portal/components/jumbotrons/jumbotrons.html', + controller: ['$rootScope', '$scope', '$location', function ($rootScope, $scope, $location) { + var ctrl = this; + ctrl.translate = function (keyword) { + return $rootScope.translate(keyword); + }; + // ctrl.back = function () { + // ctrl.backUrl = ctrl.backUrl || '/admin'; + // $location.path(ctrl.backUrl); + // }; + }], + bindings: { + tagName: '=', + tagType: '=', + } +}); +modules.component("listMixColumn", { + templateUrl: "/mix-app/views/app-portal/components/list-mix-column/view.html", + controller: [ + "$rootScope", + "$scope", + "RestMixDatabaseColumnPortalService", + function ($rootScope, $scope, service) { + var ctrl = this; + ctrl.selectedCol = null; ctrl.settings = $rootScope.globalSettings; ctrl.$onInit = async function () { - if (!ctrl.selectedList) { - ctrl.selectedList = { - action: "Delete", - data: [], - }; + var getDefaultAttr = await service.getDefault(); + if (getDefaultAttr.isSucceed) { + ctrl.defaultAttr = getDefaultAttr.data; + ctrl.defaultAttr.options = []; } - if (!ctrl.fields) { - var getFields = await fieldService.initData( - ctrl.attributeSetName || ctrl.attributeSetId - ); - if (getFields.isSucceed) { - ctrl.fields = getFields.data; - $scope.$apply(); - } + }; + ctrl.addAttr = function () { + if (ctrl.fields) { + var t = angular.copy(ctrl.defaultAttr); + t.priority = ctrl.fields.length + 1; + ctrl.fields.push(t); } }; - ctrl.select = function (item) { - if (item.isSelected) { - if (ctrl.selectSingle == "true") { - ctrl.selectedList.data = []; - ctrl.selectedList.data.push(item); - } else { - var current = $rootScope.findObjectByKey( - ctrl.selectedList, - "id", - item.id - ); - if (!current) { - ctrl.selectedList.data.push(item); + ctrl.removeAttribute = async function (attr, index) { + if (confirm("Remove this field ?")) { + if (attr.id) { + $rootScope.isBusy = true; + var remove = await service.delete([attr.id]); + if (remove.isSucceed) { + ctrl.fields.splice(index, 1); } + $rootScope.isBusy = false; + $scope.$apply(); + } else { + ctrl.fields.splice(index, 1); } - } else { - $rootScope.removeObject(ctrl.selectedList, item.id); } }; - ctrl.selectAll = function (isSelected) { - ctrl.selectedList.data = []; - angular.forEach(ctrl.data, function (e) { - e.isSelected = isSelected; - if (isSelected) { - ctrl.selectedList.data.push(e.id); - } - }); - }; - ctrl.filter = function () { }; - ctrl.sendMail = async function (data) { - ctrl.onSendMail({ data: data }); - }; - ctrl.apply = async function () { - ctrl.onApplyList(); + ctrl.addOption = function (col, index) { + var val = $("#option_" + index).val(); + col.options = col.options || []; + var opt = { + value: val, + dataType: 7, + }; + col.options.push(opt); + $("#option_" + index).val(""); }; + ctrl.generateForm = function () { + var formHtml = document.createElement("module-form"); + formHtml.setAttribute("class", "row"); + angular.forEach(ctrl.viewModel.attributes, function (e, i) { + var el; + var label = document.createElement("label"); + label.setAttribute("class", "form-label"); + label.setAttribute("ng-bind", "{{data.title}}"); - ctrl.duplicate = function (data) { - ctrl.onDuplicate({ data: data }); - }; + switch (e.dataType) { + case "datetime": + el = document.createElement("input"); + el.setAttribute("type", "datetime-local"); + break; - ctrl.update = function (data) { - ctrl.onUpdate({ data: data }); - }; + case "date": + el = document.createElement("input"); + el.setAttribute("type", "date"); + break; - ctrl.delete = function (data) { - ctrl.onDelete({ data: data }); - }; + case "time": + el = document.createElement("input"); + el.setAttribute("type", "time"); + break; - ctrl.filterData = function (item, attributeName) { - return $rootScope.findObjectByKey( - item.data, - "attributeName", - attributeName - ); + case "phonenumber": + el = document.createElement("input"); + el.setAttribute("type", "tel"); + break; + + case "number": + el = document.createElement("input"); + el.setAttribute("type", "number"); + break; + + case "html": + el = document.createElement("trumbowyg"); + el.setAttribute("options", "{}"); + el.setAttribute("type", "number"); + break; + + case "textarea": + el = document.createElement("textarea"); + break; + + default: + el = document.createElement("input"); + el.setAttribute("type", "text"); + formHtml.appendChild(el); + break; + } + el.setAttribute("ng-model", "data.jItem[" + e.name + "].value"); + el.setAttribute("placeholder", "{{$ctrl.title}}"); + formHtml.appendChild(label); + formHtml.appendChild(el); + }); + ctrl.viewModel.formView.content = formHtml.innerHTML; }; - ctrl.dragStart = function (index) { - ctrl.min = ctrl.data[0].priority; - ctrl.dragStartIndex = index; + ctrl.generateName = function (col) { + col.name = $rootScope.generateKeyword(col.title, "_"); }; - ctrl.updateOrders = function (index, items) { - for (var i = 0; i < items.length; i++) { - items[i].priority = ctrl.min + i + 1; + ctrl.removeAttr = function (index) { + if (ctrl.fields) { + ctrl.fields.splice(index, 1); } - items.splice(ctrl.dragStartIndex, 1); - ctrl.updateDataInfos(items); }; - ctrl.updateDataInfos = async function (items) { - angular.forEach(items, async function (e) { - var resp = await dataService.saveFields(e.id, { - priority: e.priority, - }); - if (resp && resp.isSucceed) { - $scope.activedPage = resp.data; - } else { - if (resp) { - $rootScope.showErrors(resp.errors); - } - } + ctrl.updateOrders = function (index) { + if (index > ctrl.dragStartIndex) { + ctrl.fields.splice(ctrl.dragStartIndex, 1); + } else { + ctrl.fields.splice(ctrl.dragStartIndex + 1, 1); + } + angular.forEach(ctrl.fields, function (e, i) { + e.priority = i; }); }; - // ctrl.updateOrders = function (index) { - // if (index > ctrl.dragStartIndex) { - // ctrl.data.splice(ctrl.dragStartIndex, 1); - // } else { - // ctrl.data.splice(ctrl.dragStartIndex + 1, 1); - // } - // // angular.forEach(ctrl.data, async function (e, i) { - // // e.priority = ctrl.min + i; - // // var resp = await dataService.saveFields(e.id, { - // // priority: e.priority, - // // }); - // // if (resp && resp.isSucceed) { - // // $scope.activedPage = resp.data; - // // $scope.$apply(); - // // } else { - // // if (resp) { - // // $rootScope.showErrors(resp.errors); - // // } - // // } - // // }); - // }; - - ctrl.view = function (item) { - var obj = { - fields: ctrl.fields, - item: item, - }; - $rootScope.preview("attribute-set-data", obj, null, "modal-lg"); + ctrl.dragStart = function (index) { + ctrl.dragStartIndex = index; + }; + ctrl.showReferences = function (col) { + ctrl.colRef = col; + $("#modal-navs").modal("show"); + }; + ctrl.referenceCallback = function (selected) { + if (selected && selected.length) { + ctrl.colRef.reference = selected; + ctrl.colRef.referenceId = selected[0].id; + } + $("#modal-navs").modal("hide"); }; }, ], -}); - -modules.component("attributeValueEditor", { - templateUrl: "/mix-app/views/app-portal/components/attribute-value-editor/view.html", bindings: { - attributeValue: "=?", - parentType: "=?", - parentId: "=?", - isShowTitle: "=?", + header: "=", + fields: "=", + removeAttributes: "=", }, +}); + +modules.component('mainSideBar', { + templateUrl: '/mix-app/views/app-portal/components/main-side-bar/main-side-bar.html', + controller: ['$rootScope', '$scope', 'ngAppSettings', 'TranslatorService', 'CommonService', + function ($rootScope, $scope, ngAppSettings, translatorService, commonService) { + var ctrl = this; + ctrl.items = []; + ctrl.init = function () { + var routes = $.parseJSON($('#portal-menus').val()); + ctrl.items = routes.data; + }; + }], + bindings: { + } +}); + +modules.component("mainSideBarDynamic", { + templateUrl: + "/mix-app/views/app-portal/components/main-side-bar-dynamic/main-side-bar-dynamic.html", controller: [ "$rootScope", "$scope", "ngAppSettings", - "$location", - "RestRelatedAttributeSetPortalService", - "RestAttributeSetDataPortalService", + "RoleService", + "TranslatorService", + "AuthService", function ( $rootScope, $scope, ngAppSettings, - $location, - navService, - dataService + roleServices, + translatorService, + authService ) { var ctrl = this; - ctrl.goToPath = $rootScope.goToPath; - ctrl.icons = ngAppSettings.icons; - ctrl.refData = null; - ctrl.defaultDataModel = null; - ctrl.refDataModel = { - id: null, - data: null, - }; - ctrl.refRequest = angular.copy(ngAppSettings.request); - ctrl.refRequest.pageSize = 100; - ctrl.dataTypes = $rootScope.globalSettings.dataTypes; - ctrl.previousId = null; - ctrl.$doCheck = function () { - if (ctrl.attributeValue && ctrl.previousId !== ctrl.attributeValue.id) { - ctrl.previousId = ctrl.attributeValue.id; - ctrl.initData(); - } - }.bind(ctrl); - ctrl.$onInit = function () { - ctrl.initData(); - }; - ctrl.initData = async function () { - setTimeout(() => { - if (!ctrl.attributeValue.id) { - ctrl.initDefaultValue(); - } - switch (ctrl.attributeValue.dataType.toLowerCase()) { - case "datetime": - case "date": - case "time": - if (ctrl.attributeValue.dateTimeValue) { - ctrl.attributeValue.dateObj = new Date( - ctrl.attributeValue.dateTimeValue - ); - $scope.$apply(); - } - break; - case "reference": // reference - if (ctrl.attributeValue.field.referenceId && ctrl.parentId) { - ctrl.attributeValue.integerValue = - ctrl.attributeValue.field.referenceId; - // navService.getSingle(["default"]).then((resp) => { - // ctrl.defaultDataModel = resp; - // ctrl.defaultDataModel.attributeSetId = - // ctrl.attributeValue.field.referenceId; - // ctrl.refDataModel = angular.copy(ctrl.defaultDataModel); - // }); - // ctrl.loadRefData(); - } - break; - default: - if ( - ctrl.attributeValue.field && - ctrl.attributeValue.field.isEncrypt && - ctrl.attributeValue.encryptValue - ) { - var encryptedData = { - key: ctrl.attributeValue.encryptKey, - data: ctrl.attributeValue.encryptValue, - }; - ctrl.attributeValue.stringValue = $rootScope.decrypt( - encryptedData - ); - } - if ( - ctrl.attributeValue.field && - !ctrl.attributeValue.stringValue - ) { - ctrl.attributeValue.stringValue = - ctrl.attributeValue.field.defaultValue; - $scope.$apply(); - } - break; + ctrl.init = function () { + roleServices.getPermissions().then(function (response) { + if (response && response.isSucceed) { + ctrl.isInit = true; + ctrl.roles = response.data; + if (ctrl.roles) { + ctrl.role = ctrl.roles[0]; + } + $rootScope.isBusy = false; + $scope.$apply(); } - }, 200); + }); }; - ctrl.initDefaultValue = async function () { - switch (ctrl.attributeValue.dataType) { - case "datetime": - case "date": - case "time": - if (ctrl.attributeValue.field.defaultValue) { - ctrl.attributeValue.dateObj = new Date( - ctrl.attributeValue.field.defaultValue - ); - ctrl.attributeValue.stringValue = - ctrl.attributeValue.field.defaultValue; - } - break; - case "double": - if (ctrl.attributeValue.field.defaultValue) { - ctrl.attributeValue.doubleValue = parseFloat( - ctrl.attributeValue.field.defaultValue - ); - ctrl.attributeValue.stringValue = - ctrl.attributeValue.field.defaultValue; - } - break; - case "boolean": - if (ctrl.attributeValue.field.defaultValue) { - ctrl.attributeValue.booleanValue = - ctrl.attributeValue.field.defaultValue == "true"; - ctrl.attributeValue.stringValue = - ctrl.attributeValue.field.defaultValue; - } - break; + }, + ], + bindings: { + roles: "=", + activedRole: "=", + translate: "&", + }, +}); - default: - if (ctrl.attributeValue.field.defaultValue) { - ctrl.attributeValue.stringValue = - ctrl.attributeValue.field.defaultValue; - } - break; - } - }; - ctrl.updateStringValue = async function (dataType) { - switch (dataType.toLowerCase()) { - case "datetime": - case "date": - case "time": - if (ctrl.attributeValue.dateObj) { - ctrl.attributeValue.dateTimeValue = ctrl.attributeValue.dateObj.toISOString(); - ctrl.attributeValue.stringValue = - ctrl.attributeValue.dateTimeValue; - } - break; - case "double": - if (ctrl.attributeValue.doubleValue) { - ctrl.attributeValue.stringValue = ctrl.attributeValue.doubleValue.toString(); - } - break; - case "boolean": - if (ctrl.attributeValue.booleanValue != null) { - ctrl.attributeValue.stringValue = ctrl.attributeValue.booleanValue.toString(); - } - break; - default: - break; +modules.component('mainSideBarItem', { + templateUrl: '/mix-app/views/app-portal/components/main-side-bar-item/main-side-bar-item.html', + controller: ['$rootScope', function ($rootScope) { + var ctrl = this; + ctrl.translate = $rootScope.translate; + ctrl.addClass = function (obj) { + obj.currentTarget.classList.add('btn-group-lg'); + //alert(obj); } - }; - - ctrl.updateRefData = function (nav) { - ctrl.goToPath(`/portal/attribute-set-data/details?dataId=${nav.data.id} - &attributeSetId=${nav.data.attributeSetId} - &parentId=${ctrl.parentId} - &parentType=${ctrl.parentType}`); - // ctrl.refDataModel = nav; - // var e = $(".pane-form-" + ctrl.attributeValue.field.referenceId)[0]; - // angular.element(e).triggerHandler('click'); - // $location.url('/portal/attribute-set-data/details?dataId='+ item.id +'&attributeSetId=' + item.attributeSetId+'&parentType=' + item.parentType+'&parentId=' + item.parentId); - }; - - ctrl.removeRefData = async function (nav) { - $rootScope.showConfirm( - ctrl, - "removeRefDataConfirmed", - [nav], - null, - "Remove", - "Deleted data will not able to recover, are you sure you want to delete this item?" - ); - }; - ctrl.removeRefDataConfirmed = async function (nav) { - $rootScope.isBusy = true; - var result = await navService.delete([ - nav.parentId, - nav.parentType, - nav.id, - ]); - if (result.isSucceed) { - $rootScope.removeObjectByKey(ctrl.refData, "id", nav.id); - $rootScope.isBusy = false; - $scope.$apply(); - } else { - $rootScope.showMessage("failed"); - $rootScope.isBusy = false; - $scope.$apply(); + ctrl.removeClass = function (obj) { + obj.currentTarget.classList.remove('btn-group-lg'); + //alert(obj); } - }; - }, - ], + }], + bindings: { + item: '=', + } }); -modules.component('confirm', { - templateUrl: '/mix-app/views/app-portal/components/confirm/confirm.html', - controller: ['$rootScope', '$scope', 'ngAppSettings', function ($rootScope, $scope) { +modules.component('mainSideBarItemDynamic', { + templateUrl: '/mix-app/views/app-portal/components/main-side-bar-item-dynamic/main-side-bar-item-dynamic.html', + controller: ['$rootScope', function ($rootScope) { var ctrl = this; - ctrl.executeFunctionByName = async function (functionName, args, context) { - var result = await $rootScope.executeFunctionByName(functionName, args, context); - if (result) { - $scope.$apply(); - } - } + ctrl.translate = $rootScope.translate; }], bindings: { - message: '=' + iconSize: '=', + linkStyle: '=', + itemStyle: '=', + item: '=' } }); -modules.component("customImage", { - templateUrl: "/mix-app/views/app-portal/components/custom-image/custom-image.html", +modules.component("mediaFileUpload", { + templateUrl: "/mix-app/views/app-portal/components/media-file-upload/view.html", bindings: { header: "=?", description: "=?", src: "=", srcUrl: "=", - w: "=?", - h: "=?", - rto: "=?", - postedFile: "=?", + mediaFile: "=", + formFile: "=", type: "=?", folder: "=?", auto: "=", + acceptTypes: "=?", onDelete: "&?", onUpdate: "&?", }, controller: [ "$rootScope", "$scope", - "$uibModal", "ngAppSettings", "MediaService", - function ($rootScope, $scope, $uibModal, ngAppSettings, mediaService) { + function ($rootScope, $scope, ngAppSettings, mediaService) { var ctrl = this; ctrl.isAdmin = $rootScope.isAdmin; var image_placeholder = "/mix-app/assets/img/image_placeholder.jpg"; ctrl.isImage = false; - ctrl.croppedStream = null; ctrl.mediaNavs = []; - ctrl.options = {}; ctrl.$onInit = function () { ctrl.srcUrl = ctrl.srcUrl || image_placeholder; ctrl.isImage = ctrl.srcUrl .toLowerCase() .match(/([/|.|\w|\s|-])*\.(?:jpg|jpeg|gif|png|svg)/g); - ctrl.id = Math.floor(Math.random() * 100); - }; - ctrl.calImageSize = function () { - if (ctrl.w) { - ctrl.h = ctrl.h || ctrl.w / ctrl.rto; - ctrl.rto = ctrl.rto || ctrl.w / ctrl.h; - } - if (ctrl.h) { - ctrl.w = ctrl.w || ctrl.h * ctrl.rto; - ctrl.rto = ctrl.rto || ctrl.w / ctrl.h; - } - ctrl.maxHeight = ctrl.maxHeight || "200px"; - ctrl.options = { - boundary: { width: 150 * ctrl.rto, height: 150 }, - render: { width: 1000 * ctrl.rto, height: 1000 }, - output: { width: ctrl.w, height: ctrl.h }, - }; - }; - ctrl.openCroppie = function (file) { - const w = parseInt(ctrl.w); - const h = parseInt(ctrl.h); - const rto = ctrl.w / ctrl.h; - - var modalInstance = $uibModal.open({ - animation: true, - windowClass: "show", - templateUrl: "/mix-app/views/app-shared/components/modal-croppie/croppie.html", - controller: "ModalCroppieController", - controllerAs: "$ctrl", - size: "lg", - resolve: { - mediaService: mediaService, - file: function () { - return file; - }, - w, - h, - rto, - }, - }); - - modalInstance.result.then( - function (result) { - ctrl.srcUrl = result.fullPath; - }, - function () { } - ); - }; - - ctrl.mediaFile = { - file: null, - fullPath: "", - folder: ctrl.folder, - title: ctrl.title, - description: ctrl.description, + ctrl.id = Math.floor(Math.random() * 100); }; - ctrl.media = {}; ctrl.$doCheck = function () { if (ctrl.src !== ctrl.srcUrl && ctrl.srcUrl != image_placeholder) { ctrl.src = ctrl.srcUrl; @@ -8613,12 +8313,16 @@ modules.component("customImage", { ctrl.mediaFile.title = ctrl.title ? ctrl.title : ""; ctrl.mediaFile.description = ctrl.description ? ctrl.description : ""; ctrl.mediaFile.file = file; - if (ctrl.w || ctrl.h || ctrl.rto) { - ctrl.openCroppie(file); + ctrl.formFile = file; + if (ctrl.auto == "true") { + ctrl.uploadFile(file); } else { - if (ctrl.auto == "true") { - ctrl.uploadFile(file); - } else { + ctrl.srcUrl = null; + ctrl.src = null; + ctrl.isImage = file.name.match( + /([/|.|\w|\s|-])*\.(?:jpg|jpeg|gif|png|svg)/g + ); + if (ctrl.isImage) { ctrl.getBase64(file); } } @@ -8628,42 +8332,19 @@ modules.component("customImage", { ctrl.uploadFile = async function (file) { if (file !== null) { $rootScope.isBusy = true; - var reader = new FileReader(); - reader.readAsDataURL(file); - reader.onload = async function () { - var getMedia = await mediaService.getSingle(["portal"]); - if (getMedia.isSucceed) { - ctrl.mediaFile.fileName = file.name.substring( - 0, - file.name.lastIndexOf(".") - ); - ctrl.mediaFile.extension = file.name.substring( - file.name.lastIndexOf(".") - ); - ctrl.mediaFile.fileStream = reader.result; - var media = getMedia.data; - media.title = ctrl.title; - media.description = ctrl.description; - media.mediaFile = ctrl.mediaFile; - var resp = await mediaService.save(media); - if (resp && resp.isSucceed) { - ctrl.src = resp.data.fullPath; - ctrl.srcUrl = resp.data.fullPath; - ctrl.isImage = ctrl.srcUrl - .toLowerCase() - .match(/([/|.|\w|\s|-])*\.(?:jpg|jpeg|gif|png|svg)/g); - $rootScope.isBusy = false; - $scope.$apply(); - } else { - if (resp) { - $rootScope.showErrors(resp.errors); - } - $rootScope.isBusy = false; - $scope.$apply(); - } + if (ctrl.mediaFile) { + var response = await mediaService.uploadMedia(ctrl.mediaFile, file); + if (response.isSucceed) { + ctrl.media = response.data; + $rootScope.isBusy = false; + ctrl.srcUrl = response.data.filePath; + $scope.$apply(); + } else { + $rootScope.showErrors(response.errors); + $rootScope.isBusy = false; + $scope.$apply(); } - }; - reader.onerror = function (error) { }; + } } else { return null; } @@ -8674,17 +8355,15 @@ modules.component("customImage", { var reader = new FileReader(); reader.readAsDataURL(file); reader.onload = function () { - var index = reader.result.indexOf(",") + 1; - var base64 = reader.result.substring(index); - if (ctrl.postedFile) { - ctrl.postedFile.fileName = file.name.substring( + if (ctrl.mediaFile) { + ctrl.mediaFile.fileName = file.name.substring( 0, file.name.lastIndexOf(".") ); - ctrl.postedFile.extension = file.name.substring( + ctrl.mediaFile.extension = file.name.substring( file.name.lastIndexOf(".") ); - ctrl.postedFile.fileStream = reader.result; + ctrl.mediaFile.fileStream = reader.result; } ctrl.srcUrl = reader.result; ctrl.isImage = @@ -8709,100 +8388,52 @@ modules.component("customImage", { }); -modules.component('filterList', { - templateUrl: '/mix-app/views/app-portal/components/filter-list/filter-list.html', - controller: ['$scope', '$rootScope', 'ngAppSettings', function ($scope, $rootScope, ngAppSettings) { - var ctrl = this; - ctrl.dateRange = { - fromDate: null, - toDate: null - }; - ctrl.init = function () { - if (!ctrl.orders) { - ctrl.orders = ngAppSettings.orders; - } - ctrl.directions = ngAppSettings.directions; - ctrl.pageSizes = ngAppSettings.pageSizes; - ctrl.statuses = []; - var statuses = ngAppSettings.contentStatuses; - if (ctrl.request && ctrl.request.contentStatuses) { - statuses = ctrl.request.contentStatuses; - } - angular.forEach(statuses, function (val, i) { - ctrl.statuses.push({ - value: val, - title: val - }); - }); - - }; - ctrl.updateDate = function () { - if (Date.parse(ctrl.dateRange.fromDate)) { - ctrl.request.fromDate = new Date(ctrl.dateRange.fromDate).toISOString(); - } - else { - $scope.request.fromDate = null; - } - if (Date.parse(ctrl.dateRange.toDate)) { - ctrl.request.toDate = new Date(ctrl.dateRange.toDate).toISOString(); - } - else { - ctrl.request.toDate = null; +modules.component('mediaUpload', { + templateUrl: '/mix-app/views/app-portal/components/media-upload/media-upload.html', + controller: ['$scope', '$rootScope', 'MediaService', 'CommonService', + function ($scope, $rootScope, service, commonService) { + var ctrl = this; + ctrl.viewModel = { + title: '', + description: '', + status: 'Published', + mediaFile: { + file: null, + fullPath: '', + folderName: 'Media', + fileFolder: '', + fileName: '', + extension: '', + content: '', + fileStream: '' + } + }; + ctrl.save = async function (data) { + $rootScope.isBusy = true; + var resp = await service.save(data); + if (resp && resp.isSucceed) { + $scope.viewModel = resp.data; + $rootScope.showMessage('success', 'success'); + $rootScope.isBusy = false; + if (ctrl.onUpdate) { + ctrl.onUpdate(); + } + $scope.$apply(); + } else { + if (resp) { + $rootScope.showErrors(resp.errors); + } + $rootScope.isBusy = false; + $scope.$apply(); + } } - ctrl.callback({ pageIndex: 0 }); - }; - }], + }], bindings: { - request: '=', - orders: '=?', - createUrl: '=', - createText: '=', - callback: '&' - } -}); -modules.component('funding', { - templateUrl: '/mix-app/views/app-portal/components/funding/view.html', - controller: [ - '$rootScope', '$http', - function ($rootScope, $http) { - var ctrl = this; - ctrl.items = [ - { - "title": "opencollective.com/mixcore", - "href": "https://opencollective.com/mixcore", - "logo": "https://github.githubassets.com/images/modules/site/icons/funding_platforms/open_collective.svg" - }, - { - "title": "funding.communitybridge.org/projects/mixcore", - "href": "https://crowdfunding.lfx.linuxfoundation.org/projects/mixcore", - "logo": "https://github.githubassets.com/images/modules/site/icons/funding_platforms/community_bridge.svg" - }, - { - "title": "patreon.com/mixcore", - "href": "https://www.patreon.com/mixcore/creators", - "logo": "https://github.githubassets.com/images/modules/site/icons/funding_platforms/patreon.svg" - }, - { - "title": "paypalme/mixcore", - "href": "https://www.paypal.me/mixcore", - "logo": "/mix-app/assets/img/svg/heart.svg" - }, - { - "title": "buymeacoffee.com/mixcore", - "href": "https://www.buymeacoffee.com/mixcore", - "logo": "/mix-app/assets/img/svg/heart.svg" - }, - ]; - ctrl.init = function () { - }; - + 'onUpdate': '&' } - ], - bindings: { - } }); -modules.component('githubContributers', { - templateUrl: '/mix-app/views/app-portal/components/github-contributers/view.html', +modules.component('mediumNews', { + templateUrl: '/mix-app/views/app-portal/components/medium-news/view.html', controller: [ '$rootScope', '$http', function ($rootScope, $http) { @@ -8811,17 +8442,18 @@ modules.component('githubContributers', { ctrl.init = function () { var req = { method: 'GET', - url: 'https://api.github.com/repos/mixcore/mix.core/contributors' + url: 'https://api.rss2json.com/v1/api.json?rss_url=https://medium.com/feed/mixcore?t=' + Math.floor(Date.now() / 1000) }; - ctrl.getGithubApiResult(req); + ctrl.getMediumApiResult(req); }; - ctrl.getGithubApiResult = async function (req) { + ctrl.getMediumApiResult = async function (req) { return $http(req).then(function (resp) { if (resp.status == '200') { - ctrl.items = resp.data; + ctrl.items = resp.data.items; } else { + console.log(resp); } }, @@ -8834,689 +8466,1369 @@ modules.component('githubContributers', { bindings: { } }); -modules.component('githubReleases', { - templateUrl: '/mix-app/views/app-portal/components/github-releases/view.html', +modules.component("mixDatabaseColumn", { + templateUrl: + "/mix-app/views/app-portal/components/mix-database-column/view.html", + bindings: { + column: "=" + }, controller: [ - '$rootScope', '$http', - function ($rootScope, $http) { + "$rootScope", + "$scope", + "RestMixDatabaseColumnPortalService", + function ($rootScope, $scope, fieldService) { var ctrl = this; - ctrl.items = []; - ctrl.init = function () { - var req = { - method: 'GET', - url: 'https://api.github.com/repos/mixcore/mix.core/releases' - }; - ctrl.getGithubApiResult(req); + ctrl.value = {}; + ctrl.field = { + dataType: "Text", + mixDatabaseName: "sys_additional_field", + mixDatabaseId: 6, }; + ctrl.selectedCol = null; + ctrl.settings = $rootScope.globalSettings; + ctrl.$onInit = async function () {}; + ctrl.addAttr = async function () { + if (ctrl.field.name) { + var current = $rootScope.findObjectByKey( + ctrl.additionalData.fields, + "name", + ctrl.field.name + ); + if (current) { + $rootScope.showErrors(["Field " + ctrl.field.name + " existed!"]); + } else { + ctrl.field.priority = ctrl.additionalData.fields.length + 1; + $rootScope.isBusy = true; + var saveField = await fieldService.create(ctrl.field); + $rootScope.isBusy = false; + if (saveField.isSucceed) { + ctrl.additionalData.fields.push(saveField.data); - ctrl.getGithubApiResult = async function (req) { - return $http(req).then(function (resp) { - if (resp.status == '200') { - ctrl.items = resp.data; + //reset field option + ctrl.field.title = ""; + ctrl.field.name = ""; + ctrl.field.dataType = "Text"; + $scope.$apply(); + } } - else { + } else { + $rootScope.showErrors(["Please add column Name"]); + } + }; + + ctrl.generateName = function (col) { + col.name = $rootScope.generateKeyword(col.title, "_"); + }; + ctrl.showReferences = function (col) { + ctrl.colRef = col; + $("#modal-navs").modal("show"); + }; + ctrl.referenceCallback = function (selected) { + if (selected && selected.length) { + ctrl.colRef.reference = selected; + ctrl.colRef.referenceId = selected[0].id; + } + $("#modal-navs").modal("hide"); + }; + ctrl.updateOrders = function (index) { + if (index > ctrl.dragStartIndex) { + ctrl.fields.splice(ctrl.dragStartIndex, 1); + } else { + ctrl.fields.splice(ctrl.dragStartIndex + 1, 1); + } + angular.forEach(ctrl.fields, function (e, i) { + e.priority = i; + }); + }; + + ctrl.dragStart = function (index) { + ctrl.dragStartIndex = index; + }; + + ctrl.removeAttribute = function (val, index) { + $rootScope.showConfirm( + ctrl, + "removeAttributeConfirmed", + [val, index], + null, + "Remove Field", + "Deleted data will not able to recover, are you sure you want to delete this item?" + ); + }; + ctrl.removeAttributeConfirmed = async function (val, index) { + if (val.id) { + $rootScope.isBusy = true; + var result = await fieldService.delete([val.id]); + if (result.isSucceed) { + ctrl.additionalData.fields.splice(index, 1); + $rootScope.isBusy = false; + $scope.$apply(); + } else { + $rootScope.showErrors(result.errors); + $rootScope.isBusy = false; + $scope.$apply(); } - }, - function (error) { - return { isSucceed: false, errors: [error.statusText || error.status] }; - }); + } else { + ctrl.additionalData.fields.splice(index, 1); + } }; - } + }, ], - bindings: { - } }); -modules.component("googleAnalytic", { - templateUrl: "/mix-app/views/app-portal/components/google-analytic/view.html", + +modules.component("mixDatabaseDataFilter", { + templateUrl: + "/mix-app/views/app-portal/components/mix-database-data-filter/view.html", bindings: { + query: "=", + mixDatabaseName: "=?", + mixDatabaseId: "=?", + selectedList: "=", + initData: "=?", + fields: "=?", + selected: "=", + callback: "&?", + save: "&?", }, controller: [ "$rootScope", - "CommonService", - function ($rootScope, commonService) { - var ctrl = this; - ctrl.init = function () { - if (gapi) { - gapi.analytics.ready(function () { - if ($rootScope.settings.data.Google_Client_Id) { - /** - * Authorize the user immediately if the user has already granted access. - * If no access has been created, render an authorize button inside the - * element with the ID "embed-api-auth-container". - */ - gapi.analytics.auth.authorize({ - container: "embed-api-auth-container", - //REPLACE WITH YOUR CLIENT ID - clientid: $rootScope.settings.data.Google_Client_Id, - }); - - /** - * Create a ViewSelector for the first view to be rendered inside of an - * element with the id "view-selector-1-container". - */ - var viewSelector1 = new gapi.analytics.ViewSelector({ - container: "view-selector-1-container", - }); - - /** - * Create a ViewSelector for the second view to be rendered inside of an - * element with the id "view-selector-2-container". - */ - var viewSelector2 = new gapi.analytics.ViewSelector({ - container: "view-selector-2-container", - }); - - /** - * Create a new ActiveUsers instance to be rendered inside of an - * element with the id "active-users-container" and poll for changes every - * five seconds. - */ - var activeUsers = new gapi.analytics.ext.ActiveUsers({ - container: "active-users-container", - pollingInterval: 5, - }); - /** - * Add CSS animation to visually show the when users come and go. - */ - activeUsers.once("success", function () { - var element = this.container.firstChild; - var timeout; - - this.on("change", function (data) { - var element = this.container.firstChild; - var animationClass = - data.delta > 0 ? "is-increasing" : "is-decreasing"; - element.className += " " + animationClass; - - clearTimeout(timeout); - timeout = setTimeout(function () { - element.className = element.className.replace( - / is-(increasing|decreasing)/g, - "" - ); - }, 3000); - }); - }); - - /** - * Create a ViewSelector for the second view to be rendered inside of an - * element with the id "view-selector-2-container". - */ - var viewSelector2 = new gapi.analytics.ViewSelector({ - container: "view-selector-2-container", - }); - - // Render both view selectors to the page. - // viewSelector1.execute(); - // viewSelector2.execute(); - - /** - * Create the first DataChart for top countries over the past 30 days. - * It will be rendered inside an element with the id "chart-1-container". - */ - var dataChart1 = new gapi.analytics.googleCharts.DataChart({ - query: { - // ids: $rootScope.settings.data.Google_Analytic_Ids, - metrics: "ga:sessions", - dimensions: "ga:date", - "start-date": "30daysAgo", - "end-date": "yesterday", - }, - chart: { - container: "chart-1-container", - type: "LINE", - options: { - width: "95%", - legendTextStyle: { color: "#333" }, - titleTextStyle: { color: "#333" }, - backgroundColor: { fill: "transparent" }, - hAxis: { - textStyle: { color: "#333" }, - }, - vAxis: { - textStyle: { color: "#333" }, - }, - series: { - 0: { - color: - $rootScope.globalSettings.portalThemeSettings - .primaryColor, - }, - 1: { color: "#e7711b" }, - 2: { color: "#f1ca3a" }, - 3: { color: "#6f9654" }, - 4: { color: "#1c91c0" }, - 5: { color: "#43459d" }, - }, - }, - }, - }); - - /** - * Create the second DataChart for top countries over the past 30 days. - * It will be rendered inside an element with the id "chart-2-container". - */ - var dataChart2 = new gapi.analytics.googleCharts.DataChart({ - query: { - // ids: $rootScope.settings.data.Google_Analytic_Ids, - metrics: "ga:sessions", - dimensions: "ga:country", - "start-date": "90daysAgo", - "end-date": "yesterday", - "max-results": 6, - sort: "-ga:sessions", - }, - chart: { - container: "chart-2-container", - type: "GEO", - options: { - width: "95%", - pieHole: 4 / 9, - }, - }, - }); - - dataChart1 - .set({ - query: { ids: $rootScope.settings.data.Google_Analytic_Ids }, - }) - .execute(); - dataChart2 - .set({ - query: { ids: $rootScope.settings.data.Google_Analytic_Ids }, - }) - .execute(); - activeUsers - .set({ ids: $rootScope.settings.data.Google_Analytic_Ids }) - .execute(); - - // /** - // * Update the first dataChart when the first view selecter is changed. - // */ - // viewSelector1.on('change', function (ids) { - // dataChart1.set({ query: { ids: ids } }).execute(); - // // Start tracking active users for this view. - // activeUsers.set({ ids: ids }).execute(); - // }); + "$scope", + "ngAppSettings", + "RestMixDatabaseDataPortalService", + function ($rootScope, $scope, ngAppSettings, dataService) { + var ctrl = this; + ctrl.request = angular.copy(ngAppSettings.request); + ctrl.types = ["Page", "Post"]; + ctrl.type = "Page"; + ctrl.navs = []; + ctrl.data = { items: [] }; + ctrl.goToPath = $rootScope.goToPath; + ctrl.$onInit = function () { + if (ctrl.initData) { + ctrl.data = ctrl.initData; + } else { + ctrl.loadData(); + } + }; + ctrl.loadData = async function (pageIndex) { + ctrl.isBusy = true; - // /** - // * Update the first dataChart when the first view selecter is changed. - // */ - // viewSelector2.on('change', function (ids) { - // dataChart2.set({ query: { ids: ids } }).execute(); - // // Start tracking active users for this view. - // activeUsers.set({ ids: ids }).execute(); - // }); + // ctrl.request.query = ctrl.query + ctrl.srcId; + ctrl.navs = []; + if (pageIndex !== undefined) { + ctrl.request.pageIndex = pageIndex; + } + if (ctrl.request.fromDate !== null) { + var df = new Date(ctrl.request.fromDate); + ctrl.request.fromDate = df.toISOString(); + } + if (ctrl.request.toDate !== null) { + var dt = new Date(ctrl.request.toDate); + ctrl.request.toDate = dt.toISOString(); + } + if (ctrl.mixDatabaseId) { + ctrl.request.mixDatabaseId = ctrl.mixDatabaseId; + } + ctrl.request.mixDatabaseName = ctrl.mixDatabaseName; + if (ctrl.filterType) { + ctrl.request.filterType = ctrl.filterType; + } - // /** - // * Update the second dataChart when the second view selecter is changed. - // */ - // viewSelector2.on('change', function (ids) { - // dataChart2.set({ query: { ids: ids } }).execute(); - // }); - } + var response = await dataService.getList(ctrl.request); + if (response.isSucceed) { + ctrl.data = response.data; + ctrl.isBusy = false; + $scope.$apply(); + } else { + $rootScope.showErrors(response.errors); + ctrl.isBusy = false; + $scope.$apply(); + } + }; + ctrl.edit = function (nav) { + switch (ctrl.type) { + case "Page": + ctrl.goToPath(`/portal/page/details/${nav.id}`); + break; + case "Post": + ctrl.goToPath(`/portal/post/details/${nav.id}`); + break; + case "Module": + ctrl.goToPath(`/portal/module/details/${nav.id}`); + break; + } + }; + ctrl.onClose = function () { + ctrl.callback(); + }; + ctrl.select = function (nav) { + var current = $rootScope.findObjectByKey(ctrl.data.items, "id", nav.id); + if (!nav.isActive && ctrl.callback) { + ctrl.callback({ nav: nav }); + } + if (ctrl.isMultiple) { + current.isActive = !current.isActive; + } else { + if (!nav.isActive) { + angular.forEach(ctrl.data.items, (element) => { + element.isActive = false; + }); + } + current.isActive = !nav.isActive; + } + }; + ctrl.saveSelected = function () { + ctrl.selected = $rootScope.filterArray( + ctrl.data, + ["isActived"], + [true] + ); + setTimeout(() => { + ctrl.save().then(() => { + ctrl.loadPosts(); }); + }, 500); + }; + ctrl.limString = function (str, max) { + if (str) { + return str.length > max ? str.substring(0, max) + " ..." : str; } }; }, - ] + ], }); -(function (angular) { - app.component("headerNav", { - templateUrl: "/mix-app/views/app-portal/components/header-nav/headerNav.html", - controller: [ - "$rootScope", - "$location", - "CommonService", - "AuthService", - "TranslatorService", - "GlobalSettingsService", - function ( - $rootScope, - $location, - commonService, - authService, - translatorService, - globalSettingsService - ) { - var ctrl = this; - ctrl.globalSettings = $rootScope.globalSettings; - if (authService.authentication) { - ctrl.avatar = authService.authentication.avatar; - } - this.$onInit = function () { - ctrl.isAdmin = $rootScope.isAdmin; - ctrl.settings = $rootScope.settings; - ctrl.settings.cultures = $rootScope.globalSettings.cultures; - }; - ctrl.translate = $rootScope.translate; - ctrl.getConfiguration = function (keyword, isWrap, defaultText) { - return $rootScope.getConfiguration(keyword, isWrap, defaultText); - }; - ctrl.changeLang = function (lang, langIcon) { - ctrl.settings.lang = lang; - ctrl.settings.langIcon = langIcon; - commonService.fillAllSettings(lang).then(function () { - window.top.location = location.href; - }); - }; - ctrl.logOut = function () { - $rootScope.logOut(); - window.top.location = "/security/login"; - }; - ctrl.addPermission = function () { - $("#dlg-permission").modal("show"); - }; - ctrl.addBookmark = function () { - $("#dlg-bookmark").modal("show"); - }; - ctrl.toggleSidebar = function () { - $(".main-sidebar").toggle(); - $(".sub-sidebar").toggle(); - // $('.navbar-brand').toggle(); - }; - ctrl.showHelper = function (url) { - $rootScope.helperUrl = url; - $("#dev-helper-modal").modal("show"); - }; - ctrl.generateSitemap = async function () { - $rootScope.isBusy = true; - var resp = await commonService.genrateSitemap(); - if (resp) { - window.top.location.href = - "/portal/file/details?folder=" + - resp.fileFolder + - "&filename=" + - resp.fileName + - resp.extension; - } else { - $rootScope.isBusy = false; - $rootScope.showErrors(["Server error"]); +modules.component("mixDatabaseDataValueEditor", { + templateUrl: + "/mix-app/views/app-portal/components/mix-database-data-value-editor/view.html", + bindings: { + mixDatabaseDataValue: "=?", + parentType: "=?", + parentId: "=?", + isShowTitle: "=?", + }, + controller: [ + "$rootScope", + "$scope", + "ngAppSettings", + "$location", + "RestRelatedMixDatabasePortalService", + "RestMixDatabaseDataPortalService", + function ( + $rootScope, + $scope, + ngAppSettings, + $location, + navService, + dataService + ) { + var ctrl = this; + ctrl.goToPath = $rootScope.goToPath; + ctrl.icons = ngAppSettings.icons; + ctrl.refData = null; + ctrl.defaultDataModel = null; + ctrl.refDataModel = { + id: null, + data: null, + }; + ctrl.refRequest = angular.copy(ngAppSettings.request); + ctrl.refRequest.pageSize = 100; + ctrl.dataTypes = $rootScope.globalSettings.dataTypes; + ctrl.previousId = null; + ctrl.$doCheck = function () { + if (ctrl.mixDatabaseDataValue && ctrl.previousId !== ctrl.mixDatabaseDataValue.id) { + ctrl.previousId = ctrl.mixDatabaseDataValue.id; + ctrl.initData(); + } + }.bind(ctrl); + ctrl.$onInit = function () { + ctrl.initData(); + }; + ctrl.initData = async function () { + setTimeout(() => { + if (!ctrl.mixDatabaseDataValue.id) { + ctrl.initDefaultValue(); } - }; - }, - ], - bindings: { - breadCrumbs: "=", - settings: "=", - }, - }); -})(window.angular); - + switch (ctrl.mixDatabaseDataValue.dataType.toLowerCase()) { + case "datetime": + case "date": + case "time": + if (ctrl.mixDatabaseDataValue.dateTimeValue) { + ctrl.mixDatabaseDataValue.dateObj = new Date( + ctrl.mixDatabaseDataValue.dateTimeValue + ); + $scope.$apply(); + } + break; + case "reference": // reference + if (ctrl.mixDatabaseDataValue.field.referenceId && ctrl.parentId) { + ctrl.mixDatabaseDataValue.integerValue = + ctrl.mixDatabaseDataValue.field.referenceId; + // navService.getSingle(["default"]).then((resp) => { + // ctrl.defaultDataModel = resp; + // ctrl.defaultDataModel.mixDatabaseId = + // ctrl.mixDatabaseDataValue.field.referenceId; + // ctrl.refDataModel = angular.copy(ctrl.defaultDataModel); + // }); + // ctrl.loadRefData(); + } + break; + default: + if ( + ctrl.mixDatabaseDataValue.field && + ctrl.mixDatabaseDataValue.field.isEncrypt && + ctrl.mixDatabaseDataValue.encryptValue + ) { + var encryptedData = { + key: ctrl.mixDatabaseDataValue.encryptKey, + data: ctrl.mixDatabaseDataValue.encryptValue, + }; + ctrl.mixDatabaseDataValue.stringValue = $rootScope.decrypt( + encryptedData + ); + } + if ( + ctrl.mixDatabaseDataValue.field && + !ctrl.mixDatabaseDataValue.stringValue + ) { + ctrl.mixDatabaseDataValue.stringValue = + ctrl.mixDatabaseDataValue.field.defaultValue; + $scope.$apply(); + } + break; + } + }, 200); + }; + ctrl.initDefaultValue = async function () { + switch (ctrl.mixDatabaseDataValue.dataType) { + case "datetime": + case "date": + case "time": + if (ctrl.mixDatabaseDataValue.field.defaultValue) { + ctrl.mixDatabaseDataValue.dateObj = new Date( + ctrl.mixDatabaseDataValue.field.defaultValue + ); + ctrl.mixDatabaseDataValue.stringValue = + ctrl.mixDatabaseDataValue.field.defaultValue; + } + break; + case "double": + if (ctrl.mixDatabaseDataValue.field.defaultValue) { + ctrl.mixDatabaseDataValue.doubleValue = parseFloat( + ctrl.mixDatabaseDataValue.field.defaultValue + ); + ctrl.mixDatabaseDataValue.stringValue = + ctrl.mixDatabaseDataValue.field.defaultValue; + } + break; + case "boolean": + if (ctrl.mixDatabaseDataValue.field.defaultValue) { + ctrl.mixDatabaseDataValue.booleanValue = + ctrl.mixDatabaseDataValue.field.defaultValue == "true"; + ctrl.mixDatabaseDataValue.stringValue = + ctrl.mixDatabaseDataValue.field.defaultValue; + } + break; -modules.component('hubMessages', { - templateUrl: '/mix-app/views/app-portal/components/hub-messages/hub-messages.html', - controller: 'HubMessagesController', - bindings: { + default: + if (ctrl.mixDatabaseDataValue.field.defaultValue) { + ctrl.mixDatabaseDataValue.stringValue = + ctrl.mixDatabaseDataValue.field.defaultValue; + } + break; + } + }; + ctrl.updateStringValue = async function (dataType) { + switch (dataType.toLowerCase()) { + case "datetime": + case "date": + case "time": + if (ctrl.mixDatabaseDataValue.dateObj) { + ctrl.mixDatabaseDataValue.dateTimeValue = ctrl.mixDatabaseDataValue.dateObj.toISOString(); + ctrl.mixDatabaseDataValue.stringValue = + ctrl.mixDatabaseDataValue.dateTimeValue; + } + break; + case "double": + if (ctrl.mixDatabaseDataValue.doubleValue) { + ctrl.mixDatabaseDataValue.stringValue = ctrl.mixDatabaseDataValue.doubleValue.toString(); + } + break; + case "boolean": + if (ctrl.mixDatabaseDataValue.booleanValue != null) { + ctrl.mixDatabaseDataValue.stringValue = ctrl.mixDatabaseDataValue.booleanValue.toString(); + } + break; - } -}); -app.controller('HubMessagesController', ['$scope', function ($scope) { - BaseHub.call(this, $scope); - $scope.init = function () { - // $scope.startConnection('portalhub'); - }; -}]); + default: + break; + } + }; + ctrl.updateRefData = function (nav) { + ctrl.goToPath(`/portal/mix-database-data/details?dataId=${nav.data.id} + &mixDatabaseId=${nav.data.mixDatabaseId} + &parentId=${ctrl.parentId} + &parentType=${ctrl.parentType}`); + // ctrl.refDataModel = nav; + // var e = $(".pane-form-" + ctrl.mixDatabaseDataValue.field.referenceId)[0]; + // angular.element(e).triggerHandler('click'); + // $location.url('/portal/mix-database-data/details?dataId='+ item.id +'&mixDatabaseId=' + item.mixDatabaseId+'&parentType=' + item.parentType+'&parentId=' + item.parentId); + }; -modules.component('jsonBuilder', { - templateUrl: '/mix-app/views/app-portal/components/json-builder/view.html', - bindings: { - 'data': '=?', // json obj (ex: { field1: 'some val' }) - 'folder': '=?', // filepath (ex: 'data/jsonfile.json') - 'filename': '=?', // filepath (ex: 'data/jsonfile.json') - 'allowedTypes': '=?', // string array ( ex: [ 'type1', 'type2' ] ) - 'backUrl': '=?', // string array ( ex: [ 'type1', 'type2' ] ) - 'save': '&', - 'onUpdate': '&' + ctrl.removeRefData = async function (nav) { + $rootScope.showConfirm( + ctrl, + "removeRefDataConfirmed", + [nav], + null, + "Remove", + "Deleted data will not able to recover, are you sure you want to delete this item?" + ); + }; + ctrl.removeRefDataConfirmed = async function (nav) { + $rootScope.isBusy = true; + var result = await navService.delete([ + nav.parentId, + nav.parentType, + nav.id, + ]); + if (result.isSucceed) { + $rootScope.removeObjectByKey(ctrl.refData, "id", nav.id); + $rootScope.isBusy = false; + $scope.$apply(); + } else { + $rootScope.showMessage("failed"); + $rootScope.isBusy = false; + $scope.$apply(); + } + }; }, - controller: ['$rootScope', '$scope', '$location', 'FileServices', 'ngAppSettings', - function ($rootScope, $scope, $location, fileService, ngAppSettings) { - var ctrl = this; - ctrl.file = null; - ctrl.translate = $rootScope.translate; - ctrl.settings = $rootScope.globalSettings; - ctrl.timestamp = Math.random(); - ctrl.templates = [ - { type: 'item', name: 'i1', dataType: 7, value: '' }, - { type: 'object', name: 'o1', columns: [{ allowedTypes: ['array', 'object', 'item'], items: [] }] }, - { type: 'array', name: 'a1', columns: [{ allowedTypes: ['object'], items: [] }] } - ]; - ctrl.draft = []; - ctrl.model = {}; - ctrl.dropzones = { - 'root': [] - }; - ctrl.selected = null; - ctrl.selectedModel = {}; - ctrl.strModel = null; - ctrl.init = async function () { - var arr = []; - if (!ctrl.data && ctrl.filename) { - await ctrl.loadFile(); - ctrl.parseObjToList(ctrl.data, arr); - ctrl.dropzones.root = arr; - } else { - ctrl.parseObjToList(ctrl.data, arr); - ctrl.dropzones.root = arr; - } + ], +}); - }; - ctrl.loadFile = async function () { - $rootScope.isBusy = true; - $scope.listUrl = '/portal/json-data/list?folder=' + ctrl.folder; +modules.component("mixDatabaseDataValues", { + templateUrl: + "/mix-app/views/app-portal/components/mix-database-data-values/view.html", + bindings: { + header: "=", + data: "=", + canDrag: "=", + mixDatabaseName: "=?", + mixDatabaseId: "=?", + queries: "=?", + filterType: "=?", + selectedList: "=", + selectSingle: "=?", + fields: "=?", + onFilterList: "&?", + onApplyList: "&?", + onSendMail: "&?", + onUpdate: "&?", + onDuplicate: "&?", + onDelete: "&?", + }, + controller: [ + "$rootScope", + "$scope", + "RestMixDatabaseColumnPortalService", + "RestMixDatabaseDataPortalService", + function ($rootScope, $scope, fieldService, dataService) { + var ctrl = this; + ctrl.actions = ["Delete", "SendMail"]; + ctrl.filterTypes = ["contain", "equal"]; + ctrl.selectedProp = null; + ctrl.settings = $rootScope.globalSettings; + ctrl.$onInit = async function () { + if (!ctrl.selectedList) { + ctrl.selectedList = { + action: "Delete", + data: [], + }; + } + if (!ctrl.fields) { + var getFields = await fieldService.initData( + ctrl.mixDatabaseName || ctrl.mixDatabaseId + ); + if (getFields.isSucceed) { + ctrl.fields = getFields.data; + $scope.$apply(); + } + } + }; + ctrl.select = function (item) { + if (item.isSelected) { + if (ctrl.selectSingle == "true") { + ctrl.selectedList.data = []; + ctrl.selectedList.data.push(item); + } else { + var current = $rootScope.findObjectByKey( + ctrl.selectedList, + "id", + item.id + ); + if (!current) { + ctrl.selectedList.data.push(item); + } + } + } else { + $rootScope.removeObject(ctrl.selectedList, item.id); + } + }; + ctrl.selectAll = function (isSelected) { + ctrl.selectedList.data = []; + angular.forEach(ctrl.data, function (e) { + e.isSelected = isSelected; + if (isSelected) { + ctrl.selectedList.data.push(e.id); + } + }); + }; + ctrl.filter = function () {}; + ctrl.sendMail = async function (data) { + ctrl.onSendMail({ data: data }); + }; + ctrl.apply = async function () { + ctrl.onApplyList(); + }; + + ctrl.duplicate = function (data) { + ctrl.onDuplicate({ data: data }); + }; + + ctrl.update = function (data) { + ctrl.onUpdate({ data: data }); + }; + + ctrl.delete = function (data) { + ctrl.onDelete({ data: data }); + }; + + ctrl.filterData = function (item, attributeName) { + return $rootScope.findObjectByKey( + item.data, + "attributeName", + attributeName + ); + }; + + ctrl.dragStart = function (index) { + ctrl.min = ctrl.data[0].priority; + ctrl.dragStartIndex = index; + }; + ctrl.updateOrders = function (index, items) { + for (var i = 0; i < items.length; i++) { + items[i].priority = ctrl.min + i + 1; + } + items.splice(ctrl.dragStartIndex, 1); + ctrl.updateDataInfos(items); + }; + ctrl.updateDataInfos = async function (items) { + angular.forEach(items, async function (e) { + var resp = await dataService.saveFields(e.id, { + priority: e.priority, + }); + if (resp && resp.isSucceed) { + $scope.activedPage = resp.data; + } else { + if (resp) { + $rootScope.showErrors(resp.errors); + } + } + }); + }; + // ctrl.updateOrders = function (index) { + // if (index > ctrl.dragStartIndex) { + // ctrl.data.splice(ctrl.dragStartIndex, 1); + // } else { + // ctrl.data.splice(ctrl.dragStartIndex + 1, 1); + // } + // // angular.forEach(ctrl.data, async function (e, i) { + // // e.priority = ctrl.min + i; + // // var resp = await dataService.saveFields(e.id, { + // // priority: e.priority, + // // }); + // // if (resp && resp.isSucceed) { + // // $scope.activedPage = resp.data; + // // $scope.$apply(); + // // } else { + // // if (resp) { + // // $rootScope.showErrors(resp.errors); + // // } + // // } + // // }); + // }; + + ctrl.view = function (item) { + var obj = { + fields: ctrl.fields, + item: item, + }; + $rootScope.preview("mix-database-data", obj, null, "modal-lg"); + }; + }, + ], +}); + +modules.component("mixDatabaseForm", { + templateUrl: + "/mix-app/views/app-portal/components/mix-database-form/view.html", + bindings: { + mixDatabaseId: "=", + mixDatabaseName: "=", + fields: "=?", + attrDataId: "=?", + attrData: "=?", + parentType: "=?", // attribute set = 1 | post = 2 | page = 3 | module = 4 + parentId: "=?", + defaultId: "=", + backUrl: "=?", + level: "=?", + hideAction: "=?", + saveData: "&?", + }, + controller: [ + "$rootScope", + "$scope", + "$location", + "$routeParams", + "RestMixDatabaseDataPortalService", + function ( + $rootScope, + $scope, + $location, + $routeParams, + service + ) { + var ctrl = this; + ctrl.isBusy = false; + ctrl.attributes = []; + + ctrl.defaultData = null; + ctrl.selectedProp = null; + ctrl.settings = $rootScope.globalSettings; + ctrl.$onInit = async function () { + ctrl.level = ctrl.level || 0; + ctrl.loadData(); + }; + ctrl.loadData = async function () { + /* + If input is data id => load ctrl.attrData from service and handle it independently + */ + ctrl.isBusy = true; + + if (ctrl.attrDataId) { + var getData = await service.getSingle([ctrl.attrDataId]); + ctrl.attrData = getData.data; + if (ctrl.attrData) { + ctrl.attrData.parentId = ctrl.parentId; + ctrl.attrData.parentType = ctrl.parentType; + ctrl.mixDatabaseId = ctrl.attrData.mixDatabaseId; + ctrl.mixDatabaseName = ctrl.attrData.mixDatabaseName; + ctrl.mixDatabaseTitle = $routeParams.mixDatabaseTitle; + ctrl.backUrl = `/portal/mix-database-data/list?mixDatabaseId=${ctrl.attrData.mixDatabaseId}&mixDatabaseName=${ctrl.attrData.mixDatabaseName}&mixDatabaseTitle=test`; + await ctrl.loadDefaultModel(); + ctrl.isBusy = false; + $scope.$apply(); + } else { + if (getData) { + $rootScope.showErrors(getData.errors); + } + ctrl.isBusy = false; + $scope.$apply(); + } + } + if ((ctrl.mixDatabaseName || ctrl.mixDatabaseId) && !ctrl.defaultData) { + await ctrl.loadDefaultModel(); + ctrl.isBusy = false; + $scope.$apply(); + } + }; + ctrl.loadDefaultModel = async function () { + if ($routeParams.parentId) { + ctrl.parentId = $routeParams.parentId; + } + if ($routeParams.parentType) { + ctrl.parentType = $routeParams.parentType; + } + if (!ctrl.backUrl) { + if (ctrl.parentType) { + switch (ctrl.parentType) { + case "Post": + case "Page": + case "Module": + ctrl.backUrl = `/portal/${ctrl.parentType.toLowerCase()}/details/${ + ctrl.parentId + }`; + break; + + default: + ctrl.backUrl = `/portal/mix-database-data/details?dataId=${ctrl.parentId}&mixDatabaseId=${ctrl.mixDatabaseId}&mixDatabaseName=${ctrl.mixDatabaseName}&mixDatabaseTitle=${$routeParams.mixDatabaseTitle}`; + break; + } + } + } + var getDefault = await service.initData( + ctrl.mixDatabaseName || ctrl.mixDatabaseId + ); + ctrl.defaultData = getDefault.data; + if (ctrl.defaultData) { + ctrl.defaultData.mixDatabaseId = ctrl.mixDatabaseId || 0; + ctrl.defaultData.mixDatabaseName = ctrl.mixDatabaseName; + ctrl.defaultData.parentId = ctrl.parentId; + ctrl.defaultData.parentType = ctrl.parentType; + + ctrl.fields = ctrl.fields || ctrl.defaultData.fields; + } + + if (!ctrl.attrData) { + ctrl.attrData = angular.copy(ctrl.defaultData); + } + }; + + ctrl.reload = async function () { + ctrl.attrData = angular.copy(ctrl.defaultData); + }; + ctrl.loadSelected = function () { + if (ctrl.selectedList.data.length) { + ctrl.attrData = ctrl.selectedList.data[0]; + ctrl.attrData.mixDatabaseId = ctrl.mixDatabaseId; + ctrl.attrData.mixDatabaseName = ctrl.mixDatabaseName; + ctrl.attrData.parentId = ctrl.parentId; + ctrl.attrData.parentType = ctrl.parentType; + } + }; + ctrl.submit = async function () { + if (ctrl.validate()) { + if (ctrl.saveData) { + ctrl.isBusy = true; + var result = await ctrl.saveData({ data: ctrl.attrData }); + if (result && result.isSucceed) { + ctrl.isBusy = false; + ctrl.attrData = result.data; + $scope.$apply(); + } else { + ctrl.isBusy = false; + // ctrl.attrData = await service.getSingle('portal', [ctrl.defaultId, ctrl.mixDatabaseId, ctrl.mixDatabaseName]); + $scope.$apply(); + } + } else { + ctrl.isBusy = true; - var response = await fileService.getFile(ctrl.folder, ctrl.filename); - if (response.isSucceed) { - ctrl.file = response.data; - ctrl.data = $.parseJSON(response.data.content); - $rootScope.isBusy = false; - $scope.$apply(); - } - else { - $rootScope.showErrors(response.errors); - $rootScope.isBusy = false; - $scope.$apply(); - } - }; - ctrl.saveFile = async function () { - $rootScope.isBusy = true; - ctrl.model = {}; - ctrl.update(); - if (ctrl.save) { - ctrl.save({ data: ctrl.model }); - } - else { - // ctrl.parseObj(ctrl.dropzones.root, ctrl.model); - ctrl.file.content = JSON.stringify(ctrl.model); - var resp = await fileService.saveFile(ctrl.file); - if (resp && resp.isSucceed) { - $scope.activedFile = resp.data; - $rootScope.showMessage('Update successfully!', 'success'); - $rootScope.isBusy = false; - $scope.$apply(); - } - else { - if (resp) { $rootScope.showErrors(resp.errors); } - $rootScope.isBusy = false; - $scope.$apply(); - } + var saveResult = await service.save(ctrl.attrData); + if (saveResult.isSucceed) { + ctrl.attrData.id = saveResult.data.id; + ctrl.isBusy = false; + $rootScope.showMessage("success"); + if ($location.path() == "/portal/mix-database-data/create") { + const url = + ctrl.backUrl || + `/portal/mix-database-data/details?dataId=${ctrl.attrData.id}&mixDatabaseId=${ctrl.mixDatabaseId}&mixDatabaseName=${ctrl.mixDatabaseName}&mixDatabaseTitle=${$routeParams.mixDatabaseTitle}`; + $location.url(url); + } + $scope.$apply(); + } else { + ctrl.isBusy = false; + if (saveResult) { + $rootScope.showErrors(saveResult.errors); + } + $scope.$apply(); + } + } + } + }; + ctrl.validate = function () { + var isValid = true; + ctrl.errors = []; + angular.forEach(ctrl.fields, function (field) { + if (field.regex) { + var regex = RegExp(field.regex, "g"); + isValid = regex.test(ctrl.attrData.obj[field.name]); + if (!isValid) { + ctrl.errors.push(`${field.name} is not match Regex`); + } + } + if (!isValid) { + $rootScope.showErrors(ctrl.errors); + } + if (isValid && field.isEncrypt) { + ctrl.attrData.obj[field.name] = $rootScope.encrypt( + ctrl.attrData.obj[field.name] + ); + } + }); + return isValid; + }; + ctrl.showContentFilter = function ($event) { + $rootScope.showContentFilter(ctrl.loadSelectedLink); + }; + ctrl.loadSelectedLink = function (data, type) { + if (data) { + ctrl.attrData.obj.target_id = data.id; + ctrl.attrData.obj.title = data.title; + ctrl.attrData.obj.type = type; + ctrl.attrData.obj.uri = data.detailsUrl; + } + }; + ctrl.filterData = function (attributeName) { + if (ctrl.attrData) { + var attr = $rootScope.findObjectByKey( + ctrl.attrData.obj, + "mixDatabaseColumnName", + attributeName + ); + if (!attr) { + attr = angular.copy( + $rootScope.findObjectByKey( + ctrl.defaultData.data, + "mixDatabaseColumnName", + attributeName + ) + ); + mixDatabaseColumn; + ctrl.attrData.obj.push(attr); + } + return attr; + } + }; + }, + ], +}); + +modules.component("mixDatabaseNavData", { + templateUrl: + "/mix-app/views/app-portal/components/mix-database-nav-data/view.html", + bindings: { + nav: "=", + parentId: "=", + parentType: "=", + onUpdate: "&?", + onDelete: "&?", + }, + controller: [ + "$rootScope", + "$scope", + "ngAppSettings", + "RestRelatedAttributeDataPortalService", + "RestMixDatabaseDataPortalService", + function ($rootScope, $scope, ngAppSettings, navService, dataService) { + var ctrl = this; + ctrl.data = null; + ctrl.selected = null; + ctrl.navRequest = angular.copy(ngAppSettings.request); + ctrl.setRequest = angular.copy(ngAppSettings.request); + ctrl.settings = $rootScope.globalSettings; + ctrl.$onInit = function () { + navService + .getDefault([ctrl.parentId, ctrl.parentType, "default"]) + .then((resp) => { + ctrl.defaultData = resp.data; + ctrl.defaultData.parentId = ctrl.parentId; + ctrl.defaultData.parentType = ctrl.parentType; + ctrl.selected = angular.copy(ctrl.defaultData); + ctrl.loadData(); + }); + ctrl.navRequest.parentType = ctrl.parentType; + ctrl.navRequest.parentId = ctrl.parentId; + }; + ctrl.selectPane = function (pane) {}; + ctrl.loadData = function () { + navService.getList(ctrl.navRequest).then((resp) => { + if (resp) { + ctrl.data = resp.data; + $scope.$apply(); + } else { + if (resp) { + $rootScope.showErrors("Failed"); + } + $scope.$apply(); + } + }); + }; + ctrl.updateData = function (nav) { + ctrl.selected = nav; + var e = $(".pane-form-" + ctrl.nav.data.id)[0]; + angular.element(e).triggerHandler("click"); + // $location.url('/portal/mix-database-data/details?dataId='+ item.id +'&mixDatabaseId=' + item.mixDatabaseId+'&parentType=' + item.parentType+'&parentId=' + item.parentId); + }; + ctrl.saveData = function (data) { + $rootScope.isBusy = true; + ctrl.selected.data = data; + dataService.save(data).then((resp) => { + if (resp.isSucceed) { + ctrl.selected.dataId = resp.data.id; + ctrl.selected.mixDatabaseId = resp.data.mixDatabaseId; + ctrl.selected.mixDatabaseName = resp.data.mixDatabaseName; + ctrl.selected.attributeData = resp.data; + navService.save(ctrl.selected).then((resp) => { + if (resp.isSucceed) { + var tmp = $rootScope.findObjectByKey( + ctrl.data, + ["parentId", "parentType", "id"], + [resp.data.parentId, resp.data.parentType, resp.data.id] + ); + if (!tmp) { + ctrl.data.items.push(resp.data); + var e = $(".pane-data-" + ctrl.nav.data.id)[0]; + angular.element(e).triggerHandler("click"); } - ctrl.select(ctrl.selected); + ctrl.selected = angular.copy(ctrl.defautData); + $rootScope.isBusy = false; + $scope.$apply(); + } else { + $rootScope.showMessage("failed"); + $rootScope.isBusy = false; + $scope.$apply(); + } + }); + } else { + $rootScope.showMessage("failed"); + $rootScope.isBusy = false; + $scope.$apply(); + } + }); + }; + ctrl.removeData = async function (nav) { + $rootScope.showConfirm( + ctrl, + "removeDataConfirmed", + [nav], + null, + "Remove", + "Deleted data will not able to recover, are you sure you want to delete this item?" + ); + }; + ctrl.removeDataConfirmed = async function (nav) { + $rootScope.isBusy = true; + var result = await navService.delete([nav.id]); + if (result.isSucceed) { + $rootScope.removeObjectByKey(ctrl.data, "id", nav.id); + $rootScope.isBusy = false; + $scope.$apply(); + } else { + $rootScope.showMessage("failed"); + $rootScope.isBusy = false; + $scope.$apply(); + } + }; + ctrl.dragStart = function (index) { + ctrl.dragStartIndex = index; + ctrl.minPriority = ctrl.data[0].priority; + }; + ctrl.updateOrders = function (index) { + if (index > ctrl.dragStartIndex) { + ctrl.data.splice(ctrl.dragStartIndex, 1); + } else { + ctrl.data.splice(ctrl.dragStartIndex + 1, 1); + } + var arrNavs = []; + angular.forEach(ctrl.data, function (e, i) { + e.priority = ctrl.minPriority + i; + var keys = { + parentId: e.parentId, + parentType: e.parentType, + id: e.id, + }; + var properties = { + priority: e.priority, + }; + arrNavs.push({ + keys: keys, + properties: properties, + }); + }); + navService.saveProperties("portal", arrNavs).then((resp) => { + $rootScope.isBusy = false; + $scope.$apply(); + }); + }; + }, + ], +}); + +modules.component("mixDatabaseNavValues", { + templateUrl: + "/mix-app/views/app-portal/components/mix-database-nav-values/view.html", + bindings: { + mixDatabaseId: "=", + mixDatabaseName: "=", + parentId: "=", + parentType: "=", + fields: "=?", + header: "=", + data: "=?", + maxCol: "=?", + createUrl: "=?", + updateUrl: "=?", + onUpdate: "&?", + onDelete: "&?", + }, + controller: [ + "$rootScope", + "$scope", + "ngAppSettings", + "RestRelatedAttributeDataPortalService", + "RestMixDatabaseColumnPortalService", + function ($rootScope, $scope, ngAppSettings, navService, fieldService) { + var ctrl = this; + ctrl.selectedProp = null; + ctrl.request = angular.copy(ngAppSettings.restRequest); + ctrl.request.orderBy = "priority"; + ctrl.request.query = "{}"; - }; - ctrl.update = function () { - ctrl.model = {}; - var obj = { - type: 'object', - name: 'data', - columns: [ - { - items: ctrl.dropzones.root - } - ] - }; - ctrl.parseObj(obj, ctrl.model); - ctrl.onUpdate({ data: ctrl.model }); - }; - ctrl.parseObjToList = function (item, items) { - // key: the name of the object key - // index: the ordinal position of the key within the object - Object.keys(item).forEach(function (key, index) { - var obj = {}; - var objType = typeof (item[key]); - switch (objType) { - case 'object': - if (Array.isArray(item[key])) { - obj = angular.copy(ctrl.templates[2]); - obj.name = key; - ctrl.parseObjToList(item[key], obj.columns[0].items); - items.push(obj); - } else { - obj = angular.copy(ctrl.templates[1]); - obj.name = key; - ctrl.parseObjToList(item[key], obj.columns[0].items); - items.push(obj); - } - break; - default: - obj = angular.copy(ctrl.templates[0]); - obj.name = key; - obj.value = item[key]; - items.push(obj); - break; - } + ctrl.request.direction = 0; + ctrl.settings = $rootScope.globalSettings; + ctrl.$onInit = async function () { + ctrl.maxCol = ctrl.maxCol || 3; + if (!ctrl.createUrl) { + ctrl.createUrl = "/portal/mix-database-data/create"; + } + if (!ctrl.updateUrl) { + ctrl.updateUrl = "/portal/mix-database-data/details"; + } + if (!ctrl.fields) { + var getFields = await fieldService.initData( + ctrl.mixDatabaseName || ctrl.mixDatabaseId + ); + if (getFields.isSucceed) { + ctrl.fields = getFields.data; + $scope.$apply(); + } + } + if (!ctrl.data) { + ctrl.loadData(); + } + }; - }); - }; - ctrl.parseObj = function (item, obj, name) { - switch (item.type) { - case 'array': - obj[item.name] = []; - angular.forEach(item.columns[0].items, sub => { - var o = {}; - ctrl.parseObj(sub, o); - obj[item.name].push(o); - }); - break; - case 'object': - angular.forEach(item.columns[0].items, sub => { - if (sub.type == 'object') { - var o = {}; - ctrl.parseObj(sub, o); - obj[item.name] = (o); - } - else { - ctrl.parseObj(sub, obj, item.name); - } - }); - break; - case 'item': - obj[item.name] = item.value; - break; - } - }; - ctrl.select = function (item) { - if (ctrl.selected == item) { - ctrl.parseObj(item, ctrl.selectedModel); - } - else { - ctrl.selected = item; - ctrl.selectedModel = {}; - ctrl.parseObj(item, ctrl.selectedModel); - } - ctrl.timestamp = Math.random(); - }; - ctrl.addField = function (item) { - var field = angular.copy(ctrl.templates[0]); - field.name = 'f' + (item.columns[0].items.length + 1); - item.columns[0].items.push(field); - item.showMenu = false; - }; - ctrl.addObj = function (item) { - var obj = angular.copy(ctrl.templates[1]); - obj.name = 'o' + (item.columns[0].items.length + 1); - item.columns[0].items.push(obj); - item.showMenu = false; - ctrl.update(); - }; - ctrl.addArray = function (item) { - var obj = angular.copy(ctrl.templates[2]); - obj.name = 'a' + (item.columns[0].items.length + 1); - item.columns[0].items.push(obj); - item.showMenu = false; - ctrl.update(); - }; - ctrl.clone = function (item, list) { - var obj = angular.copy(item); - obj.name = item.name + '_copy'; - item.showMenu = false; - obj.showMenu = false; - list.items.push(obj); - ctrl.update(); - }; + ctrl.update = function (data) { + ctrl.onUpdate({ data: data }); + }; - ctrl.remove = function (index, list) { - if (confirm('Remove this')) { - list.items.splice(index, 1); - ctrl.update(); - } - }; + ctrl.delete = function (data) { + ctrl.onDelete({ data: data }); + }; - }] -}); + ctrl.filterData = function (item, attributeName) { + return $rootScope.findObjectByKey( + item.data, + "attributeName", + attributeName + ); + }; -modules.component('jumbotrons', { - templateUrl: '/mix-app/views/app-portal/components/jumbotrons/jumbotrons.html', - controller: ['$rootScope', '$scope', '$location', function ($rootScope, $scope, $location) { - var ctrl = this; - ctrl.translate = function (keyword) { - return $rootScope.translate(keyword); + ctrl.dragStart = function (index) { + ctrl.dragStartIndex = index; + ctrl.minPriority = ctrl.data.items[0].priority; + }; + ctrl.updateOrders = function (index) { + if (index > ctrl.dragStartIndex) { + ctrl.data.items.splice(ctrl.dragStartIndex, 1); + } else { + ctrl.data.items.splice(ctrl.dragStartIndex + 1, 1); + } + angular.forEach(ctrl.data.items, function (e, i) { + e.priority = ctrl.minPriority + i; + navService.saveFields(e.id, { priority: e.priority }).then((resp) => { + $rootScope.isBusy = false; + $scope.$apply(); + }); + }); + }; + + ctrl.loadData = function () { + ctrl.request.mixDatabaseId = ctrl.mixDatabaseId || 0; + ctrl.request.mixDatabaseName = ctrl.mixDatabaseName || null; + ctrl.request.parentId = ctrl.parentId; + ctrl.request.parentType = ctrl.parentType; + navService.getList(ctrl.request).then((resp) => { + if (resp) { + ctrl.data = resp.data; + $rootScope.isBusy = false; + $scope.$apply(); + } else { + if (resp) { + $rootScope.showErrors("Failed"); + } + ctrl.refData = []; + $rootScope.isBusy = false; + $scope.$apply(); + } + }); + }; + ctrl.updateData = function (nav) { + $rootScope.goToPath( + `${ctrl.updateUrl}?dataId=${nav.dataId}&mixDatabaseId=${nav.mixDatabaseId}&parentId=${ctrl.parentId}&parentType=${ctrl.parentType}` + ); + // ctrl.refDataModel = nav; + // var e = $(".pane-form-" + ctrl.mixDatabaseDataValue.field.referenceId)[0]; + // angular.element(e).triggerHandler('click'); + // $location.url('/portal/mix-database-data/details?dataId='+ item.id +'&mixDatabaseId=' + item.mixDatabaseId+'&parentType=' + item.parentType+'&parentId=' + item.parentId); + }; + ctrl.saveData = function (data) { + $rootScope.isBusy = true; + ctrl.refDataModel.data = data; + dataService.save("portal", data).then((resp) => { + if (resp.isSucceed) { + ctrl.refDataModel.id = resp.data.id; + ctrl.refDataModel.data = resp.data; + navService.save("portal", ctrl.refDataModel).then((resp) => { + if (resp.isSucceed) { + var tmp = $rootScope.findObjectByKey( + ctrl.refData, + ["parentId", "parentType", "id"], + [resp.data.parentId, resp.data.parentType, resp.data.id] + ); + if (!tmp) { + ctrl.refData.push(resp.data); + } + ctrl.refDataModel = angular.copy(ctrl.defaultDataModel); + var e = $( + ".pane-data-" + ctrl.mixDatabaseDataValue.field.referenceId + )[0]; + angular.element(e).triggerHandler("click"); + $rootScope.isBusy = false; + $scope.$apply(); + } else { + $rootScope.showMessage("failed"); + $rootScope.isBusy = false; + $scope.$apply(); + } + }); + } else { + $rootScope.showMessage("failed"); + $rootScope.isBusy = false; + $scope.$apply(); + } + }); + }; + ctrl.removeData = async function (nav) { + $rootScope.showConfirm( + ctrl, + "removeDataConfirmed", + [nav], + null, + "Remove", + "Deleted data will not able to recover, are you sure you want to delete this item?" + ); + }; + ctrl.removeDataConfirmed = async function (nav) { + $rootScope.isBusy = true; + var result = await navService.delete([nav.id]); + if (result.isSucceed) { + $rootScope.removeObjectByKey(ctrl.data.items, "id", nav.id); + $rootScope.isBusy = false; + $scope.$apply(); + } else { + $rootScope.showMessage("failed"); + $rootScope.isBusy = false; + $scope.$apply(); + } + }; + ctrl.view = function (item) { + var obj = { + fields: ctrl.fields, + item: item, }; - // ctrl.back = function () { - // ctrl.backUrl = ctrl.backUrl || '/admin'; - // $location.path(ctrl.backUrl); - // }; - }], - bindings: { - tagName: '=', - tagType: '=', - } -}); -modules.component('mainSideBar', { - templateUrl: '/mix-app/views/app-portal/components/main-side-bar/main-side-bar.html', - controller: ['$rootScope', '$scope', 'ngAppSettings', 'TranslatorService', 'CommonService', - function ($rootScope, $scope, ngAppSettings, translatorService, commonService) { - var ctrl = this; - ctrl.items = []; - ctrl.init = function () { - var routes = $.parseJSON($('#portal-menus').val()); - ctrl.items = routes.data; - }; - }], - bindings: { - } + $rootScope.preview("mix-database-data", obj, null, "modal-lg"); + }; + }, + ], }); -modules.component("mainSideBarDynamic", { +modules.component("mixDatabaseNavs", { templateUrl: - "/mix-app/views/app-portal/components/main-side-bar-dynamic/main-side-bar-dynamic.html", + "/mix-app/views/app-portal/components/mix-database-navs/view.html", + bindings: { + parentId: "=", + parentType: "=", + mixDatabaseNavs: "=?", + onUpdate: "&?", + onDelete: "&?", + }, controller: [ "$rootScope", "$scope", "ngAppSettings", - "RoleService", - "TranslatorService", - "AuthService", - function ( - $rootScope, - $scope, - ngAppSettings, - roleServices, - translatorService, - authService - ) { + "RestRelatedMixDatabasePortalService", + "RestMixDatabasePortalService", + function ($rootScope, $scope, ngAppSettings, navService, setService) { var ctrl = this; - ctrl.init = function () { - roleServices.getPermissions().then(function (response) { - if (response && response.isSucceed) { - ctrl.isInit = true; - ctrl.roles = response.data; - if (ctrl.roles) { - ctrl.role = ctrl.roles[0]; + ctrl.mixDatabaseNavs = ctrl.mixDatabaseNavs || []; + ctrl.selected = {}; + ctrl.defaultData = null; + ctrl.navRequest = angular.copy(ngAppSettings.request); + ctrl.setRequest = angular.copy(ngAppSettings.request); + + ctrl.settings = $rootScope.globalSettings; + ctrl.$onInit = function () { + // ctrl.setRequest.type = ctrl.parentType; + navService.getDefault().then((resp) => { + resp.parentId = ctrl.parentId; + resp.parentType = ctrl.parentType; + ctrl.defaultData = resp; + ctrl.loadData(); + }); + }; + ctrl.goToPath = $rootScope.goToPath; + ctrl.selectPane = function (pane) {}; + ctrl.loadData = async function () { + // Load attr set navs if not in input + if (!ctrl.mixDatabaseNavs) { + ctrl.navRequest.parentType = ctrl.parentType; + ctrl.navRequest.parentId = ctrl.parentId; + var resp = await navService.getList(ctrl.navRequest); + if (resp) { + angular.forEach(resp.data.items, (e) => { + e.isActived = true; + ctrl.mixDatabaseNavs.push(e); + }); + } else { + if (resp) { + $rootScope.showErrors(resp.errors); } - $rootScope.isBusy = false; - $scope.$apply(); } - }); + } else { + angular.forEach(ctrl.mixDatabaseNavs, (e) => { + e.isActived = true; + }); + } + + var setResult = await setService.getList(ctrl.setRequest); + if (setResult) { + angular.forEach(setResult.data.items, (element) => { + var e = $rootScope.findObjectByKey( + ctrl.mixDatabaseNavs, + "mixDatabaseId", + element.id + ); + if (!e) { + e = angular.copy(ctrl.defaultData); + e.status = "Published"; + e.mixDatabaseId = element.id; + e.specificulture = navService.lang; + e.data = element; + e.isActived = false; + ctrl.mixDatabaseNavs.push(e); + } + }); + } else { + if (setResult) { + $rootScope.showErrors("Others Failed"); + } + } + $scope.$apply(); + }; + ctrl.change = async function (nav) { + $rootScope.isBusy = true; + var result; + if (nav.isActived) { + ctrl.active(nav); + } else { + ctrl.deactive(nav); + } }; - }, - ], - bindings: { - roles: "=", - activedRole: "=", - translate: "&", - }, -}); + ctrl.deactive = async function (nav) { + let result = null; + if (nav.id) { + result = await navService.delete([nav.id]); + $(".pane-container-" + nav.data.id) + .parent() + .remove(); + } + if (result && result.isSucceed) { + $rootScope.isBusy = false; + $scope.$apply(); + } else { + $rootScope.showMessage("failed"); + $rootScope.isBusy = false; + } + }; -modules.component('mainSideBarItem', { - templateUrl: '/mix-app/views/app-portal/components/main-side-bar-item/main-side-bar-item.html', - controller: ['$rootScope', function ($rootScope) { - var ctrl = this; - ctrl.translate = $rootScope.translate; - ctrl.addClass = function (obj) { - obj.currentTarget.classList.add('btn-group-lg'); - //alert(obj); + ctrl.active = async function (nav) { + $rootScope.isBusy = true; + var result; + result = await navService.save(nav); + if (result && result.isSucceed) { + $rootScope.isBusy = false; + $scope.$apply(); + } else { + $rootScope.showMessage("failed"); + $rootScope.isBusy = false; + $scope.$apply(); } - ctrl.removeClass = function (obj) { - obj.currentTarget.classList.remove('btn-group-lg'); - //alert(obj); + }; + + ctrl.update = function (data) { + ctrl.onUpdate({ + data: data, + }); + }; + + ctrl.delete = function (data) { + ctrl.onDelete({ + data: data, + }); + }; + + ctrl.dragStart = function (index) { + ctrl.dragStartIndex = index; + ctrl.minPriority = ctrl.mixDatabaseNavs[0].priority; + }; + ctrl.updateOrders = function (index) { + if (index > ctrl.dragStartIndex) { + ctrl.mixDatabaseNavs.splice(ctrl.dragStartIndex, 1); + } else { + ctrl.mixDatabaseNavs.splice(ctrl.dragStartIndex + 1, 1); } - }], - bindings: { - item: '=', - } + var arrNavs = []; + angular.forEach(ctrl.mixDatabaseNavs, function (e, i) { + e.priority = ctrl.minPriority + i; + var keys = { + parentId: e.parentId, + parentType: e.parentType, + id: e.id, + }; + var properties = { + priority: e.priority, + }; + arrNavs.push({ + keys: keys, + properties: properties, + }); + }); + navService.saveProperties("portal", arrNavs).then((resp) => { + $rootScope.isBusy = false; + $scope.$apply(); + }); + }; + }, + ], }); -modules.component('mainSideBarItemDynamic', { - templateUrl: '/mix-app/views/app-portal/components/main-side-bar-item-dynamic/main-side-bar-item-dynamic.html', - controller: ['$rootScope', function ($rootScope) { - var ctrl = this; - ctrl.translate = $rootScope.translate; - }], - bindings: { - iconSize: '=', - linkStyle: '=', - itemStyle: '=', - item: '=' - } -}); -modules.component("mediaFileUpload", { - templateUrl: "/mix-app/views/app-portal/components/media-file-upload/view.html", +modules.component("mixFileUpload", { + templateUrl: "/mix-app/views/app-portal/components/mix-file-upload/view.html", bindings: { - header: "=?", - description: "=?", - src: "=", - srcUrl: "=", - mediaFile: "=", - formFile: "=", - type: "=?", + w: "=?", + h: "=?", + rto: "=?", folder: "=?", - auto: "=", - acceptTypes: "=?", - onDelete: "&?", - onUpdate: "&?", + accept: "=?", + onFail: "&?", + onSuccess: "&?", }, controller: [ "$rootScope", "$scope", - "ngAppSettings", - "MediaService", - function ($rootScope, $scope, ngAppSettings, mediaService) { + "ngAppSettings", + "FileServices", + function ($rootScope, $scope, ngAppSettings, fileService) { var ctrl = this; ctrl.isAdmin = $rootScope.isAdmin; - var image_placeholder = "/mix-app/assets/img/image_placeholder.jpg"; - ctrl.isImage = false; ctrl.mediaNavs = []; ctrl.$onInit = function () { - ctrl.srcUrl = ctrl.srcUrl || image_placeholder; - ctrl.isImage = ctrl.srcUrl - .toLowerCase() - .match(/([/|.|\w|\s|-])*\.(?:jpg|jpeg|gif|png|svg)/g); - ctrl.maxHeight = ctrl.maxHeight || "200px"; ctrl.id = Math.floor(Math.random() * 100); }; - ctrl.$doCheck = function () { - if (ctrl.src !== ctrl.srcUrl && ctrl.srcUrl != image_placeholder) { - ctrl.src = ctrl.srcUrl; - ctrl.isImage = ctrl.srcUrl - .toLowerCase() - .match(/([/|.|\w|\s|-])*\.(?:jpg|jpeg|gif|png|svg)/g); - } - }.bind(ctrl); - ctrl.selectFile = function (files) { if (files !== undefined && files !== null && files.length > 0) { const file = files[0]; @@ -9524,67 +9836,47 @@ modules.component("mediaFileUpload", { ctrl.mediaFile.title = ctrl.title ? ctrl.title : ""; ctrl.mediaFile.description = ctrl.description ? ctrl.description : ""; ctrl.mediaFile.file = file; - ctrl.formFile = file; - if (ctrl.auto == "true") { - ctrl.uploadFile(file); + if (ctrl.w || ctrl.h || ctrl.rto) { + ctrl.openCroppie(file); } else { - ctrl.srcUrl = null; - ctrl.src = null; - ctrl.isImage = file.name.match( - /([/|.|\w|\s|-])*\.(?:jpg|jpeg|gif|png|svg)/g - ); - if (ctrl.isImage) { + if (ctrl.auto == "true") { + ctrl.uploadFile(file); + } else { ctrl.getBase64(file); } } } }; - ctrl.uploadFile = async function (file) { - if (file !== null) { - $rootScope.isBusy = true; - if (ctrl.mediaFile) { - var response = await mediaService.uploadMedia(ctrl.mediaFile, file); - if (response.isSucceed) { - ctrl.media = response.data; - $rootScope.isBusy = false; - ctrl.srcUrl = response.data.filePath; - $scope.$apply(); - } else { - $rootScope.showErrors(response.errors); - $rootScope.isBusy = false; - $scope.$apply(); - } - } - } else { - return null; - } - }; ctrl.getBase64 = function (file) { if (file !== null) { $rootScope.isBusy = true; var reader = new FileReader(); reader.readAsDataURL(file); + // ctrl.cropped.source = null; reader.onload = function () { - if (ctrl.mediaFile) { - ctrl.mediaFile.fileName = file.name.substring( + if (ctrl.media.mediaFile) { + ctrl.media.mediaFile.fileName = file.name.substring( 0, file.name.lastIndexOf(".") ); - ctrl.mediaFile.extension = file.name.substring( + ctrl.media.mediaFile.extension = file.name.substring( file.name.lastIndexOf(".") ); - ctrl.mediaFile.fileStream = reader.result; - } - ctrl.srcUrl = reader.result; - ctrl.isImage = - ctrl.srcUrl.indexOf("data:image/") >= 0 || - ctrl.srcUrl - .toLowerCase() - .match(/([/|.|\w|\s|-])*\.(?:jpg|jpeg|gif|png|svg)/g); - ctrl.src = reader.result; - $rootScope.isBusy = false; - $scope.$apply(); + // ctrl.postedFile.fileStream = reader.result; + } + var image = new Image(); + image.src = reader.result; + + image.onload = function () { + // access image size here + ctrl.w = ctrl.w || this.width; + ctrl.h = ctrl.h || this.height; + ctrl.loadImageSize(this.width, this.height); + ctrl.cropped.source = reader.result; + $rootScope.isBusy = false; + $scope.$apply(); + }; }; reader.onerror = function (error) { $rootScope.isBusy = false; @@ -9594,115 +9886,6 @@ modules.component("mediaFileUpload", { return null; } }; - }, - ], -}); - - -modules.component('mediaUpload', { - templateUrl: '/mix-app/views/app-portal/components/media-upload/media-upload.html', - controller: ['$scope', '$rootScope', 'MediaService', 'CommonService', - function ($scope, $rootScope, service, commonService) { - var ctrl = this; - ctrl.viewModel = { - title: '', - description: '', - status: 'Published', - mediaFile: { - file: null, - fullPath: '', - folderName: 'Media', - fileFolder: '', - fileName: '', - extension: '', - content: '', - fileStream: '' - } - }; - ctrl.save = async function (data) { - $rootScope.isBusy = true; - var resp = await service.save(data); - if (resp && resp.isSucceed) { - $scope.viewModel = resp.data; - $rootScope.showMessage('success', 'success'); - $rootScope.isBusy = false; - if (ctrl.onUpdate) { - ctrl.onUpdate(); - } - $scope.$apply(); - } else { - if (resp) { - $rootScope.showErrors(resp.errors); - } - $rootScope.isBusy = false; - $scope.$apply(); - } - } - }], - bindings: { - 'onUpdate': '&' - } -}); -modules.component('mediumNews', { - templateUrl: '/mix-app/views/app-portal/components/medium-news/view.html', - controller: [ - '$rootScope', '$http', - function ($rootScope, $http) { - var ctrl = this; - ctrl.items = []; - ctrl.init = function () { - var req = { - method: 'GET', - url: 'https://api.rss2json.com/v1/api.json?rss_url=https://medium.com/feed/mixcore?t=' + Math.floor(Date.now() / 1000) - }; - ctrl.getMediumApiResult(req); - }; - - ctrl.getMediumApiResult = async function (req) { - return $http(req).then(function (resp) { - if (resp.status == '200') { - ctrl.items = resp.data.items; - } - else { - console.log(resp); - - } - }, - function (error) { - return { isSucceed: false, errors: [error.statusText || error.status] }; - }); - }; - } - ], - bindings: { - } -}); -modules.component("mixFileUpload", { - templateUrl: "/mix-app/views/app-portal/components/mix-file-upload/view.html", - bindings: { - folder: "=?", - accept: "=?", - onFail: "&?", - onSuccess: "&?", - }, - controller: [ - "$rootScope", - "$scope", - "ngAppSettings", - "FileServices", - function ($rootScope, $scope, ngAppSettings, fileService) { - var ctrl = this; - ctrl.isAdmin = $rootScope.isAdmin; - ctrl.mediaNavs = []; - ctrl.$onInit = function () { - ctrl.id = Math.floor(Math.random() * 100); - }; - ctrl.selectFile = function (files) { - if (files !== undefined && files !== null && files.length > 0) { - const file = files[0]; - ctrl.file = file; - } - }; ctrl.uploadFile = async function () { if (ctrl.file) { @@ -9724,6 +9907,43 @@ modules.component("mixFileUpload", { $rootScope.showErrors(["Please choose file"]); } }; + + ctrl.openCroppie = function (file) { + const w = parseInt(ctrl.w); + const h = parseInt(ctrl.h); + const rto = ctrl.w / ctrl.h; + + var modalInstance = $uibModal.open({ + animation: true, + windowClass: "show", + templateUrl: "/mix-app/views/app-shared/components/modal-croppie/croppie.html", + controller: "ModalCroppieController", + controllerAs: "$ctrl", + size: "lg", + resolve: { + mediaService: mediaService, + file: function () { + return file; + }, + w, + h, + rto, + }, + }); + + modalInstance.result.then( + function (result) { + ctrl.srcUrl = result.fullPath; + }, + function () { } + ); + }; + + ctrl.isImage = function (filename) { + filename + .toLowerCase() + .match(/([/|.|\w|\s|-])*\.(?:jpg|jpeg|gif|png|svg)/g); + } }, ], }); @@ -9889,136 +10109,157 @@ modules.component('mixTemplateEditor', { } else { if (resp) { $rootScope.showErrors(resp.errors); $rootScope.isBusy = false; $scope.$apply(); } - } - - } - } - ctrl.updateTemplateContent = function (content) { - ctrl.template.content = content; - } - ctrl.updateStyleContent = function (content) { - ctrl.template.scripts = content; - } - ctrl.updateScriptContent = function (content) { - ctrl.template.styles = content; - } - }] -}); - - -modules.component('mixValueEditor', { - templateUrl: '/mix-app/views/app-portal/components/mix-value-editor/view.html', - bindings: { - title: '=?', - isSelect: '=?', - stringValue: '=', - type: '=' - }, - controller: ['$rootScope', '$scope', 'ngAppSettings', '$location', 'RestAttributeSetDataPortalService', - function ($rootScope, $scope, ngAppSettings, $location, dataService) { - var ctrl = this; - ctrl.icons = ngAppSettings.icons; - ctrl.refData = []; - ctrl.refRequest = angular.copy(ngAppSettings.request); - ctrl.refRequest.pageSize = 100; - ctrl.dataTypes = $rootScope.globalSettings.dataTypes; - ctrl.previousId = null; - ctrl.initData = async function () { - setTimeout(() => { - switch (ctrl.type) { - case 'datetime': - case 'date': - case 'time': - if (ctrl.stringValue) { - ctrl.dateObj = new Date(ctrl.stringValue); - $scope.$apply(); - } - break; - case 'boolean': - if (ctrl.stringValue) { - ctrl.booleanValue = ctrl.stringValue == 'true'; - } - break; - - case 'reference': // reference - if (ctrl.referenceId) { - ctrl.refRequest.attributeSetId = ctrl.referenceId; - ctrl.refRequest.parentType = ctrl.parentType; - ctrl.refRequest.parentId = ctrl.parentId; - - dataService.getList(ctrl.refRequest).then(resp => { - if (resp) { - ctrl.refData = resp; - $rootScope.isBusy = false; - $scope.$apply(); - } else { - if (resp) { - $rootScope.showErrors('Failed'); - } - $rootScope.isBusy = false; - $scope.$apply(); - } - }); - } - break; - default: - if (ctrl.isEncrypt && ctrl.encryptValue) { - var encryptedData = { - key: ctrl.encryptKey, - data: ctrl.encryptValue - }; - ctrl.stringValue = $rootScope.decrypt(encryptedData); - } - break; - } - }, 200); - }; - ctrl.updateStringValue = async function (dataType) { - switch (dataType) { - case 'datetime': - case 'date': - case 'time': - if (ctrl.dateObj != null) { - ctrl.stringValue = ctrl.dateObj.toISOString(); - } - else { - ctrl.stringValue = null; - } - break; - case 'double': - // ctrl.stringValue = ctrl.doubleValue; - break; - case 'boolean': - // ctrl.stringValue = ctrl.booleanValue; - break; + } - default: - ctrl.stringValue = ctrl.doubleValue; - break; } - }; - ctrl.updateRefData = function (item) { - $location.url('/portal/attribute-set-data/details?dataId=' + item.id + '&attributeSetId=' + item.attributeSetId + '&parentType=' + item.parentType + '&parentId=' + item.parentId); - }; - ctrl.removeRefData = async function (data) { - $rootScope.showConfirm(ctrl, 'removeRefDataConfirmed', [data.id], null, 'Remove', 'Deleted data will not able to recover, are you sure you want to delete this item?'); - }; - ctrl.removeRefDataConfirmed = async function (dataId) { - $rootScope.isBusy = true; - var result = await dataService.delete(dataId); - if (result.isSucceed) { - $rootScope.removeObjectByKey(ctrl.refData, 'id', dataId); + } + ctrl.updateTemplateContent = function (content) { + ctrl.template.content = content; + } + ctrl.updateStyleContent = function (content) { + ctrl.template.scripts = content; + } + ctrl.updateScriptContent = function (content) { + ctrl.template.styles = content; + } + }] +}); + +modules.component("mixValueEditor", { + templateUrl: + "/mix-app/views/app-portal/components/mix-value-editor/view.html", + bindings: { + title: "=?", + isSelect: "=?", + stringValue: "=", + type: "=", + }, + controller: [ + "$rootScope", + "$scope", + "ngAppSettings", + "$location", + "RestMixDatabaseDataPortalService", + function ($rootScope, $scope, ngAppSettings, $location, dataService) { + var ctrl = this; + ctrl.icons = ngAppSettings.icons; + ctrl.refData = []; + ctrl.refRequest = angular.copy(ngAppSettings.request); + ctrl.refRequest.pageSize = 100; + ctrl.dataTypes = $rootScope.globalSettings.dataTypes; + ctrl.previousId = null; + ctrl.initData = async function () { + setTimeout(() => { + switch (ctrl.type) { + case "datetime": + case "date": + case "time": + if (ctrl.stringValue) { + ctrl.dateObj = new Date(ctrl.stringValue); + $scope.$apply(); + } + break; + case "boolean": + if (ctrl.stringValue) { + ctrl.booleanValue = ctrl.stringValue == "true"; + } + break; + + case "reference": // reference + if (ctrl.referenceId) { + ctrl.refRequest.mixDatabaseId = ctrl.referenceId; + ctrl.refRequest.parentType = ctrl.parentType; + ctrl.refRequest.parentId = ctrl.parentId; + + dataService.getList(ctrl.refRequest).then((resp) => { + if (resp) { + ctrl.refData = resp; $rootScope.isBusy = false; $scope.$apply(); - } - else { - $rootScope.showMessage('failed'); + } else { + if (resp) { + $rootScope.showErrors("Failed"); + } $rootScope.isBusy = false; $scope.$apply(); - } - }; - }] + } + }); + } + break; + default: + if (ctrl.isEncrypt && ctrl.encryptValue) { + var encryptedData = { + key: ctrl.encryptKey, + data: ctrl.encryptValue, + }; + ctrl.stringValue = $rootScope.decrypt(encryptedData); + } + break; + } + }, 200); + }; + ctrl.updateStringValue = async function (dataType) { + switch (dataType) { + case "datetime": + case "date": + case "time": + if (ctrl.dateObj != null) { + ctrl.stringValue = ctrl.dateObj.toISOString(); + } else { + ctrl.stringValue = null; + } + break; + case "double": + // ctrl.stringValue = ctrl.doubleValue; + break; + case "boolean": + // ctrl.stringValue = ctrl.booleanValue; + break; + + default: + ctrl.stringValue = ctrl.doubleValue; + break; + } + }; + ctrl.updateRefData = function (item) { + $location.url( + "/portal/mix-database-data/details?dataId=" + + item.id + + "&mixDatabaseId=" + + item.mixDatabaseId + + "&parentType=" + + item.parentType + + "&parentId=" + + item.parentId + ); + }; + ctrl.removeRefData = async function (data) { + $rootScope.showConfirm( + ctrl, + "removeRefDataConfirmed", + [data.id], + null, + "Remove", + "Deleted data will not able to recover, are you sure you want to delete this item?" + ); + }; + ctrl.removeRefDataConfirmed = async function (dataId) { + $rootScope.isBusy = true; + var result = await dataService.delete(dataId); + if (result.isSucceed) { + $rootScope.removeObjectByKey(ctrl.refData, "id", dataId); + $rootScope.isBusy = false; + $scope.$apply(); + } else { + $rootScope.showMessage("failed"); + $rootScope.isBusy = false; + $scope.$apply(); + } + }; + }, + ], }); + modules.component("modalBookmark", { templateUrl: "/mix-app/views/app-portal/components/modal-bookmark/modal-bookmark.html", controller: [ @@ -10283,8 +10524,7 @@ modules.component("modalHelper", { if ($rootScope.helperUrl) { ctrl.trustedUrl = $sce.trustAsResourceUrl($rootScope.helperUrl); ctrl.title = "Developer Document"; - } - else { + } else { ctrl.loadHelperUrl(); ctrl.title = "Developer Document"; } @@ -10295,57 +10535,91 @@ modules.component("modalHelper", { ctrl.loadHelperUrl = function () { var portalUrl = $location.url(); // var portalabsUrl = $location.absUrl(); - var defaultUrl = '//docs.mixcore.org'; + var defaultUrl = "//docs.mixcore.org"; ctrl.trustedUrl = $sce.trustAsResourceUrl(defaultUrl); - if (portalUrl.startsWith("/portal")) { - ctrl.trustedUrl = $sce.trustAsResourceUrl(defaultUrl + "/basic-administration-screens"); + ctrl.trustedUrl = $sce.trustAsResourceUrl( + defaultUrl + "/basic-administration-screens" + ); } - if (portalUrl.startsWith("/portal/attribute-set-data/list?attributeSetId=2")) { - ctrl.trustedUrl = $sce.trustAsResourceUrl(defaultUrl + "/basic-usage-navigation"); + if ( + portalUrl.startsWith("/portal/mix-database-data/list?mixDatabaseId=2") + ) { + ctrl.trustedUrl = $sce.trustAsResourceUrl( + defaultUrl + "/basic-usage-navigation" + ); } if (portalUrl.startsWith("/portal/post")) { - ctrl.trustedUrl = $sce.trustAsResourceUrl(defaultUrl + "/basic-usage-writing-posts"); + ctrl.trustedUrl = $sce.trustAsResourceUrl( + defaultUrl + "/basic-usage-writing-posts" + ); } if (portalUrl.startsWith("/portal/page")) { - ctrl.trustedUrl = $sce.trustAsResourceUrl(defaultUrl + "/basic-usage-page"); + ctrl.trustedUrl = $sce.trustAsResourceUrl( + defaultUrl + "/basic-usage-page" + ); } if (portalUrl.startsWith("/portal/module")) { - ctrl.trustedUrl = $sce.trustAsResourceUrl(defaultUrl + "/basic-usage-module"); + ctrl.trustedUrl = $sce.trustAsResourceUrl( + defaultUrl + "/basic-usage-module" + ); } - if (portalUrl.startsWith("/portal/attribute-set")) { - ctrl.trustedUrl = $sce.trustAsResourceUrl(defaultUrl + "/basic-usage-database"); + if (portalUrl.startsWith("/portal/mix-database")) { + ctrl.trustedUrl = $sce.trustAsResourceUrl( + defaultUrl + "/basic-usage-database" + ); } - if (portalUrl.startsWith("/portal/attribute-set-data/list?attributeSetId=7")) { - ctrl.trustedUrl = $sce.trustAsResourceUrl(defaultUrl + "/basic-usage-category"); + if ( + portalUrl.startsWith("/portal/mix-database-data/list?mixDatabaseId=7") + ) { + ctrl.trustedUrl = $sce.trustAsResourceUrl( + defaultUrl + "/basic-usage-category" + ); } - if (portalUrl.startsWith("/portal/attribute-set-data/list?attributeSetId=8")) { - ctrl.trustedUrl = $sce.trustAsResourceUrl(defaultUrl + "/basic-usage-tag"); + if ( + portalUrl.startsWith("/portal/mix-database-data/list?mixDatabaseId=8") + ) { + ctrl.trustedUrl = $sce.trustAsResourceUrl( + defaultUrl + "/basic-usage-tag" + ); } if (portalUrl.startsWith("/portal/media")) { - ctrl.trustedUrl = $sce.trustAsResourceUrl(defaultUrl + "/basic-usage-media"); + ctrl.trustedUrl = $sce.trustAsResourceUrl( + defaultUrl + "/basic-usage-media" + ); } if (portalUrl.startsWith("/portal/file")) { - ctrl.trustedUrl = $sce.trustAsResourceUrl(defaultUrl + "/basic-usage-file"); + ctrl.trustedUrl = $sce.trustAsResourceUrl( + defaultUrl + "/basic-usage-file" + ); } if (portalUrl.startsWith("/portal/user")) { - ctrl.trustedUrl = $sce.trustAsResourceUrl(defaultUrl + "/basic-usage-user"); + ctrl.trustedUrl = $sce.trustAsResourceUrl( + defaultUrl + "/basic-usage-user" + ); } if (portalUrl.startsWith("/portal/theme")) { - ctrl.trustedUrl = $sce.trustAsResourceUrl(defaultUrl + "/basic-usage-theme"); + ctrl.trustedUrl = $sce.trustAsResourceUrl( + defaultUrl + "/basic-usage-theme" + ); } if (portalUrl.startsWith("/portal/app-settings")) { - ctrl.trustedUrl = $sce.trustAsResourceUrl(defaultUrl + "/basic-usage-app-settings"); + ctrl.trustedUrl = $sce.trustAsResourceUrl( + defaultUrl + "/basic-usage-app-settings" + ); } if (portalUrl.startsWith("/portal/configuration")) { - ctrl.trustedUrl = $sce.trustAsResourceUrl(defaultUrl + "/basic-usage-configuration"); + ctrl.trustedUrl = $sce.trustAsResourceUrl( + defaultUrl + "/basic-usage-configuration" + ); } if (portalUrl.startsWith("/portal/my-profile")) { - ctrl.trustedUrl = $sce.trustAsResourceUrl(defaultUrl + "/basic-usage-users-profile"); + ctrl.trustedUrl = $sce.trustAsResourceUrl( + defaultUrl + "/basic-usage-users-profile" + ); } - // switch (portalUrl) { // case '/portal': // default: @@ -10357,189 +10631,211 @@ modules.component("modalHelper", { ], }); -modules.component('modalNavDatas', { - templateUrl: '/mix-app/views/app-portal/components/modal-nav-datas/view.html', - bindings: { - attributeSetId: '=?', - attributeSetName: '=?', - parentId: '=?', - parentType: '=?', - type: '=?', - fieldDisplay: '=?', - selectedList: '=?', - selectCallback: '&', - save: '&' - }, - controller: ['$rootScope', '$scope', 'ngAppSettings', 'RestAttributeSetDataPortalService', 'RestRelatedAttributeSetPortalService', - function ($rootScope, $scope, ngAppSettings, service, navService) { - var ctrl = this; - ctrl.request = angular.copy(ngAppSettings.request); - ctrl.request.key = 'readData'; - ctrl.navs = []; +modules.component("modalNavDatas", { + templateUrl: "/mix-app/views/app-portal/components/modal-nav-datas/view.html", + bindings: { + mixDatabaseId: "=?", + mixDatabaseName: "=?", + parentId: "=?", + parentType: "=?", + type: "=?", + fieldDisplay: "=?", + selectedList: "=?", + selectCallback: "&", + save: "&", + }, + controller: [ + "$rootScope", + "$scope", + "ngAppSettings", + "RestMixDatabaseDataPortalService", + "RestRelatedMixDatabasePortalService", + function ($rootScope, $scope, ngAppSettings, service, navService) { + var ctrl = this; + ctrl.request = angular.copy(ngAppSettings.request); + ctrl.request.key = "readData"; + ctrl.navs = []; - ctrl.queries = {}; - ctrl.data = { items: [] } - ctrl.$onInit = function () { - if (!ctrl.selectedList) { - ctrl.selectedList = []; - } - if (ctrl.attributeSetId) { - ctrl.request.query = 'attributeSetId=' + ctrl.attributeSetId; - } - if (ctrl.attributeSetName) { - ctrl.request.query += '&attributeSetName=' + ctrl.attributeSetName; - } - } - ctrl.loadData = async function (pageIndex) { - ctrl.request.query = ''; - if (pageIndex !== undefined) { - ctrl.request.pageIndex = pageIndex; - } - if (ctrl.request.fromDate !== null) { - var d = new Date(ctrl.request.fromDate); - ctrl.request.fromDate = d.toISOString(); - } - if (ctrl.request.toDate !== null) { - var d = new Date(ctrl.request.toDate); - ctrl.request.toDate = d.toISOString(); - } - if (ctrl.attributeSetId) { - ctrl.request.query = 'attributeSetId=' + ctrl.attributeSetId; - } - if (ctrl.attributeSetName) { - ctrl.request.query += '&attributeSetName=' + ctrl.attributeSetName; - } - Object.keys(ctrl.queries).forEach(e => { - if (ctrl.queries[e]) { - ctrl.request.query += '&' + e + '=' + ctrl.queries[e]; - } - }); - var response = await service.getList(ctrl.request); - if (response.isSucceed) { - ctrl.data = response.data; - ctrl.navs = []; - angular.forEach(response.data.items, function (e) { - e.disabled = $rootScope.findObjectByKey(ctrl.selectedList, 'id', e.id) != null; - // var item = { - // priority: e.priority, - // description: e.data.title, - // postId: e.id, - // image: e.thumbnailUrl, - // specificulture: e.specificulture, - // status: 'Published', - // isActived: false - // }; - // item[ctrl.srcField] = ctrl.srcId; - // ctrl.navs.push(item); - }); - $rootScope.isBusy = false; - $scope.$apply(); - } - else { - $rootScope.showErrors(response.errors); - $rootScope.isBusy = false; - $scope.$apply(); - } + ctrl.queries = {}; + ctrl.data = { items: [] }; + ctrl.$onInit = function () { + if (!ctrl.selectedList) { + ctrl.selectedList = []; + } + if (ctrl.mixDatabaseId) { + ctrl.request.query = "mixDatabaseId=" + ctrl.mixDatabaseId; + } + if (ctrl.mixDatabaseName) { + ctrl.request.query += "&mixDatabaseName=" + ctrl.mixDatabaseName; + } + }; + ctrl.loadData = async function (pageIndex) { + ctrl.request.query = ""; + if (pageIndex !== undefined) { + ctrl.request.pageIndex = pageIndex; + } + if (ctrl.request.fromDate !== null) { + var d = new Date(ctrl.request.fromDate); + ctrl.request.fromDate = d.toISOString(); + } + if (ctrl.request.toDate !== null) { + var d = new Date(ctrl.request.toDate); + ctrl.request.toDate = d.toISOString(); + } + if (ctrl.mixDatabaseId) { + ctrl.request.query = "mixDatabaseId=" + ctrl.mixDatabaseId; + } + if (ctrl.mixDatabaseName) { + ctrl.request.query += "&mixDatabaseName=" + ctrl.mixDatabaseName; + } + Object.keys(ctrl.queries).forEach((e) => { + if (ctrl.queries[e]) { + ctrl.request.query += "&" + e + "=" + ctrl.queries[e]; + } + }); + var response = await service.getList(ctrl.request); + if (response.isSucceed) { + ctrl.data = response.data; + ctrl.navs = []; + angular.forEach(response.data.items, function (e) { + e.disabled = + $rootScope.findObjectByKey(ctrl.selectedList, "id", e.id) != null; + // var item = { + // priority: e.priority, + // description: e.data.title, + // postId: e.id, + // image: e.thumbnailUrl, + // specificulture: e.specificulture, + // status: 'Published', + // isActived: false + // }; + // item[ctrl.srcField] = ctrl.srcId; + // ctrl.navs.push(item); + }); + $rootScope.isBusy = false; + $scope.$apply(); + } else { + $rootScope.showErrors(response.errors); + $rootScope.isBusy = false; + $scope.$apply(); + } + }; + ctrl.select = function (data) { + if (data.isActived) { + if (ctrl.parentId) { + var nav = { + specificulture: data.specificulture, + mixDatabaseName: ctrl.mixDatabaseName, + parentId: ctrl.parentId, + parentType: ctrl.parentType, + id: data.id, }; - ctrl.select = function (data) { - if (data.isActived) { - if (ctrl.parentId) { - var nav = { - specificulture: data.specificulture, - attributesetName: ctrl.attributeSetName, - parentId: ctrl.parentId, - parentType: ctrl.parentType, - id: data.id - } - navService.save(nav).then(resp => { - if (resp.isSucceed) { - var current = $rootScope.findObjectByKey(ctrl.selectedList, 'id', data.id); - if (!current) { - data.disabled = true; - ctrl.selectedList.push(data); - } - $rootScope.showMessage('success', 'success'); - $rootScope.isBusy = false; - $scope.$apply(); - } else { - $rootScope.showMessage('failed'); - $rootScope.isBusy = false; - $scope.$apply(); - } - }); - } - else { - var current = $rootScope.findObjectByKey(ctrl.selectedList, 'id', data.id); - if (!current) { - data.disabled = true; - ctrl.selectedList.push(data); - } - - } - } - else { - if (ctrl.parentId) { - navService.delete([ctrl.parentId, ctrl.parentType, data.id]).then(resp => { - if (resp.isSucceed) { - data.disabled = false; - var tmp = $rootScope.findObjectByKey(ctrl.data.items, 'id', data.id); - if (tmp) { - tmp.disabled = false; - } - $rootScope.removeObjectByKey(ctrl.selectedList, 'id', data.id); - $rootScope.showMessage('success', 'success'); - $rootScope.isBusy = false; - $scope.$apply(); - } else { - $rootScope.showMessage('failed'); - $rootScope.isBusy = false; - $scope.$apply(); - } - }); - } - else { - data.disabled = false; - var tmp = $rootScope.findObjectByKey(ctrl.data.items, 'id', data.id); - if (tmp) { - tmp.disabled = false; - } - $rootScope.removeObjectByKey(ctrl.selectedList, 'id', data.id); - } - + navService.save(nav).then((resp) => { + if (resp.isSucceed) { + var current = $rootScope.findObjectByKey( + ctrl.selectedList, + "id", + data.id + ); + if (!current) { + data.disabled = true; + ctrl.selectedList.push(data); } - if (ctrl.selectCallback) { - ctrl.selectCallback({ data: data }); + $rootScope.showMessage("success", "success"); + $rootScope.isBusy = false; + $scope.$apply(); + } else { + $rootScope.showMessage("failed"); + $rootScope.isBusy = false; + $scope.$apply(); + } + }); + } else { + var current = $rootScope.findObjectByKey( + ctrl.selectedList, + "id", + data.id + ); + if (!current) { + data.disabled = true; + ctrl.selectedList.push(data); + } + } + } else { + if (ctrl.parentId) { + navService + .delete([ctrl.parentId, ctrl.parentType, data.id]) + .then((resp) => { + if (resp.isSucceed) { + data.disabled = false; + var tmp = $rootScope.findObjectByKey( + ctrl.data.items, + "id", + data.id + ); + if (tmp) { + tmp.disabled = false; + } + $rootScope.removeObjectByKey( + ctrl.selectedList, + "id", + data.id + ); + $rootScope.showMessage("success", "success"); + $rootScope.isBusy = false; + $scope.$apply(); + } else { + $rootScope.showMessage("failed"); + $rootScope.isBusy = false; + $scope.$apply(); } - }; - ctrl.createData = function () { - var data = { - title: ctrl.newTitle, - slug: $rootScope.generateKeyword(ctrl.newTitle, '-'), - type: ctrl.type - }; - service.saveByName(ctrl.attributeSetName, data).then(resp => { - if (resp.isSucceed) { - ctrl.data.items.push(resp.data); - $rootScope.showMessage('success', 'success'); - $rootScope.isBusy = false; - $scope.$apply(); - } else { - $rootScope.showMessage('failed'); - $rootScope.isBusy = false; - $scope.$apply(); - } - }); + }); + } else { + data.disabled = false; + var tmp = $rootScope.findObjectByKey( + ctrl.data.items, + "id", + data.id + ); + if (tmp) { + tmp.disabled = false; } + $rootScope.removeObjectByKey(ctrl.selectedList, "id", data.id); + } } - - ] + if (ctrl.selectCallback) { + ctrl.selectCallback({ data: data }); + } + }; + ctrl.createData = function () { + var data = { + title: ctrl.newTitle, + slug: $rootScope.generateKeyword(ctrl.newTitle, "-"), + type: ctrl.type, + }; + service.saveByName(ctrl.mixDatabaseName, data).then((resp) => { + if (resp.isSucceed) { + ctrl.data.items.push(resp.data); + $rootScope.showMessage("success", "success"); + $rootScope.isBusy = false; + $scope.$apply(); + } else { + $rootScope.showMessage("failed"); + $rootScope.isBusy = false; + $scope.$apply(); + } + }); + }; + }, + ], }); + modules.component("modalNavMetas", { templateUrl: "/mix-app/views/app-portal/components/modal-nav-metas/view.html", bindings: { header: "=", - attributeSetId: "=?", - attributeSetName: "=?", + mixDatabaseId: "=?", + mixDatabaseName: "=?", parentId: "=?", parentType: "=?", type: "=?", @@ -10554,9 +10850,9 @@ modules.component("modalNavMetas", { "$scope", "$routeParams", "ngAppSettings", - "RestAttributeSetDataPortalService", + "RestMixDatabaseDataPortalService", "RestRelatedAttributeDataPortalService", - "RestAttributeFieldPortalService", + "RestMixDatabaseColumnPortalService", function ( $rootScope, $scope, @@ -10580,11 +10876,11 @@ modules.component("modalNavMetas", { angular.forEach(ctrl.selectedList, function (e) { e.isActived = true; }); - if (ctrl.attributeSetId) { - ctrl.request.attributeSetId = ctrl.attributeSetId; + if (ctrl.mixDatabaseId) { + ctrl.request.mixDatabaseId = ctrl.mixDatabaseId; } - if (ctrl.attributeSetName) { - ctrl.request.attributeSetName = ctrl.attributeSetName; + if (ctrl.mixDatabaseName) { + ctrl.request.mixDatabaseName = ctrl.mixDatabaseName; } ctrl.loadDefaultModel(); }; @@ -10595,8 +10891,8 @@ modules.component("modalNavMetas", { dataId: null, parentId: ctrl.parentId, parentType: ctrl.parentType, - attributeSetId: ctrl.attributeSetId, - attributeSetName: ctrl.attributeSetName, + mixDatabaseId: ctrl.mixDatabaseId, + mixDatabaseName: ctrl.mixDatabaseName, status: "Published", attributeData: null, }; @@ -10608,7 +10904,7 @@ modules.component("modalNavMetas", { } if (!ctrl.fields) { var getFields = await fieldService.initData( - ctrl.attributeSetName || ctrl.attributeSetId + ctrl.mixDatabaseName || ctrl.mixDatabaseId ); if (getFields.isSucceed) { ctrl.fields = getFields.data; @@ -10616,12 +10912,12 @@ modules.component("modalNavMetas", { } } var getDefault = await dataService.initData( - ctrl.attributeSetName || ctrl.attributeSetId + ctrl.mixDatabaseName || ctrl.mixDatabaseId ); ctrl.defaultData = getDefault.data; if (ctrl.defaultData) { - ctrl.defaultData.attributeSetId = ctrl.attributeSetId || 0; - ctrl.defaultData.attributeSetName = ctrl.attributeSetName; + ctrl.defaultData.mixDatabaseId = ctrl.mixDatabaseId || 0; + ctrl.defaultData.mixDatabaseName = ctrl.mixDatabaseName; // ctrl.defaultData.parentId = ctrl.parentId; // ctrl.defaultData.parentType = ctrl.parentType; } @@ -10647,11 +10943,11 @@ modules.component("modalNavMetas", { var d = new Date(ctrl.request.toDate); ctrl.request.toDate = d.toISOString(); } - if (ctrl.attributeSetId) { - ctrl.request.attributeSetId = ctrl.attributeSetId; + if (ctrl.mixDatabaseId) { + ctrl.request.mixDatabaseId = ctrl.mixDatabaseId; } - if (ctrl.attributeSetName) { - ctrl.request.attributeSetName = ctrl.attributeSetName; + if (ctrl.mixDatabaseName) { + ctrl.request.mixDatabaseName = ctrl.mixDatabaseName; } if (ctrl.type) { ctrl.request.type = ctrl.type; @@ -10670,11 +10966,11 @@ modules.component("modalNavMetas", { // Not show data if there's in selected list ctrl.data.items.push({ specificulture: e.specificulture, - attributesetName: ctrl.attributeSetName, + mixDatabaseName: ctrl.mixDatabaseName, parentId: ctrl.parentId, parentType: ctrl.parentType, dataId: e.id, - attributeData: e + attributeData: e, }); }); ctrl.filterData(); @@ -10690,7 +10986,8 @@ modules.component("modalNavMetas", { angular.forEach(ctrl.data.items, function (e) { // Not show data if there's in selected list e.disabled = - $rootScope.findObjectByKey(ctrl.selectedList, "dataId", e.dataId) != null; + $rootScope.findObjectByKey(ctrl.selectedList, "dataId", e.dataId) != + null; e.attributeData.disabled = e.disabled; }); }; @@ -10784,7 +11081,7 @@ modules.component("modalNavMetas", { if (!tmp) { ctrl.isBusy = true; ctrl.attrData.parentId = 0; - ctrl.attrData.parentType = 'Set'; + ctrl.attrData.parentType = "Set"; ctrl.attrData.obj.title = ctrl.newTitle; ctrl.attrData.obj.slug = $rootScope.generateKeyword( ctrl.newTitle, @@ -11356,138 +11653,6 @@ modules.component('portalThemeSettings', { } }] }); -modules.component('postAttributeSetForm', { - templateUrl: '/mix-app/views/app-portal/components/post-attribute-set-form/view.html', - bindings: { - setId: '=', - data: '=', - attributes: '=', - defaultData: '=?', - saveData: '&?' - }, - controller: ['$rootScope', '$scope', 'AttributeDataService', - function ($rootScope, $scope, service) { - var ctrl = this; - ctrl.attributes = []; - ctrl.selectedProp = null; - ctrl.settings = $rootScope.globalSettings; - ctrl.$onInit = async function () { - if (!ctrl.defaultData) { - var getData = await service.getSingle(['post', ctrl.setId, 'portal']); - if (getData.isSucceed) { - ctrl.defaultData = getData.data; - if (!ctrl.data) { - ctrl.data = angular.copy(ctrl.defaultData); - } - $rootScope.isBusy = false; - $scope.$apply(); - } else { - if (getData) { - $rootScope.showErrors(getData.errors); - } - $rootScope.isBusy = false; - $scope.$apply(); - } - - } else { - if (!ctrl.data) { - ctrl.data = angular.copy(ctrl.defaultData); - } - } - }; - ctrl.submit = async function () { - - if (ctrl.saveData) { - var result = await ctrl.saveData({ data: ctrl.data }); - if (result.isSucceed) { - ctrl.data = angular.copy(ctrl.defaultData); - } - } - else { - angular.forEach(ctrl.data.data, function (e) { - //Encrypt field before send - if (e.field.isEncrypt) { - var encryptData = $rootScope.encrypt(e.stringValue); - e.encryptKey = encryptData.key; - e.encryptValue = encryptData.data; - e.stringValue = null; - } - }); - var saveResult = await service.save(ctrl.data); - if (saveResult.isSucceed) { - - } else { - if (saveResult) { - $rootScope.showErrors(saveResult.errors); - } - $rootScope.isBusy = false; - $scope.$apply(); - } - - } - }; - - ctrl.filterData = function (attributeName) { - if (ctrl.data) { - var attr = $rootScope.findObjectByKey(ctrl.data.data, 'attributeName', attributeName); - if (!attr) { - attr = angular.copy($rootScope.findObjectByKey(ctrl.defaultData.data, 'attributeName', attributeName)); - ctrl.data.data.push(attr); - } - return attr; - } - }; - }] -}); -modules.component('postAttributeSetValues', { - templateUrl: '/mix-app/views/app-portal/components/post-attribute-set-values/view.html', - bindings: { - header: '=', - data: '=', - columns: '=?', - onUpdate: '&?', - onDelete: '&?', - }, - controller: ['$rootScope', '$scope', - function ($rootScope, $scope) { - var ctrl = this; - ctrl.selectedProp = null; - - ctrl.settings = $rootScope.globalSettings; - ctrl.$onInit = function () { - if (ctrl.data.length && !ctrl.columns) { - ctrl.columns = ctrl.data[0].data; - } - }; - - ctrl.update = function (data) { - ctrl.onUpdate({ data: data }); - }; - - ctrl.delete = function (data) { - ctrl.onDelete({ data: data }); - }; - - ctrl.filterData = function (item, attributeName) { - return $rootScope.findObjectByKey(item.data, 'attributeName', attributeName); - }; - - ctrl.dragStart = function (index) { - ctrl.dragStartIndex = index; - }; - ctrl.updateOrders = function (index) { - if (index > ctrl.dragStartIndex) { - ctrl.data.splice(ctrl.dragStartIndex, 1); - } - else { - ctrl.data.splice(ctrl.dragStartIndex + 1, 1); - } - angular.forEach(ctrl.data, function (e, i) { - e.priority = i; - }); - }; - }] -}); modules.component('propertiesStructure', { templateUrl: '/mix-app/views/app-portal/components/properties-structure/view.html', controller: ['$rootScope', '$scope', @@ -11710,168 +11875,174 @@ modules.component('relatedNavs', { loadData: '&' } }); -modules.component('serviceHubPortal', { - templateUrl: '/mix-app/views/app-portal/components/service-hub-portal/view.html', - bindings: { - attributeSetName: '=', - isSave: '=?' - }, - controller: ['$rootScope', '$scope', 'RestAttributeFieldPortalService', 'RestAttributeSetDataClientService', 'UserServices', - function ($rootScope, $scope, fieldService, service, userServices) { - var ctrl = this; - BaseHub.call(this, ctrl); - ctrl.settings = $rootScope.globalSettings; - ctrl.user = { - loggedIn: false, - connection: {} - }; - ctrl.attrData = null; - ctrl.isHide = true; - ctrl.hideContact = true; - ctrl.fields = []; - ctrl.members = []; - ctrl.errors = []; - ctrl.messages = { - items: [] - }; - ctrl.message = { connection: {}, content: '' }; - ctrl.request = { - uid: '', - specificulture: '', - action: '', - objectType: null, - data: {}, - room: '', - isMyself: true, - isSave: false - }; - ctrl.init = function () { - ctrl.attributeSetId = ctrl.attributeSetId || 0; - ctrl.request.specificulture = service.lang; - ctrl.request.room = ctrl.attributeSetName; - ctrl.request.isSave = ctrl.isSave == 'true' || false; - ctrl.startConnection('serviceHub', ctrl.checkLoginStatus); - }; - ctrl.loadData = async function () { - - /* +modules.component("serviceHubPortal", { + templateUrl: + "/mix-app/views/app-portal/components/service-hub-portal/view.html", + bindings: { + mixDatabaseName: "=", + isSave: "=?", + }, + controller: [ + "$rootScope", + "$scope", + "RestMixDatabaseColumnPortalService", + "RestMixDatabaseDataClientService", + "UserServices", + function ($rootScope, $scope, fieldService, service, userServices) { + var ctrl = this; + BaseHub.call(this, ctrl); + ctrl.settings = $rootScope.globalSettings; + ctrl.user = { + loggedIn: false, + connection: {}, + }; + ctrl.attrData = null; + ctrl.isHide = true; + ctrl.hideContact = true; + ctrl.fields = []; + ctrl.members = []; + ctrl.errors = []; + ctrl.messages = { + items: [], + }; + ctrl.message = { connection: {}, content: "" }; + ctrl.request = { + uid: "", + specificulture: "", + action: "", + objectType: null, + data: {}, + room: "", + isMyself: true, + isSave: false, + }; + ctrl.init = function () { + ctrl.mixDatabaseId = ctrl.mixDatabaseId || 0; + ctrl.request.specificulture = service.lang; + ctrl.request.room = ctrl.mixDatabaseName; + ctrl.request.isSave = ctrl.isSave == "true" || false; + ctrl.startConnection("serviceHub", ctrl.checkLoginStatus); + }; + ctrl.loadData = async function () { + /* If input is data id => load ctrl.attrData from service and handle it independently Else modify input ctrl.attrData */ - $rootScope.isBusy = true; - var getDefault = await service.initData(ctrl.attributeSetName); - if (getDefault.isSucceed) { - ctrl.defaultData = getDefault.data; - ctrl.defaultData.data.user_name = ctrl.user.connection.name; - ctrl.defaultData.data.user_id = ctrl.user.connection.id; - ctrl.defaultData.data.user_avatar = ctrl.user.connection.avatar; - ctrl.defaultData.data.data_type = 9; - ctrl.attrData = angular.copy(ctrl.defaultData); - $rootScope.isBusy = false; - } - var getFields = await fieldService.initData(ctrl.attributeSetName); - if (getFields.isSucceed) { - ctrl.fields = getFields.data; - } - }; - ctrl.submit = async function () { - if (ctrl.validate()) { - ctrl.request.action = "send_group_message"; - ctrl.request.uid = ctrl.user.connection.id; - ctrl.request.data = ctrl.attrData.data; - ctrl.request.connection = ctrl.user.connection; - ctrl.connection.invoke('HandleRequest', JSON.stringify(ctrl.request)); - ctrl.attrData = angular.copy(ctrl.defaultData); - } - }; - ctrl.validate = function () { - var isValid = true; - ctrl.errors = []; - angular.forEach(ctrl.fields, function (field) { - if (field.regex) { - var regex = RegExp(field.regex, 'g'); - isValid = regex.test(ctrl.attrData.data[field.name]); - if (!isValid) { - ctrl.errors.push(`${field.name} is not match Regex`); - } - } - if (isValid && field.isEncrypt) { - ctrl.attrData.data[field.name] = $rootScope.encrypt(ctrl.attrData.data[field.name]); - } - - }); - return isValid; - }; - ctrl.receiveMessage = function (msg) { - switch (msg.responseKey) { - case 'NewMember': - ctrl.newMember(msg.data); - // $('.widget-conversation').scrollTop = $('.widget-conversation')[0].scrollHeight; - break; - case 'NewMessage': - ctrl.newMessage(msg.data); - break; - case 'ConnectSuccess': - ctrl.user.loggedIn = true; - ctrl.initListMember(msg.data); - $scope.$apply(); - break; - case 'PreviousMessages': - ctrl.messages = msg.data; - $scope.$apply(); - break; - case 'MemberOffline': - ctrl.removeMember(msg.data); - break; - case 'Error': - console.error(msg.data); - break; - - } - - }; - ctrl.newMessage = function (msg) { - ctrl.messages.items.push(msg); - $scope.$apply(); - }; - ctrl.newMember = function (member) { - var m = $rootScope.findObjectByKey(ctrl.members, 'id', member.id); - if (!m) { - ctrl.members.push(member); - } - $scope.$apply(); - }; - ctrl.join = async function () { - ctrl.request.action = "join_group"; - ctrl.request.uid = ctrl.user.connection.id; - ctrl.request.data = ctrl.user.connection; - ctrl.message.connection = ctrl.user.connection; - ctrl.connection.invoke('HandleRequest', JSON.stringify(ctrl.request)); - await ctrl.loadData(); - $scope.$apply(); - }; - ctrl.initListMember = function (data) { - data.forEach(member => { - var index = ctrl.members.findIndex(x => x.id === member.id); - if (index < 0) { - ctrl.members.splice(0, 0, member); - } - }); + $rootScope.isBusy = true; + var getDefault = await service.initData(ctrl.mixDatabaseName); + if (getDefault.isSucceed) { + ctrl.defaultData = getDefault.data; + ctrl.defaultData.data.user_name = ctrl.user.connection.name; + ctrl.defaultData.data.user_id = ctrl.user.connection.id; + ctrl.defaultData.data.user_avatar = ctrl.user.connection.avatar; + ctrl.defaultData.data.data_type = 9; + ctrl.attrData = angular.copy(ctrl.defaultData); + $rootScope.isBusy = false; + } + var getFields = await fieldService.initData(ctrl.mixDatabaseName); + if (getFields.isSucceed) { + ctrl.fields = getFields.data; + } + }; + ctrl.submit = async function () { + if (ctrl.validate()) { + ctrl.request.action = "send_group_message"; + ctrl.request.uid = ctrl.user.connection.id; + ctrl.request.data = ctrl.attrData.data; + ctrl.request.connection = ctrl.user.connection; + ctrl.connection.invoke("HandleRequest", JSON.stringify(ctrl.request)); + ctrl.attrData = angular.copy(ctrl.defaultData); + } + }; + ctrl.validate = function () { + var isValid = true; + ctrl.errors = []; + angular.forEach(ctrl.fields, function (field) { + if (field.regex) { + var regex = RegExp(field.regex, "g"); + isValid = regex.test(ctrl.attrData.data[field.name]); + if (!isValid) { + ctrl.errors.push(`${field.name} is not match Regex`); + } + } + if (isValid && field.isEncrypt) { + ctrl.attrData.data[field.name] = $rootScope.encrypt( + ctrl.attrData.data[field.name] + ); + } + }); + return isValid; + }; + ctrl.receiveMessage = function (msg) { + switch (msg.responseKey) { + case "NewMember": + ctrl.newMember(msg.data); + // $('.widget-conversation').scrollTop = $('.widget-conversation')[0].scrollHeight; + break; + case "NewMessage": + ctrl.newMessage(msg.data); + break; + case "ConnectSuccess": + ctrl.user.loggedIn = true; + ctrl.initListMember(msg.data); + $scope.$apply(); + break; + case "PreviousMessages": + ctrl.messages = msg.data; + $scope.$apply(); + break; + case "MemberOffline": + ctrl.removeMember(msg.data); + break; + case "Error": + console.error(msg.data); + break; + } + }; + ctrl.newMessage = function (msg) { + ctrl.messages.items.push(msg); + $scope.$apply(); + }; + ctrl.newMember = function (member) { + var m = $rootScope.findObjectByKey(ctrl.members, "id", member.id); + if (!m) { + ctrl.members.push(member); + } + $scope.$apply(); + }; + ctrl.join = async function () { + ctrl.request.action = "join_group"; + ctrl.request.uid = ctrl.user.connection.id; + ctrl.request.data = ctrl.user.connection; + ctrl.message.connection = ctrl.user.connection; + ctrl.connection.invoke("HandleRequest", JSON.stringify(ctrl.request)); + await ctrl.loadData(); + $scope.$apply(); + }; + ctrl.initListMember = function (data) { + data.forEach((member) => { + var index = ctrl.members.findIndex((x) => x.id === member.id); + if (index < 0) { + ctrl.members.splice(0, 0, member); + } + }); - $scope.$apply(); - }; + $scope.$apply(); + }; - ctrl.checkLoginStatus = async function () { - var response = await userServices.getMyProfile(); - ctrl.user.connection.name = response.data.username; - ctrl.user.connection.id = response.data.id; - ctrl.user.connection.connectionId = ctrl.connection.connectionId; - ctrl.user.connection.avatar = response.data.avatar; - ctrl.user.loggedIn = true; - ctrl.join(); - }; - }] + ctrl.checkLoginStatus = async function () { + var response = await userServices.getMyProfile(); + ctrl.user.connection.name = response.data.username; + ctrl.user.connection.id = response.data.id; + ctrl.user.connection.connectionId = ctrl.connection.connectionId; + ctrl.user.connection.avatar = response.data.avatar; + ctrl.user.loggedIn = true; + ctrl.join(); + }; + }, + ], }); + modules.component('templateEditor', { templateUrl: '/mix-app/views/app-portal/components/template-editor/templateEditor.html', bindings: { diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/js/app-security.min.js b/src/Mix.Cms.Web/wwwroot/mix-app/js/app-security.min.js index 4759f392e..314205692 100644 --- a/src/Mix.Cms.Web/wwwroot/mix-app/js/app-security.min.js +++ b/src/Mix.Cms.Web/wwwroot/mix-app/js/app-security.min.js @@ -27,6 +27,81 @@ app.config(function ($routeProvider, $locationProvider, $sceProvider) { $routeProvider.otherwise({ redirectTo: "/security/login" }); }); +'use strict'; +app.controller('LoginController', ['$rootScope', '$scope', '$routeParams', '$location', 'AuthService', + function ($rootScope, $scope, $routeParams, $location, authService) { + if (authService.authentication && authService.authentication.isAuth && authService.authentication && authService.authentication.isAdmin) { + authService.referredUrl = $location.path(); + $location.path('/portal'); + } + + $scope.pageClass = 'page-login'; + + $scope.loginData = { + userName: "", + password: "", + rememberMe: false + }; + + $scope.message = ""; + $scope.$on('$viewContentLoaded', function () { + $rootScope.isBusy = false; + }); + $scope.login = async function () { + var result = await authService.login($scope.loginData); + if (result) { + $rootScope.isBusy = false; + $scope.message = result.errors[0]; + $scope.$apply(); + } + + }; + + $scope.authExternalProvider = function (provider) { + + var redirectUri = location.protocol + '//' + location.host + '/authcomplete.html'; + + var externalProviderUrl = ngAuthSettings.apiServiceBaseUri + "api/Account/ExternalLogin?provider=" + provider + + "&response_type=token&client_id=" + ngAuthSettings.clientId + + "&redirect_uri=" + redirectUri; + window.$windowScope = $scope; + + var oauthWindow = window.open(externalProviderUrl, "Authenticate Account", "location=0,status=0,width=600,height=750"); + }; + + $scope.authCompletedCB = function (fragment) { + + $scope.$apply(function () { + + if (fragment.haslocalaccount === 'False') { + + authService.logOut(); + + authService.externalAuthData = { + provider: fragment.provider, + userName: fragment.external_user_name, + externalAccessToken: fragment.external_access_token + }; + + $location.path('/associate'); + + } + else { + //Obtain access token and redirect to orders + var externalData = { provider: fragment.provider, externalAccessToken: fragment.external_access_token }; + authService.obtainAccessToken(externalData).then(function (response) { + + $location.path('/orders'); + + }, + function (err) { + $scope.message = err.error_description; + }); + } + + }); + } + }]); 'use strict'; app.controller('ForgotPasswordController', ['$rootScope', '$scope', 'ngAppSettings', '$location', 'AuthService', function ($rootScope, $scope, ngAppSettings, $location, authService) { if (authService.authentication && authService.authentication.isAuth && authService.authentication && authService.authentication.isAdmin) { @@ -104,81 +179,6 @@ app.controller('ForgotPasswordController', ['$rootScope', '$scope', 'ngAppSettin } }]); 'use strict'; -app.controller('LoginController', ['$rootScope', '$scope', '$routeParams', '$location', 'AuthService', - function ($rootScope, $scope, $routeParams, $location, authService) { - if (authService.authentication && authService.authentication.isAuth && authService.authentication && authService.authentication.isAdmin) { - authService.referredUrl = $location.path(); - $location.path('/portal'); - } - - $scope.pageClass = 'page-login'; - - $scope.loginData = { - userName: "", - password: "", - rememberMe: false - }; - - $scope.message = ""; - $scope.$on('$viewContentLoaded', function () { - $rootScope.isBusy = false; - }); - $scope.login = async function () { - var result = await authService.login($scope.loginData); - if (result) { - $rootScope.isBusy = false; - $scope.message = result.errors[0]; - $scope.$apply(); - } - - }; - - $scope.authExternalProvider = function (provider) { - - var redirectUri = location.protocol + '//' + location.host + '/authcomplete.html'; - - var externalProviderUrl = ngAuthSettings.apiServiceBaseUri + "api/Account/ExternalLogin?provider=" + provider - + "&response_type=token&client_id=" + ngAuthSettings.clientId - + "&redirect_uri=" + redirectUri; - window.$windowScope = $scope; - - var oauthWindow = window.open(externalProviderUrl, "Authenticate Account", "location=0,status=0,width=600,height=750"); - }; - - $scope.authCompletedCB = function (fragment) { - - $scope.$apply(function () { - - if (fragment.haslocalaccount === 'False') { - - authService.logOut(); - - authService.externalAuthData = { - provider: fragment.provider, - userName: fragment.external_user_name, - externalAccessToken: fragment.external_access_token - }; - - $location.path('/associate'); - - } - else { - //Obtain access token and redirect to orders - var externalData = { provider: fragment.provider, externalAccessToken: fragment.external_access_token }; - authService.obtainAccessToken(externalData).then(function (response) { - - $location.path('/orders'); - - }, - function (err) { - $scope.message = err.error_description; - }); - } - - }); - } - }]); -'use strict'; app.controller('RegisterController', ['$scope', '$rootScope', 'RegisterServices', function ($scope, $rootScope, services) { diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/js/app-shared.min.js b/src/Mix.Cms.Web/wwwroot/mix-app/js/app-shared.min.js index b5ad2240c..8ce860546 100644 --- a/src/Mix.Cms.Web/wwwroot/mix-app/js/app-shared.min.js +++ b/src/Mix.Cms.Web/wwwroot/mix-app/js/app-shared.min.js @@ -591,9 +591,9 @@ app.run([ function (resp) { console.log( "Success " + - resp.config.data.file.name + - "uploaded. Response: " + - resp.data + resp.config.data.file.name + + "uploaded. Response: " + + resp.data ); }, function (resp) { @@ -613,7 +613,7 @@ app.run([ $rootScope.goToPath = function (url) { $location.url(url.trim()); }; - $rootScope.encryptAttributeSet = function (attributes, data) { + $rootScope.encryptMixDatabase = function (attributes, data) { angular.forEach(attributes, function (attr) { if (attr.isEncrypt) { angular.forEach(data, function (item) { @@ -632,7 +632,7 @@ app.run([ } }); }; - $rootScope.decryptAttributeSet = function (attributes, data) { + $rootScope.decryptMixDatabase = function (attributes, data) { angular.forEach(attributes, function (attr) { if (attr.isEncrypt) { angular.forEach(data, function (item) { @@ -705,10 +705,17 @@ app.run([ $rootScope.showHelper = function (url) { $rootScope.helperUrl = url; - $("#dev-helper-modal").modal('show'); - } + $("#dev-helper-modal").modal("show"); + }; - $rootScope.openModal = function (templateUrl, controllerName, resolve, size = 'lg', successCallback = null, failCallback = null) { + $rootScope.openModal = function ( + templateUrl, + controllerName, + resolve, + size = "lg", + successCallback = null, + failCallback = null + ) { var modalInstance = $uibModal.open({ animation: true, windowClass: "show", @@ -727,7 +734,7 @@ app.run([ failCallback(error); } ); - } + }; }, ]); @@ -2602,18 +2609,18 @@ app.factory("AuthService", [ if ($routeParams.ReturnUrl) { setTimeout(() => { window.top.location = $routeParams.ReturnUrl; - }, 500); + }, 200); } else if ( document.referrer && document.referrer.indexOf("init") === -1 ) { setTimeout(() => { window.top.location = document.referrer; - }, 500); + }, 200); } else { setTimeout(() => { window.top.location = "/"; - }, 500); + }, 200); } }); } else { @@ -2960,8 +2967,11 @@ app.factory("BaseRestService", [ "localStorageService", function ($rootScope, $routeParams, commonService) { var serviceFactory = {}; - var _init = function (modelName, isGlobal, lang) { + var _init = function (modelName, isGlobal, lang, serviceBase) { this.modelName = modelName; + if(serviceBase){ + this.serviceBase = serviceBase; + } if (!isGlobal && isGlobal != "true") { if ($rootScope.settings || lang) { this.lang = lang || $rootScope.settings.lang; @@ -4073,366 +4083,6 @@ modules.component("apiFile", { }, }); -'use strict'; -app.controller('AttributeSetDataController', - [ - '$scope', '$rootScope', 'ngAppSettings', '$routeParams', '$location', - 'RestAttributeSetPortalService', 'RestRelatedAttributeSetPortalService', 'CommonService', - function ($scope, $rootScope, ngAppSettings, $routeParams, $location, - service, navService, commonService) { - BaseODataCtrl.call(this, $scope, $rootScope, $routeParams, ngAppSettings, service); - $scope.defaultId = 'default'; - $scope.parentId = null; - $scope.parentType = null; - $scope.cates = ['Site', 'System']; - $scope.others = []; - $scope.importFile = { - file: null, - fullPath: '', - folder: 'import', - title: '', - description: '' - }; - $scope.settings = $rootScope.globalSettings; - $scope.canDrag = $scope.request.orderBy !== 'Priority' || $scope.request.direction !== '0'; - $scope.init = async function () { - $scope.attributeSetId = $routeParams.attributeSetId; - $scope.attributeSetName = $routeParams.attributeSetName; - $scope.dataId = $routeParams.dataId; - $scope.refParentId = $routeParams.refParentId; - $scope.refParentType = $routeParams.refParentType; - if ($scope.refParentId && $scope.refParentType) { - $scope.refDataModel = { - parentId: $scope.refParentId, - parentType: $scope.refParentType - }; - } - }; - $scope.saveSuccessCallback = function () { - if ($scope.refDataModel) { - $scope.refDataModel.id = $scope.viewModel.id; - $scope.refDataModel.attributeSetId = $scope.viewModel.attributeSetId; - $scope.refDataModel.attributeSetName = $scope.viewModel.attributeSetName; - $scope.refDataModel.specificulture = $scope.viewModel.specificulture; - $scope.refDataModel.data = $scope.viewModel; - $rootScope.isBusy = true; - navService.save('portal', $scope.refDataModel).then(resp => { - if (resp.isSucceed) { - $rootScope.isBusy = false; - $scope.$apply(); - } else { - $rootScope.showMessage('failed'); - $rootScope.isBusy = false; - $scope.$apply(); - } - }); - } - }; - $scope.export = async function (page = 0) { - $rootScope.isBusy = true; - $scope.attributeSetId = $routeParams.attributeSetId; - $scope.attributeSetName = $routeParams.attributeSetName; - if (page != undefined) { - $scope.request.pageIndex = page; - } - var type = $routeParams.type; - var parentId = $routeParams.parentId; - var resp = await service.export('portal', $scope.request, $scope.attributeSetId, $scope.attributeSetName, type, parentId); - $scope.canDrag = $scope.request.orderBy !== 'Priority' || $scope.request.direction !== '0'; - if (resp && resp.isSucceed) { - window.top.location = resp.data; - $rootScope.isBusy = false; - $scope.$apply(); - } - else { - if (resp) { $rootScope.showErrors(resp.errors); } - $rootScope.isBusy = false; - $scope.$apply(); - } - }; - $scope.openImportDialog = function () { - $('#inp-import-data').click(); - }; - - $scope.getList = async function (page = 0) { - $rootScope.isBusy = true; - $scope.attributeSetId = $routeParams.attributeSetId; - $scope.attributeSetName = $routeParams.attributeSetName; - if (page != undefined) { - $scope.request.pageIndex = page; - } - var type = $routeParams.type; - var parentId = $routeParams.parentId; - var response = await service.getList('read', $scope.request, $scope.attributeSetId, $scope.attributeSetName, type, parentId); - $scope.canDrag = $scope.request.orderBy !== 'Priority' || $scope.request.direction !== '0'; - if (response) { - $scope.data = response; - $scope.count([$routeParams.attributeSetName]); - $rootScope.isBusy = false; - $scope.$apply(); - } - else { - $rootScope.showErrors('Failed'); - $rootScope.isBusy = false; - $scope.$apply(); - } - }; - $scope.getSingle = async function () { - $rootScope.isBusy = true; - var id = $routeParams.id || $scope.defaultId; - $scope.attributeSetId = $routeParams.attributeSetId; - $scope.attributeSetName = $routeParams.attributeSetName; - var resp = await service.getSingle('portal', [id, $scope.attributeSetId, $scope.attributeSetName]); - if (resp) { - $scope.viewModel = resp; - $scope.viewModel.parentType = $scope.parentType; - $scope.viewModel.parentId = $scope.parentId; - $rootScope.isBusy = false; - $scope.$apply(); - } else { - if (resp) { - $rootScope.showErrors('Failed'); - } - $rootScope.isBusy = false; - $scope.$apply(); - } - }; - $scope.preview = function (item) { - item.editUrl = '/portal/post/details/' + item.id; - $rootScope.preview('post', item, item.title, 'modal-lg'); - }; - $scope.edit = function (data) { - $scope.goToPath('/portal/attribute-set-data/details?dataId=' + data.id + '&attributeSetId=' + $scope.attributeSetId) - }; - $scope.remove = function (data) { - $rootScope.showConfirm($scope, 'removeConfirmed', [data.id], null, 'Remove', 'Deleted data will not able to recover, are you sure you want to delete this item?'); - }; - - $scope.removeConfirmed = async function (dataId) { - $rootScope.isBusy = true; - var result = await service.delete([dataId]); - if (result.isSucceed) { - if ($scope.removeCallback) { - $rootScope.executeFunctionByName('removeCallback', $scope.removeCallbackArgs, $scope) - } - $scope.getList(); - } - else { - $rootScope.showMessage('failed'); - $rootScope.isBusy = false; - $scope.$apply(); - } - }; - - $scope.saveOthers = async function () { - var response = await service.saveList($scope.others); - if (response.isSucceed) { - $scope.getList(); - $scope.$apply(); - } - else { - $rootScope.showErrors(response.errors); - $rootScope.isBusy = false; - $scope.$apply(); - } - }; - - }]); - -'use strict'; -app.factory('RestAttributeSetPortalService', ['$rootScope', 'CommonService', 'BaseRestService', - function ($rootScope, commonService, baseService) { - var serviceFactory = Object.create(baseService); - serviceFactory.init('attribute-set-data'); - - var _getList = async function (viewType, objData, attributeSetId, attributeSetName, parentType, parentId) { - objData.filter = ''; - if (attributeSetId) { - objData.filter += 'attributeSetId eq ' + attributeSetId; - } - if (attributeSetName) { - if (objData.filter) { - objData.filter += ' and '; - } - objData.filter += "attributeSetName eq '" + attributeSetName + "'";; - } - if (parentType) { - if (objData.filter) { - objData.filter += ' and '; - } - objData.filter += 'parentType eq ' + parentType; - } - if (parentId) { - if (objData.filter) { - objData.filter += ' and '; - } - objData.filter += "parentId eq '" + parentId + "'"; - } - var data = serviceFactory.parseODataQuery(objData); - var url = this.prefixUrl + '/' + viewType; - if (data) { - url = url.concat(data); - } - var req = { - method: 'GET', - url: url - }; - return await commonService.getApiResult(req); - }; - - var _export = async function (viewType, objData, attributeSetId, attributeSetName, parentType, parentId) { - objData.filter = ''; - if (attributeSetId) { - objData.filter += 'attributeSetId eq ' + attributeSetId; - } - if (attributeSetName) { - if (objData.filter) { - objData.filter += ' and '; - } - objData.filter += "attributeSetName eq '" + attributeSetName + "'";; - } - if (parentType) { - if (objData.filter) { - objData.filter += ' and '; - } - objData.filter += 'parentType eq ' + parentType; - } - if (parentId) { - if (objData.filter) { - objData.filter += ' and '; - } - objData.filter += "parentId eq '" + parentId + "'"; - } - var data = serviceFactory.parseODataQuery(objData); - var url = this.prefixUrl + '/' + viewType + '/export/' + attributeSetName; - if (data) { - url = url.concat(data); - } - var req = { - method: 'GET', - url: url - }; - return await commonService.getApiResult(req); - }; - - serviceFactory.getList = _getList; - serviceFactory.export = _export; - return serviceFactory; - - }]); - -modules.component('attributeSetFormWeb', { - templateUrl: '/mix-app/views/app-shared/components/attribute-set-form-web/view.html', - bindings: { - attrSetId: '=', - attrSetName: '=', - attrDataId: '=?', - attrData: '=?', - parentType: '=?', // attribute set = 1 | post = 2 | page = 3 | module = 4 - parentId: '=?', - defaultId: '=', - saveData: '&?' - }, - controller: ['$rootScope', '$scope', 'RestAttributeSetPortalService', - function ($rootScope, $scope, service) { - var ctrl = this; - ctrl.isBusy = false; - ctrl.attributes = []; - ctrl.defaultData = null; - ctrl.selectedProp = null; - ctrl.settings = $rootScope.globalSettings; - ctrl.$onInit = async function () { - ctrl.defaultData = await service.getSingle('web', [ctrl.defaultId, ctrl.attrSetId, ctrl.attrSetName]); - ctrl.loadData(); - }; - ctrl.loadData = async function () { - - /* - If input is data id => load ctrl.attrData from service and handle it independently - Else modify input ctrl.attrData - */ - $rootScope.isBusy = true; - if (ctrl.attrDataId) { - ctrl.attrData = await service.getSingle('portal', [ctrl.attrDataId, ctrl.attrSetId, ctrl.attrSetName]); - if (ctrl.attrData) { - ctrl.defaultData.attributeSetId = ctrl.attrData.attributeSetId; - ctrl.defaultData.attributeSetName = ctrl.attrData.attributeSetName; - $rootScope.isBusy = false; - $scope.$apply(); - } else { - if (ctrl.attrData) { - $rootScope.showErrors('Failed'); - } - $rootScope.isBusy = false; - $scope.$apply(); - } - - } - else { - if (!ctrl.attrData) { - ctrl.attrData = angular.copy(ctrl.defaultData); - } - $rootScope.isBusy = false; - $scope.$apply(); - } - }; - ctrl.reload = async function () { - ctrl.attrData = angular.copy(ctrl.defaultData); - }; - ctrl.submit = async function () { - angular.forEach(ctrl.attrData.values, function (e) { - //Encrypt field before send - if (e.field.isEncrypt) { - var encryptData = $rootScope.encrypt(e.stringValue); - e.encryptKey = encryptData.key; - e.encryptValue = encryptData.data; - e.stringValue = null; - } - }); - if (ctrl.saveData) { - ctrl.isBusy = true; - var result = await ctrl.saveData({ data: ctrl.attrData }); - if (result && result.isSucceed) { - ctrl.isBusy = false; - ctrl.attrData = result.data; - $scope.$apply(); - } - else { - ctrl.isBusy = false; - // ctrl.attrData = await service.getSingle('portal', [ctrl.defaultId, ctrl.attrSetId, ctrl.attrSetName]); - $scope.$apply(); - } - } - else { - - ctrl.isBusy = true; - var saveResult = await service.save(ctrl.attrData); - if (saveResult.isSucceed) { - - ctrl.isBusy = false; - } else { - ctrl.isBusy = false; - if (saveResult) { - $rootScope.showErrors(saveResult.errors); - } - $scope.$apply(); - } - - } - }; - - ctrl.filterData = function (attributeName) { - if (ctrl.attrData) { - var attr = $rootScope.findObjectByKey(ctrl.attrData.data, 'attributeFieldName', attributeName); - if (!attr) { - attr = angular.copy($rootScope.findObjectByKey(ctrl.defaultData.data, 'attributeFieldName', attributeName)); - ctrl.attrData.data.push(attr); - } - return attr; - } - }; - }] -}); modules.component("azureStorage", { templateUrl: "/mix-app/views/app-shared/components/azure-storage/view.html", bindings: { @@ -4541,29 +4191,6 @@ modules.component("azureStorage", { ], }); -modules.component("attributeValuePreview", { - templateUrl: "/mix-app/views/app-shared/components/attribute-value-preview/view.html", - controller: [ - "$rootScope", - function ($rootScope) { - var ctrl = this; - ctrl.$onInit = function () { - if (ctrl.data.field && ctrl.data.field.isEncrypt) { - var encryptedData = { - key: ctrl.data.encryptKey, - data: ctrl.data.encryptValue, - }; - ctrl.data.stringValue = $rootScope.decrypt(encryptedData); - } - }; - }, - ], - bindings: { - data: "=", - width: "=", - }, -}); - modules.component('breadcrumbs', { templateUrl: '/mix-app/views/app-shared/components/breadcrumbs/breadcrumbs.html', @@ -4762,6 +4389,31 @@ modules.directive('tabs', function () { replace: true }; }); + +modules.component('goToTop', { + templateUrl: '/mix-app/views/app-shared/components/go-to-top/view.html', + controller: ['$rootScope', '$scope', + function ($rootScope, $scope) { + var ctrl = this; + ctrl.$onInit = function () { + $(window).scroll(function () { + if ($(window).scrollTop() >= 50) { // If page is scrolled more than 50px + $('#return-to-top').fadeIn(200); // Fade in the arrow + } else { + $('#return-to-top').fadeOut(200); // Else fade out the arrow + } + }); + }; + ctrl.goToTop = function () { + // ===== Scroll to Top ==== + $('body,html').animate({ + scrollTop: 0 // Scroll to top of body + }, 500); + }; + }], + bindings: { + } +}); (function (angular) { app.component('languageSwitcher', { templateUrl: '/mix-app/views/app-shared/components/language-switcher/language-switcher.html', @@ -4807,31 +4459,6 @@ modules.directive('tabs', function () { }); })(window.angular); -modules.component('goToTop', { - templateUrl: '/mix-app/views/app-shared/components/go-to-top/view.html', - controller: ['$rootScope', '$scope', - function ($rootScope, $scope) { - var ctrl = this; - ctrl.$onInit = function () { - $(window).scroll(function () { - if ($(window).scrollTop() >= 50) { // If page is scrolled more than 50px - $('#return-to-top').fadeIn(200); // Fade in the arrow - } else { - $('#return-to-top').fadeOut(200); // Else fade out the arrow - } - }); - }; - ctrl.goToTop = function () { - // ===== Scroll to Top ==== - $('body,html').animate({ - scrollTop: 0 // Scroll to top of body - }, 500); - }; - }], - bindings: { - } -}); - modules.component('limitString', { templateUrl: '/mix-app/views/app-shared/components/limit-string/limit-string.html', controller: ['$rootScope', '$scope', 'ngAppSettings', @@ -5582,8 +5209,482 @@ modules.component('mixDataTable', { onUpdateChildInfos: '&', } }); +"use strict"; +app.controller("MixDatabaseDataClientController", [ + "$scope", + "$rootScope", + "ngAppSettings", + "$routeParams", + "$location", + "RestMixDatabaseDataPortalService", + "RestRelatedMixDatabasePortalService", + "CommonService", + function ( + $scope, + $rootScope, + ngAppSettings, + $routeParams, + $location, + service, + navService, + commonService + ) { + BaseODataCtrl.call( + this, + $scope, + $rootScope, + $routeParams, + ngAppSettings, + service + ); + $scope.defaultId = "default"; + $scope.parentId = null; + $scope.parentType = null; + $scope.cates = ["Site", "System"]; + $scope.others = []; + $scope.importFile = { + file: null, + fullPath: "", + folder: "import", + title: "", + description: "", + }; + $scope.settings = $rootScope.globalSettings; + $scope.canDrag = + $scope.request.orderBy !== "Priority" || $scope.request.direction !== "0"; + $scope.init = async function () { + $scope.mixDatabaseId = $routeParams.mixDatabaseId; + $scope.mixDatabaseName = $routeParams.mixDatabaseName; + $scope.dataId = $routeParams.dataId; + $scope.refParentId = $routeParams.refParentId; + $scope.refParentType = $routeParams.refParentType; + if ($scope.refParentId && $scope.refParentType) { + $scope.refDataModel = { + parentId: $scope.refParentId, + parentType: $scope.refParentType, + }; + } + }; + $scope.saveSuccessCallback = function () { + if ($scope.refDataModel) { + $scope.refDataModel.id = $scope.viewModel.id; + $scope.refDataModel.mixDatabaseId = $scope.viewModel.mixDatabaseId; + $scope.refDataModel.mixDatabaseName = $scope.viewModel.mixDatabaseName; + $scope.refDataModel.specificulture = $scope.viewModel.specificulture; + $scope.refDataModel.data = $scope.viewModel; + $rootScope.isBusy = true; + navService.save("portal", $scope.refDataModel).then((resp) => { + if (resp.isSucceed) { + $rootScope.isBusy = false; + $scope.$apply(); + } else { + $rootScope.showMessage("failed"); + $rootScope.isBusy = false; + $scope.$apply(); + } + }); + } + }; + $scope.export = async function (page = 0) { + $rootScope.isBusy = true; + $scope.mixDatabaseId = $routeParams.mixDatabaseId; + $scope.mixDatabaseName = $routeParams.mixDatabaseName; + if (page != undefined) { + $scope.request.pageIndex = page; + } + var type = $routeParams.type; + var parentId = $routeParams.parentId; + var resp = await service.export( + "portal", + $scope.request, + $scope.mixDatabaseId, + $scope.mixDatabaseName, + type, + parentId + ); + $scope.canDrag = + $scope.request.orderBy !== "Priority" || + $scope.request.direction !== "0"; + if (resp && resp.isSucceed) { + window.top.location = resp.data; + $rootScope.isBusy = false; + $scope.$apply(); + } else { + if (resp) { + $rootScope.showErrors(resp.errors); + } + $rootScope.isBusy = false; + $scope.$apply(); + } + }; + $scope.openImportDialog = function () { + $("#inp-import-data").click(); + }; + + $scope.getList = async function (page = 0) { + $rootScope.isBusy = true; + $scope.mixDatabaseId = $routeParams.mixDatabaseId; + $scope.mixDatabaseName = $routeParams.mixDatabaseName; + if (page != undefined) { + $scope.request.pageIndex = page; + } + var type = $routeParams.type; + var parentId = $routeParams.parentId; + var response = await service.getList( + "read", + $scope.request, + $scope.mixDatabaseId, + $scope.mixDatabaseName, + type, + parentId + ); + $scope.canDrag = + $scope.request.orderBy !== "Priority" || + $scope.request.direction !== "0"; + if (response) { + $scope.data = response; + $scope.count([$routeParams.mixDatabaseName]); + $rootScope.isBusy = false; + $scope.$apply(); + } else { + $rootScope.showErrors("Failed"); + $rootScope.isBusy = false; + $scope.$apply(); + } + }; + $scope.getSingle = async function () { + $rootScope.isBusy = true; + var id = $routeParams.id || $scope.defaultId; + $scope.mixDatabaseId = $routeParams.mixDatabaseId; + $scope.mixDatabaseName = $routeParams.mixDatabaseName; + var resp = await service.getSingle("portal", [ + id, + $scope.mixDatabaseId, + $scope.mixDatabaseName, + ]); + if (resp) { + $scope.viewModel = resp; + $scope.viewModel.parentType = $scope.parentType; + $scope.viewModel.parentId = $scope.parentId; + $rootScope.isBusy = false; + $scope.$apply(); + } else { + if (resp) { + $rootScope.showErrors("Failed"); + } + $rootScope.isBusy = false; + $scope.$apply(); + } + }; + $scope.preview = function (item) { + item.editUrl = "/portal/post/details/" + item.id; + $rootScope.preview("post", item, item.title, "modal-lg"); + }; + $scope.edit = function (data) { + $scope.goToPath( + "/portal/mix-database-data/details?dataId=" + + data.id + + "&mixDatabaseId=" + + $scope.mixDatabaseId + ); + }; + $scope.remove = function (data) { + $rootScope.showConfirm( + $scope, + "removeConfirmed", + [data.id], + null, + "Remove", + "Deleted data will not able to recover, are you sure you want to delete this item?" + ); + }; + + $scope.removeConfirmed = async function (dataId) { + $rootScope.isBusy = true; + var result = await service.delete([dataId]); + if (result.isSucceed) { + if ($scope.removeCallback) { + $rootScope.executeFunctionByName( + "removeCallback", + $scope.removeCallbackArgs, + $scope + ); + } + $scope.getList(); + } else { + $rootScope.showMessage("failed"); + $rootScope.isBusy = false; + $scope.$apply(); + } + }; + + $scope.saveOthers = async function () { + var response = await service.saveList($scope.others); + if (response.isSucceed) { + $scope.getList(); + $scope.$apply(); + } else { + $rootScope.showErrors(response.errors); + $rootScope.isBusy = false; + $scope.$apply(); + } + }; + }, +]); + +"use strict"; +app.factory("RestMixDatabasePortalService", [ + "$rootScope", + "CommonService", + "BaseRestService", + function ($rootScope, commonService, baseService) { + var serviceFactory = Object.create(baseService); + serviceFactory.init("mix-database-data"); + + var _getList = async function ( + viewType, + objData, + mixDatabaseId, + mixDatabaseName, + parentType, + parentId + ) { + objData.filter = ""; + if (mixDatabaseId) { + objData.filter += "mixDatabaseId eq " + mixDatabaseId; + } + if (mixDatabaseName) { + if (objData.filter) { + objData.filter += " and "; + } + objData.filter += "mixDatabaseName eq '" + mixDatabaseName + "'"; + } + if (parentType) { + if (objData.filter) { + objData.filter += " and "; + } + objData.filter += "parentType eq " + parentType; + } + if (parentId) { + if (objData.filter) { + objData.filter += " and "; + } + objData.filter += "parentId eq '" + parentId + "'"; + } + var data = serviceFactory.parseODataQuery(objData); + var url = this.prefixUrl + "/" + viewType; + if (data) { + url = url.concat(data); + } + var req = { + method: "GET", + url: url, + }; + return await commonService.getApiResult(req); + }; + + var _export = async function ( + viewType, + objData, + mixDatabaseId, + mixDatabaseName, + parentType, + parentId + ) { + objData.filter = ""; + if (mixDatabaseId) { + objData.filter += "mixDatabaseId eq " + mixDatabaseId; + } + if (mixDatabaseName) { + if (objData.filter) { + objData.filter += " and "; + } + objData.filter += "mixDatabaseName eq '" + mixDatabaseName + "'"; + } + if (parentType) { + if (objData.filter) { + objData.filter += " and "; + } + objData.filter += "parentType eq " + parentType; + } + if (parentId) { + if (objData.filter) { + objData.filter += " and "; + } + objData.filter += "parentId eq '" + parentId + "'"; + } + var data = serviceFactory.parseODataQuery(objData); + var url = this.prefixUrl + "/" + viewType + "/export/" + mixDatabaseName; + if (data) { + url = url.concat(data); + } + var req = { + method: "GET", + url: url, + }; + return await commonService.getApiResult(req); + }; + + serviceFactory.getList = _getList; + serviceFactory.export = _export; + return serviceFactory; + }, +]); + +modules.component("mixDatabaseDataValuePreview", { + templateUrl: "/mix-app/views/app-shared/components/mix-database-data-value-preview/view.html", + controller: [ + "$rootScope", + function ($rootScope) { + var ctrl = this; + ctrl.$onInit = function () { + if (ctrl.data.field && ctrl.data.field.isEncrypt) { + var encryptedData = { + key: ctrl.data.encryptKey, + data: ctrl.data.encryptValue, + }; + ctrl.data.stringValue = $rootScope.decrypt(encryptedData); + } + }; + }, + ], + bindings: { + data: "=", + width: "=", + }, +}); + +modules.component("mixDatabaseFormWeb", { + templateUrl: + "/mix-app/views/app-shared/components/mix-database-form-web/view.html", + bindings: { + attrSetId: "=", + attrSetName: "=", + attrDataId: "=?", + attrData: "=?", + parentType: "=?", // attribute set = 1 | post = 2 | page = 3 | module = 4 + parentId: "=?", + defaultId: "=", + saveData: "&?", + }, + controller: [ + "$rootScope", + "$scope", + "RestMixDatabasePortalService", + function ($rootScope, $scope, service) { + var ctrl = this; + ctrl.isBusy = false; + ctrl.attributes = []; + ctrl.defaultData = null; + ctrl.selectedProp = null; + ctrl.settings = $rootScope.globalSettings; + ctrl.$onInit = async function () { + ctrl.defaultData = await service.getSingle("web", [ + ctrl.defaultId, + ctrl.attrSetId, + ctrl.attrSetName, + ]); + ctrl.loadData(); + }; + ctrl.loadData = async function () { + /* + If input is data id => load ctrl.attrData from service and handle it independently + Else modify input ctrl.attrData + */ + $rootScope.isBusy = true; + if (ctrl.attrDataId) { + ctrl.attrData = await service.getSingle("portal", [ + ctrl.attrDataId, + ctrl.attrSetId, + ctrl.attrSetName, + ]); + if (ctrl.attrData) { + ctrl.defaultData.mixDatabaseId = ctrl.attrData.mixDatabaseId; + ctrl.defaultData.mixDatabaseName = ctrl.attrData.mixDatabaseName; + $rootScope.isBusy = false; + $scope.$apply(); + } else { + if (ctrl.attrData) { + $rootScope.showErrors("Failed"); + } + $rootScope.isBusy = false; + $scope.$apply(); + } + } else { + if (!ctrl.attrData) { + ctrl.attrData = angular.copy(ctrl.defaultData); + } + $rootScope.isBusy = false; + $scope.$apply(); + } + }; + ctrl.reload = async function () { + ctrl.attrData = angular.copy(ctrl.defaultData); + }; + ctrl.submit = async function () { + angular.forEach(ctrl.attrData.values, function (e) { + //Encrypt field before send + if (e.field.isEncrypt) { + var encryptData = $rootScope.encrypt(e.stringValue); + e.encryptKey = encryptData.key; + e.encryptValue = encryptData.data; + e.stringValue = null; + } + }); + if (ctrl.saveData) { + ctrl.isBusy = true; + var result = await ctrl.saveData({ data: ctrl.attrData }); + if (result && result.isSucceed) { + ctrl.isBusy = false; + ctrl.attrData = result.data; + $scope.$apply(); + } else { + ctrl.isBusy = false; + // ctrl.attrData = await service.getSingle('portal', [ctrl.defaultId, ctrl.attrSetId, ctrl.attrSetName]); + $scope.$apply(); + } + } else { + ctrl.isBusy = true; + var saveResult = await service.save(ctrl.attrData); + if (saveResult.isSucceed) { + ctrl.isBusy = false; + } else { + ctrl.isBusy = false; + if (saveResult) { + $rootScope.showErrors(saveResult.errors); + } + $scope.$apply(); + } + } + }; + + ctrl.filterData = function (attributeName) { + if (ctrl.attrData) { + var attr = $rootScope.findObjectByKey( + ctrl.attrData.data, + "mixDatabaseColumnName", + attributeName + ); + if (!attr) { + attr = angular.copy( + $rootScope.findObjectByKey( + ctrl.defaultData.data, + "mixDatabaseColumnName", + attributeName + ) + ); + ctrl.attrData.data.push(attr); + } + return attr; + } + }; + }, + ], +}); + modules.component("mixFieldEditor", { - templateUrl: "/mix-app/views/app-shared/components/mix-field-editor/view.html", + templateUrl: + "/mix-app/views/app-shared/components/mix-field-editor/view.html", bindings: { model: "=", field: "=", @@ -5660,12 +5761,10 @@ modules.component("mixFieldEditor", { ctrl.$onInit = function () { if (!ctrl.createUrl && ctrl.model && ctrl.field.referenceId) { var backUrl = encodeURIComponent($location.url()); - ctrl.createUrl = `/portal/attribute-set-data/create?attributeSetId=${ctrl.field.referenceId - }&dataId=default&parentId=${ctrl.model.id - }&parentType=Set&backUrl=${backUrl}`; + ctrl.createUrl = `/portal/mix-database-data/create?mixDatabaseId=${ctrl.field.referenceId}&dataId=default&parentId=${ctrl.model.id}&parentType=Set&backUrl=${backUrl}`; } if (!ctrl.updateUrl) { - ctrl.updateUrl = "/portal/attribute-set-data/details"; + ctrl.updateUrl = "/portal/mix-database-data/details"; } }; ctrl.initData = async function () { @@ -5686,7 +5785,7 @@ modules.component("mixFieldEditor", { // if(ctrl.field.referenceId && ctrl.model.id){ // ctrl.model[ctrl.field.name] = ctrl.field.referenceId; // navService.getSingle(['default']).then(resp=>{ - // resp.attributeSetId = ctrl.field.referenceId; + // resp.mixDatabaseId = ctrl.field.referenceId; // resp.parentId = ctrl.parentId; // resp.parentType = ctrl.parentType; // ctrl.defaultDataModel = resp; @@ -5715,21 +5814,21 @@ modules.component("mixFieldEditor", { case "time": if (ctrl.field.defaultValue) { ctrl.model[ctrl.field.name] = new Date( - ctrl.attributeValue.field.defaultValue + ctrl.mixDatabaseDataValue.field.defaultValue ); } break; case "double": if (ctrl.field.defaultValue) { ctrl.model[ctrl.field.name] = parseFloat( - ctrl.attributeValue.field.defaultValue + ctrl.mixDatabaseDataValue.field.defaultValue ); } break; case "boolean": if (ctrl.field.defaultValue) { ctrl.model[ctrl.field.name] = - ctrl.attributeValue.field.defaultValue == "true"; + ctrl.mixDatabaseDataValue.field.defaultValue == "true"; } break; @@ -6041,241 +6140,6 @@ modules.component('modalPosts', { onUpdateChildInfos: '&', } }); -modules.controller("ModalCroppieController", function ( - $rootScope, - $scope, - $http, - $uibModalInstance, - mediaService, - file, - w, - h, - rto -) { - var ctrl = this; - ctrl.file = file; - ctrl.w = w; - ctrl.h = h; - ctrl.rto = rto; - ctrl.isAdmin = $rootScope.isAdmin; - ctrl.postedFile = {}; - ctrl.isImage = false; - ctrl.mediaNavs = []; - ctrl.media = { - title: "", - mediaFile: { - file: null, - }, - }; - ctrl.image_placeholder = "/mix-app/assets/img/image_placeholder.jpg"; - ctrl.options = null; - // `https://via.placeholder.com/${ctrl.options.render.width}x${ctrl.options.render.height}.png`; - ctrl.init = function () { - ctrl.srcUrl = ctrl.srcUrl || ctrl.image_placeholder; - ctrl.maxHeight = ctrl.maxHeight || "2000px"; - ctrl.id = Math.floor(Math.random() * 100); - ctrl.canvas = document.getElementById(`canvas-${ctrl.id}`); - ctrl.cropped = { - source: null, - }; - // var frameUrl = '/content/templates/tsets/uploads/2019-10/730149275529721421464195891692074859757568n0037047f8f6f4adab55211aee3538155.png';//$rootScope.settings.data['frame_url'] - if (ctrl.frameUrl) { - ctrl.frame = ctrl.loadImage(frameUrl); - } - - if (ctrl.srcUrl) { - ctrl.loadBase64(ctrl.srcUrl); - } - - if (ctrl.file) { - setTimeout(() => { - ctrl.selectFile([ctrl.file]); - }, 500); - } - - // Assign blob to component when selecting a image - }; - - ctrl.loadFromUrl = function () { - if (ctrl.src !== ctrl.srcUrl && ctrl.srcUrl != ctrl.image_placeholder) { - ctrl.src = ctrl.srcUrl; - ctrl.isImage = ctrl.srcUrl - .toLowerCase() - .match(/([/|.|\w|\s|-])*\.(?:jpg|jpeg|gif|png|svg)/g); - if (ctrl.isImage) { - ctrl.loadBase64(ctrl.srcUrl); - } - } - }; - - ctrl.ok = async function () { - ctrl.media.mediaFile.fileStream = ctrl.cropped.image; - var result = await mediaService.save(ctrl.media); - if (result.isSucceed) { - $uibModalInstance.close(result.data); - } - }; - - ctrl.cancel = function () { - $uibModalInstance.dismiss("cancel"); - }; - ctrl.combineImage = function () { - ctrl.canvas = document.getElementById(`canvas-${ctrl.id}`); - if (ctrl.canvas) { - var img = document.getElementById("croppie-src"); - var w = ctrl.options.boundary.width; - var h = ctrl.options.boundary.height; - // var rto = w / h; - var newW = ctrl.options.output.width; - var newH = ctrl.options.output.height; - var ctx = ctrl.canvas.getContext("2d"); - ctx.imageSmoothingEnabled = true; - ctx.drawImage(img, 0, 0, newW, newH); - if (ctrl.frame) { - // combine with frame - ctx.drawImage(ctrl.frame, 0, 0, w, h); - } - - $scope.$apply(function () { - ctrl.postedFile.fileStream = ctrl.canvas.toDataURL(); //ctx.getImageData(0, 0, 300, 350); - ctrl.imgUrl = ctrl.postedFile.fileStream.replace( - "image/png", - "image/octet-stream" - ); - }); - } - }; - ctrl.saveCanvas = function () { - var link = document.createElement("a"); - link.download = ctrl.postedFile.fileName + ctrl.postedFile.extension; - $rootScope.isBusy = true; - ctrl.canvas.toBlob(function (blob) { - link.href = URL.createObjectURL(blob); - link.click(); - $rootScope.isBusy = false; - $scope.$apply(); - }, "image/png"); - }; - ctrl._arrayBufferToBase64 = function (buffer) { - var binary = ""; - var bytes = new Uint8Array(buffer); - var len = bytes.byteLength; - for (var i = 0; i < len; i++) { - binary += String.fromCharCode(bytes[i]); - } - return window.btoa(binary); - }; - - ctrl.selectFile = function (files) { - if (files !== undefined && files !== null && files.length > 0) { - const file = files[0]; - ctrl.media.folder = ctrl.folder ? ctrl.folder : "Media"; - ctrl.media.title = ctrl.title ? ctrl.title : file.name; - ctrl.media.description = ctrl.description ? ctrl.description : ""; - ctrl.media.mediaFile.fileName = file.name.substring( - 0, - file.name.lastIndexOf(".") - ); - ctrl.media.mediaFile.extension = file.name.substring( - file.name.lastIndexOf(".") - ); - ctrl.getBase64(file); - // if (file.size < 100000) { - // var msg = "Please choose a better photo (larger than 100kb)!"; - // $rootScope.showConfirm(ctrl, null, [], null, null, msg); - // } else { - // } - } - }; - ctrl.loadBase64 = function (url) { - var ext = url.substring(url.lastIndexOf(".") + 1); - $http({ - method: "GET", - url: url, - responseType: "arraybuffer", - }).then(function (resp) { - var base64 = `data:image/${ext};base64,${ctrl._arrayBufferToBase64( - resp.data - )}`; - var image = new Image(); - image.src = base64; - image.onload = function () { - // access image size here - ctrl.loadImageSize(this.width, this.height); - ctrl.cropped.source = base64; - $scope.$apply(); - }; - return base64; - }); - }; - ctrl.getBase64 = function (file) { - if (file !== null) { - $rootScope.isBusy = true; - var reader = new FileReader(); - reader.readAsDataURL(file); - // ctrl.cropped.source = null; - reader.onload = function () { - if (ctrl.media.mediaFile) { - ctrl.media.mediaFile.fileName = file.name.substring( - 0, - file.name.lastIndexOf(".") - ); - ctrl.media.mediaFile.extension = file.name.substring( - file.name.lastIndexOf(".") - ); - // ctrl.postedFile.fileStream = reader.result; - } - var image = new Image(); - image.src = reader.result; - - image.onload = function () { - // access image size here - ctrl.loadImageSize(this.width, this.height); - ctrl.cropped.source = reader.result; - $rootScope.isBusy = false; - $scope.$apply(); - }; - }; - reader.onerror = function (error) { - $rootScope.isBusy = false; - $rootScope.showErrors([error]); - }; - } else { - return null; - } - }; - ctrl.loadImageSize = function (w, h) { - const maxW = 250; - var rto = w / h; - ctrl.w = ctrl.w || w; - ctrl.h = ctrl.h || h; - ctrl.rto = ctrl.rto || rto; - ctrl.options = { - boundary: { height: maxW / rto, width: maxW }, - render: { height: maxW / rto, width: maxW }, - output: { height: ctrl.h, width: ctrl.h * ctrl.rto }, - }; - ctrl.loadViewport(); - // ctrl.image_placeholder = `https://via.placeholder.com/${ctrl.options.render.width}x${ctrl.options.render.height}.png`; - }; - ctrl.loadViewport = function () { - if (ctrl.w && ctrl.h) { - ctrl.rto = ctrl.w / ctrl.h; - let h = ctrl.h * 0.6; - let w = h * ctrl.rto; - if (w > ctrl.options.boundary.width) { - w = ctrl.options.boundary.width; - h = w / ctrl.rto; - } - ctrl.options.viewport = { - height: h, - width: w, - }; - } - // ctrl.image_placeholder = "/mix-app/assets/img/image_placeholder.jpg"; // `https://via.placeholder.com/${ctrl.options.render.width}x${ctrl.options.render.height}.png`; - }; -}); - // modules.component('modalConfirm', { // templateUrl: '/mix-app/views/app-shared/components/modal-confirm/modal-confirm.html', // controller: ModalConfirmController, @@ -6296,6 +6160,242 @@ function ModalConfirmController($rootScope, $scope, $mdDialog, message) { $mdDialog.hide(); }; } +modules.controller( + "ModalCroppieController", + function ( + $rootScope, + $scope, + $http, + $uibModalInstance, + mediaService, + file, + w, + h, + rto + ) { + var ctrl = this; + ctrl.file = file; + ctrl.w = w; + ctrl.h = h; + ctrl.rto = rto; + ctrl.isAdmin = $rootScope.isAdmin; + ctrl.postedFile = {}; + ctrl.isImage = false; + ctrl.mediaNavs = []; + ctrl.media = { + title: "", + mediaFile: { + file: null, + }, + }; + ctrl.image_placeholder = "/mix-app/assets/img/image_placeholder.jpg"; + ctrl.options = null; + ctrl.init = function () { + ctrl.srcUrl = ctrl.srcUrl || ctrl.image_placeholder; + ctrl.maxHeight = ctrl.maxHeight || "2000px"; + ctrl.id = Math.floor(Math.random() * 100); + ctrl.canvas = document.getElementById(`canvas-${ctrl.id}`); + ctrl.cropped = { + source: null, + }; + if (ctrl.frameUrl) { + ctrl.frame = ctrl.loadImage(frameUrl); + } + + if (ctrl.srcUrl) { + ctrl.loadBase64(ctrl.srcUrl); + } + + if (ctrl.file) { + setTimeout(() => { + ctrl.selectFile([ctrl.file]); + }, 500); + } + + // Assign blob to component when selecting a image + }; + + ctrl.loadFromUrl = function () { + if (ctrl.src !== ctrl.srcUrl && ctrl.srcUrl != ctrl.image_placeholder) { + ctrl.src = ctrl.srcUrl; + ctrl.isImage = ctrl.srcUrl + .toLowerCase() + .match(/([/|.|\w|\s|-])*\.(?:jpg|jpeg|gif|png|svg)/g); + if (ctrl.isImage) { + ctrl.loadBase64(ctrl.srcUrl); + } + } + }; + + ctrl.ok = async function () { + ctrl.media.mediaFile.fileStream = ctrl.cropped.image; + var result = await mediaService.save(ctrl.media); + if (result.isSucceed) { + $uibModalInstance.close(result.data); + } + }; + + ctrl.cancel = function () { + $uibModalInstance.dismiss("cancel"); + }; + ctrl.combineImage = function () { + ctrl.canvas = document.getElementById(`canvas-${ctrl.id}`); + if (ctrl.canvas) { + var img = document.getElementById("croppie-src"); + var w = ctrl.options.boundary.width; + var h = ctrl.options.boundary.height; + // var rto = w / h; + var newW = ctrl.options.output.width; + var newH = ctrl.options.output.height; + var ctx = ctrl.canvas.getContext("2d"); + ctx.imageSmoothingEnabled = true; + ctx.drawImage(img, 0, 0, newW, newH); + if (ctrl.frame) { + // combine with frame + ctx.drawImage(ctrl.frame, 0, 0, w, h); + } + + $scope.$apply(function () { + ctrl.postedFile.fileStream = ctrl.canvas.toDataURL(); //ctx.getImageData(0, 0, 300, 350); + ctrl.imgUrl = ctrl.postedFile.fileStream.replace( + "image/png", + "image/octet-stream" + ); + }); + } + }; + ctrl.saveCanvas = function () { + var link = document.createElement("a"); + link.download = ctrl.postedFile.fileName + ctrl.postedFile.extension; + $rootScope.isBusy = true; + ctrl.canvas.toBlob(function (blob) { + link.href = URL.createObjectURL(blob); + link.click(); + $rootScope.isBusy = false; + $scope.$apply(); + }, "image/png"); + }; + ctrl._arrayBufferToBase64 = function (buffer) { + var binary = ""; + var bytes = new Uint8Array(buffer); + var len = bytes.byteLength; + for (var i = 0; i < len; i++) { + binary += String.fromCharCode(bytes[i]); + } + return window.btoa(binary); + }; + + ctrl.selectFile = function (files) { + if (files !== undefined && files !== null && files.length > 0) { + const file = files[0]; + ctrl.media.folder = ctrl.folder ? ctrl.folder : "Media"; + ctrl.media.title = ctrl.title ? ctrl.title : file.name; + ctrl.media.description = ctrl.description ? ctrl.description : ""; + ctrl.media.mediaFile.fileName = file.name.substring( + 0, + file.name.lastIndexOf(".") + ); + ctrl.media.mediaFile.extension = file.name.substring( + file.name.lastIndexOf(".") + ); + ctrl.getBase64(file); + // if (file.size < 100000) { + // var msg = "Please choose a better photo (larger than 100kb)!"; + // $rootScope.showConfirm(ctrl, null, [], null, null, msg); + // } else { + // } + } + }; + ctrl.loadBase64 = function (url) { + var ext = url.substring(url.lastIndexOf(".") + 1); + $http({ + method: "GET", + url: url, + responseType: "arraybuffer", + }).then(function (resp) { + var base64 = `data:image/${ext};base64,${ctrl._arrayBufferToBase64( + resp.data + )}`; + var image = new Image(); + image.src = base64; + image.onload = function () { + // access image size here + ctrl.loadImageSize(this.width, this.height); + ctrl.cropped.source = base64; + $scope.$apply(); + }; + return base64; + }); + }; + ctrl.getBase64 = function (file) { + if (file !== null) { + $rootScope.isBusy = true; + var reader = new FileReader(); + reader.readAsDataURL(file); + // ctrl.cropped.source = null; + reader.onload = function () { + if (ctrl.media.mediaFile) { + ctrl.media.mediaFile.fileName = file.name.substring( + 0, + file.name.lastIndexOf(".") + ); + ctrl.media.mediaFile.extension = file.name.substring( + file.name.lastIndexOf(".") + ); + // ctrl.postedFile.fileStream = reader.result; + } + var image = new Image(); + image.src = reader.result; + + image.onload = function () { + // access image size here + ctrl.loadImageSize(this.width, this.height); + ctrl.cropped.source = reader.result; + $rootScope.isBusy = false; + $scope.$apply(); + }; + }; + reader.onerror = function (error) { + $rootScope.isBusy = false; + $rootScope.showErrors([error]); + }; + } else { + return null; + } + }; + ctrl.loadImageSize = function (w, h) { + // const maxW = ctrl.w + 100; + const maxW = 600; + var rto = w / h; + ctrl.w = ctrl.w || w; + ctrl.h = ctrl.h || h; + ctrl.rto = ctrl.rto || rto; + ctrl.options = { + boundary: { height: maxW / rto, width: maxW }, + render: { height: maxW / rto, width: maxW }, + output: { height: ctrl.h, width: ctrl.h * ctrl.rto }, + }; + ctrl.loadViewport(); + }; + ctrl.loadViewport = function () { + if (ctrl.w && ctrl.h) { + const maxW = 600; + ctrl.rto = ctrl.w / ctrl.h; + let w = ctrl.w > maxW ? maxW * 0.6 : ctrl.w * 0.6; + let h = w / ctrl.rto; + if (w > ctrl.options.boundary.width) { + w = ctrl.options.boundary.width; + h = w / ctrl.rto; + } + ctrl.options.viewport = { + height: h, + width: w, + }; + } + }; + } +); + 'use strict'; app.controller('SharedModuleDataController', ['$scope', '$rootScope', 'ngAppSettings', '$routeParams', '$timeout', '$location', 'AuthService', 'SharedModuleDataService', function ($scope, $rootScope, ngAppSettings, $routeParams, $timeout, $location, authService, moduleDataService) { @@ -6711,6 +6811,13 @@ modules.component('moduleForm', { }); modules.component("moduleFormEditor", { templateUrl: "/mix-app/views/app-shared/components/module-form-editor/view.html", + bindings: { + data: "=", + datatype: "=?", + inputClass: "=", + isShowTitle: "=", + fieldTitle: "=", + }, controller: [ "$rootScope", "$scope", @@ -6720,19 +6827,10 @@ modules.component("moduleFormEditor", { ctrl.icons = ngAppSettings.icons; this.dataTypes = ngAppSettings.dataTypes; ctrl.$onInit = function () { - if (!ctrl.datatype) { - ctrl.datatype = ctrl.data.dataType; - } + ctrl.dataType = ctrl.data.dataType.toLowerCase() || ctrl.dataType.toLowerCase(); }; }, ], - bindings: { - data: "=", - datatype: "=?", - inputClass: "=", - isShowTitle: "=", - fieldTitle: "=", - }, }); @@ -8279,12 +8377,12 @@ modules.component('youtubeEditor', { hideInput: '=?' } }); -app.controller("AttributeSetFormController", [ +app.controller("MixDatabaseFormController", [ "$rootScope", "$scope", "ngAppSettings", "RestRelatedAttributeDataPortalService", - "RestAttributeSetDataPortalService", + "RestMixDatabaseDataPortalService", function ($rootScope, $scope, ngAppSettings, navService, dataService) { $scope.defaultData = null; $scope.formData = null; @@ -8307,14 +8405,14 @@ app.controller("AttributeSetFormController", [ $scope.successHandler = successHandler; $scope.failHandler = failHandler; $scope.formName = formName; - $scope.navRequest.attributeSetName = formName; + $scope.navRequest.mixDatabaseName = formName; $scope.navRequest.parentType = parentType; $scope.navRequest.parentId = parentId; - dataService.init("attribute-set-data/portal"); + dataService.init("mix-database-data/portal"); var getDefault = await dataService.initData($scope.formName); $scope.defaultData = getDefault.data; if ($scope.defaultData) { - $scope.defaultData.attributeSetName = $scope.formName; + $scope.defaultData.mixDatabaseName = $scope.formName; $scope.defaultData.parentType = parentType || "Set"; $scope.defaultData.parentId = parentId; $scope.formData = angular.copy($scope.defaultData); @@ -8340,11 +8438,16 @@ app.controller("AttributeSetFormController", [ if ($scope.loadingHandler) { $rootScope.executeFunctionByName($scope.loadingHandler, [true]); } - if (!$scope.validateHandler || $rootScope.executeFunctionByName($scope.validateHandler, [data])) { + if ( + !$scope.validateHandler || + $rootScope.executeFunctionByName($scope.validateHandler, [data]) + ) { var saveResult = await dataService.save(data); if (saveResult.isSucceed) { if ($scope.successHandler) { - $rootScope.executeFunctionByName($scope.successHandler, [saveResult]); + $rootScope.executeFunctionByName($scope.successHandler, [ + saveResult, + ]); } else { alert($scope.successMsg); } @@ -8358,7 +8461,10 @@ app.controller("AttributeSetFormController", [ } else { if (saveResult.errors && saveResult.errors.length) { if ($scope.failHandler) { - $rootScope.executeFunctionByName($scope.failHandler, [data, saveResult]); + $rootScope.executeFunctionByName($scope.failHandler, [ + data, + saveResult, + ]); } else { alert(errMsg); } @@ -14782,12 +14888,23 @@ CryptoJS.mode.ECB = (function () { })); /*! ngTagsInput v3.2.0 License: MIT */!function () { "use strict"; var a = { backspace: 8, tab: 9, enter: 13, escape: 27, space: 32, up: 38, down: 40, left: 37, right: 39, "delete": 46, comma: 188 }, b = 9007199254740991, c = ["text", "email", "url"], d = angular.module("ngTagsInput", []); d.directive("tagsInput", ["$timeout", "$document", "$window", "$q", "tagsInputConfig", "tiUtil", function (d, e, f, g, h, i) { function j(a, b, c, d) { var e, f, h, j, k = {}; return e = function (b) { return i.safeToString(b[a.displayProperty]) }, f = function (b, c) { b[a.displayProperty] = c }, h = function (b) { var d = e(b), f = d && d.length >= a.minLength && d.length <= a.maxLength && a.allowedTagsPattern.test(d) && !i.findInObjectArray(k.items, b, a.keyProperty || a.displayProperty); return g.when(f && c({ $tag: b })).then(i.promisifyValue) }, j = function (a) { return g.when(d({ $tag: a })).then(i.promisifyValue) }, k.items = [], k.addText = function (a) { var b = {}; return f(b, a), k.add(b) }, k.add = function (c) { var d = e(c); return a.replaceSpacesWithDashes && (d = i.replaceSpacesWithDashes(d)), f(c, d), h(c).then(function () { k.items.push(c), b.trigger("tag-added", { $tag: c }) })["catch"](function () { d && b.trigger("invalid-tag", { $tag: c }) }) }, k.remove = function (a) { var c = k.items[a]; return j(c).then(function () { return k.items.splice(a, 1), k.clearSelection(), b.trigger("tag-removed", { $tag: c }), c }) }, k.select = function (a) { 0 > a ? a = k.items.length - 1 : a >= k.items.length && (a = 0), k.index = a, k.selected = k.items[a] }, k.selectPrior = function () { k.select(--k.index) }, k.selectNext = function () { k.select(++k.index) }, k.removeSelected = function () { return k.remove(k.index) }, k.clearSelection = function () { k.selected = null, k.index = -1 }, k.getItems = function () { return a.useStrings ? k.items.map(e) : k.items }, k.clearSelection(), k } function k(a) { return -1 !== c.indexOf(a) } return { restrict: "E", require: "ngModel", scope: { tags: "=ngModel", text: "=?", templateScope: "=?", tagClass: "&", onTagAdding: "&", onTagAdded: "&", onInvalidTag: "&", onTagRemoving: "&", onTagRemoved: "&", onTagClicked: "&" }, replace: !1, transclude: !0, templateUrl: "ngTagsInput/tags-input.html", controller: ["$scope", "$attrs", "$element", function (a, c, d) { a.events = i.simplePubSub(), h.load("tagsInput", a, c, { template: [String, "ngTagsInput/tag-item.html"], type: [String, "text", k], placeholder: [String, "Add a tag"], tabindex: [Number, null], removeTagSymbol: [String, String.fromCharCode(215)], replaceSpacesWithDashes: [Boolean, !0], minLength: [Number, 3], maxLength: [Number, b], addOnEnter: [Boolean, !0], addOnSpace: [Boolean, !1], addOnComma: [Boolean, !0], addOnBlur: [Boolean, !0], addOnPaste: [Boolean, !1], pasteSplitPattern: [RegExp, /,/], allowedTagsPattern: [RegExp, /.+/], enableEditingLastTag: [Boolean, !1], minTags: [Number, 0], maxTags: [Number, b], displayProperty: [String, "text"], keyProperty: [String, ""], allowLeftoverText: [Boolean, !1], addFromAutocompleteOnly: [Boolean, !1], spellcheck: [Boolean, !0], useStrings: [Boolean, !1] }), a.tagList = new j(a.options, a.events, i.handleUndefinedResult(a.onTagAdding, !0), i.handleUndefinedResult(a.onTagRemoving, !0)), this.registerAutocomplete = function () { d.find("input"); return { addTag: function (b) { return a.tagList.add(b) }, getTags: function () { return a.tagList.items }, getCurrentTagText: function () { return a.newTag.text() }, getOptions: function () { return a.options }, getTemplateScope: function () { return a.templateScope }, on: function (b, c) { return a.events.on(b, c, !0), this } } }, this.registerTagItem = function () { return { getOptions: function () { return a.options }, removeTag: function (b) { a.disabled || a.tagList.remove(b) } } } }], link: function (b, c, g, h) { var j, k, l = [a.enter, a.comma, a.space, a.backspace, a["delete"], a.left, a.right], m = b.tagList, n = b.events, o = b.options, p = c.find("input"), q = ["minTags", "maxTags", "allowLeftoverText"]; j = function () { h.$setValidity("maxTags", m.items.length <= o.maxTags), h.$setValidity("minTags", m.items.length >= o.minTags), h.$setValidity("leftoverText", b.hasFocus || o.allowLeftoverText ? !0 : !b.newTag.text()) }, k = function () { d(function () { p[0].focus() }) }, h.$isEmpty = function (a) { return !a || !a.length }, b.newTag = { text: function (a) { return angular.isDefined(a) ? (b.text = a, void n.trigger("input-change", a)) : b.text || "" }, invalid: null }, b.track = function (a) { return a[o.keyProperty || o.displayProperty] }, b.getTagClass = function (a, c) { var d = a === m.selected; return [b.tagClass({ $tag: a, $index: c, $selected: d }), { selected: d }] }, b.$watch("tags", function (a) { if (a) { if (m.items = i.makeObjectArray(a, o.displayProperty), o.useStrings) return; b.tags = m.items } else m.items = [] }), b.$watch("tags.length", function () { j(), h.$validate() }), g.$observe("disabled", function (a) { b.disabled = a }), b.eventHandlers = { input: { keydown: function (a) { n.trigger("input-keydown", a) }, focus: function () { b.hasFocus || (b.hasFocus = !0, n.trigger("input-focus")) }, blur: function () { d(function () { var a = e.prop("activeElement"), d = a === p[0], f = c[0].contains(a); (d || !f) && (b.hasFocus = !1, n.trigger("input-blur")) }) }, paste: function (a) { a.getTextData = function () { var b = a.clipboardData || a.originalEvent && a.originalEvent.clipboardData; return b ? b.getData("text/plain") : f.clipboardData.getData("Text") }, n.trigger("input-paste", a) } }, host: { click: function () { b.disabled || k() } }, tag: { click: function (a) { n.trigger("tag-clicked", { $tag: a }) } } }, n.on("tag-added", b.onTagAdded).on("invalid-tag", b.onInvalidTag).on("tag-removed", b.onTagRemoved).on("tag-clicked", b.onTagClicked).on("tag-added", function () { b.newTag.text("") }).on("tag-added tag-removed", function () { b.tags = m.getItems(), h.$setDirty(), k() }).on("invalid-tag", function () { b.newTag.invalid = !0 }).on("option-change", function (a) { -1 !== q.indexOf(a.name) && j() }).on("input-change", function () { m.clearSelection(), b.newTag.invalid = null }).on("input-focus", function () { c.triggerHandler("focus"), h.$setValidity("leftoverText", !0) }).on("input-blur", function () { o.addOnBlur && !o.addFromAutocompleteOnly && m.addText(b.newTag.text()), c.triggerHandler("blur"), j() }).on("input-keydown", function (c) { var d, e, f, g, h = c.keyCode, j = {}; i.isModifierOn(c) || -1 === l.indexOf(h) || (j[a.enter] = o.addOnEnter, j[a.comma] = o.addOnComma, j[a.space] = o.addOnSpace, d = !o.addFromAutocompleteOnly && j[h], e = (h === a.backspace || h === a["delete"]) && m.selected, g = h === a.backspace && 0 === b.newTag.text().length && o.enableEditingLastTag, f = (h === a.backspace || h === a.left || h === a.right) && 0 === b.newTag.text().length && !o.enableEditingLastTag, d ? m.addText(b.newTag.text()) : g ? (m.selectPrior(), m.removeSelected().then(function (a) { a && b.newTag.text(a[o.displayProperty]) })) : e ? m.removeSelected() : f && (h === a.left || h === a.backspace ? m.selectPrior() : h === a.right && m.selectNext()), (d || f || e || g) && c.preventDefault()) }).on("input-paste", function (a) { if (o.addOnPaste) { var b = a.getTextData(), c = b.split(o.pasteSplitPattern); c.length > 1 && (c.forEach(function (a) { m.addText(a) }), a.preventDefault()) } }) } } }]), d.directive("tiTagItem", ["tiUtil", function (a) { return { restrict: "E", require: "^tagsInput", template: '', scope: { $scope: "=scope", data: "=" }, link: function (b, c, d, e) { var f = e.registerTagItem(), g = f.getOptions(); b.$$template = g.template, b.$$removeTagSymbol = g.removeTagSymbol, b.$getDisplayText = function () { return a.safeToString(b.data[g.displayProperty]) }, b.$removeTag = function () { f.removeTag(b.$index) }, b.$watch("$parent.$index", function (a) { b.$index = a }) } } }]), d.directive("autoComplete", ["$document", "$timeout", "$sce", "$q", "tagsInputConfig", "tiUtil", function (b, c, d, e, f, g) { function h(a, b, c) { var d, f, h, i = {}; return h = function () { return b.tagsInput.keyProperty || b.tagsInput.displayProperty }, d = function (a, c) { return a.filter(function (a) { return !g.findInObjectArray(c, a, h(), function (a, c) { return b.tagsInput.replaceSpacesWithDashes && (a = g.replaceSpacesWithDashes(a), c = g.replaceSpacesWithDashes(c)), g.defaultComparer(a, c) }) }) }, i.reset = function () { f = null, i.items = [], i.visible = !1, i.index = -1, i.selected = null, i.query = null }, i.show = function () { b.selectFirstMatch ? i.select(0) : i.selected = null, i.visible = !0 }, i.load = g.debounce(function (c, j) { i.query = c; var k = e.when(a({ $query: c })); f = k, k.then(function (a) { k === f && (a = g.makeObjectArray(a.data || a, h()), a = d(a, j), i.items = a.slice(0, b.maxResultsToShow), i.items.length > 0 ? i.show() : i.reset()) }) }, b.debounceDelay), i.selectNext = function () { i.select(++i.index) }, i.selectPrior = function () { i.select(--i.index) }, i.select = function (a) { 0 > a ? a = i.items.length - 1 : a >= i.items.length && (a = 0), i.index = a, i.selected = i.items[a], c.trigger("suggestion-selected", a) }, i.reset(), i } function i(a, b) { var c = a.find("li").eq(b), d = c.parent(), e = c.prop("offsetTop"), f = c.prop("offsetHeight"), g = d.prop("clientHeight"), h = d.prop("scrollTop"); h > e ? d.prop("scrollTop", e) : e + f > g + h && d.prop("scrollTop", e + f - g) } return { restrict: "E", require: "^tagsInput", scope: { source: "&", matchClass: "&" }, templateUrl: "ngTagsInput/auto-complete.html", controller: ["$scope", "$element", "$attrs", function (a, b, c) { a.events = g.simplePubSub(), f.load("autoComplete", a, c, { template: [String, "ngTagsInput/auto-complete-match.html"], debounceDelay: [Number, 100], minLength: [Number, 3], highlightMatchedText: [Boolean, !0], maxResultsToShow: [Number, 10], loadOnDownArrow: [Boolean, !1], loadOnEmpty: [Boolean, !1], loadOnFocus: [Boolean, !1], selectFirstMatch: [Boolean, !0], displayProperty: [String, ""] }), a.suggestionList = new h(a.source, a.options, a.events), this.registerAutocompleteMatch = function () { return { getOptions: function () { return a.options }, getQuery: function () { return a.suggestionList.query } } } }], link: function (b, c, d, e) { var f, h = [a.enter, a.tab, a.escape, a.up, a.down], j = b.suggestionList, k = e.registerAutocomplete(), l = b.options, m = b.events; l.tagsInput = k.getOptions(), f = function (a) { return a && a.length >= l.minLength || !a && l.loadOnEmpty }, b.templateScope = k.getTemplateScope(), b.addSuggestionByIndex = function (a) { j.select(a), b.addSuggestion() }, b.addSuggestion = function () { var a = !1; return j.selected && (k.addTag(angular.copy(j.selected)), j.reset(), a = !0), a }, b.track = function (a) { return a[l.tagsInput.keyProperty || l.tagsInput.displayProperty] }, b.getSuggestionClass = function (a, c) { var d = a === j.selected; return [b.matchClass({ $match: a, $index: c, $selected: d }), { selected: d }] }, k.on("tag-added tag-removed invalid-tag input-blur", function () { j.reset() }).on("input-change", function (a) { f(a) ? j.load(a, k.getTags()) : j.reset() }).on("input-focus", function () { var a = k.getCurrentTagText(); l.loadOnFocus && f(a) && j.load(a, k.getTags()) }).on("input-keydown", function (c) { var d = c.keyCode, e = !1; if (!g.isModifierOn(c) && -1 !== h.indexOf(d)) return j.visible ? d === a.down ? (j.selectNext(), e = !0) : d === a.up ? (j.selectPrior(), e = !0) : d === a.escape ? (j.reset(), e = !0) : (d === a.enter || d === a.tab) && (e = b.addSuggestion()) : d === a.down && b.options.loadOnDownArrow && (j.load(k.getCurrentTagText(), k.getTags()), e = !0), e ? (c.preventDefault(), c.stopImmediatePropagation(), !1) : void 0 }), m.on("suggestion-selected", function (a) { i(c, a) }) } } }]), d.directive("tiAutocompleteMatch", ["$sce", "tiUtil", function (a, b) { return { restrict: "E", require: "^autoComplete", template: '', scope: { $scope: "=scope", data: "=" }, link: function (c, d, e, f) { var g = f.registerAutocompleteMatch(), h = g.getOptions(); c.$$template = h.template, c.$index = c.$parent.$index, c.$highlight = function (c) { return h.highlightMatchedText && (c = b.safeHighlight(c, g.getQuery())), a.trustAsHtml(c) }, c.$getDisplayText = function () { return b.safeToString(c.data[h.displayProperty || h.tagsInput.displayProperty]) } } } }]), d.directive("tiTranscludeAppend", function () { return function (a, b, c, d, e) { e(function (a) { b.append(a) }) } }), d.directive("tiAutosize", ["tagsInputConfig", function (a) { return { restrict: "A", require: "ngModel", link: function (b, c, d, e) { var f, g, h = a.getTextAutosizeThreshold(); f = angular.element(''), f.css("display", "none").css("visibility", "hidden").css("width", "auto").css("white-space", "pre"), c.parent().append(f), g = function (a) { var b, e = a; return angular.isString(e) && 0 === e.length && (e = d.placeholder), e && (f.text(e), f.css("display", ""), b = f.prop("offsetWidth"), f.css("display", "none")), c.css("width", b ? b + h + "px" : ""), a }, e.$parsers.unshift(g), e.$formatters.unshift(g), d.$observe("placeholder", function (a) { e.$modelValue || g(a) }) } } }]), d.directive("tiBindAttrs", function () { return function (a, b, c) { a.$watch(c.tiBindAttrs, function (a) { angular.forEach(a, function (a, b) { c.$set(b, a) }) }, !0) } }), d.provider("tagsInputConfig", function () { var a = {}, b = {}, c = 3; this.setDefaults = function (b, c) { return a[b] = c, this }, this.setActiveInterpolation = function (a, c) { return b[a] = c, this }, this.setTextAutosizeThreshold = function (a) { return c = a, this }, this.$get = ["$interpolate", function (d) { var e = {}; return e[String] = function (a) { return a }, e[Number] = function (a) { return parseInt(a, 10) }, e[Boolean] = function (a) { return "true" === a.toLowerCase() }, e[RegExp] = function (a) { return new RegExp(a) }, { load: function (c, f, g, h) { var i = function () { return !0 }; f.options = {}, angular.forEach(h, function (h, j) { var k, l, m, n, o, p; k = h[0], l = h[1], m = h[2] || i, n = e[k], o = function () { var b = a[c] && a[c][j]; return angular.isDefined(b) ? b : l }, p = function (a) { f.options[j] = a && m(a) ? n(a) : o() }, b[c] && b[c][j] ? g.$observe(j, function (a) { p(a), f.events.trigger("option-change", { name: j, newValue: a }) }) : p(g[j] && d(g[j])(f.$parent)) }) }, getTextAutosizeThreshold: function () { return c } } }] }), d.factory("tiUtil", ["$timeout", "$q", function (a, b) { var c = {}; return c.debounce = function (b, c) { var d; return function () { var e = arguments; a.cancel(d), d = a(function () { b.apply(null, e) }, c) } }, c.makeObjectArray = function (a, b) { if (!angular.isArray(a) || 0 === a.length || angular.isObject(a[0])) return a; var c = []; return a.forEach(function (a) { var d = {}; d[b] = a, c.push(d) }), c }, c.findInObjectArray = function (a, b, d, e) { var f = null; return e = e || c.defaultComparer, a.some(function (a) { return e(a[d], b[d]) ? (f = a, !0) : void 0 }), f }, c.defaultComparer = function (a, b) { return c.safeToString(a).toLowerCase() === c.safeToString(b).toLowerCase() }, c.safeHighlight = function (a, b) { function d(a) { return a.replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1") } if (a = c.encodeHTML(a), b = c.encodeHTML(b), !b) return a; var e = new RegExp("&[^;]+;|" + d(b), "gi"); return a.replace(e, function (a) { return a.toLowerCase() === b.toLowerCase() ? "" + a + "" : a }) }, c.safeToString = function (a) { return angular.isUndefined(a) || null == a ? "" : a.toString().trim() }, c.encodeHTML = function (a) { return c.safeToString(a).replace(/&/g, "&").replace(//g, ">") }, c.handleUndefinedResult = function (a, b) { return function () { var c = a.apply(null, arguments); return angular.isUndefined(c) ? b : c } }, c.replaceSpacesWithDashes = function (a) { return c.safeToString(a).replace(/\s/g, "-") }, c.isModifierOn = function (a) { return a.shiftKey || a.ctrlKey || a.altKey || a.metaKey }, c.promisifyValue = function (a) { return a = angular.isUndefined(a) ? !0 : a, b[a ? "when" : "reject"]() }, c.simplePubSub = function () { var a = {}; return { on: function (b, c, d) { return b.split(" ").forEach(function (b) { a[b] || (a[b] = []); var e = d ? [].unshift : [].push; e.call(a[b], c) }), this }, trigger: function (b, d) { var e = a[b] || []; return e.every(function (a) { return c.handleUndefinedResult(a, !0)(d) }), this } } }, c }]), d.run(["$templateCache", function (a) { a.put("ngTagsInput/tags-input.html", '
'), a.put("ngTagsInput/tag-item.html", ' '), a.put("ngTagsInput/auto-complete.html", '
'), a.put("ngTagsInput/auto-complete-match.html", '') }]) }(); "use strict"; -app.factory("RestAttributeFieldPortalService", [ +app.factory("RestMixDatabasePortalService", [ + "BaseRestService", + "CommonService", + function (baseService, commonService) { + var serviceFactory = Object.create(baseService); + serviceFactory.init("mix-database/portal", true); + return serviceFactory; + }, +]); + +"use strict"; +app.factory("RestMixDatabaseColumnPortalService", [ "BaseRestService", "CommonService", function (baseService, commonService) { var serviceFactory = Object.create(baseService); - serviceFactory.init("attribute-field/portal", true); + serviceFactory.init("mix-database-column/portal", true); var _initData = async function (attrSetName) { var url = this.prefixUrl + "/init/" + attrSetName; var req = { @@ -14801,40 +14918,33 @@ app.factory("RestAttributeFieldPortalService", [ }, ]); -'use strict'; -app.factory('RestAttributeSetPortalService', ['BaseRestService', 'CommonService', function (baseService, commonService) { - - var serviceFactory = Object.create(baseService); - serviceFactory.init('attribute-set/portal', true); - return serviceFactory; - -}]); - -'use strict'; -app.factory('RestAttributeSetDataClientService', ['BaseRestService', 'CommonService', function (baseService, commonService) { - +"use strict"; +app.factory("RestMixDatabaseDataClientService", [ + "BaseRestService", + "CommonService", + function (baseService, commonService) { var serviceFactory = Object.create(baseService); - serviceFactory.init('attribute-set-data/client'); + serviceFactory.init("mix-database-data/client"); var _initData = async function (attrSetName) { - var url = this.prefixUrl + '/init/' + attrSetName; - var req = { - method: 'GET', - url: url - }; - return await commonService.getRestApiResult(req); + var url = this.prefixUrl + "/init/" + attrSetName; + var req = { + method: "GET", + url: url, + }; + return await commonService.getRestApiResult(req); }; serviceFactory.initData = _initData; return serviceFactory; - -}]); + }, +]); "use strict"; -app.factory("RestAttributeSetDataPortalService", [ +app.factory("RestMixDatabaseDataPortalService", [ "BaseRestService", "CommonService", function (baseService, commonService) { var serviceFactory = angular.copy(baseService); - serviceFactory.init("attribute-set-data/portal"); + serviceFactory.init("mix-database-data/portal"); var _saveAdditionalData = async function (objData) { var url = this.prefixUrl + "/save-additional-data"; @@ -14884,11 +14994,11 @@ app.factory("RestAttributeSetDataPortalService", [ return await commonService.getRestApiResult(req); }; - var _import = async function (attributeSetName, file) { + var _import = async function (mixDatabaseName, file) { var url = (this.prefixUrl || "/" + this.lang + "/" + this.modelName) + "/import-data/" + - attributeSetName; + mixDatabaseName; var frm = new FormData(); frm.append("file", file); return serviceFactory.ajaxSubmitForm(frm, url); @@ -14903,15 +15013,15 @@ app.factory("RestAttributeSetDataPortalService", [ }, ]); -'use strict'; -app.factory('RestAttributeValuePortalService', ['BaseRestService', - function (baseService) { - - var serviceFactory = Object.create(baseService); - serviceFactory.init('attribute-set-value/portal'); - return serviceFactory; - - }]); +"use strict"; +app.factory("RestMixDatabaseDataValuePortalService", [ + "BaseRestService", + function (baseService) { + var serviceFactory = Object.create(baseService); + serviceFactory.init("mix-database-data-value/portal"); + return serviceFactory; + }, +]); "use strict"; app.factory("RestMvcModuleDataService", [ @@ -14941,23 +15051,27 @@ app.factory('RestMvcPostService', ['BaseRestService', return serviceFactory; }]); -'use strict'; -app.factory('RestRelatedAttributeDataPortalService', ['BaseRestService', 'CommonService', function (baseService, commonService) { - +"use strict"; +app.factory("RestRelatedAttributeDataPortalService", [ + "BaseRestService", + "CommonService", + function (baseService, commonService) { var serviceFactory = angular.copy(baseService); - serviceFactory.init('related-attribute-data/portal'); + serviceFactory.init("mix-database-data-association/portal"); return serviceFactory; + }, +]); -}]); - -'use strict'; -app.factory('RestRelatedAttributeSetPortalService', ['BaseRestService', 'CommonService', function (baseService, commonService) { - +"use strict"; +app.factory("RestRelatedMixDatabasePortalService", [ + "BaseRestService", + "CommonService", + function (baseService, commonService) { var serviceFactory = Object.create(baseService); - serviceFactory.init('related-attribute-set/portal'); + serviceFactory.init("related-mix-database/portal"); return serviceFactory; - -}]); + }, +]); /*! * html2canvas 1.0.0-rc.7 diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/js/shared.min.js b/src/Mix.Cms.Web/wwwroot/mix-app/js/shared.min.js index 95ff2434d..58226bdef 100644 --- a/src/Mix.Cms.Web/wwwroot/mix-app/js/shared.min.js +++ b/src/Mix.Cms.Web/wwwroot/mix-app/js/shared.min.js @@ -1 +1 @@ -!function(e,c){"object"==typeof exports&&"undefined"!=typeof module?c(exports):"function"==typeof define&&define.amd?define(["exports"],c):c((e=e||self).azblob={})}(this,function(e){"use strict";function c(e){return e.toLowerCase()}var t=function(){function e(e){if(this._headersMap={},e)for(var c in e)this.set(c,e[c])}return e.prototype.set=function(e,t){this._headersMap[c(e)]={name:e,value:t.toString()}},e.prototype.get=function(e){var t=this._headersMap[c(e)];return t?t.value:void 0},e.prototype.contains=function(e){return!!this._headersMap[c(e)]},e.prototype.remove=function(e){var t=this.contains(e);return delete this._headersMap[c(e)],t},e.prototype.rawHeaders=function(){var e={};for(var c in this._headersMap){var t=this._headersMap[c];e[t.name.toLowerCase()]=t.value}return e},e.prototype.headersArray=function(){var e=[];for(var c in this._headersMap)e.push(this._headersMap[c]);return e},e.prototype.headerNames=function(){for(var e=[],c=this.headersArray(),t=0;t>>((3&c)<<3)&255;return a}}}(c={exports:{}}),c.exports}(),i=[],n=0;n<256;++n)i[n]=(n+256).toString(16).substr(1);var l=function(e,c){var t=c||0,a=i;return[a[e[t++]],a[e[t++]],a[e[t++]],a[e[t++]],"-",a[e[t++]],a[e[t++]],"-",a[e[t++]],a[e[t++]],"-",a[e[t++]],a[e[t++]],"-",a[e[t++]],a[e[t++]],a[e[t++]],a[e[t++]],a[e[t++]],a[e[t++]]].join("")},o=function(e,c,t){var a=c&&t||0;"string"==typeof e&&(c="binary"===e?new Array(16):null,e=null);var r=(e=e||{}).random||(e.rng||s)();if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,c)for(var i=0;i<16;++i)c[a+i]=r[i];return c||l(r)},m={msRestVersion:"2.0.4",HTTP:"http:",HTTPS:"https:",HTTP_PROXY:"HTTP_PROXY",HTTPS_PROXY:"HTTPS_PROXY",HttpConstants:{HttpVerbs:{PUT:"PUT",GET:"GET",DELETE:"DELETE",POST:"POST",MERGE:"MERGE",HEAD:"HEAD",PATCH:"PATCH"},StatusCodes:{TooManyRequests:429}},HeaderConstants:{AUTHORIZATION:"authorization",AUTHORIZATION_SCHEME:"Bearer",RETRY_AFTER:"Retry-After",USER_AGENT:"User-Agent"}},h="undefined"!=typeof process&&!!process.version&&!!process.versions&&!!process.versions.node;function v(e){var c={};return c.body=e.bodyAsText,c.headers=e.headers,c.status=e.status,c}function z(e){var c=e.clone();return c.headers&&c.headers.remove("authorization"),c}function d(){return o()}function u(e,c){return new Promise(function(t){return setTimeout(function(){return t(c)},e)})}var p=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function f(e,c,t){return e&&c?e.split(c).join(t||""):e}var M=function(){function e(e,c){void 0===e&&(e={}),this.modelMappers=e,this.isXML=c}return e.prototype.validateConstraints=function(e,c,t){var a=function(e,a){throw new Error('"'+t+'" with value "'+c+'" should satisfy the constraint "'+e+'": '+a+".")};if(e.constraints&&null!=c){var r=e.constraints,s=r.ExclusiveMaximum,i=r.ExclusiveMinimum,n=r.InclusiveMaximum,l=r.InclusiveMinimum,o=r.MaxItems,m=r.MaxLength,h=r.MinItems,v=r.MinLength,z=r.MultipleOf,d=r.Pattern,u=r.UniqueItems;if(null!=s&&c>=s&&a("ExclusiveMaximum",s),null!=i&&c<=i&&a("ExclusiveMinimum",i),null!=n&&c>n&&a("InclusiveMaximum",n),null!=l&&co&&a("MaxItems",o),null!=m&&c.length>m&&a("MaxLength",m),null!=h&&c.length=0&&"="===e[t-1];)--t;return e.substr(0,t)}(a(e)).replace(/\+/g,"-").replace(/\//g,"_")}}(c)}return c}(0,c):null!==s.match(/^Sequence$/gi)?r=function(e,c,t,a){if(!Array.isArray(t))throw new Error(a+" must be of type Array.");var r=c.type.element;if(!r||"object"!=typeof r)throw new Error('element" metadata for an Array must be defined in the mapper and it must of type "object" in '+a+".");for(var s=[],i=0;i0&&r[r.length-1])&&(6===s[0]||2===s[0])){i=0;continue}if(3===s[0]&&(!r||s[1]>r[0]&&s[1]'+Z.serializeToString(t)}function X(e){for(var c=[],t=0,a=Object.keys(e);t=200&&t.status<300);i.headersMapper&&(e.parsedHeaders=c.serializer.deserialize(i.headersMapper,e.headers.rawHeaders(),"operationRes.parsedHeaders"))}}else{var l=c.responses.default;if(l){var o=B(c)?"Unexpected status code: "+a:e.bodyAsText,m=new R(o);m.statusCode=a,m.request=z(e.request),m.response=v(e);var h=e.parsedBody;try{if(h){var d=l.bodyMapper;if(d&&"CloudError"===d.serializedName)h.error&&(h=h.error),h.code&&(m.code=h.code),h.message&&(m.message=h.message);else{var u=h;h.error&&(u=h.error),m.code=u.code,u.message&&(m.message=u.message)}if(d){var p=h;c.isXML&&d.type.name===L.Sequence&&(p="object"==typeof h?h[d.xmlElementName]:[]),m.body=c.serializer.deserialize(d,p,"error.body")}}}catch(c){m.message='Error "'+c.message+'" occurred in deserializing the responseBody - "'+e.bodyAsText+'" for the default response.'}return Promise.reject(m)}}}}return Promise.resolve(e)})}(c.jsonContentTypes,c.xmlContentTypes,e)})]})})},c}(G),J=3e4,ee=3,ce=9e4,te=3e3,ae=function(e){function c(c,t,a,r,s,i){var n=e.call(this,c,t)||this;function l(e){return"number"==typeof e}return n.retryCount=l(a)?a:ee,n.retryInterval=l(r)?r:J,n.minRetryInterval=l(s)?s:te,n.maxRetryInterval=l(i)?i:ce,n}return x(c,e),c.prototype.sendRequest=function(e){var c=this;return this._nextPolicy.sendRequest(e.clone()).then(function(t){return re(c,e,t)}).catch(function(t){return re(c,e,t.response,void 0,t)})},c}(G);function re(e,c,t,a,r){a=function(e,c,t){c||(c={retryCount:0,retryInterval:0}),t&&(c.error&&(t.innerError=c.error),c.error=t),c.retryCount++;var a=Math.pow(2,c.retryCount)-1;return a*=.8*e.retryInterval+Math.floor(Math.random()*(1.2*e.retryInterval-.8*e.retryInterval)),c.retryInterval=Math.min(e.minRetryInterval+a,e.maxRetryInterval),c}(e,a,r);var s=c.abortSignal&&c.abortSignal.aborted;if(!s&&function(e,c,t){if(null==c||c<500&&408!==c||501===c||505===c)return!1;if(!t)throw new Error("retryData for the ExponentialRetryPolicyFilter cannot be null.");return(t&&t.retryCount)0},e.prototype.set=function(e,c){if(e)if(null!=c){var t=Array.isArray(c)?c:c.toString();this._rawQuery[e]=t}else delete this._rawQuery[e]},e.prototype.get=function(e){return e?this._rawQuery[e]:void 0},e.prototype.toString=function(){var e="";for(var c in this._rawQuery){e&&(e+="&");var t=this._rawQuery[c];if(Array.isArray(t)){for(var a=[],r=0,s=t;r0)for(var a=this._requestPolicyFactories.length-1;a>=0;--a)t=this._requestPolicyFactories[a].create(t,this._requestPolicyOptions);return t.sendRequest(c)},e.prototype.sendOperationRequest=function(e,c,t){"function"==typeof e.options&&(t=e.options,e.options=void 0);var a,r=new S;try{var s=c.baseUrl||this.baseUri;if(!s)throw new Error("If operationSpec.baseUrl is not specified, then the ServiceClient must have a baseUri string property that contains the base URL to use.");r.method=c.httpMethod,r.operationSpec=c;var i=me.parse(s);if(c.path&&i.appendPath(c.path),c.urlParameters&&c.urlParameters.length>0)for(var n=0,l=c.urlParameters;n0)for(var h=0,v=c.queryParameters;h0){c.formData={};for(var v=0,z=a.formDataParameters;v0){if(r.isConstant)i=r.defaultValue;else{var n=qe(t,a);n.propertyFound||(n=qe(c,a));var l=!1;n.propertyFound||(l=r.required||"options"===a[0]&&2===a.length),i=l?r.defaultValue:n.propertyValue}var o=_(a,r);s.serialize(r,i,o)}}else for(var m in r.required&&(i={}),a){var h=r.type.modelProperties[m],v=a[m],z=e(c,t,v,h,s),d=_(v,h);s.serialize(h,z,d),void 0!==z&&(i||(i={}),i[m]=z)}return i}(e,c,t.parameterPath,t.mapper,a)}function qe(e,c){for(var t={propertyFound:!1},a=0;a0&&(this.timer=setTimeout(function(){r.abort.call(r)},c),this.timer&&h&&this.timer.unref())}return Object.defineProperty(e.prototype,"aborted",{get:function(){return this._aborted},enumerable:!0,configurable:!0}),Object.defineProperty(e,"none",{get:function(){return new e(void 0,0)},enumerable:!0,configurable:!0}),e.timeout=function(c){return new e(void 0,c)},e.prototype.withTimeout=function(c){var t=new e(this,c);return this.children.push(t),t},e.prototype.withValue=function(c,t){var a=new e(this,0,c,t);return this.children.push(a),a},e.prototype.getValue=function(e){for(var c=this;c;c=c.parent)if(c.key===e)return c.value},e.prototype.abort=function(){var e=this;this.aborted||(this.cancelTimer(),this.onabort&&this.onabort.call(this,{type:"abort"}),this.abortEventListeners.forEach(function(c){c.call(e,{type:"abort"})}),this.children.forEach(function(e){return e.cancelByParent()}),this._aborted=!0)},e.prototype.addEventListener=function(e,c){this.abortEventListeners.push(c)},e.prototype.removeEventListener=function(e,c){var t=this.abortEventListeners.indexOf(c);t>-1&&this.abortEventListeners.splice(t,1)},e.prototype.dispatchEvent=function(){throw new Error("Method not implemented.")},e.prototype.cancelByParent=function(){this.abort()},e.prototype.cancelTimer=function(){this.timer&&clearTimeout(this.timer)},e}(),ke={serializedName:"KeyInfo",type:{name:"Composite",className:"KeyInfo",modelProperties:{start:{xmlName:"Start",required:!0,serializedName:"Start",type:{name:"String"}},expiry:{xmlName:"Expiry",required:!0,serializedName:"Expiry",type:{name:"String"}}}}},Ee={serializedName:"UserDelegationKey",type:{name:"Composite",className:"UserDelegationKey",modelProperties:{signedOid:{xmlName:"SignedOid",required:!0,serializedName:"SignedOid",type:{name:"String"}},signedTid:{xmlName:"SignedTid",required:!0,serializedName:"SignedTid",type:{name:"String"}},signedStart:{xmlName:"SignedStart",required:!0,serializedName:"SignedStart",type:{name:"String"}},signedExpiry:{xmlName:"SignedExpiry",required:!0,serializedName:"SignedExpiry",type:{name:"String"}},signedService:{xmlName:"SignedService",required:!0,serializedName:"SignedService",type:{name:"String"}},signedVersion:{xmlName:"SignedVersion",required:!0,serializedName:"SignedVersion",type:{name:"String"}},value:{xmlName:"Value",required:!0,serializedName:"Value",type:{name:"String"}}}}},Ie={serializedName:"StorageError",type:{name:"Composite",className:"StorageError",modelProperties:{message:{xmlName:"Message",serializedName:"Message",type:{name:"String"}}}}},Oe={serializedName:"DataLakeStorageError",type:{name:"Composite",className:"DataLakeStorageError",modelProperties:{error:{xmlName:"error",serializedName:"error",type:{name:"Composite",className:"DataLakeStorageErrorError"}}}}},_e={xmlName:"EnumerationResults",serializedName:"ListBlobsFlatSegmentResponse",type:{name:"Composite",className:"ListBlobsFlatSegmentResponse",modelProperties:{serviceEndpoint:{xmlIsAttribute:!0,xmlName:"ServiceEndpoint",required:!0,serializedName:"ServiceEndpoint",type:{name:"String"}},containerName:{xmlIsAttribute:!0,xmlName:"ContainerName",required:!0,serializedName:"ContainerName",type:{name:"String"}},prefix:{xmlName:"Prefix",serializedName:"Prefix",type:{name:"String"}},marker:{xmlName:"Marker",serializedName:"Marker",type:{name:"String"}},maxResults:{xmlName:"MaxResults",serializedName:"MaxResults",type:{name:"Number"}},delimiter:{xmlName:"Delimiter",serializedName:"Delimiter",type:{name:"String"}},segment:{xmlName:"Blobs",required:!0,serializedName:"Segment",type:{name:"Composite",className:"BlobFlatListSegment"}},nextMarker:{xmlName:"NextMarker",serializedName:"NextMarker",type:{name:"String"}}}}},Be={xmlName:"EnumerationResults",serializedName:"ListBlobsHierarchySegmentResponse",type:{name:"Composite",className:"ListBlobsHierarchySegmentResponse",modelProperties:{serviceEndpoint:{xmlIsAttribute:!0,xmlName:"ServiceEndpoint",required:!0,serializedName:"ServiceEndpoint",type:{name:"String"}},containerName:{xmlIsAttribute:!0,xmlName:"ContainerName",required:!0,serializedName:"ContainerName",type:{name:"String"}},prefix:{xmlName:"Prefix",serializedName:"Prefix",type:{name:"String"}},marker:{xmlName:"Marker",serializedName:"Marker",type:{name:"String"}},maxResults:{xmlName:"MaxResults",serializedName:"MaxResults",type:{name:"Number"}},delimiter:{xmlName:"Delimiter",serializedName:"Delimiter",type:{name:"String"}},segment:{xmlName:"Blobs",required:!0,serializedName:"Segment",type:{name:"Composite",className:"BlobHierarchyListSegment"}},nextMarker:{xmlName:"NextMarker",serializedName:"NextMarker",type:{name:"String"}}}}},De={serializedName:"BlockList",type:{name:"Composite",className:"BlockList",modelProperties:{committedBlocks:{xmlIsWrapped:!0,xmlName:"CommittedBlocks",xmlElementName:"Block",serializedName:"CommittedBlocks",type:{name:"Sequence",element:{type:{name:"Composite",className:"Block"}}}},uncommittedBlocks:{xmlIsWrapped:!0,xmlName:"UncommittedBlocks",xmlElementName:"Block",serializedName:"UncommittedBlocks",type:{name:"Sequence",element:{type:{name:"Composite",className:"Block"}}}}}}},Ue={xmlName:"BlockList",serializedName:"BlockLookupList",type:{name:"Composite",className:"BlockLookupList",modelProperties:{committed:{xmlName:"Committed",xmlElementName:"Committed",serializedName:"Committed",type:{name:"Sequence",element:{type:{name:"String"}}}},uncommitted:{xmlName:"Uncommitted",xmlElementName:"Uncommitted",serializedName:"Uncommitted",type:{name:"Sequence",element:{type:{name:"String"}}}},latest:{xmlName:"Latest",xmlElementName:"Latest",serializedName:"Latest",type:{name:"Sequence",element:{type:{name:"String"}}}}}}},je={xmlName:"EnumerationResults",serializedName:"ListContainersSegmentResponse",type:{name:"Composite",className:"ListContainersSegmentResponse",modelProperties:{serviceEndpoint:{xmlIsAttribute:!0,xmlName:"ServiceEndpoint",required:!0,serializedName:"ServiceEndpoint",type:{name:"String"}},prefix:{xmlName:"Prefix",serializedName:"Prefix",type:{name:"String"}},marker:{xmlName:"Marker",serializedName:"Marker",type:{name:"String"}},maxResults:{xmlName:"MaxResults",serializedName:"MaxResults",type:{name:"Number"}},containerItems:{xmlIsWrapped:!0,xmlName:"Containers",xmlElementName:"Container",required:!0,serializedName:"ContainerItems",type:{name:"Sequence",element:{type:{name:"Composite",className:"ContainerItem"}}}},nextMarker:{xmlName:"NextMarker",serializedName:"NextMarker",type:{name:"String"}}}}},Ze={serializedName:"PageList",type:{name:"Composite",className:"PageList",modelProperties:{pageRange:{xmlName:"PageRange",xmlElementName:"PageRange",serializedName:"PageRange",type:{name:"Sequence",element:{type:{name:"Composite",className:"PageRange"}}}},clearRange:{xmlName:"ClearRange",xmlElementName:"ClearRange",serializedName:"ClearRange",type:{name:"Sequence",element:{type:{name:"Composite",className:"ClearRange"}}}}}}},Fe={serializedName:"StorageServiceProperties",type:{name:"Composite",className:"StorageServiceProperties",modelProperties:{logging:{xmlName:"Logging",serializedName:"Logging",type:{name:"Composite",className:"Logging"}},hourMetrics:{xmlName:"HourMetrics",serializedName:"HourMetrics",type:{name:"Composite",className:"Metrics"}},minuteMetrics:{xmlName:"MinuteMetrics",serializedName:"MinuteMetrics",type:{name:"Composite",className:"Metrics"}},cors:{xmlIsWrapped:!0,xmlName:"Cors",xmlElementName:"CorsRule",serializedName:"Cors",type:{name:"Sequence",element:{type:{name:"Composite",className:"CorsRule"}}}},defaultServiceVersion:{xmlName:"DefaultServiceVersion",serializedName:"DefaultServiceVersion",type:{name:"String"}},deleteRetentionPolicy:{xmlName:"DeleteRetentionPolicy",serializedName:"DeleteRetentionPolicy",type:{name:"Composite",className:"RetentionPolicy"}},staticWebsite:{xmlName:"StaticWebsite",serializedName:"StaticWebsite",type:{name:"Composite",className:"StaticWebsite"}}}}},Xe={serializedName:"StorageServiceStats",type:{name:"Composite",className:"StorageServiceStats",modelProperties:{geoReplication:{xmlName:"GeoReplication",serializedName:"GeoReplication",type:{name:"Composite",className:"GeoReplication"}}}}},Ge={serializedName:"service-setproperties-headers",type:{name:"Composite",className:"ServiceSetPropertiesHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Ke={serializedName:"service-getproperties-headers",type:{name:"Composite",className:"ServiceGetPropertiesHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},We={serializedName:"service-getstatistics-headers",type:{name:"Composite",className:"ServiceGetStatisticsHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Ye={serializedName:"service-listcontainerssegment-headers",type:{name:"Composite",className:"ServiceListContainersSegmentHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Qe={serializedName:"service-getuserdelegationkey-headers",type:{name:"Composite",className:"ServiceGetUserDelegationKeyHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},$e={serializedName:"service-getaccountinfo-headers",type:{name:"Composite",className:"ServiceGetAccountInfoHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},skuName:{serializedName:"x-ms-sku-name",type:{name:"Enum",allowedValues:["Standard_LRS","Standard_GRS","Standard_RAGRS","Standard_ZRS","Premium_LRS"]}},accountKind:{serializedName:"x-ms-account-kind",type:{name:"Enum",allowedValues:["Storage","BlobStorage","StorageV2"]}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Je={serializedName:"service-submitbatch-headers",type:{name:"Composite",className:"ServiceSubmitBatchHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},contentType:{serializedName:"content-type",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},ec={serializedName:"container-create-headers",type:{name:"Composite",className:"ContainerCreateHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},cc={serializedName:"container-getproperties-headers",type:{name:"Composite",className:"ContainerGetPropertiesHeaders",modelProperties:{metadata:{serializedName:"x-ms-meta",type:{name:"Dictionary",value:{type:{name:"String"}}},headerCollectionPrefix:"x-ms-meta-"},eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},leaseDuration:{serializedName:"x-ms-lease-duration",type:{name:"Enum",allowedValues:["infinite","fixed"]}},leaseState:{serializedName:"x-ms-lease-state",type:{name:"Enum",allowedValues:["available","leased","expired","breaking","broken"]}},leaseStatus:{serializedName:"x-ms-lease-status",type:{name:"Enum",allowedValues:["locked","unlocked"]}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},blobPublicAccess:{serializedName:"x-ms-blob-public-access",type:{name:"String"}},hasImmutabilityPolicy:{serializedName:"x-ms-has-immutability-policy",type:{name:"Boolean"}},hasLegalHold:{serializedName:"x-ms-has-legal-hold",type:{name:"Boolean"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},tc={serializedName:"container-delete-headers",type:{name:"Composite",className:"ContainerDeleteHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},ac={serializedName:"container-setmetadata-headers",type:{name:"Composite",className:"ContainerSetMetadataHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},rc={serializedName:"container-getaccesspolicy-headers",type:{name:"Composite",className:"ContainerGetAccessPolicyHeaders",modelProperties:{blobPublicAccess:{serializedName:"x-ms-blob-public-access",type:{name:"String"}},eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},sc={serializedName:"container-setaccesspolicy-headers",type:{name:"Composite",className:"ContainerSetAccessPolicyHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},ic={serializedName:"container-acquirelease-headers",type:{name:"Composite",className:"ContainerAcquireLeaseHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},leaseId:{serializedName:"x-ms-lease-id",type:{name:"String"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},nc={serializedName:"container-releaselease-headers",type:{name:"Composite",className:"ContainerReleaseLeaseHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},lc={serializedName:"container-renewlease-headers",type:{name:"Composite",className:"ContainerRenewLeaseHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},leaseId:{serializedName:"x-ms-lease-id",type:{name:"String"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},oc={serializedName:"container-breaklease-headers",type:{name:"Composite",className:"ContainerBreakLeaseHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},leaseTime:{serializedName:"x-ms-lease-time",type:{name:"Number"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},mc={serializedName:"container-changelease-headers",type:{name:"Composite",className:"ContainerChangeLeaseHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},leaseId:{serializedName:"x-ms-lease-id",type:{name:"String"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},hc={serializedName:"container-listblobflatsegment-headers",type:{name:"Composite",className:"ContainerListBlobFlatSegmentHeaders",modelProperties:{contentType:{serializedName:"content-type",type:{name:"String"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},vc={serializedName:"container-listblobhierarchysegment-headers",type:{name:"Composite",className:"ContainerListBlobHierarchySegmentHeaders",modelProperties:{contentType:{serializedName:"content-type",type:{name:"String"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},zc={serializedName:"container-getaccountinfo-headers",type:{name:"Composite",className:"ContainerGetAccountInfoHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},skuName:{serializedName:"x-ms-sku-name",type:{name:"Enum",allowedValues:["Standard_LRS","Standard_GRS","Standard_RAGRS","Standard_ZRS","Premium_LRS"]}},accountKind:{serializedName:"x-ms-account-kind",type:{name:"Enum",allowedValues:["Storage","BlobStorage","StorageV2"]}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},dc={serializedName:"blob-download-headers",type:{name:"Composite",className:"BlobDownloadHeaders",modelProperties:{lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},metadata:{serializedName:"x-ms-meta",type:{name:"Dictionary",value:{type:{name:"String"}}},headerCollectionPrefix:"x-ms-meta-"},contentLength:{serializedName:"content-length",type:{name:"Number"}},contentType:{serializedName:"content-type",type:{name:"String"}},contentRange:{serializedName:"content-range",type:{name:"String"}},eTag:{serializedName:"etag",type:{name:"String"}},contentMD5:{serializedName:"content-md5",type:{name:"ByteArray"}},contentEncoding:{serializedName:"content-encoding",type:{name:"String"}},cacheControl:{serializedName:"cache-control",type:{name:"String"}},contentDisposition:{serializedName:"content-disposition",type:{name:"String"}},contentLanguage:{serializedName:"content-language",type:{name:"String"}},blobSequenceNumber:{serializedName:"x-ms-blob-sequence-number",type:{name:"Number"}},blobType:{serializedName:"x-ms-blob-type",type:{name:"Enum",allowedValues:["BlockBlob","PageBlob","AppendBlob"]}},copyCompletionTime:{serializedName:"x-ms-copy-completion-time",type:{name:"DateTimeRfc1123"}},copyStatusDescription:{serializedName:"x-ms-copy-status-description",type:{name:"String"}},copyId:{serializedName:"x-ms-copy-id",type:{name:"String"}},copyProgress:{serializedName:"x-ms-copy-progress",type:{name:"String"}},copySource:{serializedName:"x-ms-copy-source",type:{name:"String"}},copyStatus:{serializedName:"x-ms-copy-status",type:{name:"Enum",allowedValues:["pending","success","aborted","failed"]}},leaseDuration:{serializedName:"x-ms-lease-duration",type:{name:"Enum",allowedValues:["infinite","fixed"]}},leaseState:{serializedName:"x-ms-lease-state",type:{name:"Enum",allowedValues:["available","leased","expired","breaking","broken"]}},leaseStatus:{serializedName:"x-ms-lease-status",type:{name:"Enum",allowedValues:["locked","unlocked"]}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},acceptRanges:{serializedName:"accept-ranges",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},blobCommittedBlockCount:{serializedName:"x-ms-blob-committed-block-count",type:{name:"Number"}},isServerEncrypted:{serializedName:"x-ms-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",type:{name:"String"}},blobContentMD5:{serializedName:"x-ms-blob-content-md5",type:{name:"ByteArray"}},contentCrc64:{serializedName:"x-ms-content-crc64",type:{name:"ByteArray"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},uc={serializedName:"blob-getproperties-headers",type:{name:"Composite",className:"BlobGetPropertiesHeaders",modelProperties:{lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},creationTime:{serializedName:"x-ms-creation-time",type:{name:"DateTimeRfc1123"}},metadata:{serializedName:"x-ms-meta",type:{name:"Dictionary",value:{type:{name:"String"}}},headerCollectionPrefix:"x-ms-meta-"},blobType:{serializedName:"x-ms-blob-type",type:{name:"Enum",allowedValues:["BlockBlob","PageBlob","AppendBlob"]}},copyCompletionTime:{serializedName:"x-ms-copy-completion-time",type:{name:"DateTimeRfc1123"}},copyStatusDescription:{serializedName:"x-ms-copy-status-description",type:{name:"String"}},copyId:{serializedName:"x-ms-copy-id",type:{name:"String"}},copyProgress:{serializedName:"x-ms-copy-progress",type:{name:"String"}},copySource:{serializedName:"x-ms-copy-source",type:{name:"String"}},copyStatus:{serializedName:"x-ms-copy-status",type:{name:"Enum",allowedValues:["pending","success","aborted","failed"]}},isIncrementalCopy:{serializedName:"x-ms-incremental-copy",type:{name:"Boolean"}},destinationSnapshot:{serializedName:"x-ms-copy-destination-snapshot",type:{name:"String"}},leaseDuration:{serializedName:"x-ms-lease-duration",type:{name:"Enum",allowedValues:["infinite","fixed"]}},leaseState:{serializedName:"x-ms-lease-state",type:{name:"Enum",allowedValues:["available","leased","expired","breaking","broken"]}},leaseStatus:{serializedName:"x-ms-lease-status",type:{name:"Enum",allowedValues:["locked","unlocked"]}},contentLength:{serializedName:"content-length",type:{name:"Number"}},contentType:{serializedName:"content-type",type:{name:"String"}},eTag:{serializedName:"etag",type:{name:"String"}},contentMD5:{serializedName:"content-md5",type:{name:"ByteArray"}},contentEncoding:{serializedName:"content-encoding",type:{name:"String"}},contentDisposition:{serializedName:"content-disposition",type:{name:"String"}},contentLanguage:{serializedName:"content-language",type:{name:"String"}},cacheControl:{serializedName:"cache-control",type:{name:"String"}},blobSequenceNumber:{serializedName:"x-ms-blob-sequence-number",type:{name:"Number"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},acceptRanges:{serializedName:"accept-ranges",type:{name:"String"}},blobCommittedBlockCount:{serializedName:"x-ms-blob-committed-block-count",type:{name:"Number"}},isServerEncrypted:{serializedName:"x-ms-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",type:{name:"String"}},accessTier:{serializedName:"x-ms-access-tier",type:{name:"String"}},accessTierInferred:{serializedName:"x-ms-access-tier-inferred",type:{name:"Boolean"}},archiveStatus:{serializedName:"x-ms-archive-status",type:{name:"String"}},accessTierChangeTime:{serializedName:"x-ms-access-tier-change-time",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},pc={serializedName:"blob-delete-headers",type:{name:"Composite",className:"BlobDeleteHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},fc={serializedName:"blob-setaccesscontrol-headers",type:{name:"Composite",className:"BlobSetAccessControlHeaders",modelProperties:{date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}}}}},Mc={serializedName:"blob-getaccesscontrol-headers",type:{name:"Composite",className:"BlobGetAccessControlHeaders",modelProperties:{date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},xMsOwner:{serializedName:"x-ms-owner",type:{name:"String"}},xMsGroup:{serializedName:"x-ms-group",type:{name:"String"}},xMsPermissions:{serializedName:"x-ms-permissions",type:{name:"String"}},xMsAcl:{serializedName:"x-ms-acl",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}}}}},yc={serializedName:"blob-rename-headers",type:{name:"Composite",className:"BlobRenameHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},contentLength:{serializedName:"content-length",type:{name:"Number"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}}}}},Cc={serializedName:"pageblob-create-headers",type:{name:"Composite",className:"PageBlobCreateHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},contentMD5:{serializedName:"content-md5",type:{name:"ByteArray"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},isServerEncrypted:{serializedName:"x-ms-request-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Hc={serializedName:"appendblob-create-headers",type:{name:"Composite",className:"AppendBlobCreateHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},contentMD5:{serializedName:"content-md5",type:{name:"ByteArray"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},isServerEncrypted:{serializedName:"x-ms-request-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},gc={serializedName:"blockblob-upload-headers",type:{name:"Composite",className:"BlockBlobUploadHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},contentMD5:{serializedName:"content-md5",type:{name:"ByteArray"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},isServerEncrypted:{serializedName:"x-ms-request-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},bc={serializedName:"blob-undelete-headers",type:{name:"Composite",className:"BlobUndeleteHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Vc={serializedName:"blob-sethttpheaders-headers",type:{name:"Composite",className:"BlobSetHTTPHeadersHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},blobSequenceNumber:{serializedName:"x-ms-blob-sequence-number",type:{name:"Number"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Lc={serializedName:"blob-setmetadata-headers",type:{name:"Composite",className:"BlobSetMetadataHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},isServerEncrypted:{serializedName:"x-ms-request-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Sc={serializedName:"blob-acquirelease-headers",type:{name:"Composite",className:"BlobAcquireLeaseHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},leaseId:{serializedName:"x-ms-lease-id",type:{name:"String"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Nc={serializedName:"blob-releaselease-headers",type:{name:"Composite",className:"BlobReleaseLeaseHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},xc={serializedName:"blob-renewlease-headers",type:{name:"Composite",className:"BlobRenewLeaseHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},leaseId:{serializedName:"x-ms-lease-id",type:{name:"String"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Ac={serializedName:"blob-changelease-headers",type:{name:"Composite",className:"BlobChangeLeaseHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},leaseId:{serializedName:"x-ms-lease-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Pc={serializedName:"blob-breaklease-headers",type:{name:"Composite",className:"BlobBreakLeaseHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},leaseTime:{serializedName:"x-ms-lease-time",type:{name:"Number"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},wc={serializedName:"blob-createsnapshot-headers",type:{name:"Composite",className:"BlobCreateSnapshotHeaders",modelProperties:{snapshot:{serializedName:"x-ms-snapshot",type:{name:"String"}},eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},isServerEncrypted:{serializedName:"x-ms-request-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},qc={serializedName:"blob-startcopyfromurl-headers",type:{name:"Composite",className:"BlobStartCopyFromURLHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},copyId:{serializedName:"x-ms-copy-id",type:{name:"String"}},copyStatus:{serializedName:"x-ms-copy-status",type:{name:"Enum",allowedValues:["pending","success","aborted","failed"]}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Rc={serializedName:"blob-copyfromurl-headers",type:{name:"Composite",className:"BlobCopyFromURLHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},copyId:{serializedName:"x-ms-copy-id",type:{name:"String"}},copyStatus:{serializedName:"x-ms-copy-status",type:{name:"Enum",allowedValues:["success"]}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Tc={serializedName:"blob-abortcopyfromurl-headers",type:{name:"Composite",className:"BlobAbortCopyFromURLHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},kc={serializedName:"blob-settier-headers",type:{name:"Composite",className:"BlobSetTierHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Ec={serializedName:"blob-getaccountinfo-headers",type:{name:"Composite",className:"BlobGetAccountInfoHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},skuName:{serializedName:"x-ms-sku-name",type:{name:"Enum",allowedValues:["Standard_LRS","Standard_GRS","Standard_RAGRS","Standard_ZRS","Premium_LRS"]}},accountKind:{serializedName:"x-ms-account-kind",type:{name:"Enum",allowedValues:["Storage","BlobStorage","StorageV2"]}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Ic={serializedName:"blockblob-stageblock-headers",type:{name:"Composite",className:"BlockBlobStageBlockHeaders",modelProperties:{contentMD5:{serializedName:"content-md5",type:{name:"ByteArray"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},xMsContentCrc64:{serializedName:"x-ms-content-crc64",type:{name:"ByteArray"}},isServerEncrypted:{serializedName:"x-ms-request-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Oc={serializedName:"blockblob-stageblockfromurl-headers",type:{name:"Composite",className:"BlockBlobStageBlockFromURLHeaders",modelProperties:{contentMD5:{serializedName:"content-md5",type:{name:"ByteArray"}},xMsContentCrc64:{serializedName:"x-ms-content-crc64",type:{name:"ByteArray"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},isServerEncrypted:{serializedName:"x-ms-request-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},_c={serializedName:"blockblob-commitblocklist-headers",type:{name:"Composite",className:"BlockBlobCommitBlockListHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},contentMD5:{serializedName:"content-md5",type:{name:"ByteArray"}},xMsContentCrc64:{serializedName:"x-ms-content-crc64",type:{name:"ByteArray"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},isServerEncrypted:{serializedName:"x-ms-request-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Bc={serializedName:"blockblob-getblocklist-headers",type:{name:"Composite",className:"BlockBlobGetBlockListHeaders",modelProperties:{lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},eTag:{serializedName:"etag",type:{name:"String"}},contentType:{serializedName:"content-type",type:{name:"String"}},blobContentLength:{serializedName:"x-ms-blob-content-length",type:{name:"Number"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Dc={serializedName:"pageblob-uploadpages-headers",type:{name:"Composite",className:"PageBlobUploadPagesHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},contentMD5:{serializedName:"content-md5",type:{name:"ByteArray"}},xMsContentCrc64:{serializedName:"x-ms-content-crc64",type:{name:"ByteArray"}},blobSequenceNumber:{serializedName:"x-ms-blob-sequence-number",type:{name:"Number"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},isServerEncrypted:{serializedName:"x-ms-request-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Uc={serializedName:"pageblob-clearpages-headers",type:{name:"Composite",className:"PageBlobClearPagesHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},contentMD5:{serializedName:"content-md5",type:{name:"ByteArray"}},xMsContentCrc64:{serializedName:"x-ms-content-crc64",type:{name:"ByteArray"}},blobSequenceNumber:{serializedName:"x-ms-blob-sequence-number",type:{name:"Number"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},jc={serializedName:"pageblob-uploadpagesfromurl-headers",type:{name:"Composite",className:"PageBlobUploadPagesFromURLHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},contentMD5:{serializedName:"content-md5",type:{name:"ByteArray"}},xMsContentCrc64:{serializedName:"x-ms-content-crc64",type:{name:"ByteArray"}},blobSequenceNumber:{serializedName:"x-ms-blob-sequence-number",type:{name:"Number"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},isServerEncrypted:{serializedName:"x-ms-request-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Zc={serializedName:"pageblob-getpageranges-headers",type:{name:"Composite",className:"PageBlobGetPageRangesHeaders",modelProperties:{lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},eTag:{serializedName:"etag",type:{name:"String"}},blobContentLength:{serializedName:"x-ms-blob-content-length",type:{name:"Number"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Fc={serializedName:"pageblob-getpagerangesdiff-headers",type:{name:"Composite",className:"PageBlobGetPageRangesDiffHeaders",modelProperties:{lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},eTag:{serializedName:"etag",type:{name:"String"}},blobContentLength:{serializedName:"x-ms-blob-content-length",type:{name:"Number"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Xc={serializedName:"pageblob-resize-headers",type:{name:"Composite",className:"PageBlobResizeHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},blobSequenceNumber:{serializedName:"x-ms-blob-sequence-number",type:{name:"Number"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Gc={serializedName:"pageblob-updatesequencenumber-headers",type:{name:"Composite",className:"PageBlobUpdateSequenceNumberHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},blobSequenceNumber:{serializedName:"x-ms-blob-sequence-number",type:{name:"Number"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Kc={serializedName:"pageblob-copyincremental-headers",type:{name:"Composite",className:"PageBlobCopyIncrementalHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},copyId:{serializedName:"x-ms-copy-id",type:{name:"String"}},copyStatus:{serializedName:"x-ms-copy-status",type:{name:"Enum",allowedValues:["pending","success","aborted","failed"]}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Wc={serializedName:"appendblob-appendblock-headers",type:{name:"Composite",className:"AppendBlobAppendBlockHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},contentMD5:{serializedName:"content-md5",type:{name:"ByteArray"}},xMsContentCrc64:{serializedName:"x-ms-content-crc64",type:{name:"ByteArray"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},blobAppendOffset:{serializedName:"x-ms-blob-append-offset",type:{name:"String"}},blobCommittedBlockCount:{serializedName:"x-ms-blob-committed-block-count",type:{name:"Number"}},isServerEncrypted:{serializedName:"x-ms-request-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Yc={serializedName:"appendblob-appendblockfromurl-headers",type:{name:"Composite",className:"AppendBlobAppendBlockFromUrlHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},contentMD5:{serializedName:"content-md5",type:{name:"ByteArray"}},xMsContentCrc64:{serializedName:"x-ms-content-crc64",type:{name:"ByteArray"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},blobAppendOffset:{serializedName:"x-ms-blob-append-offset",type:{name:"String"}},blobCommittedBlockCount:{serializedName:"x-ms-blob-committed-block-count",type:{name:"Number"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Qc=Object.freeze({ContainerItem:{xmlName:"Container",serializedName:"ContainerItem",type:{name:"Composite",className:"ContainerItem",modelProperties:{name:{xmlName:"Name",required:!0,serializedName:"Name",type:{name:"String"}},properties:{xmlName:"Properties",required:!0,serializedName:"Properties",type:{name:"Composite",className:"ContainerProperties"}},metadata:{xmlName:"Metadata",serializedName:"Metadata",type:{name:"Dictionary",value:{type:{name:"String"}}}}}}},ContainerProperties:{serializedName:"ContainerProperties",type:{name:"Composite",className:"ContainerProperties",modelProperties:{lastModified:{xmlName:"Last-Modified",required:!0,serializedName:"Last-Modified",type:{name:"DateTimeRfc1123"}},etag:{xmlName:"Etag",required:!0,serializedName:"Etag",type:{name:"String"}},leaseStatus:{xmlName:"LeaseStatus",serializedName:"LeaseStatus",type:{name:"Enum",allowedValues:["locked","unlocked"]}},leaseState:{xmlName:"LeaseState",serializedName:"LeaseState",type:{name:"Enum",allowedValues:["available","leased","expired","breaking","broken"]}},leaseDuration:{xmlName:"LeaseDuration",serializedName:"LeaseDuration",type:{name:"Enum",allowedValues:["infinite","fixed"]}},publicAccess:{xmlName:"PublicAccess",serializedName:"PublicAccess",type:{name:"String"}},hasImmutabilityPolicy:{xmlName:"HasImmutabilityPolicy",serializedName:"HasImmutabilityPolicy",type:{name:"Boolean"}},hasLegalHold:{xmlName:"HasLegalHold",serializedName:"HasLegalHold",type:{name:"Boolean"}}}}},CorsRule:{serializedName:"CorsRule",type:{name:"Composite",className:"CorsRule",modelProperties:{allowedOrigins:{xmlName:"AllowedOrigins",required:!0,serializedName:"AllowedOrigins",type:{name:"String"}},allowedMethods:{xmlName:"AllowedMethods",required:!0,serializedName:"AllowedMethods",type:{name:"String"}},allowedHeaders:{xmlName:"AllowedHeaders",required:!0,serializedName:"AllowedHeaders",type:{name:"String"}},exposedHeaders:{xmlName:"ExposedHeaders",required:!0,serializedName:"ExposedHeaders",type:{name:"String"}},maxAgeInSeconds:{xmlName:"MaxAgeInSeconds",required:!0,serializedName:"MaxAgeInSeconds",constraints:{InclusiveMinimum:0},type:{name:"Number"}}}}},GeoReplication:{serializedName:"GeoReplication",type:{name:"Composite",className:"GeoReplication",modelProperties:{status:{xmlName:"Status",required:!0,serializedName:"Status",type:{name:"String"}},lastSyncTime:{xmlName:"LastSyncTime",required:!0,serializedName:"LastSyncTime",type:{name:"DateTimeRfc1123"}}}}},KeyInfo:ke,ListContainersSegmentResponse:je,Logging:{serializedName:"Logging",type:{name:"Composite",className:"Logging",modelProperties:{version:{xmlName:"Version",required:!0,serializedName:"Version",type:{name:"String"}},deleteProperty:{xmlName:"Delete",required:!0,serializedName:"Delete",type:{name:"Boolean"}},read:{xmlName:"Read",required:!0,serializedName:"Read",type:{name:"Boolean"}},write:{xmlName:"Write",required:!0,serializedName:"Write",type:{name:"Boolean"}},retentionPolicy:{xmlName:"RetentionPolicy",required:!0,serializedName:"RetentionPolicy",type:{name:"Composite",className:"RetentionPolicy"}}}}},Metrics:{serializedName:"Metrics",type:{name:"Composite",className:"Metrics",modelProperties:{version:{xmlName:"Version",serializedName:"Version",type:{name:"String"}},enabled:{xmlName:"Enabled",required:!0,serializedName:"Enabled",type:{name:"Boolean"}},includeAPIs:{xmlName:"IncludeAPIs",serializedName:"IncludeAPIs",type:{name:"Boolean"}},retentionPolicy:{xmlName:"RetentionPolicy",serializedName:"RetentionPolicy",type:{name:"Composite",className:"RetentionPolicy"}}}}},RetentionPolicy:{serializedName:"RetentionPolicy",type:{name:"Composite",className:"RetentionPolicy",modelProperties:{enabled:{xmlName:"Enabled",required:!0,serializedName:"Enabled",type:{name:"Boolean"}},days:{xmlName:"Days",serializedName:"Days",constraints:{InclusiveMinimum:1},type:{name:"Number"}}}}},ServiceGetAccountInfoHeaders:$e,ServiceGetPropertiesHeaders:Ke,ServiceGetStatisticsHeaders:We,ServiceGetUserDelegationKeyHeaders:Qe,ServiceListContainersSegmentHeaders:Ye,ServiceSetPropertiesHeaders:Ge,ServiceSubmitBatchHeaders:Je,StaticWebsite:{serializedName:"StaticWebsite",type:{name:"Composite",className:"StaticWebsite",modelProperties:{enabled:{xmlName:"Enabled",required:!0,serializedName:"Enabled",type:{name:"Boolean"}},indexDocument:{xmlName:"IndexDocument",serializedName:"IndexDocument",type:{name:"String"}},errorDocument404Path:{xmlName:"ErrorDocument404Path",serializedName:"ErrorDocument404Path",type:{name:"String"}}}}},StorageError:Ie,StorageServiceProperties:Fe,StorageServiceStats:Xe,UserDelegationKey:Ee}),$c={parameterPath:["options","access"],mapper:{serializedName:"x-ms-blob-public-access",type:{name:"String"}}},Jc={parameterPath:"action",mapper:{required:!0,isConstant:!0,serializedName:"x-ms-lease-action",defaultValue:"acquire",type:{name:"String"}}},et={parameterPath:"action",mapper:{required:!0,isConstant:!0,serializedName:"x-ms-lease-action",defaultValue:"release",type:{name:"String"}}},ct={parameterPath:"action",mapper:{required:!0,isConstant:!0,serializedName:"x-ms-lease-action",defaultValue:"renew",type:{name:"String"}}},tt={parameterPath:"action",mapper:{required:!0,isConstant:!0,serializedName:"x-ms-lease-action",defaultValue:"break",type:{name:"String"}}},at={parameterPath:"action",mapper:{required:!0,isConstant:!0,serializedName:"x-ms-lease-action",defaultValue:"change",type:{name:"String"}}},rt={parameterPath:["options","appendPositionAccessConditions","appendPosition"],mapper:{serializedName:"x-ms-blob-condition-appendpos",type:{name:"Number"}}},st={parameterPath:["options","blobHTTPHeaders","blobCacheControl"],mapper:{serializedName:"x-ms-blob-cache-control",type:{name:"String"}}},it={parameterPath:["options","blobHTTPHeaders","blobContentDisposition"],mapper:{serializedName:"x-ms-blob-content-disposition",type:{name:"String"}}},nt={parameterPath:["options","blobHTTPHeaders","blobContentEncoding"],mapper:{serializedName:"x-ms-blob-content-encoding",type:{name:"String"}}},lt={parameterPath:["options","blobHTTPHeaders","blobContentLanguage"],mapper:{serializedName:"x-ms-blob-content-language",type:{name:"String"}}},ot={parameterPath:"blobContentLength",mapper:{required:!0,serializedName:"x-ms-blob-content-length",type:{name:"Number"}}},mt={parameterPath:["options","blobHTTPHeaders","blobContentMD5"],mapper:{serializedName:"x-ms-blob-content-md5",type:{name:"ByteArray"}}},ht={parameterPath:["options","blobHTTPHeaders","blobContentType"],mapper:{serializedName:"x-ms-blob-content-type",type:{name:"String"}}},vt={parameterPath:["options","blobSequenceNumber"],mapper:{serializedName:"x-ms-blob-sequence-number",defaultValue:0,type:{name:"Number"}}},zt={parameterPath:"blockId",mapper:{required:!0,serializedName:"blockid",type:{name:"String"}}},dt={parameterPath:["options","breakPeriod"],mapper:{serializedName:"x-ms-lease-break-period",type:{name:"Number"}}},ut={parameterPath:"comp",mapper:{required:!0,isConstant:!0,serializedName:"comp",defaultValue:"properties",type:{name:"String"}}},pt={parameterPath:"comp",mapper:{required:!0,isConstant:!0,serializedName:"comp",defaultValue:"page",type:{name:"String"}}},ft={parameterPath:"comp",mapper:{required:!0,isConstant:!0,serializedName:"comp",defaultValue:"pagelist",type:{name:"String"}}},Mt={parameterPath:"comp",mapper:{required:!0,isConstant:!0,serializedName:"comp",defaultValue:"appendblock",type:{name:"String"}}},yt={parameterPath:"comp",mapper:{required:!0,isConstant:!0,serializedName:"comp",defaultValue:"block",type:{name:"String"}}},Ct={parameterPath:"comp",mapper:{required:!0,isConstant:!0,serializedName:"comp",defaultValue:"blocklist",type:{name:"String"}}},Ht={parameterPath:"comp",mapper:{required:!0,isConstant:!0,serializedName:"comp",defaultValue:"list",type:{name:"String"}}},gt={parameterPath:"comp",mapper:{required:!0,isConstant:!0,serializedName:"comp",defaultValue:"metadata",type:{name:"String"}}},bt={parameterPath:"comp",mapper:{required:!0,isConstant:!0,serializedName:"comp",defaultValue:"acl",type:{name:"String"}}},Vt={parameterPath:"comp",mapper:{required:!0,isConstant:!0,serializedName:"comp",defaultValue:"lease",type:{name:"String"}}},Lt={parameterPath:"contentLength",mapper:{required:!0,serializedName:"Content-Length",type:{name:"Number"}}},St={parameterPath:"copySource",mapper:{required:!0,serializedName:"x-ms-copy-source",type:{name:"String"}}},Nt={parameterPath:["options","duration"],mapper:{serializedName:"x-ms-lease-duration",type:{name:"Number"}}},xt={parameterPath:["options","cpkInfo","encryptionAlgorithm"],mapper:{serializedName:"x-ms-encryption-algorithm",type:{name:"Enum",allowedValues:["AES256"]}}},At={parameterPath:["options","cpkInfo","encryptionKey"],mapper:{serializedName:"x-ms-encryption-key",type:{name:"String"}}},Pt={parameterPath:["options","cpkInfo","encryptionKeySha256"],mapper:{serializedName:"x-ms-encryption-key-sha256",type:{name:"String"}}},wt={parameterPath:["options","modifiedAccessConditions","ifMatch"],mapper:{serializedName:"If-Match",type:{name:"String"}}},qt={parameterPath:["options","modifiedAccessConditions","ifModifiedSince"],mapper:{serializedName:"If-Modified-Since",type:{name:"DateTimeRfc1123"}}},Rt={parameterPath:["options","modifiedAccessConditions","ifNoneMatch"],mapper:{serializedName:"If-None-Match",type:{name:"String"}}},Tt={parameterPath:["options","sequenceNumberAccessConditions","ifSequenceNumberEqualTo"],mapper:{serializedName:"x-ms-if-sequence-number-eq",type:{name:"Number"}}},kt={parameterPath:["options","sequenceNumberAccessConditions","ifSequenceNumberLessThan"],mapper:{serializedName:"x-ms-if-sequence-number-lt",type:{name:"Number"}}},Et={parameterPath:["options","sequenceNumberAccessConditions","ifSequenceNumberLessThanOrEqualTo"],mapper:{serializedName:"x-ms-if-sequence-number-le",type:{name:"Number"}}},It={parameterPath:["options","modifiedAccessConditions","ifUnmodifiedSince"],mapper:{serializedName:"If-Unmodified-Since",type:{name:"DateTimeRfc1123"}}},Ot={parameterPath:["options","include"],mapper:{serializedName:"include",type:{name:"Sequence",element:{type:{name:"Enum",allowedValues:["copy","deleted","metadata","snapshots","uncommittedblobs"]}}}},collectionFormat:ge.Csv},_t={parameterPath:["options","leaseAccessConditions","leaseId"],mapper:{serializedName:"x-ms-lease-id",type:{name:"String"}}},Bt={parameterPath:"leaseId",mapper:{required:!0,serializedName:"x-ms-lease-id",type:{name:"String"}}},Dt={parameterPath:["options","marker"],mapper:{serializedName:"marker",type:{name:"String"}}},Ut={parameterPath:["options","maxresults"],mapper:{serializedName:"maxresults",constraints:{InclusiveMinimum:1},type:{name:"Number"}}},jt={parameterPath:["options","appendPositionAccessConditions","maxSize"],mapper:{serializedName:"x-ms-blob-condition-maxsize",type:{name:"Number"}}},Zt={parameterPath:["options","metadata"],mapper:{serializedName:"x-ms-meta",type:{name:"Dictionary",value:{type:{name:"String"}}},headerCollectionPrefix:"x-ms-meta-"}},Ft={parameterPath:"pageWrite",mapper:{required:!0,isConstant:!0,serializedName:"x-ms-page-write",defaultValue:"update",type:{name:"String"}}},Xt={parameterPath:["options","posixPermissions"],mapper:{serializedName:"x-ms-permissions",type:{name:"String"}}},Gt={parameterPath:["options","prefix"],mapper:{serializedName:"prefix",type:{name:"String"}}},Kt={parameterPath:["options","proposedLeaseId"],mapper:{serializedName:"x-ms-proposed-lease-id",type:{name:"String"}}},Wt={parameterPath:"proposedLeaseId",mapper:{required:!0,serializedName:"x-ms-proposed-lease-id",type:{name:"String"}}},Yt={parameterPath:["options","range"],mapper:{serializedName:"x-ms-range",type:{name:"String"}}},Qt={parameterPath:["options","rehydratePriority"],mapper:{serializedName:"x-ms-rehydrate-priority",type:{name:"String"}}},$t={parameterPath:["options","requestId"],mapper:{serializedName:"x-ms-client-request-id",type:{name:"String"}}},Jt={parameterPath:"restype",mapper:{required:!0,isConstant:!0,serializedName:"restype",defaultValue:"service",type:{name:"String"}}},ea={parameterPath:"restype",mapper:{required:!0,isConstant:!0,serializedName:"restype",defaultValue:"account",type:{name:"String"}}},ca={parameterPath:"restype",mapper:{required:!0,isConstant:!0,serializedName:"restype",defaultValue:"container",type:{name:"String"}}},ta={parameterPath:["options","snapshot"],mapper:{serializedName:"snapshot",type:{name:"String"}}},aa={parameterPath:["options","sourceContentCrc64"],mapper:{serializedName:"x-ms-source-content-crc64",type:{name:"ByteArray"}}},ra={parameterPath:["options","sourceContentMD5"],mapper:{serializedName:"x-ms-source-content-md5",type:{name:"ByteArray"}}},sa={parameterPath:["options","sourceModifiedAccessConditions","sourceIfMatch"],mapper:{serializedName:"x-ms-source-if-match",type:{name:"String"}}},ia={parameterPath:["options","sourceModifiedAccessConditions","sourceIfModifiedSince"],mapper:{serializedName:"x-ms-source-if-modified-since",type:{name:"DateTimeRfc1123"}}},na={parameterPath:["options","sourceModifiedAccessConditions","sourceIfNoneMatch"],mapper:{serializedName:"x-ms-source-if-none-match",type:{name:"String"}}},la={parameterPath:["options","sourceModifiedAccessConditions","sourceIfUnmodifiedSince"],mapper:{serializedName:"x-ms-source-if-unmodified-since",type:{name:"DateTimeRfc1123"}}},oa={parameterPath:["options","sourceRange"],mapper:{serializedName:"x-ms-source-range",type:{name:"String"}}},ma={parameterPath:"sourceUrl",mapper:{required:!0,serializedName:"x-ms-copy-source",type:{name:"String"}}},ha={parameterPath:["options","tier"],mapper:{serializedName:"x-ms-access-tier",type:{name:"String"}}},va={parameterPath:["options","timeout"],mapper:{serializedName:"timeout",constraints:{InclusiveMinimum:0},type:{name:"Number"}}},za={parameterPath:["options","transactionalContentCrc64"],mapper:{serializedName:"x-ms-content-crc64",type:{name:"ByteArray"}}},da={parameterPath:["options","transactionalContentMD5"],mapper:{serializedName:"Content-MD5",type:{name:"ByteArray"}}},ua={parameterPath:"url",mapper:{required:!0,serializedName:"url",defaultValue:"",type:{name:"String"}},skipEncoding:!0},pa={parameterPath:"version",mapper:{required:!0,isConstant:!0,serializedName:"x-ms-version",defaultValue:"2019-02-02",type:{name:"String"}}},fa=function(){function e(e){this.client=e}return e.prototype.setProperties=function(e,c,t){return this.client.sendOperationRequest({storageServiceProperties:e,options:c},ya,t)},e.prototype.getProperties=function(e,c){return this.client.sendOperationRequest({options:e},Ca,c)},e.prototype.getStatistics=function(e,c){return this.client.sendOperationRequest({options:e},Ha,c)},e.prototype.listContainersSegment=function(e,c){return this.client.sendOperationRequest({options:e},ga,c)},e.prototype.getUserDelegationKey=function(e,c,t){return this.client.sendOperationRequest({keyInfo:e,options:c},ba,t)},e.prototype.getAccountInfo=function(e,c){return this.client.sendOperationRequest({options:e},Va,c)},e.prototype.submitBatch=function(e,c,t,a,r){return this.client.sendOperationRequest({body:e,contentLength:c,multipartContentType:t,options:a},La,r)},e}(),Ma=new M(Qc,!0),ya={httpMethod:"PUT",urlParameters:[ua],queryParameters:[va,Jt,ut],headerParameters:[pa,$t],requestBody:{parameterPath:"storageServiceProperties",mapper:A({},Fe,{required:!0})},contentType:"application/xml; charset=utf-8",responses:{202:{headersMapper:Ge},default:{bodyMapper:Ie}},isXML:!0,serializer:Ma},Ca={httpMethod:"GET",urlParameters:[ua],queryParameters:[va,Jt,ut],headerParameters:[pa,$t],responses:{200:{bodyMapper:Fe,headersMapper:Ke},default:{bodyMapper:Ie}},isXML:!0,serializer:Ma},Ha={httpMethod:"GET",urlParameters:[ua],queryParameters:[va,Jt,{parameterPath:"comp",mapper:{required:!0,isConstant:!0,serializedName:"comp",defaultValue:"stats",type:{name:"String"}}}],headerParameters:[pa,$t],responses:{200:{bodyMapper:Xe,headersMapper:We},default:{bodyMapper:Ie}},isXML:!0,serializer:Ma},ga={httpMethod:"GET",urlParameters:[ua],queryParameters:[Gt,Dt,Ut,{parameterPath:["options","include"],mapper:{serializedName:"include",type:{name:"Enum",allowedValues:["metadata"]}}},va,Ht],headerParameters:[pa,$t],responses:{200:{bodyMapper:je,headersMapper:Ye},default:{bodyMapper:Ie}},isXML:!0,serializer:Ma},ba={httpMethod:"POST",urlParameters:[ua],queryParameters:[va,Jt,{parameterPath:"comp",mapper:{required:!0,isConstant:!0,serializedName:"comp",defaultValue:"userdelegationkey",type:{name:"String"}}}],headerParameters:[pa,$t],requestBody:{parameterPath:"keyInfo",mapper:A({},ke,{required:!0})},contentType:"application/xml; charset=utf-8",responses:{200:{bodyMapper:Ee,headersMapper:Qe},default:{bodyMapper:Ie}},isXML:!0,serializer:Ma},Va={httpMethod:"GET",urlParameters:[ua],queryParameters:[ea,ut],headerParameters:[pa],responses:{200:{headersMapper:$e},default:{bodyMapper:Ie}},isXML:!0,serializer:Ma},La={httpMethod:"POST",urlParameters:[ua],queryParameters:[va,{parameterPath:"comp",mapper:{required:!0,isConstant:!0,serializedName:"comp",defaultValue:"batch",type:{name:"String"}}}],headerParameters:[Lt,{parameterPath:"multipartContentType",mapper:{required:!0,serializedName:"Content-Type",type:{name:"String"}}},pa,$t],requestBody:{parameterPath:"body",mapper:{required:!0,serializedName:"body",type:{name:"Stream"}}},contentType:"application/xml; charset=utf-8",responses:{202:{bodyMapper:{serializedName:"parsedResponse",type:{name:"Stream"}},headersMapper:Je},default:{bodyMapper:Ie}},isXML:!0,serializer:Ma},Sa=Object.freeze({AccessPolicy:{serializedName:"AccessPolicy",type:{name:"Composite",className:"AccessPolicy",modelProperties:{start:{xmlName:"Start",required:!0,serializedName:"Start",type:{name:"String"}},expiry:{xmlName:"Expiry",required:!0,serializedName:"Expiry",type:{name:"String"}},permission:{xmlName:"Permission",required:!0,serializedName:"Permission",type:{name:"String"}}}}},BlobFlatListSegment:{xmlName:"Blobs",serializedName:"BlobFlatListSegment",type:{name:"Composite",className:"BlobFlatListSegment",modelProperties:{blobItems:{xmlName:"BlobItems",xmlElementName:"Blob",required:!0,serializedName:"BlobItems",type:{name:"Sequence",element:{type:{name:"Composite",className:"BlobItem"}}}}}}},BlobHierarchyListSegment:{xmlName:"Blobs",serializedName:"BlobHierarchyListSegment",type:{name:"Composite",className:"BlobHierarchyListSegment",modelProperties:{blobPrefixes:{xmlName:"BlobPrefixes",xmlElementName:"BlobPrefix",serializedName:"BlobPrefixes",type:{name:"Sequence",element:{type:{name:"Composite",className:"BlobPrefix"}}}},blobItems:{xmlName:"BlobItems",xmlElementName:"Blob",required:!0,serializedName:"BlobItems",type:{name:"Sequence",element:{type:{name:"Composite",className:"BlobItem"}}}}}}},BlobItem:{xmlName:"Blob",serializedName:"BlobItem",type:{name:"Composite",className:"BlobItem",modelProperties:{name:{xmlName:"Name",required:!0,serializedName:"Name",type:{name:"String"}},deleted:{xmlName:"Deleted",required:!0,serializedName:"Deleted",type:{name:"Boolean"}},snapshot:{xmlName:"Snapshot",required:!0,serializedName:"Snapshot",type:{name:"String"}},properties:{xmlName:"Properties",required:!0,serializedName:"Properties",type:{name:"Composite",className:"BlobProperties"}},metadata:{xmlName:"Metadata",serializedName:"Metadata",type:{name:"Composite",className:"BlobMetadata",additionalProperties:{type:{name:"String"}}}}}}},BlobMetadata:{xmlName:"Metadata",serializedName:"BlobMetadata",type:{name:"Composite",className:"BlobMetadata",modelProperties:{encrypted:{xmlIsAttribute:!0,xmlName:"Encrypted",serializedName:"Encrypted",type:{name:"String"}}},additionalProperties:{type:{name:"String"}}}},BlobPrefix:{serializedName:"BlobPrefix",type:{name:"Composite",className:"BlobPrefix",modelProperties:{name:{xmlName:"Name",required:!0,serializedName:"Name",type:{name:"String"}}}}},BlobProperties:{xmlName:"Properties",serializedName:"BlobProperties",type:{name:"Composite",className:"BlobProperties",modelProperties:{creationTime:{xmlName:"Creation-Time",serializedName:"Creation-Time",type:{name:"DateTimeRfc1123"}},lastModified:{xmlName:"Last-Modified",required:!0,serializedName:"Last-Modified",type:{name:"DateTimeRfc1123"}},etag:{xmlName:"Etag",required:!0,serializedName:"Etag",type:{name:"String"}},contentLength:{xmlName:"Content-Length",serializedName:"Content-Length",type:{name:"Number"}},contentType:{xmlName:"Content-Type",serializedName:"Content-Type",type:{name:"String"}},contentEncoding:{xmlName:"Content-Encoding",serializedName:"Content-Encoding",type:{name:"String"}},contentLanguage:{xmlName:"Content-Language",serializedName:"Content-Language",type:{name:"String"}},contentMD5:{xmlName:"Content-MD5",serializedName:"Content-MD5",type:{name:"ByteArray"}},contentDisposition:{xmlName:"Content-Disposition",serializedName:"Content-Disposition",type:{name:"String"}},cacheControl:{xmlName:"Cache-Control",serializedName:"Cache-Control",type:{name:"String"}},blobSequenceNumber:{xmlName:"x-ms-blob-sequence-number",serializedName:"x-ms-blob-sequence-number",type:{name:"Number"}},blobType:{xmlName:"BlobType",serializedName:"BlobType",type:{name:"Enum",allowedValues:["BlockBlob","PageBlob","AppendBlob"]}},leaseStatus:{xmlName:"LeaseStatus",serializedName:"LeaseStatus",type:{name:"Enum",allowedValues:["locked","unlocked"]}},leaseState:{xmlName:"LeaseState",serializedName:"LeaseState",type:{name:"Enum",allowedValues:["available","leased","expired","breaking","broken"]}},leaseDuration:{xmlName:"LeaseDuration",serializedName:"LeaseDuration",type:{name:"Enum",allowedValues:["infinite","fixed"]}},copyId:{xmlName:"CopyId",serializedName:"CopyId",type:{name:"String"}},copyStatus:{xmlName:"CopyStatus",serializedName:"CopyStatus",type:{name:"Enum",allowedValues:["pending","success","aborted","failed"]}},copySource:{xmlName:"CopySource",serializedName:"CopySource",type:{name:"String"}},copyProgress:{xmlName:"CopyProgress",serializedName:"CopyProgress",type:{name:"String"}},copyCompletionTime:{xmlName:"CopyCompletionTime",serializedName:"CopyCompletionTime",type:{name:"DateTimeRfc1123"}},copyStatusDescription:{xmlName:"CopyStatusDescription",serializedName:"CopyStatusDescription",type:{name:"String"}},serverEncrypted:{xmlName:"ServerEncrypted",serializedName:"ServerEncrypted",type:{name:"Boolean"}},incrementalCopy:{xmlName:"IncrementalCopy",serializedName:"IncrementalCopy",type:{name:"Boolean"}},destinationSnapshot:{xmlName:"DestinationSnapshot",serializedName:"DestinationSnapshot",type:{name:"String"}},deletedTime:{xmlName:"DeletedTime",serializedName:"DeletedTime",type:{name:"DateTimeRfc1123"}},remainingRetentionDays:{xmlName:"RemainingRetentionDays",serializedName:"RemainingRetentionDays",type:{name:"Number"}},accessTier:{xmlName:"AccessTier",serializedName:"AccessTier",type:{name:"String"}},accessTierInferred:{xmlName:"AccessTierInferred",serializedName:"AccessTierInferred",type:{name:"Boolean"}},archiveStatus:{xmlName:"ArchiveStatus",serializedName:"ArchiveStatus",type:{name:"String"}},customerProvidedKeySha256:{xmlName:"CustomerProvidedKeySha256",serializedName:"CustomerProvidedKeySha256",type:{name:"String"}},accessTierChangeTime:{xmlName:"AccessTierChangeTime",serializedName:"AccessTierChangeTime",type:{name:"DateTimeRfc1123"}}}}},ContainerAcquireLeaseHeaders:ic,ContainerBreakLeaseHeaders:oc,ContainerChangeLeaseHeaders:mc,ContainerCreateHeaders:ec,ContainerDeleteHeaders:tc,ContainerGetAccessPolicyHeaders:rc,ContainerGetAccountInfoHeaders:zc,ContainerGetPropertiesHeaders:cc,ContainerListBlobFlatSegmentHeaders:hc,ContainerListBlobHierarchySegmentHeaders:vc,ContainerReleaseLeaseHeaders:nc,ContainerRenewLeaseHeaders:lc,ContainerSetAccessPolicyHeaders:sc,ContainerSetMetadataHeaders:ac,ListBlobsFlatSegmentResponse:_e,ListBlobsHierarchySegmentResponse:Be,SignedIdentifier:{serializedName:"SignedIdentifier",type:{name:"Composite",className:"SignedIdentifier",modelProperties:{id:{xmlName:"Id",required:!0,serializedName:"Id",type:{name:"String"}},accessPolicy:{xmlName:"AccessPolicy",required:!0,serializedName:"AccessPolicy",type:{name:"Composite",className:"AccessPolicy"}}}}},StorageError:Ie}),Na=function(){function e(e){this.client=e}return e.prototype.create=function(e,c){return this.client.sendOperationRequest({options:e},Aa,c)},e.prototype.getProperties=function(e,c){return this.client.sendOperationRequest({options:e},Pa,c)},e.prototype.deleteMethod=function(e,c){return this.client.sendOperationRequest({options:e},wa,c)},e.prototype.setMetadata=function(e,c){return this.client.sendOperationRequest({options:e},qa,c)},e.prototype.getAccessPolicy=function(e,c){return this.client.sendOperationRequest({options:e},Ra,c)},e.prototype.setAccessPolicy=function(e,c){return this.client.sendOperationRequest({options:e},Ta,c)},e.prototype.acquireLease=function(e,c){return this.client.sendOperationRequest({options:e},ka,c)},e.prototype.releaseLease=function(e,c,t){return this.client.sendOperationRequest({leaseId:e,options:c},Ea,t)},e.prototype.renewLease=function(e,c,t){return this.client.sendOperationRequest({leaseId:e,options:c},Ia,t)},e.prototype.breakLease=function(e,c){return this.client.sendOperationRequest({options:e},Oa,c)},e.prototype.changeLease=function(e,c,t,a){return this.client.sendOperationRequest({leaseId:e,proposedLeaseId:c,options:t},_a,a)},e.prototype.listBlobFlatSegment=function(e,c){return this.client.sendOperationRequest({options:e},Ba,c)},e.prototype.listBlobHierarchySegment=function(e,c,t){return this.client.sendOperationRequest({delimiter:e,options:c},Da,t)},e.prototype.getAccountInfo=function(e,c){return this.client.sendOperationRequest({options:e},Ua,c)},e}(),xa=new M(Sa,!0),Aa={httpMethod:"PUT",path:"{containerName}",urlParameters:[ua],queryParameters:[va,ca],headerParameters:[Zt,$c,pa,$t],responses:{201:{headersMapper:ec},default:{bodyMapper:Ie}},isXML:!0,serializer:xa},Pa={httpMethod:"GET",path:"{containerName}",urlParameters:[ua],queryParameters:[va,ca],headerParameters:[pa,$t,_t],responses:{200:{headersMapper:cc},default:{bodyMapper:Ie}},isXML:!0,serializer:xa},wa={httpMethod:"DELETE",path:"{containerName}",urlParameters:[ua],queryParameters:[va,ca],headerParameters:[pa,$t,_t,qt,It],responses:{202:{headersMapper:tc},default:{bodyMapper:Ie}},isXML:!0,serializer:xa},qa={httpMethod:"PUT",path:"{containerName}",urlParameters:[ua],queryParameters:[va,ca,gt],headerParameters:[Zt,pa,$t,_t,qt],responses:{200:{headersMapper:ac},default:{bodyMapper:Ie}},isXML:!0,serializer:xa},Ra={httpMethod:"GET",path:"{containerName}",urlParameters:[ua],queryParameters:[va,ca,bt],headerParameters:[pa,$t,_t],responses:{200:{bodyMapper:{xmlElementName:"SignedIdentifier",serializedName:"parsedResponse",type:{name:"Sequence",element:{type:{name:"Composite",className:"SignedIdentifier"}}}},headersMapper:rc},default:{bodyMapper:Ie}},isXML:!0,serializer:xa},Ta={httpMethod:"PUT",path:"{containerName}",urlParameters:[ua],queryParameters:[va,ca,bt],headerParameters:[$c,pa,$t,_t,qt,It],requestBody:{parameterPath:["options","containerAcl"],mapper:{xmlName:"SignedIdentifiers",xmlElementName:"SignedIdentifier",serializedName:"containerAcl",type:{name:"Sequence",element:{type:{name:"Composite",className:"SignedIdentifier"}}}}},contentType:"application/xml; charset=utf-8",responses:{200:{headersMapper:sc},default:{bodyMapper:Ie}},isXML:!0,serializer:xa},ka={httpMethod:"PUT",path:"{containerName}",urlParameters:[ua],queryParameters:[va,Vt,ca],headerParameters:[Nt,Kt,pa,$t,Jc,qt,It],responses:{201:{headersMapper:ic},default:{bodyMapper:Ie}},isXML:!0,serializer:xa},Ea={httpMethod:"PUT",path:"{containerName}",urlParameters:[ua],queryParameters:[va,Vt,ca],headerParameters:[Bt,pa,$t,et,qt,It],responses:{200:{headersMapper:nc},default:{bodyMapper:Ie}},isXML:!0,serializer:xa},Ia={httpMethod:"PUT",path:"{containerName}",urlParameters:[ua],queryParameters:[va,Vt,ca],headerParameters:[Bt,pa,$t,ct,qt,It],responses:{200:{headersMapper:lc},default:{bodyMapper:Ie}},isXML:!0,serializer:xa},Oa={httpMethod:"PUT",path:"{containerName}",urlParameters:[ua],queryParameters:[va,Vt,ca],headerParameters:[dt,pa,$t,tt,qt,It],responses:{202:{headersMapper:oc},default:{bodyMapper:Ie}},isXML:!0,serializer:xa},_a={httpMethod:"PUT",path:"{containerName}",urlParameters:[ua],queryParameters:[va,Vt,ca],headerParameters:[Bt,Wt,pa,$t,at,qt,It],responses:{200:{headersMapper:mc},default:{bodyMapper:Ie}},isXML:!0,serializer:xa},Ba={httpMethod:"GET",path:"{containerName}",urlParameters:[ua],queryParameters:[Gt,Dt,Ut,Ot,va,ca,Ht],headerParameters:[pa,$t],responses:{200:{bodyMapper:_e,headersMapper:hc},default:{bodyMapper:Ie}},isXML:!0,serializer:xa},Da={httpMethod:"GET",path:"{containerName}",urlParameters:[ua],queryParameters:[Gt,{parameterPath:"delimiter",mapper:{required:!0,serializedName:"delimiter",type:{name:"String"}}},Dt,Ut,Ot,va,ca,Ht],headerParameters:[pa,$t],responses:{200:{bodyMapper:Be,headersMapper:vc},default:{bodyMapper:Ie}},isXML:!0,serializer:xa},Ua={httpMethod:"GET",path:"{containerName}",urlParameters:[ua],queryParameters:[ea,ut],headerParameters:[pa],responses:{200:{headersMapper:zc},default:{bodyMapper:Ie}},isXML:!0,serializer:xa},ja=Object.freeze({BlobAbortCopyFromURLHeaders:Tc,BlobAcquireLeaseHeaders:Sc,BlobBreakLeaseHeaders:Pc,BlobChangeLeaseHeaders:Ac,BlobCopyFromURLHeaders:Rc,BlobCreateSnapshotHeaders:wc,BlobDeleteHeaders:pc,BlobDownloadHeaders:dc,BlobGetAccessControlHeaders:Mc,BlobGetAccountInfoHeaders:Ec,BlobGetPropertiesHeaders:uc,BlobReleaseLeaseHeaders:Nc,BlobRenameHeaders:yc,BlobRenewLeaseHeaders:xc,BlobSetAccessControlHeaders:fc,BlobSetHTTPHeadersHeaders:Vc,BlobSetMetadataHeaders:Lc,BlobSetTierHeaders:kc,BlobStartCopyFromURLHeaders:qc,BlobUndeleteHeaders:bc,DataLakeStorageError:Oe,DataLakeStorageErrorError:{serializedName:"DataLakeStorageError_error",type:{name:"Composite",className:"DataLakeStorageErrorError",modelProperties:{code:{xmlName:"Code",serializedName:"Code",type:{name:"String"}},message:{xmlName:"Message",serializedName:"Message",type:{name:"String"}}}}},StorageError:Ie}),Za=function(){function e(e){this.client=e}return e.prototype.download=function(e,c){return this.client.sendOperationRequest({options:e},Xa,c)},e.prototype.getProperties=function(e,c){return this.client.sendOperationRequest({options:e},Ga,c)},e.prototype.deleteMethod=function(e,c){return this.client.sendOperationRequest({options:e},Ka,c)},e.prototype.setAccessControl=function(e,c){return this.client.sendOperationRequest({options:e},Wa,c)},e.prototype.getAccessControl=function(e,c){return this.client.sendOperationRequest({options:e},Ya,c)},e.prototype.rename=function(e,c,t){return this.client.sendOperationRequest({renameSource:e,options:c},Qa,t)},e.prototype.undelete=function(e,c){return this.client.sendOperationRequest({options:e},$a,c)},e.prototype.setHTTPHeaders=function(e,c){return this.client.sendOperationRequest({options:e},Ja,c)},e.prototype.setMetadata=function(e,c){return this.client.sendOperationRequest({options:e},er,c)},e.prototype.acquireLease=function(e,c){return this.client.sendOperationRequest({options:e},cr,c)},e.prototype.releaseLease=function(e,c,t){return this.client.sendOperationRequest({leaseId:e,options:c},tr,t)},e.prototype.renewLease=function(e,c,t){return this.client.sendOperationRequest({leaseId:e,options:c},ar,t)},e.prototype.changeLease=function(e,c,t,a){return this.client.sendOperationRequest({leaseId:e,proposedLeaseId:c,options:t},rr,a)},e.prototype.breakLease=function(e,c){return this.client.sendOperationRequest({options:e},sr,c)},e.prototype.createSnapshot=function(e,c){return this.client.sendOperationRequest({options:e},ir,c)},e.prototype.startCopyFromURL=function(e,c,t){return this.client.sendOperationRequest({copySource:e,options:c},nr,t)},e.prototype.copyFromURL=function(e,c,t){return this.client.sendOperationRequest({copySource:e,options:c},lr,t)},e.prototype.abortCopyFromURL=function(e,c,t){return this.client.sendOperationRequest({copyId:e,options:c},or,t)},e.prototype.setTier=function(e,c,t){return this.client.sendOperationRequest({tier:e,options:c},mr,t)},e.prototype.getAccountInfo=function(e,c){return this.client.sendOperationRequest({options:e},hr,c)},e}(),Fa=new M(ja,!0),Xa={httpMethod:"GET",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[ta,va],headerParameters:[Yt,{parameterPath:["options","rangeGetContentMD5"],mapper:{serializedName:"x-ms-range-get-content-md5",type:{name:"Boolean"}}},{parameterPath:["options","rangeGetContentCRC64"],mapper:{serializedName:"x-ms-range-get-content-crc64",type:{name:"Boolean"}}},pa,$t,_t,At,Pt,xt,qt,It,wt,Rt],responses:{200:{bodyMapper:{serializedName:"parsedResponse",type:{name:"Stream"}},headersMapper:dc},206:{bodyMapper:{serializedName:"parsedResponse",type:{name:"Stream"}},headersMapper:dc},default:{bodyMapper:Ie}},isXML:!0,serializer:Fa},Ga={httpMethod:"HEAD",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[ta,va],headerParameters:[pa,$t,_t,At,Pt,xt,qt,It,wt,Rt],responses:{200:{headersMapper:uc},default:{bodyMapper:Ie}},isXML:!0,serializer:Fa},Ka={httpMethod:"DELETE",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[ta,va],headerParameters:[{parameterPath:["options","deleteSnapshots"],mapper:{serializedName:"x-ms-delete-snapshots",type:{name:"Enum",allowedValues:["include","only"]}}},pa,$t,_t,qt,It,wt,Rt],responses:{202:{headersMapper:pc},default:{bodyMapper:Ie}},isXML:!0,serializer:Fa},Wa={httpMethod:"PATCH",path:"{filesystem}/{path}",urlParameters:[ua],queryParameters:[va,{parameterPath:"action",mapper:{required:!0,isConstant:!0,serializedName:"action",defaultValue:"setAccessControl",type:{name:"String"}}}],headerParameters:[{parameterPath:["options","owner"],mapper:{serializedName:"x-ms-owner",type:{name:"String"}}},{parameterPath:["options","group"],mapper:{serializedName:"x-ms-group",type:{name:"String"}}},Xt,{parameterPath:["options","posixAcl"],mapper:{serializedName:"x-ms-acl",type:{name:"String"}}},$t,pa,_t,wt,Rt,qt,It],responses:{200:{headersMapper:fc},default:{bodyMapper:Oe}},isXML:!0,serializer:Fa},Ya={httpMethod:"HEAD",path:"{filesystem}/{path}",urlParameters:[ua],queryParameters:[va,{parameterPath:["options","upn"],mapper:{serializedName:"upn",type:{name:"Boolean"}}},{parameterPath:"action",mapper:{required:!0,isConstant:!0,serializedName:"action",defaultValue:"getAccessControl",type:{name:"String"}}}],headerParameters:[$t,pa,_t,wt,Rt,qt,It],responses:{200:{headersMapper:Mc},default:{bodyMapper:Oe}},isXML:!0,serializer:Fa},Qa={httpMethod:"PUT",path:"{filesystem}/{path}",urlParameters:[ua],queryParameters:[va,{parameterPath:"pathRenameMode",mapper:{serializedName:"mode",type:{name:"Enum",allowedValues:["legacy","posix"]}}}],headerParameters:[{parameterPath:"renameSource",mapper:{required:!0,serializedName:"x-ms-rename-source",type:{name:"String"}}},{parameterPath:["options","directoryProperties"],mapper:{serializedName:"x-ms-properties",type:{name:"String"}}},Xt,{parameterPath:["options","posixUmask"],mapper:{serializedName:"x-ms-umask",type:{name:"String"}}},{parameterPath:["options","sourceLeaseId"],mapper:{serializedName:"x-ms-source-lease-id",type:{name:"String"}}},pa,$t,{parameterPath:["options","directoryHttpHeaders","cacheControl"],mapper:{serializedName:"x-ms-cache-control",type:{name:"String"}}},{parameterPath:["options","directoryHttpHeaders","contentType"],mapper:{serializedName:"x-ms-content-type",type:{name:"String"}}},{parameterPath:["options","directoryHttpHeaders","contentEncoding"],mapper:{serializedName:"x-ms-content-encoding",type:{name:"String"}}},{parameterPath:["options","directoryHttpHeaders","contentLanguage"],mapper:{serializedName:"x-ms-content-language",type:{name:"String"}}},{parameterPath:["options","directoryHttpHeaders","contentDisposition"],mapper:{serializedName:"x-ms-content-disposition",type:{name:"String"}}},_t,qt,It,wt,Rt,ia,la,sa,na],responses:{201:{headersMapper:yc},default:{bodyMapper:Oe}},isXML:!0,serializer:Fa},$a={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,{parameterPath:"comp",mapper:{required:!0,isConstant:!0,serializedName:"comp",defaultValue:"undelete",type:{name:"String"}}}],headerParameters:[pa,$t],responses:{200:{headersMapper:bc},default:{bodyMapper:Ie}},isXML:!0,serializer:Fa},Ja={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,ut],headerParameters:[pa,$t,st,ht,mt,nt,lt,it,_t,qt,It,wt,Rt],responses:{200:{headersMapper:Vc},default:{bodyMapper:Ie}},isXML:!0,serializer:Fa},er={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,gt],headerParameters:[Zt,pa,$t,_t,At,Pt,xt,qt,It,wt,Rt],responses:{200:{headersMapper:Lc},default:{bodyMapper:Ie}},isXML:!0,serializer:Fa},cr={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,Vt],headerParameters:[Nt,Kt,pa,$t,Jc,qt,It,wt,Rt],responses:{201:{headersMapper:Sc},default:{bodyMapper:Ie}},isXML:!0,serializer:Fa},tr={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,Vt],headerParameters:[Bt,pa,$t,et,qt,It,wt,Rt],responses:{200:{headersMapper:Nc},default:{bodyMapper:Ie}},isXML:!0,serializer:Fa},ar={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,Vt],headerParameters:[Bt,pa,$t,ct,qt,It,wt,Rt],responses:{200:{headersMapper:xc},default:{bodyMapper:Ie}},isXML:!0,serializer:Fa},rr={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,Vt],headerParameters:[Bt,Wt,pa,$t,at,qt,It,wt,Rt],responses:{200:{headersMapper:Ac},default:{bodyMapper:Ie}},isXML:!0,serializer:Fa},sr={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,Vt],headerParameters:[dt,pa,$t,tt,qt,It,wt,Rt],responses:{202:{headersMapper:Pc},default:{bodyMapper:Ie}},isXML:!0,serializer:Fa},ir={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,{parameterPath:"comp",mapper:{required:!0,isConstant:!0,serializedName:"comp",defaultValue:"snapshot",type:{name:"String"}}}],headerParameters:[Zt,pa,$t,At,Pt,xt,qt,It,wt,Rt,_t],responses:{201:{headersMapper:wc},default:{bodyMapper:Ie}},isXML:!0,serializer:Fa},nr={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va],headerParameters:[Zt,ha,Qt,St,pa,$t,ia,la,sa,na,qt,It,wt,Rt,_t],responses:{202:{headersMapper:qc},default:{bodyMapper:Ie}},isXML:!0,serializer:Fa},lr={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va],headerParameters:[Zt,ha,St,pa,$t,{parameterPath:"xMsRequiresSync",mapper:{required:!0,isConstant:!0,serializedName:"x-ms-requires-sync",defaultValue:"true",type:{name:"String"}}},ia,la,sa,na,qt,It,wt,Rt,_t],responses:{202:{headersMapper:Rc},default:{bodyMapper:Ie}},isXML:!0,serializer:Fa},or={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[{parameterPath:"copyId",mapper:{required:!0,serializedName:"copyid",type:{name:"String"}}},va,{parameterPath:"comp",mapper:{required:!0,isConstant:!0,serializedName:"comp",defaultValue:"copy",type:{name:"String"}}}],headerParameters:[pa,$t,{parameterPath:"copyActionAbortConstant",mapper:{required:!0,isConstant:!0,serializedName:"x-ms-copy-action",defaultValue:"abort",type:{name:"String"}}},_t],responses:{204:{headersMapper:Tc},default:{bodyMapper:Ie}},isXML:!0,serializer:Fa},mr={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,{parameterPath:"comp",mapper:{required:!0,isConstant:!0,serializedName:"comp",defaultValue:"tier",type:{name:"String"}}}],headerParameters:[{parameterPath:"tier",mapper:{required:!0,serializedName:"x-ms-access-tier",type:{name:"String"}}},Qt,pa,$t,_t],responses:{200:{headersMapper:kc},202:{headersMapper:kc},default:{bodyMapper:Ie}},isXML:!0,serializer:Fa},hr={httpMethod:"GET",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[ea,ut],headerParameters:[pa],responses:{200:{headersMapper:Ec},default:{bodyMapper:Ie}},isXML:!0,serializer:Fa},vr=Object.freeze({ClearRange:{serializedName:"ClearRange",type:{name:"Composite",className:"ClearRange",modelProperties:{start:{xmlName:"Start",required:!0,serializedName:"Start",type:{name:"Number"}},end:{xmlName:"End",required:!0,serializedName:"End",type:{name:"Number"}}}}},PageBlobClearPagesHeaders:Uc,PageBlobCopyIncrementalHeaders:Kc,PageBlobCreateHeaders:Cc,PageBlobGetPageRangesDiffHeaders:Fc,PageBlobGetPageRangesHeaders:Zc,PageBlobResizeHeaders:Xc,PageBlobUpdateSequenceNumberHeaders:Gc,PageBlobUploadPagesFromURLHeaders:jc,PageBlobUploadPagesHeaders:Dc,PageList:Ze,PageRange:{serializedName:"PageRange",type:{name:"Composite",className:"PageRange",modelProperties:{start:{xmlName:"Start",required:!0,serializedName:"Start",type:{name:"Number"}},end:{xmlName:"End",required:!0,serializedName:"End",type:{name:"Number"}}}}},StorageError:Ie}),zr=function(){function e(e){this.client=e}return e.prototype.create=function(e,c,t,a){return this.client.sendOperationRequest({contentLength:e,blobContentLength:c,options:t},ur,a)},e.prototype.uploadPages=function(e,c,t,a){return this.client.sendOperationRequest({body:e,contentLength:c,options:t},pr,a)},e.prototype.clearPages=function(e,c,t){return this.client.sendOperationRequest({contentLength:e,options:c},fr,t)},e.prototype.uploadPagesFromURL=function(e,c,t,a,r,s){return this.client.sendOperationRequest({sourceUrl:e,sourceRange:c,contentLength:t,range:a,options:r},Mr,s)},e.prototype.getPageRanges=function(e,c){return this.client.sendOperationRequest({options:e},yr,c)},e.prototype.getPageRangesDiff=function(e,c){return this.client.sendOperationRequest({options:e},Cr,c)},e.prototype.resize=function(e,c,t){return this.client.sendOperationRequest({blobContentLength:e,options:c},Hr,t)},e.prototype.updateSequenceNumber=function(e,c,t){return this.client.sendOperationRequest({sequenceNumberAction:e,options:c},gr,t)},e.prototype.copyIncremental=function(e,c,t){return this.client.sendOperationRequest({copySource:e,options:c},br,t)},e}(),dr=new M(vr,!0),ur={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va],headerParameters:[Lt,Zt,ot,vt,pa,$t,ha,{parameterPath:"blobType",mapper:{required:!0,isConstant:!0,serializedName:"x-ms-blob-type",defaultValue:"PageBlob",type:{name:"String"}}},ht,nt,lt,mt,st,it,_t,At,Pt,xt,qt,It,wt,Rt],responses:{201:{headersMapper:Cc},default:{bodyMapper:Ie}},isXML:!0,serializer:dr},pr={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,pt],headerParameters:[Lt,da,za,Yt,pa,$t,Ft,_t,At,Pt,xt,Et,kt,Tt,qt,It,wt,Rt],requestBody:{parameterPath:"body",mapper:{required:!0,serializedName:"body",type:{name:"Stream"}}},contentType:"application/octet-stream",responses:{201:{headersMapper:Dc},default:{bodyMapper:Ie}},isXML:!0,serializer:dr},fr={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,pt],headerParameters:[Lt,Yt,pa,$t,{parameterPath:"pageWrite",mapper:{required:!0,isConstant:!0,serializedName:"x-ms-page-write",defaultValue:"clear",type:{name:"String"}}},_t,At,Pt,xt,Et,kt,Tt,qt,It,wt,Rt],responses:{201:{headersMapper:Uc},default:{bodyMapper:Ie}},isXML:!0,serializer:dr},Mr={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,pt],headerParameters:[ma,{parameterPath:"sourceRange",mapper:{required:!0,serializedName:"x-ms-source-range",type:{name:"String"}}},ra,aa,Lt,{parameterPath:"range",mapper:{required:!0,serializedName:"x-ms-range",type:{name:"String"}}},pa,$t,Ft,At,Pt,xt,_t,Et,kt,Tt,qt,It,wt,Rt,ia,la,sa,na],responses:{201:{headersMapper:jc},default:{bodyMapper:Ie}},isXML:!0,serializer:dr},yr={httpMethod:"GET",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[ta,va,ft],headerParameters:[Yt,pa,$t,_t,qt,It,wt,Rt],responses:{200:{bodyMapper:Ze,headersMapper:Zc},default:{bodyMapper:Ie}},isXML:!0,serializer:dr},Cr={httpMethod:"GET",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[ta,va,{parameterPath:["options","prevsnapshot"],mapper:{serializedName:"prevsnapshot",type:{name:"String"}}},ft],headerParameters:[Yt,pa,$t,_t,qt,It,wt,Rt],responses:{200:{bodyMapper:Ze,headersMapper:Fc},default:{bodyMapper:Ie}},isXML:!0,serializer:dr},Hr={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,ut],headerParameters:[ot,pa,$t,_t,At,Pt,xt,qt,It,wt,Rt],responses:{200:{headersMapper:Xc},default:{bodyMapper:Ie}},isXML:!0,serializer:dr},gr={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,ut],headerParameters:[{parameterPath:"sequenceNumberAction",mapper:{required:!0,serializedName:"x-ms-sequence-number-action",type:{name:"Enum",allowedValues:["max","update","increment"]}}},vt,pa,$t,_t,qt,It,wt,Rt],responses:{200:{headersMapper:Gc},default:{bodyMapper:Ie}},isXML:!0,serializer:dr},br={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,{parameterPath:"comp",mapper:{required:!0,isConstant:!0,serializedName:"comp",defaultValue:"incrementalcopy",type:{name:"String"}}}],headerParameters:[St,pa,$t,qt,It,wt,Rt],responses:{202:{headersMapper:Kc},default:{bodyMapper:Ie}},isXML:!0,serializer:dr},Vr=Object.freeze({AppendBlobAppendBlockFromUrlHeaders:Yc,AppendBlobAppendBlockHeaders:Wc,AppendBlobCreateHeaders:Hc,StorageError:Ie}),Lr=function(){function e(e){this.client=e}return e.prototype.create=function(e,c,t){return this.client.sendOperationRequest({contentLength:e,options:c},Nr,t)},e.prototype.appendBlock=function(e,c,t,a){return this.client.sendOperationRequest({body:e,contentLength:c,options:t},xr,a)},e.prototype.appendBlockFromUrl=function(e,c,t,a){return this.client.sendOperationRequest({sourceUrl:e,contentLength:c,options:t},Ar,a)},e}(),Sr=new M(Vr,!0),Nr={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va],headerParameters:[Lt,Zt,pa,$t,{parameterPath:"blobType",mapper:{required:!0,isConstant:!0,serializedName:"x-ms-blob-type",defaultValue:"AppendBlob",type:{name:"String"}}},ht,nt,lt,mt,st,it,_t,At,Pt,xt,qt,It,wt,Rt],responses:{201:{headersMapper:Hc},default:{bodyMapper:Ie}},isXML:!0,serializer:Sr},xr={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,Mt],headerParameters:[Lt,da,za,pa,$t,_t,jt,rt,At,Pt,xt,qt,It,wt,Rt],requestBody:{parameterPath:"body",mapper:{required:!0,serializedName:"body",type:{name:"Stream"}}},contentType:"application/octet-stream",responses:{201:{headersMapper:Wc},default:{bodyMapper:Ie}},isXML:!0,serializer:Sr},Ar={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,Mt],headerParameters:[ma,oa,ra,aa,Lt,da,pa,$t,At,Pt,xt,_t,jt,rt,qt,It,wt,Rt,ia,la,sa,na],responses:{201:{headersMapper:Yc},default:{bodyMapper:Ie}},isXML:!0,serializer:Sr},Pr=Object.freeze({Block:{serializedName:"Block",type:{name:"Composite",className:"Block",modelProperties:{name:{xmlName:"Name",required:!0,serializedName:"Name",type:{name:"String"}},size:{xmlName:"Size",required:!0,serializedName:"Size",type:{name:"Number"}}}}},BlockBlobCommitBlockListHeaders:_c,BlockBlobGetBlockListHeaders:Bc,BlockBlobStageBlockFromURLHeaders:Oc,BlockBlobStageBlockHeaders:Ic,BlockBlobUploadHeaders:gc,BlockList:De,BlockLookupList:Ue,StorageError:Ie}),wr=function(){function e(e){this.client=e}return e.prototype.upload=function(e,c,t,a){return this.client.sendOperationRequest({body:e,contentLength:c,options:t},Rr,a)},e.prototype.stageBlock=function(e,c,t,a,r){return this.client.sendOperationRequest({blockId:e,contentLength:c,body:t,options:a},Tr,r)},e.prototype.stageBlockFromURL=function(e,c,t,a,r){return this.client.sendOperationRequest({blockId:e,contentLength:c,sourceUrl:t,options:a},kr,r)},e.prototype.commitBlockList=function(e,c,t){return this.client.sendOperationRequest({blocks:e,options:c},Er,t)},e.prototype.getBlockList=function(e,c,t){return this.client.sendOperationRequest({listType:e,options:c},Ir,t)},e}(),qr=new M(Pr,!0),Rr={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va],headerParameters:[Lt,Zt,ha,pa,$t,{parameterPath:"blobType",mapper:{required:!0,isConstant:!0,serializedName:"x-ms-blob-type",defaultValue:"BlockBlob",type:{name:"String"}}},ht,nt,lt,mt,st,it,_t,At,Pt,xt,qt,It,wt,Rt],requestBody:{parameterPath:"body",mapper:{required:!0,serializedName:"body",type:{name:"Stream"}}},contentType:"application/octet-stream",responses:{201:{headersMapper:gc},default:{bodyMapper:Ie}},isXML:!0,serializer:qr},Tr={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[zt,va,yt],headerParameters:[Lt,da,za,pa,$t,_t,At,Pt,xt],requestBody:{parameterPath:"body",mapper:{required:!0,serializedName:"body",type:{name:"Stream"}}},contentType:"application/octet-stream",responses:{201:{headersMapper:Ic},default:{bodyMapper:Ie}},isXML:!0,serializer:qr},kr={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[zt,va,yt],headerParameters:[Lt,ma,oa,ra,aa,pa,$t,At,Pt,xt,_t,ia,la,sa,na],responses:{201:{headersMapper:Oc},default:{bodyMapper:Ie}},isXML:!0,serializer:qr},Er={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,Ct],headerParameters:[da,za,Zt,ha,pa,$t,st,ht,nt,lt,mt,it,_t,At,Pt,xt,qt,It,wt,Rt],requestBody:{parameterPath:"blocks",mapper:A({},Ue,{required:!0})},contentType:"application/xml; charset=utf-8",responses:{201:{headersMapper:_c},default:{bodyMapper:Ie}},isXML:!0,serializer:qr},Ir={httpMethod:"GET",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[ta,{parameterPath:"listType",mapper:{required:!0,serializedName:"blocklisttype",defaultValue:"committed",type:{name:"Enum",allowedValues:["committed","uncommitted","all"]}}},va,Ct],headerParameters:[pa,$t,_t],responses:{200:{bodyMapper:De,headersMapper:Bc},default:{bodyMapper:Ie}},isXML:!0,serializer:qr};function Or(e){if(e.offset<0)throw new RangeError("IRange.offset cannot be smaller than 0.");if(e.count&&e.count<=0)throw new RangeError("IRange.count must be larger than 0. Leave it undefined if you want a range from offset to the end.");return e.count?"bytes="+e.offset+"-"+(e.offset+e.count-1):"bytes="+e.offset+"-"}var _r,Br,Dr=268435456,Ur=104857600,jr=5e4,Zr=4194304,Fr="_",Xr="sig",Gr="snapshot",Kr="timeout",Wr={AUTHORIZATION:"Authorization",AUTHORIZATION_SCHEME:"Bearer",CONTENT_ENCODING:"Content-Encoding",CONTENT_ID:"Content-ID",CONTENT_LANGUAGE:"Content-Language",CONTENT_LENGTH:"Content-Length",CONTENT_MD5:"Content-Md5",CONTENT_TRANSFER_ENCODING:"Content-Transfer-Encoding",CONTENT_TYPE:"Content-Type",COOKIE:"Cookie",DATE:"date",IF_MATCH:"if-match",IF_MODIFIED_SINCE:"if-modified-since",IF_NONE_MATCH:"if-none-match",IF_UNMODIFIED_SINCE:"if-unmodified-since",PREFIX_FOR_STORAGE:"x-ms-",RANGE:"Range",USER_AGENT:"User-Agent",X_MS_CLIENT_REQUEST_ID:"x-ms-client-request-id",X_MS_DATE:"x-ms-date",X_MS_ERROR_CODE:"x-ms-error-code",X_MS_VERSION:"x-ms-version"},Yr="\r\n",Qr="AES256";function $r(e){if(null!=e)return e}function Jr(e,c){if(e&&!c)throw new RangeError("Customer-provided encryption key must be used over HTTPS.");e&&!e.encryptionAlgorithm&&(e.encryptionAlgorithm=Qr)}function es(e,c){var t=me.parse(e),a=t.getPath();return a=a?a.endsWith("/")?""+a+c:a+"/"+c:c,t.setPath(a),t.toString()}function cs(e,c,t){var a=me.parse(e);return a.setQueryParameter(c,t),a.toString()}function ts(e,c){void 0===c&&(c=!0);var t=e.toISOString();return c?t.substring(0,t.length-1)+"0000Z":t.substring(0,t.length-5)+"Z"}function as(e,c){e.length>42&&(e=e.slice(0,42));var t,a=e+function(e,c,t){return void 0===t&&(t=" "),String.prototype.padStart?e.padStart(c,t):(t=t||" ",e.length>c?e:((c-=e.length)>t.length&&(t+=t.repeat(c/t.length)),t.slice(0,c)+e))}(c.toString(),48-e.length,"0");return t=a,h?Buffer.from(t).toString("base64"):btoa(t)}function rs(e,c){return e.toLocaleLowerCase()===c.toLocaleLowerCase()}(_r=e.BlockBlobTier||(e.BlockBlobTier={})).Hot="Hot",_r.Cool="Cool",_r.Archive="Archive",(Br=e.PremiumPageBlobTier||(e.PremiumPageBlobTier={})).P4="P4",Br.P6="P6",Br.P10="P10",Br.P15="P15",Br.P20="P20",Br.P30="P30",Br.P40="P40",Br.P50="P50",Br.P60="P60",Br.P70="P70",Br.P80="P80";var ss,is=function(e){function c(c,t){return e.call(this,c,t)||this}return x(c,e),c.prototype.sendRequest=function(e){return P(this,void 0,void 0,function(){return w(this,function(c){return"GET"!==e.method.toUpperCase()&&"HEAD"!==e.method.toUpperCase()||(e.url=cs(e.url,Fr,(new Date).getTime().toString())),e.headers.remove(Wr.COOKIE),e.headers.remove(Wr.CONTENT_LENGTH),[2,this._nextPolicy.sendRequest(e)]})})},c}(G),ns=function(){function e(){}return e.prototype.create=function(e,c){return new is(e,c)},e}(),ls=function(){function e(){}return e.prototype.create=function(e,c){throw new Error("Method should be implemented in children classes.")},e}(),os="azure-storage-blob",ms="1.0.0",hs=function(e){function c(c,t){var a=this;if(null==c)throw new Error("'url' cannot be null.");if(t||(t={}),!t.userAgent){var r=ne();t.userAgent=os+"/"+ms+" "+r}return(a=e.call(this,void 0,t)||this).version="2019-02-02",a.baseUri="{url}",a.requestContentType="application/json; charset=utf-8",a.url=c,null!==t.pathRenameMode&&void 0!==t.pathRenameMode&&(a.pathRenameMode=t.pathRenameMode),a}return x(c,e),c}(Ae),vs=function(e){function c(c,t,a){var r=e.call(this,c,t)||this;return r.keepAliveOptions=a,r}return x(c,e),c.prototype.sendRequest=function(e){return P(this,void 0,void 0,function(){return w(this,function(c){return e.keepAlive=this.keepAliveOptions.enable,[2,this._nextPolicy.sendRequest(e)]})})},c}(G),zs=function(){function e(e){void 0===e&&(e={enable:!0}),this.keepAliveOptions=e}return e.prototype.create=function(e,c){return new vs(e,c,this.keepAliveOptions)},e}(),ds={logWarningIfTryOverThreshold:3e3},us=function(c){function t(e,t,a){void 0===a&&(a=ds);var r=c.call(this,e,t)||this;return r.tryCount=0,r.operationStartTime=new Date,r.requestStartTime=new Date,r.loggingOptions=a,r}return x(t,c),t.prototype.sendRequest=function(c){return P(this,void 0,void 0,function(){var t,a,r,s,i,n,l,o,m,h;return w(this,function(v){switch(v.label){case 0:this.tryCount++,this.requestStartTime=new Date,1===this.tryCount&&(this.operationStartTime=this.requestStartTime),function(e,c){return me.parse(e).getQueryParameterValue(c)}(t=c.url,Xr)&&(t=cs(t,Xr,"*****")),this.log(e.HttpPipelineLogLevel.INFO,"'"+t+"'==> OUTGOING REQUEST (Try number="+this.tryCount+")."),v.label=1;case 1:return v.trys.push([1,3,,4]),[4,this._nextPolicy.sendRequest(c)];case 2:return a=v.sent(),r=new Date,s=r.getTime()-this.requestStartTime.getTime(),i=r.getTime()-this.operationStartTime.getTime(),n=e.HttpPipelineLogLevel.INFO,l="",this.shouldLog(e.HttpPipelineLogLevel.INFO)&&(l="Successfully Received Response. "),s>=this.loggingOptions.logWarningIfTryOverThreshold&&this.shouldLog(e.HttpPipelineLogLevel.WARNING)&&(n=e.HttpPipelineLogLevel.WARNING,l="SLOW OPERATION. Duration > "+this.loggingOptions.logWarningIfTryOverThreshold+" ms. "),(a.status>=400&&a.status<=499&&404!==a.status&&409!==a.status&&412!==a.status&&416!==a.status||a.status>=500&&a.status<=509)&&(o="REQUEST ERROR: HTTP request failed with status code: "+a.status+". ",l=o,n=e.HttpPipelineLogLevel.ERROR),m="Request try:"+this.tryCount+", status:"+a.status+" request duration:"+s+" ms, operation duration:"+i+" ms\n",this.log(n,l+m),[2,a];case 3:throw h=v.sent(),this.log(e.HttpPipelineLogLevel.ERROR,"Unexpected failure attempting to make request. Error message: "+h.message),h;case 4:return[2]}})})},t}(G),ps=function(){function e(e){this.loggingOptions=e}return e.prototype.create=function(e,c){return new us(e,c,this.loggingOptions)},e}(),fs=function(){function e(e,c){void 0===c&&(c={}),this.factories=e,this.options=c}return e.prototype.toServiceClientOptions=function(){return{httpClient:this.options.HTTPClient,httpPipelineLogger:this.options.logger,requestPolicyFactories:this.factories}},e}();(ss=e.RetryPolicyType||(e.RetryPolicyType={}))[ss.EXPONENTIAL=0]="EXPONENTIAL",ss[ss.FIXED=1]="FIXED";var Ms,ys={maxRetryDelayInMs:12e4,maxTries:4,retryDelayInMs:4e3,retryPolicyType:e.RetryPolicyType.EXPONENTIAL,secondaryHost:"",tryTimeoutInMs:void 0},Cs=new R("The request was aborted",R.REQUEST_ABORTED_ERROR),Hs=function(c){function t(e,t,a){void 0===a&&(a=ys);var r=c.call(this,e,t)||this;return r.retryOptions={retryPolicyType:a.retryPolicyType?a.retryPolicyType:ys.retryPolicyType,maxTries:a.maxTries&&a.maxTries>=1?Math.floor(a.maxTries):ys.maxTries,tryTimeoutInMs:a.tryTimeoutInMs&&a.tryTimeoutInMs>=0?a.tryTimeoutInMs:ys.tryTimeoutInMs,retryDelayInMs:a.retryDelayInMs&&a.retryDelayInMs>=0?Math.min(a.retryDelayInMs,a.maxRetryDelayInMs?a.maxRetryDelayInMs:ys.maxRetryDelayInMs):ys.retryDelayInMs,maxRetryDelayInMs:a.maxRetryDelayInMs&&a.maxRetryDelayInMs>=0?a.maxRetryDelayInMs:ys.maxRetryDelayInMs,secondaryHost:a.secondaryHost?a.secondaryHost:ys.secondaryHost},r}return x(t,c),t.prototype.sendRequest=function(e){return P(this,void 0,void 0,function(){return w(this,function(c){return[2,this.attemptSendRequest(e,!1,1)]})})},t.prototype.attemptSendRequest=function(c,t,a){return P(this,void 0,void 0,function(){var r,s,i,n;return w(this,function(l){switch(l.label){case 0:r=c.clone(),(s=t||!this.retryOptions.secondaryHost||!("GET"===c.method||"HEAD"===c.method||"OPTIONS"===c.method)||a%2==1)||(r.url=function(e,c){var t=me.parse(e);return t.setHost(c),t.toString()}(r.url,this.retryOptions.secondaryHost)),this.retryOptions.tryTimeoutInMs&&(r.url=cs(r.url,Kr,Math.floor(this.retryOptions.tryTimeoutInMs/1e3).toString())),l.label=1;case 1:return l.trys.push([1,3,,4]),this.logf(e.HttpPipelineLogLevel.INFO,"RetryPolicy: =====> Try="+a+" "+(s?"Primary":"Secondary")),[4,this._nextPolicy.sendRequest(r)];case 2:return i=l.sent(),this.shouldRetry(s,a,i)?(t=t||!s&&404===i.status,[3,4]):[2,i];case 3:if(n=l.sent(),this.logf(e.HttpPipelineLogLevel.ERROR,"RetryPolicy: Caught error, message: "+n.message+", code: "+n.code),!this.shouldRetry(s,a,i,n))throw n;return[3,4];case 4:return[4,this.delay(s,a,c.abortSignal)];case 5:return l.sent(),[4,this.attemptSendRequest(c,t,++a)];case 6:return[2,l.sent()]}})})},t.prototype.shouldRetry=function(c,t,a,r){if(t>=this.retryOptions.maxTries)return this.logf(e.HttpPipelineLogLevel.INFO,"RetryPolicy: Attempt(s) "+t+" >= maxTries "+this.retryOptions.maxTries+", no further try."),!1;if(r)for(var s=0,i=["ETIMEDOUT","ESOCKETTIMEDOUT","ECONNREFUSED","ECONNRESET","ENOENT","ENOTFOUND","TIMEOUT","REQUEST_SEND_ERROR"];s0){var t=this.listeners[e].shift();setImmediate(function(){t.call(c)})}},e.keys={},e.listeners={},e}(),ks=function(){function e(){this.batch="batch",this.batchRequest=new Os}return e.prototype.getMultiPartContentType=function(){return this.batchRequest.getMultipartContentType()},e.prototype.getHttpRequestBody=function(){return this.batchRequest.getHttpRequestBody()},e.prototype.getSubRequests=function(){return this.batchRequest.getSubRequests()},e.prototype.addSubRequestInternal=function(e,c){return P(this,void 0,void 0,function(){return w(this,function(t){switch(t.label){case 0:return[4,Ts.lock(this.batch)];case 1:t.sent(),t.label=2;case 2:return t.trys.push([2,,4,6]),this.batchRequest.preAddSubRequest(e),[4,c()];case 3:return t.sent(),this.batchRequest.postAddSubRequest(e),[3,6];case 4:return[4,Ts.unlock(this.batch)];case 5:return t.sent(),[7];case 6:return[2]}})})},e}(),Es=function(e){function c(){return e.call(this)||this}return x(c,e),c.prototype.addSubRequest=function(c,t,a){return P(this,void 0,void 0,function(){var r,s,i=this;return w(this,function(n){switch(n.label){case 0:if("string"==typeof c&&t instanceof ls)r=c,s=t;else{if(!(c instanceof ws))throw new RangeError("Invalid arguments. Either url and credential, or BlobURL need be provided.");r=c.url,s=c.credential,a=t}return a||(a={}),[4,e.prototype.addSubRequestInternal.call(this,{url:r,credential:s},function(){return P(i,void 0,void 0,function(){return w(this,function(e){switch(e.label){case 0:return[4,new ws(r,this.batchRequest.createPipeline(s)).delete(Te.none,a)];case 1:return e.sent(),[2]}})})})];case 1:return n.sent(),[2]}})})},c}(ks),Is=function(e){function c(){return e.call(this)||this}return x(c,e),c.prototype.addSubRequest=function(c,t,a,r){return P(this,void 0,void 0,function(){var s,i,n,l=this;return w(this,function(o){switch(o.label){case 0:if("string"==typeof c&&t instanceof ls)s=c,i=t,n=a;else{if(!(c instanceof ws))throw new RangeError("Invalid arguments. Either url and credential, or BlobURL need be provided.");s=c.url,i=c.credential,n=t,r=a}return r||(r={}),[4,e.prototype.addSubRequestInternal.call(this,{url:s,credential:i},function(){return P(l,void 0,void 0,function(){return w(this,function(e){switch(e.label){case 0:return[4,new ws(s,this.batchRequest.createPipeline(i)).setTier(Te.none,n,r)];case 1:return e.sent(),[2]}})})})];case 1:return o.sent(),[2]}})})},c}(ks),Os=function(){function e(){this.operationCount=0,this.body="";var e=d();this.boundary="batch_"+e,this.subRequestPrefix="--"+this.boundary+Yr+Wr.CONTENT_TYPE+": application/http"+Yr+Wr.CONTENT_TRANSFER_ENCODING+": binary",this.multipartContentType="multipart/mixed; boundary="+this.boundary,this.batchRequestEnding="--"+this.boundary+"--",this.subRequests=new Map}return e.prototype.createPipeline=function(e){var c=e instanceof As,t=3+(c?0:1),a=new Array(t);return a[0]=W(),a[1]=new Us,c||(a[2]=e),a[t-1]=new Bs(this),new fs(a,{})},e.prototype.appendSubRequestToBody=function(e){this.body+=[this.subRequestPrefix,Wr.CONTENT_ID+": "+this.operationCount,"",e.method.toString()+" "+function(e){var c=me.parse(e),t=c.getPath();if(!t)throw new RangeError("Invalid url without valid path.");var a=c.getQuery()||"";return""!=(a=a.trim())&&(a=a.startsWith("?")?a:"?"+a),""+t+a}(e.url)+" HTTP/1.1"+Yr].join(Yr);for(var c=0,t=e.headers.headersArray();c=256)throw new RangeError("Cannot exceed 256 sub requests in a single batch");var c=function(e){return me.parse(e).getPath()}(e.url);if(!c||""==c)throw new RangeError("Invalid url for sub request: '"+e.url+"'")},e.prototype.postAddSubRequest=function(e){this.subRequests.set(this.operationCount,e),this.operationCount++},e.prototype.getHttpRequestBody=function(){return""+this.body+this.batchRequestEnding+Yr},e.prototype.getMultipartContentType=function(){return this.multipartContentType},e.prototype.getSubRequests=function(){return this.subRequests},e}(),_s=function(e){function c(c,a,r){var s=e.call(this,a,r)||this;return s.dummyResponse={request:new S,status:200,headers:new t},s.batchRequest=c,s}return x(c,e),c.prototype.sendRequest=function(e){return P(this,void 0,void 0,function(){return w(this,function(c){switch(c.label){case 0:return[4,this.batchRequest.appendSubRequestToBody(e)];case 1:return c.sent(),[2,this.dummyResponse]}})})},c}(G),Bs=function(){function e(e){this.batchRequest=e}return e.prototype.create=function(e,c){return new _s(this.batchRequest,e,c)},e}(),Ds=function(e){function c(c,t){return e.call(this,c,t)||this}return x(c,e),c.prototype.sendRequest=function(e){return P(this,void 0,void 0,function(){var c,t,a,r;return w(this,function(s){for(c="",t=0,a=e.headers.headersArray();t0&&i.length>r&&!i.warned){i.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+i.length+" "+String(c)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=e,l.type=c,l.count=i.length,n=l,console&&console.warn&&console.warn(n)}return e}function ci(e,c,t){var a={fired:!1,wrapFn:void 0,target:e,type:c,listener:t},r=function(){for(var e=[],c=0;c0&&(s=c[0]),s instanceof Error)throw s;var i=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw i.context=s,i}var n=r[e];if(void 0===n)return!1;if("function"==typeof n)Ks(n,this,c);else{var l=n.length,o=ri(n,l);for(t=0;t=0;s--)if(t[s]===c||t[s].listener===c){i=t[s].listener,r=s;break}if(r<0)return this;0===r?t.shift():function(e,c){for(;c+1=0;a--)this.removeListener(e,c[a]);return this},Ys.prototype.listeners=function(e){return ti(this,e,!0)},Ys.prototype.rawListeners=function(e){return ti(this,e,!1)},Ys.listenerCount=function(e,c){return"function"==typeof e.listenerCount?e.listenerCount(c):ai.call(e,c)},Ys.prototype.listenerCount=ai,Ys.prototype.eventNames=function(){return this._eventsCount>0?Rs(this._events):[]};var si,ii=Qs.EventEmitter;!function(e){e[e.Good=0]="Good",e[e.Error=1]="Error"}(si||(si={}));var ni=function(){function e(e){if(void 0===e&&(e=5),this.actives=0,this.completed=0,this.offset=0,this.operations=[],this.state=si.Good,e<1)throw new RangeError("concurrency must be larger than 0");this.concurrency=e,this.emitter=new ii}return e.prototype.addOperation=function(e){var c=this;this.operations.push(function(){return P(c,void 0,void 0,function(){var c;return w(this,function(t){switch(t.label){case 0:return t.trys.push([0,2,,3]),this.actives++,[4,e()];case 1:return t.sent(),this.actives--,this.completed++,this.parallelExecute(),[3,3];case 2:return c=t.sent(),this.emitter.emit("error",c),[3,3];case 3:return[2]}})})})},e.prototype.do=function(){return P(this,void 0,void 0,function(){var e=this;return w(this,function(c){return this.parallelExecute(),[2,new Promise(function(c,t){e.emitter.on("finish",c),e.emitter.on("error",function(c){e.state=si.Error,t(c)})})]})})},e.prototype.nextOperation=function(){return this.offset=this.operations.length)this.emitter.emit("finish");else for(;this.activesUr)throw new RangeError("blockSize option must be >= 0 and <= "+Ur);if(0===r.maxSingleShotSize||r.maxSingleShotSize||(r.maxSingleShotSize=Dr),r.maxSingleShotSize<0||r.maxSingleShotSize>Dr)throw new RangeError("maxSingleShotSize option must be >= 0 and <= "+Dr);if(0===r.blockSize){if(t>Ur*jr)throw new RangeError(t+" is too larger to upload to a block blob.");t>r.maxSingleShotSize&&(r.blockSize=Math.ceil(t/jr),r.blockSizejr)throw new RangeError("The buffer's size is too big or the BlockSize is too small;the number of blocks must be <= "+jr);for(i=[],n=d(),l=0,o=new ni(r.parallelism),m=function(m){o.addOperation(function(){return P(v,void 0,void 0,function(){var o,h,v,z;return w(this,function(d){switch(d.label){case 0:return o=as(n,m),h=r.blockSize*m,v=m===s-1?t:h+r.blockSize,z=v-h,i.push(o),[4,a.stageBlock(e,o,c(h,z),z,{leaseAccessConditions:r.blobAccessConditions.leaseAccessConditions})];case 1:return d.sent(),l+=z,r.progress&&r.progress({loadedBytes:l}),[2]}})})})},h=0;h0&&void 0!==arguments[0]?arguments[0]:{};this.action=e.action,this.container=e.container,this.emitter=e.emitter,this.target=e.target,this.text=e.text,this.trigger=e.trigger,this.selectedText=""}},{key:"initSelection",value:function(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function(){var e=this,c="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return e.removeFake()},this.fakeHandler=this.container.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[c?"right":"left"]="-9999px";var t=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=t+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=(0,a.default)(this.fakeElem),this.copyText()}},{key:"removeFake",value:function(){this.fakeHandler&&(this.container.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function(){this.selectedText=(0,a.default)(this.target),this.copyText()}},{key:"copyText",value:function(){var e=void 0;try{e=document.execCommand(this.action)}catch(c){e=!1}this.handleResult(e)}},{key:"handleResult",value:function(e){this.emitter.emit(e?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function(){this.trigger&&this.trigger.focus(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function(){this.removeFake()}},{key:"action",set:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=e,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function(){return this._action}},{key:"target",set:function(e){if(void 0!==e){if(!e||"object"!==(void 0===e?"undefined":r(e))||1!==e.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&e.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(e.hasAttribute("readonly")||e.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=e}},get:function(){return this._target}}]),e}();e.exports=i},r=[e,t(7)],void 0===(s="function"==typeof(a=i)?a.apply(c,r):a)||(e.exports=s)},function(e,c,t){var a=t(6),r=t(5);e.exports=function(e,c,t){if(!e&&!c&&!t)throw new Error("Missing required arguments");if(!a.string(c))throw new TypeError("Second argument must be a String");if(!a.fn(t))throw new TypeError("Third argument must be a Function");if(a.node(e))return function(e,c,t){return e.addEventListener(c,t),{destroy:function(){e.removeEventListener(c,t)}}}(e,c,t);if(a.nodeList(e))return function(e,c,t){return Array.prototype.forEach.call(e,function(e){e.addEventListener(c,t)}),{destroy:function(){Array.prototype.forEach.call(e,function(e){e.removeEventListener(c,t)})}}}(e,c,t);if(a.string(e))return function(e,c,t){return r(document.body,e,c,t)}(e,c,t);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}},function(e,c){function t(){}t.prototype={on:function(e,c,t){var a=this.e||(this.e={});return(a[e]||(a[e]=[])).push({fn:c,ctx:t}),this},once:function(e,c,t){var a=this;function r(){a.off(e,r),c.apply(t,arguments)}return r._=c,this.on(e,r,t)},emit:function(e){for(var c=[].slice.call(arguments,1),t=((this.e||(this.e={}))[e]||[]).slice(),a=0,r=t.length;a0&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof e.action?e.action:this.defaultAction,this.target="function"==typeof e.target?e.target:this.defaultTarget,this.text="function"==typeof e.text?e.text:this.defaultText,this.container="object"===l(e.container)?e.container:document.body}},{key:"listenClick",value:function(e){var c=this;this.listener=(0,i.default)(e,"click",function(e){return c.onClick(e)})}},{key:"onClick",value:function(e){var c=e.delegateTarget||e.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new r.default({action:this.action(c),target:this.target(c),text:this.text(c),container:this.container,trigger:c,emitter:this})}},{key:"defaultAction",value:function(e){return h("action",e)}},{key:"defaultTarget",value:function(e){var c=h("target",e);if(c)return document.querySelector(c)}},{key:"defaultText",value:function(e){return h("text",e)}},{key:"destroy",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["copy","cut"],c="string"==typeof e?[e]:e,t=!!document.queryCommandSupported;return c.forEach(function(e){t=t&&!!document.queryCommandSupported(e)}),t}}]),c}();function h(e,c){var t="data-clipboard-"+e;if(c.hasAttribute(t))return c.getAttribute(t)}e.exports=m},r=[e,t(0),t(2),t(1)],void 0===(s="function"==typeof(a=i)?a.apply(c,r):a)||(e.exports=s)},function(e,c){var t=9;if("undefined"!=typeof Element&&!Element.prototype.matches){var a=Element.prototype;a.matches=a.matchesSelector||a.mozMatchesSelector||a.msMatchesSelector||a.oMatchesSelector||a.webkitMatchesSelector}e.exports=function(e,c){for(;e&&e.nodeType!==t;){if("function"==typeof e.matches&&e.matches(c))return e;e=e.parentNode}}},function(e,c,t){var a=t(4);function r(e,c,t,r,s){var i=function(e,c,t,r){return function(t){t.delegateTarget=a(t.target,c),t.delegateTarget&&r.call(e,t)}}.apply(this,arguments);return e.addEventListener(t,i,s),{destroy:function(){e.removeEventListener(t,i,s)}}}e.exports=function(e,c,t,a,s){return"function"==typeof e.addEventListener?r.apply(null,arguments):"function"==typeof t?r.bind(null,document).apply(null,arguments):("string"==typeof e&&(e=document.querySelectorAll(e)),Array.prototype.map.call(e,function(e){return r(e,c,t,a,s)}))}},function(e,c){c.node=function(e){return void 0!==e&&e instanceof HTMLElement&&1===e.nodeType},c.nodeList=function(e){var t=Object.prototype.toString.call(e);return void 0!==e&&("[object NodeList]"===t||"[object HTMLCollection]"===t)&&"length"in e&&(0===e.length||c.node(e[0]))},c.string=function(e){return"string"==typeof e||e instanceof String},c.fn=function(e){return"[object Function]"===Object.prototype.toString.call(e)}},function(e,c){e.exports=function(e){var c;if("SELECT"===e.nodeName)e.focus(),c=e.value;else if("INPUT"===e.nodeName||"TEXTAREA"===e.nodeName){var t=e.hasAttribute("readonly");t||e.setAttribute("readonly",""),e.select(),e.setSelectionRange(0,e.value.length),t||e.removeAttribute("readonly"),c=e.value}else{e.hasAttribute("contenteditable")&&e.focus();var a=window.getSelection(),r=document.createRange();r.selectNodeContents(e),a.removeAllRanges(),a.addRange(r),c=a.toString()}return c}}])}),function(){"use strict";var e={},c={};try{"undefined"!=typeof window&&(e=window),"undefined"!=typeof document&&(c=document)}catch(e){}var t=(e.navigator||{}).userAgent,a=void 0===t?"":t,r=e,s=c,i=(r.document,!!s.documentElement&&!!s.head&&"function"==typeof s.addEventListener&&s.createElement,~a.indexOf("MSIE")||a.indexOf("Trident/"),"___FONT_AWESOME___"),n=function(){try{return!0}catch(e){return!1}}(),l=r||{};l[i]||(l[i]={}),l[i].styles||(l[i].styles={}),l[i].hooks||(l[i].hooks={}),l[i].shims||(l[i].shims=[]);var o=l[i];var m={"500px":[448,512,[],"f26e","M103.3 344.3c-6.5-14.2-6.9-18.3 7.4-23.1 25.6-8 8 9.2 43.2 49.2h.3v-93.9c1.2-50.2 44-92.2 97.7-92.2 53.9 0 97.7 43.5 97.7 96.8 0 63.4-60.8 113.2-128.5 93.3-10.5-4.2-2.1-31.7 8.5-28.6 53 0 89.4-10.1 89.4-64.4 0-61-77.1-89.6-116.9-44.6-23.5 26.4-17.6 42.1-17.6 157.6 50.7 31 118.3 22 160.4-20.1 24.8-24.8 38.5-58 38.5-93 0-35.2-13.8-68.2-38.8-93.3-24.8-24.8-57.8-38.5-93.3-38.5s-68.8 13.8-93.5 38.5c-.3.3-16 16.5-21.2 23.9l-.5.6c-3.3 4.7-6.3 9.1-20.1 6.1-6.9-1.7-14.3-5.8-14.3-11.8V20c0-5 3.9-10.5 10.5-10.5h241.3c8.3 0 8.3 11.6 8.3 15.1 0 3.9 0 15.1-8.3 15.1H130.3v132.9h.3c104.2-109.8 282.8-36 282.8 108.9 0 178.1-244.8 220.3-310.1 62.8zm63.3-260.8c-.5 4.2 4.6 24.5 14.6 20.6C306 56.6 384 144.5 390.6 144.5c4.8 0 22.8-15.3 14.3-22.8-93.2-89-234.5-57-238.3-38.2zM393 414.7C283 524.6 94 475.5 61 310.5c0-12.2-30.4-7.4-28.9 3.3 24 173.4 246 256.9 381.6 121.3 6.9-7.8-12.6-28.4-20.7-20.4zM213.6 306.6c0 4 4.3 7.3 5.5 8.5 3 3 6.1 4.4 8.5 4.4 3.8 0 2.6.2 22.3-19.5 19.6 19.3 19.1 19.5 22.3 19.5 5.4 0 18.5-10.4 10.7-18.2L265.6 284l18.2-18.2c6.3-6.8-10.1-21.8-16.2-15.7L249.7 268c-18.6-18.8-18.4-19.5-21.5-19.5-5 0-18 11.7-12.4 17.3L234 284c-18.1 17.9-20.4 19.2-20.4 22.6z"],"accessible-icon":[448,512,[],"f368","M423.9 255.8L411 413.1c-3.3 40.7-63.9 35.1-60.6-4.9l10-122.5-41.1 2.3c10.1 20.7 15.8 43.9 15.8 68.5 0 41.2-16.1 78.7-42.3 106.5l-39.3-39.3c57.9-63.7 13.1-167.2-74-167.2-25.9 0-49.5 9.9-67.2 26L73 243.2c22-20.7 50.1-35.1 81.4-40.2l75.3-85.7-42.6-24.8-51.6 46c-30 26.8-70.6-18.5-40.5-45.4l68-60.7c9.8-8.8 24.1-10.2 35.5-3.6 0 0 139.3 80.9 139.5 81.1 16.2 10.1 20.7 36 6.1 52.6L285.7 229l106.1-5.9c18.5-1.1 33.6 14.4 32.1 32.7zm-64.9-154c28.1 0 50.9-22.8 50.9-50.9C409.9 22.8 387.1 0 359 0c-28.1 0-50.9 22.8-50.9 50.9 0 28.1 22.8 50.9 50.9 50.9zM179.6 456.5c-80.6 0-127.4-90.6-82.7-156.1l-39.7-39.7C36.4 287 24 320.3 24 356.4c0 130.7 150.7 201.4 251.4 122.5l-39.7-39.7c-16 10.9-35.3 17.3-56.1 17.3z"],accusoft:[640,512,[],"f369","M322.1 252v-1l-51.2-65.8s-12 1.6-25 15.1c-9 9.3-242.1 239.1-243.4 240.9-7 10 1.6 6.8 15.7 1.7.8 0 114.5-36.6 114.5-36.6.5-.6-.1-.1.6-.6-.4-5.1-.8-26.2-1-27.7-.6-5.2 2.2-6.9 7-8.9l92.6-33.8c.6-.8 88.5-81.7 90.2-83.3zm160.1 120.1c13.3 16.1 20.7 13.3 30.8 9.3 3.2-1.2 115.4-47.6 117.8-48.9 8-4.3-1.7-16.7-7.2-23.4-2.1-2.5-205.1-245.6-207.2-248.3-9.7-12.2-14.3-12.9-38.4-12.8-10.2 0-106.8.5-116.5.6-19.2.1-32.9-.3-19.2 16.9C250 75 476.5 365.2 482.2 372.1zm152.7 1.6c-2.3-.3-24.6-4.7-38-7.2 0 0-115 50.4-117.5 51.6-16 7.3-26.9-3.2-36.7-14.6l-57.1-74c-5.4-.9-60.4-9.6-65.3-9.3-3.1.2-9.6.8-14.4 2.9-4.9 2.1-145.2 52.8-150.2 54.7-5.1 2-11.4 3.6-11.1 7.6.2 2.5 2 2.6 4.6 3.5 2.7.8 300.9 67.6 308 69.1 15.6 3.3 38.5 10.5 53.6 1.7 2.1-1.2 123.8-76.4 125.8-77.8 5.4-4 4.3-6.8-1.7-8.2z"],"acquisitions-incorporated":[384,512,[],"f6af","M357.45 468.2c-1.2-7.7-1.3-7.6-9.6-7.6-99.8.2-111.8-2.4-112.7-2.6-12.3-1.7-20.6-10.5-21-23.1-.1-1.6-.2-71.6-1-129.1-.1-4.7 1.6-6.4 5.9-7.5 12.5-3 24.9-6.1 37.3-9.7 4.3-1.3 6.8-.2 8.4 3.5 4.5 10.3 8.8 20.6 13.2 30.9 1.6 3.7.1 4.4-3.4 4.4-10-.2-20-.1-30.4-.1v27h116c-1.4-9.5-2.7-18.1-4-27.5-7 0-13.8.4-20.4-.1-22.6-1.6-18.3-4.4-84-158.6-8.8-20.1-27.9-62.1-36.5-89.2-4.4-14 5.5-25.4 18.9-26.6 18.6-1.7 37.5-1.6 56.2-2 20.6-.4 41.2-.4 61.8-.5 3.1 0 4-1.4 4.3-4.3 1.2-9.8 2.7-19.5 4-29.2.8-5.3 1.6-10.7 2.4-16.1L23.75 0c-3.6 0-5.3 1.1-4.6 5.3 2.2 13.2-.8.8 6.4 45.3 63.4 0 71.8.9 101.8.5 12.3-.2 37 3.5 37.7 22.1.4 11.4-1.1 11.3-32.6 87.4-53.8 129.8-50.7 120.3-67.3 161-1.7 4.1-3.6 5.2-7.6 5.2-8.5-.2-17-.3-25.4.1-1.9.1-5.2 1.8-5.5 3.2-1.5 8.1-2.2 16.3-3.2 24.9h114.3v-27.6c-6.9 0-33.5.4-35.3-2.9 5.3-12.3 10.4-24.4 15.7-36.7 16.3 4 31.9 7.8 47.6 11.7 3.4.9 4.6 3 4.6 6.8-.1 42.9.1 85.9.2 128.8 0 10.2-5.5 19.1-14.9 23.1-6.5 2.7-3.3 3.4-121.4 2.4-5.3 0-7.1 2-7.6 6.8-1.5 12.9-2.9 25.9-5 38.8-.8 5 1.3 5.7 5.3 5.7 183.2.6-30.7 0 337.1 0-2.5-15-4.4-29.4-6.6-43.7zm-174.9-205.7c-13.3-4.2-26.6-8.2-39.9-12.5a44.53 44.53 0 0 1-5.8-2.9c17.2-44.3 34.2-88.1 51.3-132.1 7.5 2.4 7.9-.8 9.4 0 9.3 22.5 18.1 60.1 27 82.8 6.6 16.7 13 33.5 19.7 50.9a35.78 35.78 0 0 1-3.9 2.1c-13.1 3.9-26.4 7.5-39.4 11.7a27.66 27.66 0 0 1-18.4 0z"],adn:[496,512,[],"f170","M248 167.5l64.9 98.8H183.1l64.9-98.8zM496 256c0 136.9-111.1 248-248 248S0 392.9 0 256 111.1 8 248 8s248 111.1 248 248zm-99.8 82.7L248 115.5 99.8 338.7h30.4l33.6-51.7h168.6l33.6 51.7h30.2z"],adobe:[512,512,[],"f778","M315.5 64h170.9v384L315.5 64zm-119 0H25.6v384L196.5 64zM256 206.1L363.5 448h-73l-30.7-76.8h-78.7L256 206.1z"],adversal:[512,512,[],"f36a","M482.1 32H28.7C5.8 32 0 37.9 0 60.9v390.2C0 474.4 5.8 480 28.7 480h453.4c24.4 0 29.9-5.2 29.9-29.7V62.2c0-24.6-5.4-30.2-29.9-30.2zM178.4 220.3c-27.5-20.2-72.1-8.7-84.2 23.4-4.3 11.1-9.3 9.5-17.5 8.3-9.7-1.5-17.2-3.2-22.5-5.5-28.8-11.4 8.6-55.3 24.9-64.3 41.1-21.4 83.4-22.2 125.3-4.8 40.9 16.8 34.5 59.2 34.5 128.5 2.7 25.8-4.3 58.3 9.3 88.8 1.9 4.4.4 7.9-2.7 10.7-8.4 6.7-39.3 2.2-46.6-7.4-1.9-2.2-1.8-3.6-3.9-6.2-3.6-3.9-7.3-2.2-11.9 1-57.4 36.4-140.3 21.4-147-43.3-3.1-29.3 12.4-57.1 39.6-71 38.2-19.5 112.2-11.8 114-30.9 1.1-10.2-1.9-20.1-11.3-27.3zm286.7 222c0 15.1-11.1 9.9-17.8 9.9H52.4c-7.4 0-18.2 4.8-17.8-10.7.4-13.9 10.5-9.1 17.1-9.1 132.3-.4 264.5-.4 396.8 0 6.8 0 16.6-4.4 16.6 9.9zm3.8-340.5v291c0 5.7-.7 13.9-8.1 13.9-12.4-.4-27.5 7.1-36.1-5.6-5.8-8.7-7.8-4-12.4-1.2-53.4 29.7-128.1 7.1-144.4-85.2-6.1-33.4-.7-67.1 15.7-100 11.8-23.9 56.9-76.1 136.1-30.5v-71c0-26.2-.1-26.2 26-26.2 3.1 0 6.6.4 9.7 0 10.1-.8 13.6 4.4 13.6 14.3-.1.2-.1.3-.1.5zm-51.5 232.3c-19.5 47.6-72.9 43.3-90 5.2-15.1-33.3-15.5-68.2.4-101.5 16.3-34.1 59.7-35.7 81.5-4.8 20.6 28.8 14.9 84.6 8.1 101.1zm-294.8 35.3c-7.5-1.3-33-3.3-33.7-27.8-.4-13.9 7.8-23 19.8-25.8 24.4-5.9 49.3-9.9 73.7-14.7 8.9-2 7.4 4.4 7.8 9.5 1.4 33-26.1 59.2-67.6 58.8z"],affiliatetheme:[512,512,[],"f36b","M159.7 237.4C108.4 308.3 43.1 348.2 14 326.6-15.2 304.9 2.8 230 54.2 159.1c51.3-70.9 116.6-110.8 145.7-89.2 29.1 21.6 11.1 96.6-40.2 167.5zm351.2-57.3C437.1 303.5 319 367.8 246.4 323.7c-25-15.2-41.3-41.2-49-73.8-33.6 64.8-92.8 113.8-164.1 133.2 49.8 59.3 124.1 96.9 207 96.9 150 0 271.6-123.1 271.6-274.9.1-8.5-.3-16.8-1-25z"],airbnb:[448,512,[],"f834","M224 373.12c-25.24-31.67-40.08-59.43-45-83.18-22.55-88 112.61-88 90.06 0-5.45 24.25-20.29 52-45 83.18zm138.15 73.23c-42.06 18.31-83.67-10.88-119.3-50.47 103.9-130.07 46.11-200-18.85-200-54.92 0-85.16 46.51-73.28 100.5 6.93 29.19 25.23 62.39 54.43 99.5-32.53 36.05-60.55 52.69-85.15 54.92-50 7.43-89.11-41.06-71.3-91.09 15.1-39.16 111.72-231.18 115.87-241.56 15.75-30.07 25.56-57.4 59.38-57.4 32.34 0 43.4 25.94 60.37 59.87 36 70.62 89.35 177.48 114.84 239.09 13.17 33.07-1.37 71.29-37.01 86.64zm47-136.12C280.27 35.93 273.13 32 224 32c-45.52 0-64.87 31.67-84.66 72.79C33.18 317.1 22.89 347.19 22 349.81-3.22 419.14 48.74 480 111.63 480c21.71 0 60.61-6.06 112.37-62.4 58.68 63.78 101.26 62.4 112.37 62.4 62.89.05 114.85-60.86 89.61-130.19.02-3.89-16.82-38.9-16.82-39.58z"],algolia:[448,512,[],"f36c","M229.3 182.6c-49.3 0-89.2 39.9-89.2 89.2 0 49.3 39.9 89.2 89.2 89.2s89.2-39.9 89.2-89.2c0-49.3-40-89.2-89.2-89.2zm62.7 56.6l-58.9 30.6c-1.8.9-3.8-.4-3.8-2.3V201c0-1.5 1.3-2.7 2.7-2.6 26.2 1 48.9 15.7 61.1 37.1.7 1.3.2 3-1.1 3.7zM389.1 32H58.9C26.4 32 0 58.4 0 90.9V421c0 32.6 26.4 59 58.9 59H389c32.6 0 58.9-26.4 58.9-58.9V90.9C448 58.4 421.6 32 389.1 32zm-202.6 84.7c0-10.8 8.7-19.5 19.5-19.5h45.3c10.8 0 19.5 8.7 19.5 19.5v15.4c0 1.8-1.7 3-3.3 2.5-12.3-3.4-25.1-5.1-38.1-5.1-13.5 0-26.7 1.8-39.4 5.5-1.7.5-3.4-.8-3.4-2.5v-15.8zm-84.4 37l9.2-9.2c7.6-7.6 19.9-7.6 27.5 0l7.7 7.7c1.1 1.1 1 3-.3 4-6.2 4.5-12.1 9.4-17.6 14.9-5.4 5.4-10.4 11.3-14.8 17.4-1 1.3-2.9 1.5-4 .3l-7.7-7.7c-7.6-7.5-7.6-19.8 0-27.4zm127.2 244.8c-70 0-126.6-56.7-126.6-126.6s56.7-126.6 126.6-126.6c70 0 126.6 56.6 126.6 126.6 0 69.8-56.7 126.6-126.6 126.6z"],alipay:[448,512,[],"f642","M377.74 32H70.26C31.41 32 0 63.41 0 102.26v307.48C0 448.59 31.41 480 70.26 480h307.48c38.52 0 69.76-31.08 70.26-69.6-45.96-25.62-110.59-60.34-171.6-88.44-32.07 43.97-84.14 81-148.62 81-70.59 0-93.73-45.3-97.04-76.37-3.97-39.01 14.88-81.5 99.52-81.5 35.38 0 79.35 10.25 127.13 24.96 16.53-30.09 26.45-60.34 26.45-60.34h-178.2v-16.7h92.08v-31.24H88.28v-19.01h109.44V92.34h50.92v50.42h109.44v19.01H248.63v31.24h88.77s-15.21 46.62-38.35 90.92c48.93 16.7 100.01 36.04 148.62 52.74V102.26C447.83 63.57 416.43 32 377.74 32zM47.28 322.95c.99 20.17 10.25 53.73 69.93 53.73 52.07 0 92.58-39.68 117.87-72.9-44.63-18.68-84.48-31.41-109.44-31.41-67.45 0-79.35 33.06-78.36 50.58z"],amazon:[448,512,[],"f270","M257.2 162.7c-48.7 1.8-169.5 15.5-169.5 117.5 0 109.5 138.3 114 183.5 43.2 6.5 10.2 35.4 37.5 45.3 46.8l56.8-56S341 288.9 341 261.4V114.3C341 89 316.5 32 228.7 32 140.7 32 94 87 94 136.3l73.5 6.8c16.3-49.5 54.2-49.5 54.2-49.5 40.7-.1 35.5 29.8 35.5 69.1zm0 86.8c0 80-84.2 68-84.2 17.2 0-47.2 50.5-56.7 84.2-57.8v40.6zm136 163.5c-7.7 10-70 67-174.5 67S34.2 408.5 9.7 379c-6.8-7.7 1-11.3 5.5-8.3C88.5 415.2 203 488.5 387.7 401c7.5-3.7 13.3 2 5.5 12zm39.8 2.2c-6.5 15.8-16 26.8-21.2 31-5.5 4.5-9.5 2.7-6.5-3.8s19.3-46.5 12.7-55c-6.5-8.3-37-4.3-48-3.2-10.8 1-13 2-14-.3-2.3-5.7 21.7-15.5 37.5-17.5 15.7-1.8 41-.8 46 5.7 3.7 5.1 0 27.1-6.5 43.1z"],"amazon-pay":[640,512,[],"f42c","M14 325.3c2.3-4.2 5.2-4.9 9.7-2.5 10.4 5.6 20.6 11.4 31.2 16.7a595.88 595.88 0 0 0 127.4 46.3 616.61 616.61 0 0 0 63.2 11.8 603.33 603.33 0 0 0 95 5.2c17.4-.4 34.8-1.8 52.1-3.8a603.66 603.66 0 0 0 163.3-42.8c2.9-1.2 5.9-2 9.1-1.2 6.7 1.8 9 9 4.1 13.9a70 70 0 0 1-9.6 7.4c-30.7 21.1-64.2 36.4-99.6 47.9a473.31 473.31 0 0 1-75.1 17.6 431 431 0 0 1-53.2 4.8 21.3 21.3 0 0 0-2.5.3H308a21.3 21.3 0 0 0-2.5-.3c-3.6-.2-7.2-.3-10.7-.4a426.3 426.3 0 0 1-50.4-5.3A448.4 448.4 0 0 1 164 420a443.33 443.33 0 0 1-145.6-87c-1.8-1.6-3-3.8-4.4-5.7zM172 65.1l-4.3.6a80.92 80.92 0 0 0-38 15.1c-2.4 1.7-4.6 3.5-7.1 5.4a4.29 4.29 0 0 1-.4-1.4c-.4-2.7-.8-5.5-1.3-8.2-.7-4.6-3-6.6-7.6-6.6h-11.5c-6.9 0-8.2 1.3-8.2 8.2v209.3c0 1 0 2 .1 3 .2 3 2 4.9 4.9 5 7 .1 14.1.1 21.1 0 2.9 0 4.7-2 5-5 .1-1 .1-2 .1-3v-72.4c1.1.9 1.7 1.4 2.2 1.9 17.9 14.9 38.5 19.8 61 15.4 20.4-4 34.6-16.5 43.8-34.9 7-13.9 9.9-28.7 10.3-44.1.5-17.1-1.2-33.9-8.1-49.8-8.5-19.6-22.6-32.5-43.9-36.9-3.2-.7-6.5-1-9.8-1.5-2.8-.1-5.5-.1-8.3-.1zM124.6 107a3.48 3.48 0 0 1 1.7-3.3c13.7-9.5 28.8-14.5 45.6-13.2 14.9 1.1 27.1 8.4 33.5 25.9 3.9 10.7 4.9 21.8 4.9 33 0 10.4-.8 20.6-4 30.6-6.8 21.3-22.4 29.4-42.6 28.5-14-.6-26.2-6-37.4-13.9a3.57 3.57 0 0 1-1.7-3.3c.1-14.1 0-28.1 0-42.2s.1-28 0-42.1zm205.7-41.9c-1 .1-2 .3-2.9.4a148 148 0 0 0-28.9 4.1c-6.1 1.6-12 3.8-17.9 5.8-3.6 1.2-5.4 3.8-5.3 7.7.1 3.3-.1 6.6 0 9.9.1 4.8 2.1 6.1 6.8 4.9 7.8-2 15.6-4.2 23.5-5.7 12.3-2.3 24.7-3.3 37.2-1.4 6.5 1 12.6 2.9 16.8 8.4 3.7 4.8 5.1 10.5 5.3 16.4.3 8.3.2 16.6.3 24.9a7.84 7.84 0 0 1-.2 1.4c-.5-.1-.9 0-1.3-.1a180.56 180.56 0 0 0-32-4.9c-11.3-.6-22.5.1-33.3 3.9-12.9 4.5-23.3 12.3-29.4 24.9-4.7 9.8-5.4 20.2-3.9 30.7 2 14 9 24.8 21.4 31.7 11.9 6.6 24.8 7.4 37.9 5.4 15.1-2.3 28.5-8.7 40.3-18.4a7.36 7.36 0 0 1 1.6-1.1c.6 3.8 1.1 7.4 1.8 11 .6 3.1 2.5 5.1 5.4 5.2 5.4.1 10.9.1 16.3 0a4.84 4.84 0 0 0 4.8-4.7 26.2 26.2 0 0 0 .1-2.8v-106a80 80 0 0 0-.9-12.9c-1.9-12.9-7.4-23.5-19-30.4-6.7-4-14.1-6-21.8-7.1-3.6-.5-7.2-.8-10.8-1.3-3.9.1-7.9.1-11.9.1zm35 127.7a3.33 3.33 0 0 1-1.5 3c-11.2 8.1-23.5 13.5-37.4 14.9-5.7.6-11.4.4-16.8-1.8a20.08 20.08 0 0 1-12.4-13.3 32.9 32.9 0 0 1-.1-19.4c2.5-8.3 8.4-13 16.4-15.6a61.33 61.33 0 0 1 24.8-2.2c8.4.7 16.6 2.3 25 3.4 1.6.2 2.1 1 2.1 2.6-.1 4.8 0 9.5 0 14.3s-.2 9.4-.1 14.1zm259.9 129.4c-1-5-4.8-6.9-9.1-8.3a88.42 88.42 0 0 0-21-3.9 147.32 147.32 0 0 0-39.2 1.9c-14.3 2.7-27.9 7.3-40 15.6a13.75 13.75 0 0 0-3.7 3.5 5.11 5.11 0 0 0-.5 4c.4 1.5 2.1 1.9 3.6 1.8a16.2 16.2 0 0 0 2.2-.1c7.8-.8 15.5-1.7 23.3-2.5 11.4-1.1 22.9-1.8 34.3-.9a71.64 71.64 0 0 1 14.4 2.7c5.1 1.4 7.4 5.2 7.6 10.4.4 8-1.4 15.7-3.5 23.3-4.1 15.4-10 30.3-15.8 45.1a17.6 17.6 0 0 0-1 3c-.5 2.9 1.2 4.8 4.1 4.1a10.56 10.56 0 0 0 4.8-2.5 145.91 145.91 0 0 0 12.7-13.4c12.8-16.4 20.3-35.3 24.7-55.6.8-3.6 1.4-7.3 2.1-10.9v-17.3zM493.1 199q-19.35-53.55-38.7-107.2c-2-5.7-4.2-11.3-6.3-16.9-1.1-2.9-3.2-4.8-6.4-4.8-7.6-.1-15.2-.2-22.9-.1-2.5 0-3.7 2-3.2 4.5a43.1 43.1 0 0 0 1.9 6.1q29.4 72.75 59.1 145.5c1.7 4.1 2.1 7.6.2 11.8-3.3 7.3-5.9 15-9.3 22.3-3 6.5-8 11.4-15.2 13.3a42.13 42.13 0 0 1-15.4 1.1c-2.5-.2-5-.8-7.5-1-3.4-.2-5.1 1.3-5.2 4.8q-.15 5 0 9.9c.1 5.5 2 8 7.4 8.9a108.18 108.18 0 0 0 16.9 2c17.1.4 30.7-6.5 39.5-21.4a131.63 131.63 0 0 0 9.2-18.4q35.55-89.7 70.6-179.6a26.62 26.62 0 0 0 1.6-5.5c.4-2.8-.9-4.4-3.7-4.4-6.6-.1-13.3 0-19.9 0a7.54 7.54 0 0 0-7.7 5.2c-.5 1.4-1.1 2.7-1.6 4.1l-34.8 100c-2.5 7.2-5.1 14.5-7.7 22.2-.4-1.1-.6-1.7-.9-2.4z"],amilia:[448,512,[],"f36d","M240.1 32c-61.9 0-131.5 16.9-184.2 55.4-5.1 3.1-9.1 9.2-7.2 19.4 1.1 5.1 5.1 27.4 10.2 39.6 4.1 10.2 14.2 10.2 20.3 6.1 32.5-22.3 96.5-47.7 152.3-47.7 57.9 0 58.9 28.4 58.9 73.1v38.5C203 227.7 78.2 251 46.7 264.2 11.2 280.5 16.3 357.7 16.3 376s15.2 104 124.9 104c47.8 0 113.7-20.7 153.3-42.1v25.4c0 3 2.1 8.2 6.1 9.1 3.1 1 50.7 2 59.9 2s62.5.3 66.5-.7c4.1-1 5.1-6.1 5.1-9.1V168c-.1-80.3-57.9-136-192-136zm50.2 348c-21.4 13.2-48.7 24.4-79.1 24.4-52.8 0-58.9-33.5-59-44.7 0-12.2-3-42.7 18.3-52.9 24.3-13.2 75.1-29.4 119.8-33.5z"],android:[576,512,[],"f17b","M420.55,301.93a24,24,0,1,1,24-24,24,24,0,0,1-24,24m-265.1,0a24,24,0,1,1,24-24,24,24,0,0,1-24,24m273.7-144.48,47.94-83a10,10,0,1,0-17.27-10h0l-48.54,84.07a301.25,301.25,0,0,0-246.56,0L116.18,64.45a10,10,0,1,0-17.27,10h0l47.94,83C64.53,202.22,8.24,285.55,0,384H576c-8.24-98.45-64.54-181.78-146.85-226.55"],angellist:[448,512,[],"f209","M347.1 215.4c11.7-32.6 45.4-126.9 45.4-157.1 0-26.6-15.7-48.9-43.7-48.9-44.6 0-84.6 131.7-97.1 163.1C242 144 196.6 0 156.6 0c-31.1 0-45.7 22.9-45.7 51.7 0 35.3 34.2 126.8 46.6 162-6.3-2.3-13.1-4.3-20-4.3-23.4 0-48.3 29.1-48.3 52.6 0 8.9 4.9 21.4 8 29.7-36.9 10-51.1 34.6-51.1 71.7C46 435.6 114.4 512 210.6 512c118 0 191.4-88.6 191.4-202.9 0-43.1-6.9-82-54.9-93.7zM311.7 108c4-12.3 21.1-64.3 37.1-64.3 8.6 0 10.9 8.9 10.9 16 0 19.1-38.6 124.6-47.1 148l-34-6 33.1-93.7zM142.3 48.3c0-11.9 14.5-45.7 46.3 47.1l34.6 100.3c-15.6-1.3-27.7-3-35.4 1.4-10.9-28.8-45.5-119.7-45.5-148.8zM140 244c29.3 0 67.1 94.6 67.1 107.4 0 5.1-4.9 11.4-10.6 11.4-20.9 0-76.9-76.9-76.9-97.7.1-7.7 12.7-21.1 20.4-21.1zm184.3 186.3c-29.1 32-66.3 48.6-109.7 48.6-59.4 0-106.3-32.6-128.9-88.3-17.1-43.4 3.8-68.3 20.6-68.3 11.4 0 54.3 60.3 54.3 73.1 0 4.9-7.7 8.3-11.7 8.3-16.1 0-22.4-15.5-51.1-51.4-29.7 29.7 20.5 86.9 58.3 86.9 26.1 0 43.1-24.2 38-42 3.7 0 8.3.3 11.7-.6 1.1 27.1 9.1 59.4 41.7 61.7 0-.9 2-7.1 2-7.4 0-17.4-10.6-32.6-10.6-50.3 0-28.3 21.7-55.7 43.7-71.7 8-6 17.7-9.7 27.1-13.1 9.7-3.7 20-8 27.4-15.4-1.1-11.2-5.7-21.1-16.9-21.1-27.7 0-120.6 4-120.6-39.7 0-6.7.1-13.1 17.4-13.1 32.3 0 114.3 8 138.3 29.1 18.1 16.1 24.3 113.2-31 174.7zm-98.6-126c9.7 3.1 19.7 4 29.7 6-7.4 5.4-14 12-20.3 19.1-2.8-8.5-6.2-16.8-9.4-25.1z"],angrycreative:[640,512,[],"f36e","M640 238.2l-3.2 28.2-34.5 2.3-2 18.1 34.5-2.3-3.2 28.2-34.4 2.2-2.3 20.1 34.4-2.2-3 26.1-64.7 4.1 12.7-113.2L527 365.2l-31.9 2-23.8-117.8 30.3-2 13.6 79.4 31.7-82.4 93.1-6.2zM426.8 371.5l28.3-1.8L468 249.6l-28.4 1.9-12.8 120zM162 388.1l-19.4-36-3.5 37.4-28.2 1.7 2.7-29.1c-11 18-32 34.3-56.9 35.8C23.9 399.9-3 377 .3 339.7c2.6-29.3 26.7-62.8 67.5-65.4 37.7-2.4 47.6 23.2 51.3 28.8l2.8-30.8 38.9-2.5c20.1-1.3 38.7 3.7 42.5 23.7l2.6-26.6 64.8-4.2-2.7 27.9-36.4 2.4-1.7 17.9 36.4-2.3-2.7 27.9-36.4 2.3-1.9 19.9 36.3-2.3-2.1 20.8 55-117.2 23.8-1.6L370.4 369l8.9-85.6-22.3 1.4 2.9-27.9 75-4.9-3 28-24.3 1.6-9.7 91.9-58 3.7-4.3-15.6-39.4 2.5-8 16.3-126.2 7.7zm-44.3-70.2l-26.4 1.7C84.6 307.2 76.9 303 65 303.8c-19 1.2-33.3 17.5-34.6 33.3-1.4 16 7.3 32.5 28.7 31.2 12.8-.8 21.3-8.6 28.9-18.9l27-1.7 2.7-29.8zm56.1-7.7c1.2-12.9-7.6-13.6-26.1-12.4l-2.7 28.5c14.2-.9 27.5-2.1 28.8-16.1zm21.1 70.8l5.8-60c-5 13.5-14.7 21.1-27.9 26.6l22.1 33.4zm135.4-45l-7.9-37.8-15.8 39.3 23.7-1.5zm-170.1-74.6l-4.3-17.5-39.6 2.6-8.1 18.2-31.9 2.1 57-121.9 23.9-1.6 30.7 102 9.9-104.7 27-1.8 37.8 63.6 6.5-66.6 28.5-1.9-4 41.2c7.4-13.5 22.9-44.7 63.6-47.5 40.5-2.8 52.4 29.3 53.4 30.3l3.3-32 39.3-2.7c12.7-.9 27.8.3 36.3 9.7l-4.4-11.9 32.2-2.2 12.9 43.2 23-45.7 31-2.2-43.6 78.4-4.8 44.3-28.4 1.9 4.8-44.3-15.8-43c1 22.3-9.2 40.1-32 49.6l25.2 38.8-36.4 2.4-19.2-36.8-4 38.3-28.4 1.9 3.3-31.5c-6.7 9.3-19.7 35.4-59.6 38-26.2 1.7-45.6-10.3-55.4-39.2l-4 40.3-25 1.6-37.6-63.3-6.3 66.2-56.8 3.7zm276.6-82.1c10.2-.7 17.5-2.1 21.6-4.3 4.5-2.4 7-6.4 7.6-12.1.6-5.3-.6-8.8-3.4-10.4-3.6-2.1-10.6-2.8-22.9-2l-2.9 28.8zM327.7 214c5.6 5.9 12.7 8.5 21.3 7.9 4.7-.3 9.1-1.8 13.3-4.1 5.5-3 10.6-8 15.1-14.3l-34.2 2.3 2.4-23.9 63.1-4.3 1.2-12-31.2 2.1c-4.1-3.7-7.8-6.6-11.1-8.1-4-1.7-8.1-2.8-12.2-2.5-8 .5-15.3 3.6-22 9.2-7.7 6.4-12 14.5-12.9 24.4-1.1 9.6 1.4 17.3 7.2 23.3zm-201.3 8.2l23.8-1.6-8.3-37.6-15.5 39.2z"],angular:[448,512,[],"f420","M185.7 268.1h76.2l-38.1-91.6-38.1 91.6zM223.8 32L16 106.4l31.8 275.7 176 97.9 176-97.9 31.8-275.7zM354 373.8h-48.6l-26.2-65.4H168.6l-26.2 65.4H93.7L223.8 81.5z"],"app-store":[512,512,[],"f36f","M255.9 120.9l9.1-15.7c5.6-9.8 18.1-13.1 27.9-7.5 9.8 5.6 13.1 18.1 7.5 27.9l-87.5 151.5h63.3c20.5 0 32 24.1 23.1 40.8H113.8c-11.3 0-20.4-9.1-20.4-20.4 0-11.3 9.1-20.4 20.4-20.4h52l66.6-115.4-20.8-36.1c-5.6-9.8-2.3-22.2 7.5-27.9 9.8-5.6 22.2-2.3 27.9 7.5l8.9 15.7zm-78.7 218l-19.6 34c-5.6 9.8-18.1 13.1-27.9 7.5-9.8-5.6-13.1-18.1-7.5-27.9l14.6-25.2c16.4-5.1 29.8-1.2 40.4 11.6zm168.9-61.7h53.1c11.3 0 20.4 9.1 20.4 20.4 0 11.3-9.1 20.4-20.4 20.4h-29.5l19.9 34.5c5.6 9.8 2.3 22.2-7.5 27.9-9.8 5.6-22.2 2.3-27.9-7.5-33.5-58.1-58.7-101.6-75.4-130.6-17.1-29.5-4.9-59.1 7.2-69.1 13.4 23 33.4 57.7 60.1 104zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm216 248c0 118.7-96.1 216-216 216-118.7 0-216-96.1-216-216 0-118.7 96.1-216 216-216 118.7 0 216 96.1 216 216z"],"app-store-ios":[448,512,[],"f370","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM127 384.5c-5.5 9.6-17.8 12.8-27.3 7.3-9.6-5.5-12.8-17.8-7.3-27.3l14.3-24.7c16.1-4.9 29.3-1.1 39.6 11.4L127 384.5zm138.9-53.9H84c-11 0-20-9-20-20s9-20 20-20h51l65.4-113.2-20.5-35.4c-5.5-9.6-2.2-21.8 7.3-27.3 9.6-5.5 21.8-2.2 27.3 7.3l8.9 15.4 8.9-15.4c5.5-9.6 17.8-12.8 27.3-7.3 9.6 5.5 12.8 17.8 7.3 27.3l-85.8 148.6h62.1c20.2 0 31.5 23.7 22.7 40zm98.1 0h-29l19.6 33.9c5.5 9.6 2.2 21.8-7.3 27.3-9.6 5.5-21.8 2.2-27.3-7.3-32.9-56.9-57.5-99.7-74-128.1-16.7-29-4.8-58 7.1-67.8 13.1 22.7 32.7 56.7 58.9 102h52c11 0 20 9 20 20 0 11.1-9 20-20 20z"],apper:[640,512,[],"f371","M42.1 239.1c22.2 0 29 2.8 33.5 14.6h.8v-22.9c0-11.3-4.8-15.4-17.9-15.4-11.3 0-14.4 2.5-15.1 12.8H4.8c.3-13.9 1.5-19.1 5.8-24.4C17.9 195 29.5 192 56.7 192c33 0 47.1 5 53.9 18.9 2 4.3 4 15.6 4 23.7v76.3H76.3l1.3-19.1h-1c-5.3 15.6-13.6 20.4-35.5 20.4-30.3 0-41.1-10.1-41.1-37.3 0-25.2 12.3-35.8 42.1-35.8zm17.1 48.1c13.1 0 16.9-3 16.9-13.4 0-9.1-4.3-11.6-19.6-11.6-13.1 0-17.9 3-17.9 12.1-.1 10.4 3.7 12.9 20.6 12.9zm77.8-94.9h38.3l-1.5 20.6h.8c9.1-17.1 15.9-20.9 37.5-20.9 14.4 0 24.7 3 31.5 9.1 9.8 8.6 12.8 20.4 12.8 48.1 0 30-3 43.1-12.1 52.9-6.8 7.3-16.4 10.1-33.2 10.1-20.4 0-29.2-5.5-33.8-21.2h-.8v70.3H137v-169zm80.9 60.7c0-27.5-3.3-32.5-20.7-32.5-16.9 0-20.7 5-20.7 28.7 0 28 3.5 33.5 21.2 33.5 16.4 0 20.2-5.6 20.2-29.7zm57.9-60.7h38.3l-1.5 20.6h.8c9.1-17.1 15.9-20.9 37.5-20.9 14.4 0 24.7 3 31.5 9.1 9.8 8.6 12.8 20.4 12.8 48.1 0 30-3 43.1-12.1 52.9-6.8 7.3-16.4 10.1-33.3 10.1-20.4 0-29.2-5.5-33.8-21.2h-.8v70.3h-39.5v-169zm80.9 60.7c0-27.5-3.3-32.5-20.7-32.5-16.9 0-20.7 5-20.7 28.7 0 28 3.5 33.5 21.2 33.5 16.4 0 20.2-5.6 20.2-29.7zm53.8-3.8c0-25.4 3.3-37.8 12.3-45.8 8.8-8.1 22.2-11.3 45.1-11.3 42.8 0 55.7 12.8 55.7 55.7v11.1h-75.3c-.3 2-.3 4-.3 4.8 0 16.9 4.5 21.9 20.1 21.9 13.9 0 17.9-3 17.9-13.9h37.5v2.3c0 9.8-2.5 18.9-6.8 24.7-7.3 9.8-19.6 13.6-44.3 13.6-27.5 0-41.6-3.3-50.6-12.3-8.5-8.5-11.3-21.3-11.3-50.8zm76.4-11.6c-.3-1.8-.3-3.3-.3-3.8 0-12.3-3.3-14.6-19.6-14.6-14.4 0-17.1 3-18.1 15.1l-.3 3.3h38.3zm55.6-45.3h38.3l-1.8 19.9h.7c6.8-14.9 14.4-20.2 29.7-20.2 10.8 0 19.1 3.3 23.4 9.3 5.3 7.3 6.8 14.4 6.8 34 0 1.5 0 5 .2 9.3h-35c.3-1.8.3-3.3.3-4 0-15.4-2-19.4-10.3-19.4-6.3 0-10.8 3.3-13.1 9.3-1 3-1 4.3-1 12.3v68h-38.3V192.3z"],apple:[384,512,[],"f179","M318.7 268.7c-.2-36.7 16.4-64.4 50-84.8-18.8-26.9-47.2-41.7-84.7-44.6-35.5-2.8-74.3 20.7-88.5 20.7-15 0-49.4-19.7-76.4-19.7C63.3 141.2 4 184.8 4 273.5q0 39.3 14.4 81.2c12.8 36.7 59 126.7 107.2 125.2 25.2-.6 43-17.9 75.8-17.9 31.8 0 48.3 17.9 76.4 17.9 48.6-.7 90.4-82.5 102.6-119.3-65.2-30.7-61.7-90-61.7-91.9zm-56.6-164.2c27.3-32.4 24.8-61.9 24-72.5-24.1 1.4-52 16.4-67.9 34.9-17.5 19.8-27.8 44.3-25.6 71.9 26.1 2 49.9-11.4 69.5-34.3z"],"apple-pay":[640,512,[],"f415","M116.9 158.5c-7.5 8.9-19.5 15.9-31.5 14.9-1.5-12 4.4-24.8 11.3-32.6 7.5-9.1 20.6-15.6 31.3-16.1 1.2 12.4-3.7 24.7-11.1 33.8m10.9 17.2c-17.4-1-32.3 9.9-40.5 9.9-8.4 0-21-9.4-34.8-9.1-17.9.3-34.5 10.4-43.6 26.5-18.8 32.3-4.9 80 13.3 106.3 8.9 13 19.5 27.3 33.5 26.8 13.3-.5 18.5-8.6 34.5-8.6 16.1 0 20.8 8.6 34.8 8.4 14.5-.3 23.6-13 32.5-26 10.1-14.8 14.3-29.1 14.5-29.9-.3-.3-28-10.9-28.3-42.9-.3-26.8 21.9-39.5 22.9-40.3-12.5-18.6-32-20.6-38.8-21.1m100.4-36.2v194.9h30.3v-66.6h41.9c38.3 0 65.1-26.3 65.1-64.3s-26.4-64-64.1-64h-73.2zm30.3 25.5h34.9c26.3 0 41.3 14 41.3 38.6s-15 38.8-41.4 38.8h-34.8V165zm162.2 170.9c19 0 36.6-9.6 44.6-24.9h.6v23.4h28v-97c0-28.1-22.5-46.3-57.1-46.3-32.1 0-55.9 18.4-56.8 43.6h27.3c2.3-12 13.4-19.9 28.6-19.9 18.5 0 28.9 8.6 28.9 24.5v10.8l-37.8 2.3c-35.1 2.1-54.1 16.5-54.1 41.5.1 25.2 19.7 42 47.8 42zm8.2-23.1c-16.1 0-26.4-7.8-26.4-19.6 0-12.3 9.9-19.4 28.8-20.5l33.6-2.1v11c0 18.2-15.5 31.2-36 31.2zm102.5 74.6c29.5 0 43.4-11.3 55.5-45.4L640 193h-30.8l-35.6 115.1h-.6L537.4 193h-31.6L557 334.9l-2.8 8.6c-4.6 14.6-12.1 20.3-25.5 20.3-2.4 0-7-.3-8.9-.5v23.4c1.8.4 9.3.7 11.6.7z"],artstation:[512,512,[],"f77a","M2 377.4l43 74.3A51.35 51.35 0 0 0 90.9 480h285.4l-59.2-102.6zM501.8 350L335.6 59.3A51.38 51.38 0 0 0 290.2 32h-88.4l257.3 447.6 40.7-70.5c1.9-3.2 21-29.7 2-59.1zM275 304.5l-115.5-200L44 304.5z"],asymmetrik:[576,512,[],"f372","M517.5 309.2c38.8-40 58.1-80 58.5-116.1.8-65.5-59.4-118.2-169.4-135C277.9 38.4 118.1 73.6 0 140.5 52 114 110.6 92.3 170.7 82.3c74.5-20.5 153-25.4 221.3-14.8C544.5 91.3 588.8 195 490.8 299.2c-10.2 10.8-22 21.1-35 30.6L304.9 103.4 114.7 388.9c-65.6-29.4-76.5-90.2-19.1-151.2 20.8-22.2 48.3-41.9 79.5-58.1 20-12.2 39.7-22.6 62-30.7-65.1 20.3-122.7 52.9-161.6 92.9-27.7 28.6-41.4 57.1-41.7 82.9-.5 35.1 23.4 65.1 68.4 83l-34.5 51.7h101.6l22-34.4c22.2 1 45.3 0 68.6-2.7l-22.8 37.1h135.5L340 406.3c18.6-5.3 36.9-11.5 54.5-18.7l45.9 71.8H542L468.6 349c18.5-12.1 35-25.5 48.9-39.8zm-187.6 80.5l-25-40.6-32.7 53.3c-23.4 3.5-46.7 5.1-69.2 4.4l101.9-159.3 78.7 123c-17.2 7.4-35.3 13.9-53.7 19.2z"],atlassian:[512,512,[],"f77b","M152.2 236.4c-7.7-8.2-19.7-7.7-24.8 2.8L1.6 490.2c-5 10 2.4 21.7 13.4 21.7h175c5.8.1 11-3.2 13.4-8.4 37.9-77.8 15.1-196.3-51.2-267.1zM244.4 8.1c-122.3 193.4-8.5 348.6 65 495.5 2.5 5.1 7.7 8.4 13.4 8.4H497c11.2 0 18.4-11.8 13.4-21.7 0 0-234.5-470.6-240.4-482.3-5.3-10.6-18.8-10.8-25.6.1z"],audible:[640,512,[],"f373","M640 199.9v54l-320 200L0 254v-54l320 200 320-200.1zm-194.5 72l47.1-29.4c-37.2-55.8-100.7-92.6-172.7-92.6-72 0-135.5 36.7-172.6 92.4h.3c2.5-2.3 5.1-4.5 7.7-6.7 89.7-74.4 219.4-58.1 290.2 36.3zm-220.1 18.8c16.9-11.9 36.5-18.7 57.4-18.7 34.4 0 65.2 18.4 86.4 47.6l45.4-28.4c-20.9-29.9-55.6-49.5-94.8-49.5-38.9 0-73.4 19.4-94.4 49zM103.6 161.1c131.8-104.3 318.2-76.4 417.5 62.1l.7 1 48.8-30.4C517.1 112.1 424.8 58.1 319.9 58.1c-103.5 0-196.6 53.5-250.5 135.6 9.9-10.5 22.7-23.5 34.2-32.6zm467 32.7z"],autoprefixer:[640,512,[],"f41c","M318.4 16l-161 480h77.5l25.4-81.4h119.5L405 496h77.5L318.4 16zm-40.3 341.9l41.2-130.4h1.5l40.9 130.4h-83.6zM640 405l-10-31.4L462.1 358l19.4 56.5L640 405zm-462.1-47L10 373.7 0 405l158.5 9.4 19.4-56.4z"],avianex:[512,512,[],"f374","M453.1 32h-312c-38.9 0-76.2 31.2-83.3 69.7L1.2 410.3C-5.9 448.8 19.9 480 58.9 480h312c38.9 0 76.2-31.2 83.3-69.7l56.7-308.5c7-38.6-18.8-69.8-57.8-69.8zm-58.2 347.3l-32 13.5-115.4-110c-14.7 10-29.2 19.5-41.7 27.1l22.1 64.2-17.9 12.7-40.6-61-52.4-48.1 15.7-15.4 58 31.1c9.3-10.5 20.8-22.6 32.8-34.9L203 228.9l-68.8-99.8 18.8-28.9 8.9-4.8L265 207.8l4.9 4.5c19.4-18.8 33.8-32.4 33.8-32.4 7.7-6.5 21.5-2.9 30.7 7.9 9 10.5 10.6 24.7 2.7 31.3-1.8 1.3-15.5 11.4-35.3 25.6l4.5 7.3 94.9 119.4-6.3 7.9z"],aviato:[640,512,[],"f421","M107.2 283.5l-19-41.8H36.1l-19 41.8H0l62.2-131.4 62.2 131.4h-17.2zm-45-98.1l-19.6 42.5h39.2l-19.6-42.5zm112.7 102.4l-62.2-131.4h17.1l45.1 96 45.1-96h17l-62.1 131.4zm80.6-4.3V156.4H271v127.1h-15.5zm209.1-115.6v115.6h-17.3V167.9h-41.2v-11.5h99.6v11.5h-41.1zM640 218.8c0 9.2-1.7 17.8-5.1 25.8-3.4 8-8.2 15.1-14.2 21.1-6 6-13.1 10.8-21.1 14.2-8 3.4-16.6 5.1-25.8 5.1s-17.8-1.7-25.8-5.1c-8-3.4-15.1-8.2-21.1-14.2-6-6-10.8-13-14.2-21.1-3.4-8-5.1-16.6-5.1-25.8s1.7-17.8 5.1-25.8c3.4-8 8.2-15.1 14.2-21.1 6-6 13-8.4 21.1-11.9 8-3.4 16.6-5.1 25.8-5.1s17.8 1.7 25.8 5.1c8 3.4 15.1 5.8 21.1 11.9 6 6 10.7 13.1 14.2 21.1 3.4 8 5.1 16.6 5.1 25.8zm-15.5 0c0-7.3-1.3-14-3.9-20.3-2.6-6.3-6.2-11.7-10.8-16.3-4.6-4.6-10-8.2-16.2-10.9-6.2-2.7-12.8-4-19.8-4s-13.6 1.3-19.8 4c-6.2 2.7-11.6 6.3-16.2 10.9-4.6 4.6-8.2 10-10.8 16.3-2.6 6.3-3.9 13.1-3.9 20.3 0 7.3 1.3 14 3.9 20.3 2.6 6.3 6.2 11.7 10.8 16.3 4.6 4.6 10 8.2 16.2 10.9 6.2 2.7 12.8 4 19.8 4s13.6-1.3 19.8-4c6.2-2.7 11.6-6.3 16.2-10.9 4.6-4.6 8.2-10 10.8-16.3 2.6-6.3 3.9-13.1 3.9-20.3zm-94.8 96.7v-6.3l88.9-10-242.9 13.4c.6-2.2 1.1-4.6 1.4-7.2.3-2 .5-4.2.6-6.5l64.8-8.1-64.9 1.9c0-.4-.1-.7-.1-1.1-2.8-17.2-25.5-23.7-25.5-23.7l-1.1-26.3h23.8l19 41.8h17.1L348.6 152l-62.2 131.4h17.1l19-41.8h23.6L345 268s-22.7 6.5-25.5 23.7c-.1.3-.1.7-.1 1.1l-64.9-1.9 64.8 8.1c.1 2.3.3 4.4.6 6.5.3 2.6.8 5 1.4 7.2L78.4 299.2l88.9 10v6.3c-5.9.9-10.5 6-10.5 12.2 0 6.8 5.6 12.4 12.4 12.4 6.8 0 12.4-5.6 12.4-12.4 0-6.2-4.6-11.3-10.5-12.2v-5.8l80.3 9v5.4c-5.7 1.1-9.9 6.2-9.9 12.1 0 6.8 5.6 10.2 12.4 10.2 6.8 0 12.4-3.4 12.4-10.2 0-6-4.3-11-9.9-12.1v-4.9l28.4 3.2v23.7h-5.9V360h5.9v-6.6h5v6.6h5.9v-13.8h-5.9V323l38.3 4.3c8.1 11.4 19 13.6 19 13.6l-.1 6.7-5.1.2-.1 12.1h4.1l.1-5h5.2l.1 5h4.1l-.1-12.1-5.1-.2-.1-6.7s10.9-2.1 19-13.6l38.3-4.3v23.2h-5.9V360h5.9v-6.6h5v6.6h5.9v-13.8h-5.9v-23.7l28.4-3.2v4.9c-5.7 1.1-9.9 6.2-9.9 12.1 0 6.8 5.6 10.2 12.4 10.2 6.8 0 12.4-3.4 12.4-10.2 0-6-4.3-11-9.9-12.1v-5.4l80.3-9v5.8c-5.9.9-10.5 6-10.5 12.2 0 6.8 5.6 12.4 12.4 12.4 6.8 0 12.4-5.6 12.4-12.4-.2-6.3-4.7-11.4-10.7-12.3zm-200.8-87.6l19.6-42.5 19.6 42.5h-17.9l-1.7-40.3-1.7 40.3h-17.9z"],aws:[640,512,[],"f375","M180.41 203.01c-.72 22.65 10.6 32.68 10.88 39.05a8.164 8.164 0 0 1-4.1 6.27l-12.8 8.96a10.66 10.66 0 0 1-5.63 1.92c-.43-.02-8.19 1.83-20.48-25.61a78.608 78.608 0 0 1-62.61 29.45c-16.28.89-60.4-9.24-58.13-56.21-1.59-38.28 34.06-62.06 70.93-60.05 7.1.02 21.6.37 46.99 6.27v-15.62c2.69-26.46-14.7-46.99-44.81-43.91-2.4.01-19.4-.5-45.84 10.11-7.36 3.38-8.3 2.82-10.75 2.82-7.41 0-4.36-21.48-2.94-24.2 5.21-6.4 35.86-18.35 65.94-18.18a76.857 76.857 0 0 1 55.69 17.28 70.285 70.285 0 0 1 17.67 52.36l-.01 69.29zM93.99 235.4c32.43-.47 46.16-19.97 49.29-30.47 2.46-10.05 2.05-16.41 2.05-27.4-9.67-2.32-23.59-4.85-39.56-4.87-15.15-1.14-42.82 5.63-41.74 32.26-1.24 16.79 11.12 31.4 29.96 30.48zm170.92 23.05c-7.86.72-11.52-4.86-12.68-10.37l-49.8-164.65c-.97-2.78-1.61-5.65-1.92-8.58a4.61 4.61 0 0 1 3.86-5.25c.24-.04-2.13 0 22.25 0 8.78-.88 11.64 6.03 12.55 10.37l35.72 140.83 33.16-140.83c.53-3.22 2.94-11.07 12.8-10.24h17.16c2.17-.18 11.11-.5 12.68 10.37l33.42 142.63L420.98 80.1c.48-2.18 2.72-11.37 12.68-10.37h19.72c.85-.13 6.15-.81 5.25 8.58-.43 1.85 3.41-10.66-52.75 169.9-1.15 5.51-4.82 11.09-12.68 10.37h-18.69c-10.94 1.15-12.51-9.66-12.68-10.75L328.67 110.7l-32.78 136.99c-.16 1.09-1.73 11.9-12.68 10.75h-18.3zm273.48 5.63c-5.88.01-33.92-.3-57.36-12.29a12.802 12.802 0 0 1-7.81-11.91v-10.75c0-8.45 6.2-6.9 8.83-5.89 10.04 4.06 16.48 7.14 28.81 9.6 36.65 7.53 52.77-2.3 56.72-4.48 13.15-7.81 14.19-25.68 5.25-34.95-10.48-8.79-15.48-9.12-53.13-21-4.64-1.29-43.7-13.61-43.79-52.36-.61-28.24 25.05-56.18 69.52-55.95 12.67-.01 46.43 4.13 55.57 15.62 1.35 2.09 2.02 4.55 1.92 7.04v10.11c0 4.44-1.62 6.66-4.87 6.66-7.71-.86-21.39-11.17-49.16-10.75-6.89-.36-39.89.91-38.41 24.97-.43 18.96 26.61 26.07 29.7 26.89 36.46 10.97 48.65 12.79 63.12 29.58 17.14 22.25 7.9 48.3 4.35 55.44-19.08 37.49-68.42 34.44-69.26 34.42zm40.2 104.86c-70.03 51.72-171.69 79.25-258.49 79.25A469.127 469.127 0 0 1 2.83 327.46c-6.53-5.89-.77-13.96 7.17-9.47a637.37 637.37 0 0 0 316.88 84.12 630.22 630.22 0 0 0 241.59-49.55c11.78-5 21.77 7.8 10.12 16.38zm29.19-33.29c-8.96-11.52-59.28-5.38-81.81-2.69-6.79.77-7.94-5.12-1.79-9.47 40.07-28.17 105.88-20.1 113.44-10.63 7.55 9.47-2.05 75.41-39.56 106.91-5.76 4.87-11.27 2.3-8.71-4.1 8.44-21.25 27.39-68.49 18.43-80.02z"],bandcamp:[496,512,[],"f2d5","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm48.2 326.1h-181L199.9 178h181l-84.7 156.1z"],"battle-net":[512,512,[],"f835","M448.61 225.62c26.87.18 35.57-7.43 38.92-12.37 12.47-16.32-7.06-47.6-52.85-71.33 17.76-33.58 30.11-63.68 36.34-85.3 3.38-11.83 1.09-19 .45-20.25-1.72 10.52-15.85 48.46-48.2 100.05-25-11.22-56.52-20.1-93.77-23.8-8.94-16.94-34.88-63.86-60.48-88.93C252.18 7.14 238.7 1.07 228.18.22h-.05c-13.83-1.55-22.67 5.85-27.4 11-17.2 18.53-24.33 48.87-25 84.07-7.24-12.35-17.17-24.63-28.5-25.93h-.18c-20.66-3.48-38.39 29.22-36 81.29-38.36 1.38-71 5.75-93 11.23-9.9 2.45-16.22 7.27-17.76 9.72 1-.38 22.4-9.22 111.56-9.22 5.22 53 29.75 101.82 26 93.19-9.73 15.4-38.24 62.36-47.31 97.7-5.87 22.88-4.37 37.61.15 47.14 5.57 12.75 16.41 16.72 23.2 18.26 25 5.71 55.38-3.63 86.7-21.14-7.53 12.84-13.9 28.51-9.06 39.34 7.31 19.65 44.49 18.66 88.44-9.45 20.18 32.18 40.07 57.94 55.7 74.12a39.79 39.79 0 0 0 8.75 7.09c5.14 3.21 8.58 3.37 8.58 3.37-8.24-6.75-34-38-62.54-91.78 22.22-16 45.65-38.87 67.47-69.27 122.82 4.6 143.29-24.76 148-31.64 14.67-19.88 3.43-57.44-57.32-93.69zm-77.85 106.22c23.81-37.71 30.34-67.77 29.45-92.33 27.86 17.57 47.18 37.58 49.06 58.83 1.14 12.93-8.1 29.12-78.51 33.5zM216.9 387.69c9.76-6.23 19.53-13.12 29.2-20.49 6.68 13.33 13.6 26.1 20.6 38.19-40.6 21.86-68.84 12.76-49.8-17.7zm215-171.35c-10.29-5.34-21.16-10.34-32.38-15.05a722.459 722.459 0 0 0 22.74-36.9c39.06 24.1 45.9 53.18 9.64 51.95zM279.18 398c-5.51-11.35-11-23.5-16.5-36.44 43.25 1.27 62.42-18.73 63.28-20.41 0 .07-25 15.64-62.53 12.25a718.78 718.78 0 0 0 85.06-84q13.06-15.31 24.93-31.11c-.36-.29-1.54-3-16.51-12-51.7 60.27-102.34 98-132.75 115.92-20.59-11.18-40.84-31.78-55.71-61.49-20-39.92-30-82.39-31.57-116.07 12.3.91 25.27 2.17 38.85 3.88-22.29 36.8-14.39 63-13.47 64.23 0-.07-.95-29.17 20.14-59.57a695.23 695.23 0 0 0 44.67 152.84c.93-.38 1.84.88 18.67-8.25-26.33-74.47-33.76-138.17-34-173.43 20-12.42 48.18-19.8 81.63-17.81 44.57 2.67 86.36 15.25 116.32 30.71q-10.69 15.66-23.33 32.47C365.63 152 339.1 145.84 337.5 146c.11 0 25.9 14.07 41.52 47.22a717.63 717.63 0 0 0-115.34-31.71 646.608 646.608 0 0 0-39.39-6.05c-.07.45-1.81 1.85-2.16 20.33C300 190.28 358.78 215.68 389.36 233c.74 23.55-6.95 51.61-25.41 79.57-24.6 37.31-56.39 67.23-84.77 85.43zm27.4-287c-44.56-1.66-73.58 7.43-94.69 20.67 2-52.3 21.31-76.38 38.21-75.28C267 52.15 305 108.55 306.58 111zm-130.65 3.1c.48 12.11 1.59 24.62 3.21 37.28-14.55-.85-28.74-1.25-42.4-1.26-.08 3.24-.12-51 24.67-49.59h.09c5.76 1.09 10.63 6.88 14.43 13.57zm-28.06 162c20.76 39.7 43.3 60.57 65.25 72.31-46.79 24.76-77.53 20-84.92 4.51-.2-.21-11.13-15.3 19.67-76.81zm210.06 74.8"],behance:[576,512,[],"f1b4","M232 237.2c31.8-15.2 48.4-38.2 48.4-74 0-70.6-52.6-87.8-113.3-87.8H0v354.4h171.8c64.4 0 124.9-30.9 124.9-102.9 0-44.5-21.1-77.4-64.7-89.7zM77.9 135.9H151c28.1 0 53.4 7.9 53.4 40.5 0 30.1-19.7 42.2-47.5 42.2h-79v-82.7zm83.3 233.7H77.9V272h84.9c34.3 0 56 14.3 56 50.6 0 35.8-25.9 47-57.6 47zm358.5-240.7H376V94h143.7v34.9zM576 305.2c0-75.9-44.4-139.2-124.9-139.2-78.2 0-131.3 58.8-131.3 135.8 0 79.9 50.3 134.7 131.3 134.7 61.3 0 101-27.6 120.1-86.3H509c-6.7 21.9-34.3 33.5-55.7 33.5-41.3 0-63-24.2-63-65.3h185.1c.3-4.2.6-8.7.6-13.2zM390.4 274c2.3-33.7 24.7-54.8 58.5-54.8 35.4 0 53.2 20.8 56.2 54.8H390.4z"],"behance-square":[448,512,[],"f1b5","M186.5 293c0 19.3-14 25.4-31.2 25.4h-45.1v-52.9h46c18.6.1 30.3 7.8 30.3 27.5zm-7.7-82.3c0-17.7-13.7-21.9-28.9-21.9h-39.6v44.8H153c15.1 0 25.8-6.6 25.8-22.9zm132.3 23.2c-18.3 0-30.5 11.4-31.7 29.7h62.2c-1.7-18.5-11.3-29.7-30.5-29.7zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM271.7 185h77.8v-18.9h-77.8V185zm-43 110.3c0-24.1-11.4-44.9-35-51.6 17.2-8.2 26.2-17.7 26.2-37 0-38.2-28.5-47.5-61.4-47.5H68v192h93.1c34.9-.2 67.6-16.9 67.6-55.9zM380 280.5c0-41.1-24.1-75.4-67.6-75.4-42.4 0-71.1 31.8-71.1 73.6 0 43.3 27.3 73 71.1 73 33.2 0 54.7-14.9 65.1-46.8h-33.7c-3.7 11.9-18.6 18.1-30.2 18.1-22.4 0-34.1-13.1-34.1-35.3h100.2c.1-2.3.3-4.8.3-7.2z"],bimobject:[448,512,[],"f378","M416 32H32C14.4 32 0 46.4 0 64v384c0 17.6 14.4 32 32 32h384c17.6 0 32-14.4 32-32V64c0-17.6-14.4-32-32-32zm-64 257.4c0 49.4-11.4 82.6-103.8 82.6h-16.9c-44.1 0-62.4-14.9-70.4-38.8h-.9V368H96V136h64v74.7h1.1c4.6-30.5 39.7-38.8 69.7-38.8h17.3c92.4 0 103.8 33.1 103.8 82.5v35zm-64-28.9v22.9c0 21.7-3.4 33.8-38.4 33.8h-45.3c-28.9 0-44.1-6.5-44.1-35.7v-19c0-29.3 15.2-35.7 44.1-35.7h45.3c35-.2 38.4 12 38.4 33.7z"],bitbucket:[512,512,[],"f171","M22.2 32A16 16 0 0 0 6 47.8a26.35 26.35 0 0 0 .2 2.8l67.9 412.1a21.77 21.77 0 0 0 21.3 18.2h325.7a16 16 0 0 0 16-13.4L505 50.7a16 16 0 0 0-13.2-18.3 24.58 24.58 0 0 0-2.8-.2L22.2 32zm285.9 297.8h-104l-28.1-147h157.3l-25.2 147z"],bitcoin:[512,512,[],"f379","M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zm-141.651-35.33c4.937-32.999-20.191-50.739-54.55-62.573l11.146-44.702-27.213-6.781-10.851 43.524c-7.154-1.783-14.502-3.464-21.803-5.13l10.929-43.81-27.198-6.781-11.153 44.686c-5.922-1.349-11.735-2.682-17.377-4.084l.031-.14-37.53-9.37-7.239 29.062s20.191 4.627 19.765 4.913c11.022 2.751 13.014 10.044 12.68 15.825l-12.696 50.925c.76.194 1.744.473 2.829.907-.907-.225-1.876-.473-2.876-.713l-17.796 71.338c-1.349 3.348-4.767 8.37-12.471 6.464.271.395-19.78-4.937-19.78-4.937l-13.51 31.147 35.414 8.827c6.588 1.651 13.045 3.379 19.4 5.006l-11.262 45.213 27.182 6.781 11.153-44.733a1038.209 1038.209 0 0 0 21.687 5.627l-11.115 44.523 27.213 6.781 11.262-45.128c46.404 8.781 81.299 5.239 95.986-36.727 11.836-33.79-.589-53.281-25.004-65.991 17.78-4.098 31.174-15.792 34.747-39.949zm-62.177 87.179c-8.41 33.79-65.308 15.523-83.755 10.943l14.944-59.899c18.446 4.603 77.6 13.717 68.811 48.956zm8.417-87.667c-7.673 30.736-55.031 15.12-70.393 11.292l13.548-54.327c15.363 3.828 64.836 10.973 56.845 43.035z"],bity:[496,512,[],"f37a","M78.4 67.2C173.8-22 324.5-24 421.5 71c14.3 14.1-6.4 37.1-22.4 21.5-84.8-82.4-215.8-80.3-298.9-3.2-16.3 15.1-36.5-8.3-21.8-22.1zm98.9 418.6c19.3 5.7 29.3-23.6 7.9-30C73 421.9 9.4 306.1 37.7 194.8c5-19.6-24.9-28.1-30.2-7.1-32.1 127.4 41.1 259.8 169.8 298.1zm148.1-2c121.9-40.2 192.9-166.9 164.4-291-4.5-19.7-34.9-13.8-30 7.9 24.2 107.7-37.1 217.9-143.2 253.4-21.2 7-10.4 36 8.8 29.7zm-62.9-79l.2-71.8c0-8.2-6.6-14.8-14.8-14.8-8.2 0-14.8 6.7-14.8 14.8l-.2 71.8c0 8.2 6.6 14.8 14.8 14.8s14.8-6.6 14.8-14.8zm71-269c2.1 90.9 4.7 131.9-85.5 132.5-92.5-.7-86.9-44.3-85.5-132.5 0-21.8-32.5-19.6-32.5 0v71.6c0 69.3 60.7 90.9 118 90.1 57.3.8 118-20.8 118-90.1v-71.6c0-19.6-32.5-21.8-32.5 0z"],"black-tie":[448,512,[],"f27e","M0 32v448h448V32H0zm316.5 325.2L224 445.9l-92.5-88.7 64.5-184-64.5-86.6h184.9L252 173.2l64.5 184z"],blackberry:[512,512,[],"f37b","M166 116.9c0 23.4-16.4 49.1-72.5 49.1H23.4l21-88.8h67.8c42.1 0 53.8 23.3 53.8 39.7zm126.2-39.7h-67.8L205.7 166h70.1c53.8 0 70.1-25.7 70.1-49.1.1-16.4-11.6-39.7-53.7-39.7zM88.8 208.1H21L0 296.9h70.1c56.1 0 72.5-23.4 72.5-49.1 0-16.3-11.7-39.7-53.8-39.7zm180.1 0h-67.8l-18.7 88.8h70.1c53.8 0 70.1-23.4 70.1-49.1 0-16.3-11.7-39.7-53.7-39.7zm189.3-53.8h-67.8l-18.7 88.8h70.1c53.8 0 70.1-23.4 70.1-49.1.1-16.3-11.6-39.7-53.7-39.7zm-28 137.9h-67.8L343.7 381h70.1c56.1 0 70.1-23.4 70.1-49.1 0-16.3-11.6-39.7-53.7-39.7zM240.8 346H173l-18.7 88.8h70.1c56.1 0 70.1-25.7 70.1-49.1.1-16.3-11.6-39.7-53.7-39.7z"],blogger:[448,512,[],"f37c","M162.4 196c4.8-4.9 6.2-5.1 36.4-5.1 27.2 0 28.1.1 32.1 2.1 5.8 2.9 8.3 7 8.3 13.6 0 5.9-2.4 10-7.6 13.4-2.8 1.8-4.5 1.9-31.1 2.1-16.4.1-29.5-.2-31.5-.8-10.3-2.9-14.1-17.7-6.6-25.3zm61.4 94.5c-53.9 0-55.8.2-60.2 4.1-3.5 3.1-5.7 9.4-5.1 13.9.7 4.7 4.8 10.1 9.2 12 2.2 1 14.1 1.7 56.3 1.2l47.9-.6 9.2-1.5c9-5.1 10.5-17.4 3.1-24.4-5.3-4.7-5-4.7-60.4-4.7zm223.4 130.1c-3.5 28.4-23 50.4-51.1 57.5-7.2 1.8-9.7 1.9-172.9 1.8-157.8 0-165.9-.1-172-1.8-8.4-2.2-15.6-5.5-22.3-10-5.6-3.8-13.9-11.8-17-16.4-3.8-5.6-8.2-15.3-10-22C.1 423 0 420.3 0 256.3 0 93.2 0 89.7 1.8 82.6 8.1 57.9 27.7 39 53 33.4c7.3-1.6 332.1-1.9 340-.3 21.2 4.3 37.9 17.1 47.6 36.4 7.7 15.3 7-1.5 7.3 180.6.2 115.8 0 164.5-.7 170.5zm-85.4-185.2c-1.1-5-4.2-9.6-7.7-11.5-1.1-.6-8-1.3-15.5-1.7-12.4-.6-13.8-.8-17.8-3.1-6.2-3.6-7.9-7.6-8-18.3 0-20.4-8.5-39.4-25.3-56.5-12-12.2-25.3-20.5-40.6-25.1-3.6-1.1-11.8-1.5-39.2-1.8-42.9-.5-52.5.4-67.1 6.2-27 10.7-46.3 33.4-53.4 62.4-1.3 5.4-1.6 14.2-1.9 64.3-.4 62.8 0 72.1 4 84.5 9.7 30.7 37.1 53.4 64.6 58.4 9.2 1.7 122.2 2.1 133.7.5 20.1-2.7 35.9-10.8 50.7-25.9 10.7-10.9 17.4-22.8 21.8-38.5 3.2-10.9 2.9-88.4 1.7-93.9z"],"blogger-b":[448,512,[],"f37d","M446.6 222.7c-1.8-8-6.8-15.4-12.5-18.5-1.8-1-13-2.2-25-2.7-20.1-.9-22.3-1.3-28.7-5-10.1-5.9-12.8-12.3-12.9-29.5-.1-33-13.8-63.7-40.9-91.3-19.3-19.7-40.9-33-65.5-40.5-5.9-1.8-19.1-2.4-63.3-2.9-69.4-.8-84.8.6-108.4 10C45.9 59.5 14.7 96.1 3.3 142.9 1.2 151.7.7 165.8.2 246.8c-.6 101.5.1 116.4 6.4 136.5 15.6 49.6 59.9 86.3 104.4 94.3 14.8 2.7 197.3 3.3 216 .8 32.5-4.4 58-17.5 81.9-41.9 17.3-17.7 28.1-36.8 35.2-62.1 4.9-17.6 4.5-142.8 2.5-151.7zm-322.1-63.6c7.8-7.9 10-8.2 58.8-8.2 43.9 0 45.4.1 51.8 3.4 9.3 4.7 13.4 11.3 13.4 21.9 0 9.5-3.8 16.2-12.3 21.6-4.6 2.9-7.3 3.1-50.3 3.3-26.5.2-47.7-.4-50.8-1.2-16.6-4.7-22.8-28.5-10.6-40.8zm191.8 199.8l-14.9 2.4-77.5.9c-68.1.8-87.3-.4-90.9-2-7.1-3.1-13.8-11.7-14.9-19.4-1.1-7.3 2.6-17.3 8.2-22.4 7.1-6.4 10.2-6.6 97.3-6.7 89.6-.1 89.1-.1 97.6 7.8 12.1 11.3 9.5 31.2-4.9 39.4z"],bluetooth:[448,512,[],"f293","M292.6 171.1L249.7 214l-.3-86 43.2 43.1m-43.2 219.8l43.1-43.1-42.9-42.9-.2 86zM416 259.4C416 465 344.1 512 230.9 512S32 465 32 259.4 115.4 0 228.6 0 416 53.9 416 259.4zm-158.5 0l79.4-88.6L211.8 36.5v176.9L138 139.6l-27 26.9 92.7 93-92.7 93 26.9 26.9 73.8-73.8 2.3 170 127.4-127.5-83.9-88.7z"],"bluetooth-b":[320,512,[],"f294","M196.48 260.023l92.626-103.333L143.125 0v206.33l-86.111-86.111-31.406 31.405 108.061 108.399L25.608 368.422l31.406 31.405 86.111-86.111L145.84 512l148.552-148.644-97.912-103.333zm40.86-102.996l-49.977 49.978-.338-100.295 50.315 50.317zM187.363 313.04l49.977 49.978-50.315 50.316.338-100.294z"],bootstrap:[448,512,[],"f836","M292.3 311.93c0 42.41-39.72 41.43-43.92 41.43h-80.89v-81.69h80.89c42.56 0 43.92 31.9 43.92 40.26zm-50.15-73.13c.67 0 38.44 1 38.44-36.31 0-15.52-3.51-35.87-38.44-35.87h-74.66v72.18h74.66zM448 106.67v298.66A74.89 74.89 0 0 1 373.33 480H74.67A74.89 74.89 0 0 1 0 405.33V106.67A74.89 74.89 0 0 1 74.67 32h298.66A74.89 74.89 0 0 1 448 106.67zM338.05 317.86c0-21.57-6.65-58.29-49.05-67.35v-.73c22.91-9.78 37.34-28.25 37.34-55.64 0-7 2-64.78-77.6-64.78h-127v261.33c128.23 0 139.87 1.68 163.6-5.71 14.21-4.42 52.71-17.98 52.71-67.12z"],btc:[384,512,[],"f15a","M310.204 242.638c27.73-14.18 45.377-39.39 41.28-81.3-5.358-57.351-52.458-76.573-114.85-81.929V0h-48.528v77.203c-12.605 0-25.525.315-38.444.63V0h-48.528v79.409c-17.842.539-38.622.276-97.37 0v51.678c38.314-.678 58.417-3.14 63.023 21.427v217.429c-2.925 19.492-18.524 16.685-53.255 16.071L3.765 443.68c88.481 0 97.37.315 97.37.315V512h48.528v-67.06c13.234.315 26.154.315 38.444.315V512h48.528v-68.005c81.299-4.412 135.647-24.894 142.895-101.467 5.671-61.446-23.32-88.862-69.326-99.89zM150.608 134.553c27.415 0 113.126-8.507 113.126 48.528 0 54.515-85.71 48.212-113.126 48.212v-96.74zm0 251.776V279.821c32.772 0 133.127-9.138 133.127 53.255-.001 60.186-100.355 53.253-133.127 53.253z"],buffer:[448,512,[],"f837","M427.84 380.67l-196.5 97.82a18.6 18.6 0 0 1-14.67 0L20.16 380.67c-4-2-4-5.28 0-7.29L67.22 350a18.65 18.65 0 0 1 14.69 0l134.76 67a18.51 18.51 0 0 0 14.67 0l134.76-67a18.62 18.62 0 0 1 14.68 0l47.06 23.43c4.05 1.96 4.05 5.24 0 7.24zm0-136.53l-47.06-23.43a18.62 18.62 0 0 0-14.68 0l-134.76 67.08a18.68 18.68 0 0 1-14.67 0L81.91 220.71a18.65 18.65 0 0 0-14.69 0l-47.06 23.43c-4 2-4 5.29 0 7.31l196.51 97.8a18.6 18.6 0 0 0 14.67 0l196.5-97.8c4.05-2.02 4.05-5.3 0-7.31zM20.16 130.42l196.5 90.29a20.08 20.08 0 0 0 14.67 0l196.51-90.29c4-1.86 4-4.89 0-6.74L231.33 33.4a19.88 19.88 0 0 0-14.67 0l-196.5 90.28c-4.05 1.85-4.05 4.88 0 6.74z"],buromobelexperte:[448,512,[],"f37f","M0 32v128h128V32H0zm120 120H8V40h112v112zm40-120v128h128V32H160zm120 120H168V40h112v112zm40-120v128h128V32H320zm120 120H328V40h112v112zM0 192v128h128V192H0zm120 120H8V200h112v112zm40-120v128h128V192H160zm120 120H168V200h112v112zm40-120v128h128V192H320zm120 120H328V200h112v112zM0 352v128h128V352H0zm120 120H8V360h112v112zm40-120v128h128V352H160zm120 120H168V360h112v112zm40-120v128h128V352H320z"],"buy-n-large":[576,512,[],"f8a6","M288 32C133.27 32 7.79 132.32 7.79 256S133.27 480 288 480s280.21-100.32 280.21-224S442.73 32 288 32zm-85.39 357.19L64.1 390.55l77.25-290.74h133.44c63.15 0 84.93 28.65 78 72.84a60.24 60.24 0 0 1-1.5 6.85 77.39 77.39 0 0 0-17.21-1.93c-42.35 0-76.69 33.88-76.69 75.65 0 37.14 27.14 68 62.93 74.45-18.24 37.16-56.16 60.92-117.71 61.52zM358 207.11h32l-22.16 90.31h-35.41l-11.19-35.63-7.83 35.63h-37.83l26.63-90.31h31.34l15 36.75zm145.86 182.08H306.79L322.63 328a78.8 78.8 0 0 0 11.47.83c42.34 0 76.69-33.87 76.69-75.65 0-32.65-21-60.46-50.38-71.06l21.33-82.35h92.5l-53.05 205.36h103.87zM211.7 269.39H187l-13.8 56.47h24.7c16.14 0 32.11-3.18 37.94-26.65 5.56-22.31-7.99-29.82-24.14-29.82zM233 170h-21.34L200 217.71h21.37c18 0 35.38-14.64 39.21-30.14C265.23 168.71 251.07 170 233 170z"],buysellads:[448,512,[],"f20d","M224 150.7l42.9 160.7h-85.8L224 150.7zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-65.3 325.3l-94.5-298.7H159.8L65.3 405.3H156l111.7-91.6 24.2 91.6h90.8z"],"canadian-maple-leaf":[512,512,[],"f785","M383.8 351.7c2.5-2.5 105.2-92.4 105.2-92.4l-17.5-7.5c-10-4.9-7.4-11.5-5-17.4 2.4-7.6 20.1-67.3 20.1-67.3s-47.7 10-57.7 12.5c-7.5 2.4-10-2.5-12.5-7.5s-15-32.4-15-32.4-52.6 59.9-55.1 62.3c-10 7.5-20.1 0-17.6-10 0-10 27.6-129.6 27.6-129.6s-30.1 17.4-40.1 22.4c-7.5 5-12.6 5-17.6-5C293.5 72.3 255.9 0 255.9 0s-37.5 72.3-42.5 79.8c-5 10-10 10-17.6 5-10-5-40.1-22.4-40.1-22.4S183.3 182 183.3 192c2.5 10-7.5 17.5-17.6 10-2.5-2.5-55.1-62.3-55.1-62.3S98.1 167 95.6 172s-5 9.9-12.5 7.5C73 177 25.4 167 25.4 167s17.6 59.7 20.1 67.3c2.4 6 5 12.5-5 17.4L23 259.3s102.6 89.9 105.2 92.4c5.1 5 10 7.5 5.1 22.5-5.1 15-10.1 35.1-10.1 35.1s95.2-20.1 105.3-22.6c8.7-.9 18.3 2.5 18.3 12.5S241 512 241 512h30s-5.8-102.7-5.8-112.8 9.5-13.4 18.4-12.5c10 2.5 105.2 22.6 105.2 22.6s-5-20.1-10-35.1 0-17.5 5-22.5z"],"cc-amazon-pay":[576,512,[],"f42d","M124.7 201.8c.1-11.8 0-23.5 0-35.3v-35.3c0-1.3.4-2 1.4-2.7 11.5-8 24.1-12.1 38.2-11.1 12.5.9 22.7 7 28.1 21.7 3.3 8.9 4.1 18.2 4.1 27.7 0 8.7-.7 17.3-3.4 25.6-5.7 17.8-18.7 24.7-35.7 23.9-11.7-.5-21.9-5-31.4-11.7-.9-.8-1.4-1.6-1.3-2.8zm154.9 14.6c4.6 1.8 9.3 2 14.1 1.5 11.6-1.2 21.9-5.7 31.3-12.5.9-.6 1.3-1.3 1.3-2.5-.1-3.9 0-7.9 0-11.8 0-4-.1-8 0-12 0-1.4-.4-2-1.8-2.2-7-.9-13.9-2.2-20.9-2.9-7-.6-14-.3-20.8 1.9-6.7 2.2-11.7 6.2-13.7 13.1-1.6 5.4-1.6 10.8.1 16.2 1.6 5.5 5.2 9.2 10.4 11.2zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zm-207.5 23.9c.4 1.7.9 3.4 1.6 5.1 16.5 40.6 32.9 81.3 49.5 121.9 1.4 3.5 1.7 6.4.2 9.9-2.8 6.2-4.9 12.6-7.8 18.7-2.6 5.5-6.7 9.5-12.7 11.2-4.2 1.1-8.5 1.3-12.9.9-2.1-.2-4.2-.7-6.3-.8-2.8-.2-4.2 1.1-4.3 4-.1 2.8-.1 5.6 0 8.3.1 4.6 1.6 6.7 6.2 7.5 4.7.8 9.4 1.6 14.2 1.7 14.3.3 25.7-5.4 33.1-17.9 2.9-4.9 5.6-10.1 7.7-15.4 19.8-50.1 39.5-100.3 59.2-150.5.6-1.5 1.1-3 1.3-4.6.4-2.4-.7-3.6-3.1-3.7-5.6-.1-11.1 0-16.7 0-3.1 0-5.3 1.4-6.4 4.3-.4 1.1-.9 2.3-1.3 3.4l-29.1 83.7c-2.1 6.1-4.2 12.1-6.5 18.6-.4-.9-.6-1.4-.8-1.9-10.8-29.9-21.6-59.9-32.4-89.8-1.7-4.7-3.5-9.5-5.3-14.2-.9-2.5-2.7-4-5.4-4-6.4-.1-12.8-.2-19.2-.1-2.2 0-3.3 1.6-2.8 3.7zM242.4 206c1.7 11.7 7.6 20.8 18 26.6 9.9 5.5 20.7 6.2 31.7 4.6 12.7-1.9 23.9-7.3 33.8-15.5.4-.3.8-.6 1.4-1 .5 3.2.9 6.2 1.5 9.2.5 2.6 2.1 4.3 4.5 4.4 4.6.1 9.1.1 13.7 0 2.3-.1 3.8-1.6 4-3.9.1-.8.1-1.6.1-2.3v-88.8c0-3.6-.2-7.2-.7-10.8-1.6-10.8-6.2-19.7-15.9-25.4-5.6-3.3-11.8-5-18.2-5.9-3-.4-6-.7-9.1-1.1h-10c-.8.1-1.6.3-2.5.3-8.2.4-16.3 1.4-24.2 3.5-5.1 1.3-10 3.2-15 4.9-3 1-4.5 3.2-4.4 6.5.1 2.8-.1 5.6 0 8.3.1 4.1 1.8 5.2 5.7 4.1 6.5-1.7 13.1-3.5 19.7-4.8 10.3-1.9 20.7-2.7 31.1-1.2 5.4.8 10.5 2.4 14.1 7 3.1 4 4.2 8.8 4.4 13.7.3 6.9.2 13.9.3 20.8 0 .4-.1.7-.2 1.2-.4 0-.8 0-1.1-.1-8.8-2.1-17.7-3.6-26.8-4.1-9.5-.5-18.9.1-27.9 3.2-10.8 3.8-19.5 10.3-24.6 20.8-4.1 8.3-4.6 17-3.4 25.8zM98.7 106.9v175.3c0 .8 0 1.7.1 2.5.2 2.5 1.7 4.1 4.1 4.2 5.9.1 11.8.1 17.7 0 2.5 0 4-1.7 4.1-4.1.1-.8.1-1.7.1-2.5v-60.7c.9.7 1.4 1.2 1.9 1.6 15 12.5 32.2 16.6 51.1 12.9 17.1-3.4 28.9-13.9 36.7-29.2 5.8-11.6 8.3-24.1 8.7-37 .5-14.3-1-28.4-6.8-41.7-7.1-16.4-18.9-27.3-36.7-30.9-2.7-.6-5.5-.8-8.2-1.2h-7c-1.2.2-2.4.3-3.6.5-11.7 1.4-22.3 5.8-31.8 12.7-2 1.4-3.9 3-5.9 4.5-.1-.5-.3-.8-.4-1.2-.4-2.3-.7-4.6-1.1-6.9-.6-3.9-2.5-5.5-6.4-5.6h-9.7c-5.9-.1-6.9 1-6.9 6.8zM493.6 339c-2.7-.7-5.1 0-7.6 1-43.9 18.4-89.5 30.2-136.8 35.8-14.5 1.7-29.1 2.8-43.7 3.2-26.6.7-53.2-.8-79.6-4.3-17.8-2.4-35.5-5.7-53-9.9-37-8.9-72.7-21.7-106.7-38.8-8.8-4.4-17.4-9.3-26.1-14-3.8-2.1-6.2-1.5-8.2 2.1v1.7c1.2 1.6 2.2 3.4 3.7 4.8 36 32.2 76.6 56.5 122 72.9 21.9 7.9 44.4 13.7 67.3 17.5 14 2.3 28 3.8 42.2 4.5 3 .1 6 .2 9 .4.7 0 1.4.2 2.1.3h17.7c.7-.1 1.4-.3 2.1-.3 14.9-.4 29.8-1.8 44.6-4 21.4-3.2 42.4-8.1 62.9-14.7 29.6-9.6 57.7-22.4 83.4-40.1 2.8-1.9 5.7-3.8 8-6.2 4.3-4.4 2.3-10.4-3.3-11.9zm50.4-27.7c-.8-4.2-4-5.8-7.6-7-5.7-1.9-11.6-2.8-17.6-3.3-11-.9-22-.4-32.8 1.6-12 2.2-23.4 6.1-33.5 13.1-1.2.8-2.4 1.8-3.1 3-.6.9-.7 2.3-.5 3.4.3 1.3 1.7 1.6 3 1.5.6 0 1.2 0 1.8-.1l19.5-2.1c9.6-.9 19.2-1.5 28.8-.8 4.1.3 8.1 1.2 12 2.2 4.3 1.1 6.2 4.4 6.4 8.7.3 6.7-1.2 13.1-2.9 19.5-3.5 12.9-8.3 25.4-13.3 37.8-.3.8-.7 1.7-.8 2.5-.4 2.5 1 4 3.4 3.5 1.4-.3 3-1.1 4-2.1 3.7-3.6 7.5-7.2 10.6-11.2 10.7-13.8 17-29.6 20.7-46.6.7-3 1.2-6.1 1.7-9.1.2-4.7.2-9.6.2-14.5z"],"cc-amex":[576,512,[],"f1f3","M325.1 167.8c0-16.4-14.1-18.4-27.4-18.4l-39.1-.3v69.3H275v-25.1h18c18.4 0 14.5 10.3 14.8 25.1h16.6v-13.5c0-9.2-1.5-15.1-11-18.4 7.4-3 11.8-10.7 11.7-18.7zm-29.4 11.3H275v-15.3h21c5.1 0 10.7 1 10.7 7.4 0 6.6-5.3 7.9-11 7.9zM279 268.6h-52.7l-21 22.8-20.5-22.8h-66.5l-.1 69.3h65.4l21.3-23 20.4 23h32.2l.1-23.3c18.9 0 49.3 4.6 49.3-23.3 0-17.3-12.3-22.7-27.9-22.7zm-103.8 54.7h-40.6v-13.8h36.3v-14.1h-36.3v-12.5h41.7l17.9 20.2zm65.8 8.2l-25.3-28.1L241 276zm37.8-31h-21.2v-17.6h21.5c5.6 0 10.2 2.3 10.2 8.4 0 6.4-4.6 9.2-10.5 9.2zm-31.6-136.7v-14.6h-55.5v69.3h55.5v-14.3h-38.9v-13.8h37.8v-14.1h-37.8v-12.5zM576 255.4h-.2zm-194.6 31.9c0-16.4-14.1-18.7-27.1-18.7h-39.4l-.1 69.3h16.6l.1-25.3h17.6c11 0 14.8 2 14.8 13.8l-.1 11.5h16.6l.1-13.8c0-8.9-1.8-15.1-11-18.4 7.7-3.1 11.8-10.8 11.9-18.4zm-29.2 11.2h-20.7v-15.6h21c5.1 0 10.7 1 10.7 7.4 0 6.9-5.4 8.2-11 8.2zm-172.8-80v-69.3h-27.6l-19.7 47-21.7-47H83.3v65.7l-28.1-65.7H30.7L1 218.5h17.9l6.4-15.3h34.5l6.4 15.3H100v-54.2l24 54.2h14.6l24-54.2v54.2zM31.2 188.8l11.2-27.6 11.5 27.6zm477.4 158.9v-4.5c-10.8 5.6-3.9 4.5-156.7 4.5 0-25.2.1-23.9 0-25.2-1.7-.1-3.2-.1-9.4-.1 0 17.9-.1 6.8-.1 25.3h-39.6c0-12.1.1-15.3.1-29.2-10 6-22.8 6.4-34.3 6.2 0 14.7-.1 8.3-.1 23h-48.9c-5.1-5.7-2.7-3.1-15.4-17.4-3.2 3.5-12.8 13.9-16.1 17.4h-82v-92.3h83.1c5 5.6 2.8 3.1 15.5 17.2 3.2-3.5 12.2-13.4 15.7-17.2h58c9.8 0 18 1.9 24.3 5.6v-5.6c54.3 0 64.3-1.4 75.7 5.1v-5.1h78.2v5.2c11.4-6.9 19.6-5.2 64.9-5.2v5c10.3-5.9 16.6-5.2 54.3-5V80c0-26.5-21.5-48-48-48h-480c-26.5 0-48 21.5-48 48v109.8c9.4-21.9 19.7-46 23.1-53.9h39.7c4.3 10.1 1.6 3.7 9 21.1v-21.1h46c2.9 6.2 11.1 24 13.9 30 5.8-13.6 10.1-23.9 12.6-30h103c0-.1 11.5 0 11.6 0 43.7.2 53.6-.8 64.4 5.3v-5.3H363v9.3c7.6-6.1 17.9-9.3 30.7-9.3h27.6c0 .5 1.9.3 2.3.3H456c4.2 9.8 2.6 6 8.8 20.6v-20.6h43.3c4.9 8-1-1.8 11.2 18.4v-18.4h39.9v92h-41.6c-5.4-9-1.4-2.2-13.2-21.9v21.9h-52.8c-6.4-14.8-.1-.3-6.6-15.3h-19c-4.2 10-2.2 5.2-6.4 15.3h-26.8c-12.3 0-22.3-3-29.7-8.9v8.9h-66.5c-.3-13.9-.1-24.8-.1-24.8-1.8-.3-3.4-.2-9.8-.2v25.1H151.2v-11.4c-2.5 5.6-2.7 5.9-5.1 11.4h-29.5c-4-8.9-2.9-6.4-5.1-11.4v11.4H58.6c-4.2-10.1-2.2-5.3-6.4-15.3H33c-4.2 10-2.2 5.2-6.4 15.3H0V432c0 26.5 21.5 48 48 48h480.1c26.5 0 48-21.5 48-48v-90.4c-12.7 8.3-32.7 6.1-67.5 6.1zm36.3-64.5H575v-14.6h-32.9c-12.8 0-23.8 6.6-23.8 20.7 0 33 42.7 12.8 42.7 27.4 0 5.1-4.3 6.4-8.4 6.4h-32l-.1 14.8h32c8.4 0 17.6-1.8 22.5-8.9v-25.8c-10.5-13.8-39.3-1.3-39.3-13.5 0-5.8 4.6-6.5 9.2-6.5zm-57 39.8h-32.2l-.1 14.8h32.2c14.8 0 26.2-5.6 26.2-22 0-33.2-42.9-11.2-42.9-26.3 0-5.6 4.9-6.4 9.2-6.4h30.4v-14.6h-33.2c-12.8 0-23.5 6.6-23.5 20.7 0 33 42.7 12.5 42.7 27.4-.1 5.4-4.7 6.4-8.8 6.4zm-42.2-40.1v-14.3h-55.2l-.1 69.3h55.2l.1-14.3-38.6-.3v-13.8H445v-14.1h-37.8v-12.5zm-56.3-108.1c-.3.2-1.4 2.2-1.4 7.6 0 6 .9 7.7 1.1 7.9.2.1 1.1.5 3.4.5l7.3-16.9c-1.1 0-2.1-.1-3.1-.1-5.6 0-7 .7-7.3 1zm20.4-10.5h-.1zm-16.2-15.2c-23.5 0-34 12-34 35.3 0 22.2 10.2 34 33 34h19.2l6.4-15.3h34.3l6.6 15.3h33.7v-51.9l31.2 51.9h23.6v-69h-16.9v48.1l-29.1-48.1h-25.3v65.4l-27.9-65.4h-24.8l-23.5 54.5h-7.4c-13.3 0-16.1-8.1-16.1-19.9 0-23.8 15.7-20 33.1-19.7v-15.2zm42.1 12.1l11.2 27.6h-22.8zm-101.1-12v69.3h16.9v-69.3z"],"cc-apple-pay":[576,512,[],"f416","M302.2 218.4c0 17.2-10.5 27.1-29 27.1h-24.3v-54.2h24.4c18.4 0 28.9 9.8 28.9 27.1zm47.5 62.6c0 8.3 7.2 13.7 18.5 13.7 14.4 0 25.2-9.1 25.2-21.9v-7.7l-23.5 1.5c-13.3.9-20.2 5.8-20.2 14.4zM576 79v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM127.8 197.2c8.4.7 16.8-4.2 22.1-10.4 5.2-6.4 8.6-15 7.7-23.7-7.4.3-16.6 4.9-21.9 11.3-4.8 5.5-8.9 14.4-7.9 22.8zm60.6 74.5c-.2-.2-19.6-7.6-19.8-30-.2-18.7 15.3-27.7 16-28.2-8.8-13-22.4-14.4-27.1-14.7-12.2-.7-22.6 6.9-28.4 6.9-5.9 0-14.7-6.6-24.3-6.4-12.5.2-24.2 7.3-30.5 18.6-13.1 22.6-3.4 56 9.3 74.4 6.2 9.1 13.7 19.1 23.5 18.7 9.3-.4 13-6 24.2-6 11.3 0 14.5 6 24.3 5.9 10.2-.2 16.5-9.1 22.8-18.2 6.9-10.4 9.8-20.4 10-21zm135.4-53.4c0-26.6-18.5-44.8-44.9-44.8h-51.2v136.4h21.2v-46.6h29.3c26.8 0 45.6-18.4 45.6-45zm90 23.7c0-19.7-15.8-32.4-40-32.4-22.5 0-39.1 12.9-39.7 30.5h19.1c1.6-8.4 9.4-13.9 20-13.9 13 0 20.2 6 20.2 17.2v7.5l-26.4 1.6c-24.6 1.5-37.9 11.6-37.9 29.1 0 17.7 13.7 29.4 33.4 29.4 13.3 0 25.6-6.7 31.2-17.4h.4V310h19.6v-68zM516 210.9h-21.5l-24.9 80.6h-.4l-24.9-80.6H422l35.9 99.3-1.9 6c-3.2 10.2-8.5 14.2-17.9 14.2-1.7 0-4.9-.2-6.2-.3v16.4c1.2.4 6.5.5 8.1.5 20.7 0 30.4-7.9 38.9-31.8L516 210.9z"],"cc-diners-club":[576,512,[],"f24c","M239.7 79.9c-96.9 0-175.8 78.6-175.8 175.8 0 96.9 78.9 175.8 175.8 175.8 97.2 0 175.8-78.9 175.8-175.8 0-97.2-78.6-175.8-175.8-175.8zm-39.9 279.6c-41.7-15.9-71.4-56.4-71.4-103.8s29.7-87.9 71.4-104.1v207.9zm79.8.3V151.6c41.7 16.2 71.4 56.7 71.4 104.1s-29.7 87.9-71.4 104.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM329.7 448h-90.3c-106.2 0-193.8-85.5-193.8-190.2C45.6 143.2 133.2 64 239.4 64h90.3c105 0 200.7 79.2 200.7 193.8 0 104.7-95.7 190.2-200.7 190.2z"],"cc-discover":[576,512,[],"f1f2","M520.4 196.1c0-7.9-5.5-12.1-15.6-12.1h-4.9v24.9h4.7c10.3 0 15.8-4.4 15.8-12.8zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-44.1 138.9c22.6 0 52.9-4.1 52.9 24.4 0 12.6-6.6 20.7-18.7 23.2l25.8 34.4h-19.6l-22.2-32.8h-2.2v32.8h-16zm-55.9.1h45.3v14H444v18.2h28.3V217H444v22.2h29.3V253H428zm-68.7 0l21.9 55.2 22.2-55.2h17.5l-35.5 84.2h-8.6l-35-84.2zm-55.9-3c24.7 0 44.6 20 44.6 44.6 0 24.7-20 44.6-44.6 44.6-24.7 0-44.6-20-44.6-44.6 0-24.7 20-44.6 44.6-44.6zm-49.3 6.1v19c-20.1-20.1-46.8-4.7-46.8 19 0 25 27.5 38.5 46.8 19.2v19c-29.7 14.3-63.3-5.7-63.3-38.2 0-31.2 33.1-53 63.3-38zm-97.2 66.3c11.4 0 22.4-15.3-3.3-24.4-15-5.5-20.2-11.4-20.2-22.7 0-23.2 30.6-31.4 49.7-14.3l-8.4 10.8c-10.4-11.6-24.9-6.2-24.9 2.5 0 4.4 2.7 6.9 12.3 10.3 18.2 6.6 23.6 12.5 23.6 25.6 0 29.5-38.8 37.4-56.6 11.3l10.3-9.9c3.7 7.1 9.9 10.8 17.5 10.8zM55.4 253H32v-82h23.4c26.1 0 44.1 17 44.1 41.1 0 18.5-13.2 40.9-44.1 40.9zm67.5 0h-16v-82h16zM544 433c0 8.2-6.8 15-15 15H128c189.6-35.6 382.7-139.2 416-160zM74.1 191.6c-5.2-4.9-11.6-6.6-21.9-6.6H48v54.2h4.2c10.3 0 17-2 21.9-6.4 5.7-5.2 8.9-12.8 8.9-20.7s-3.2-15.5-8.9-20.5z"],"cc-jcb":[576,512,[],"f24b","M431.5 244.3V212c41.2 0 38.5.2 38.5.2 7.3 1.3 13.3 7.3 13.3 16 0 8.8-6 14.5-13.3 15.8-1.2.4-3.3.3-38.5.3zm42.8 20.2c-2.8-.7-3.3-.5-42.8-.5v35c39.6 0 40 .2 42.8-.5 7.5-1.5 13.5-8 13.5-17 0-8.7-6-15.5-13.5-17zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM182 192.3h-57c0 67.1 10.7 109.7-35.8 109.7-19.5 0-38.8-5.7-57.2-14.8v28c30 8.3 68 8.3 68 8.3 97.9 0 82-47.7 82-131.2zm178.5 4.5c-63.4-16-165-14.9-165 59.3 0 77.1 108.2 73.6 165 59.2V287C312.9 311.7 253 309 253 256s59.8-55.6 107.5-31.2v-28zM544 286.5c0-18.5-16.5-30.5-38-32v-.8c19.5-2.7 30.3-15.5 30.3-30.2 0-19-15.7-30-37-31 0 0 6.3-.3-120.3-.3v127.5h122.7c24.3.1 42.3-12.9 42.3-33.2z"],"cc-mastercard":[576,512,[],"f1f1","M482.9 410.3c0 6.8-4.6 11.7-11.2 11.7-6.8 0-11.2-5.2-11.2-11.7 0-6.5 4.4-11.7 11.2-11.7 6.6 0 11.2 5.2 11.2 11.7zm-310.8-11.7c-7.1 0-11.2 5.2-11.2 11.7 0 6.5 4.1 11.7 11.2 11.7 6.5 0 10.9-4.9 10.9-11.7-.1-6.5-4.4-11.7-10.9-11.7zm117.5-.3c-5.4 0-8.7 3.5-9.5 8.7h19.1c-.9-5.7-4.4-8.7-9.6-8.7zm107.8.3c-6.8 0-10.9 5.2-10.9 11.7 0 6.5 4.1 11.7 10.9 11.7 6.8 0 11.2-4.9 11.2-11.7 0-6.5-4.4-11.7-11.2-11.7zm105.9 26.1c0 .3.3.5.3 1.1 0 .3-.3.5-.3 1.1-.3.3-.3.5-.5.8-.3.3-.5.5-1.1.5-.3.3-.5.3-1.1.3-.3 0-.5 0-1.1-.3-.3 0-.5-.3-.8-.5-.3-.3-.5-.5-.5-.8-.3-.5-.3-.8-.3-1.1 0-.5 0-.8.3-1.1 0-.5.3-.8.5-1.1.3-.3.5-.3.8-.5.5-.3.8-.3 1.1-.3.5 0 .8 0 1.1.3.5.3.8.3 1.1.5s.2.6.5 1.1zm-2.2 1.4c.5 0 .5-.3.8-.3.3-.3.3-.5.3-.8 0-.3 0-.5-.3-.8-.3 0-.5-.3-1.1-.3h-1.6v3.5h.8V426h.3l1.1 1.4h.8l-1.1-1.3zM576 81v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V81c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM64 220.6c0 76.5 62.1 138.5 138.5 138.5 27.2 0 53.9-8.2 76.5-23.1-72.9-59.3-72.4-171.2 0-230.5-22.6-15-49.3-23.1-76.5-23.1-76.4-.1-138.5 62-138.5 138.2zm224 108.8c70.5-55 70.2-162.2 0-217.5-70.2 55.3-70.5 162.6 0 217.5zm-142.3 76.3c0-8.7-5.7-14.4-14.7-14.7-4.6 0-9.5 1.4-12.8 6.5-2.4-4.1-6.5-6.5-12.2-6.5-3.8 0-7.6 1.4-10.6 5.4V392h-8.2v36.7h8.2c0-18.9-2.5-30.2 9-30.2 10.2 0 8.2 10.2 8.2 30.2h7.9c0-18.3-2.5-30.2 9-30.2 10.2 0 8.2 10 8.2 30.2h8.2v-23zm44.9-13.7h-7.9v4.4c-2.7-3.3-6.5-5.4-11.7-5.4-10.3 0-18.2 8.2-18.2 19.3 0 11.2 7.9 19.3 18.2 19.3 5.2 0 9-1.9 11.7-5.4v4.6h7.9V392zm40.5 25.6c0-15-22.9-8.2-22.9-15.2 0-5.7 11.9-4.8 18.5-1.1l3.3-6.5c-9.4-6.1-30.2-6-30.2 8.2 0 14.3 22.9 8.3 22.9 15 0 6.3-13.5 5.8-20.7.8l-3.5 6.3c11.2 7.6 32.6 6 32.6-7.5zm35.4 9.3l-2.2-6.8c-3.8 2.1-12.2 4.4-12.2-4.1v-16.6h13.1V392h-13.1v-11.2h-8.2V392h-7.6v7.3h7.6V416c0 17.6 17.3 14.4 22.6 10.9zm13.3-13.4h27.5c0-16.2-7.4-22.6-17.4-22.6-10.6 0-18.2 7.9-18.2 19.3 0 20.5 22.6 23.9 33.8 14.2l-3.8-6c-7.8 6.4-19.6 5.8-21.9-4.9zm59.1-21.5c-4.6-2-11.6-1.8-15.2 4.4V392h-8.2v36.7h8.2V408c0-11.6 9.5-10.1 12.8-8.4l2.4-7.6zm10.6 18.3c0-11.4 11.6-15.1 20.7-8.4l3.8-6.5c-11.6-9.1-32.7-4.1-32.7 15 0 19.8 22.4 23.8 32.7 15l-3.8-6.5c-9.2 6.5-20.7 2.6-20.7-8.6zm66.7-18.3H408v4.4c-8.3-11-29.9-4.8-29.9 13.9 0 19.2 22.4 24.7 29.9 13.9v4.6h8.2V392zm33.7 0c-2.4-1.2-11-2.9-15.2 4.4V392h-7.9v36.7h7.9V408c0-11 9-10.3 12.8-8.4l2.4-7.6zm40.3-14.9h-7.9v19.3c-8.2-10.9-29.9-5.1-29.9 13.9 0 19.4 22.5 24.6 29.9 13.9v4.6h7.9v-51.7zm7.6-75.1v4.6h.8V302h1.9v-.8h-4.6v.8h1.9zm6.6 123.8c0-.5 0-1.1-.3-1.6-.3-.3-.5-.8-.8-1.1-.3-.3-.8-.5-1.1-.8-.5 0-1.1-.3-1.6-.3-.3 0-.8.3-1.4.3-.5.3-.8.5-1.1.8-.5.3-.8.8-.8 1.1-.3.5-.3 1.1-.3 1.6 0 .3 0 .8.3 1.4 0 .3.3.8.8 1.1.3.3.5.5 1.1.8.5.3 1.1.3 1.4.3.5 0 1.1 0 1.6-.3.3-.3.8-.5 1.1-.8.3-.3.5-.8.8-1.1.3-.6.3-1.1.3-1.4zm3.2-124.7h-1.4l-1.6 3.5-1.6-3.5h-1.4v5.4h.8v-4.1l1.6 3.5h1.1l1.4-3.5v4.1h1.1v-5.4zm4.4-80.5c0-76.2-62.1-138.3-138.5-138.3-27.2 0-53.9 8.2-76.5 23.1 72.1 59.3 73.2 171.5 0 230.5 22.6 15 49.5 23.1 76.5 23.1 76.4.1 138.5-61.9 138.5-138.4z"],"cc-paypal":[576,512,[],"f1f4","M186.3 258.2c0 12.2-9.7 21.5-22 21.5-9.2 0-16-5.2-16-15 0-12.2 9.5-22 21.7-22 9.3 0 16.3 5.7 16.3 15.5zM80.5 209.7h-4.7c-1.5 0-3 1-3.2 2.7l-4.3 26.7 8.2-.3c11 0 19.5-1.5 21.5-14.2 2.3-13.4-6.2-14.9-17.5-14.9zm284 0H360c-1.8 0-3 1-3.2 2.7l-4.2 26.7 8-.3c13 0 22-3 22-18-.1-10.6-9.6-11.1-18.1-11.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM128.3 215.4c0-21-16.2-28-34.7-28h-40c-2.5 0-5 2-5.2 4.7L32 294.2c-.3 2 1.2 4 3.2 4h19c2.7 0 5.2-2.9 5.5-5.7l4.5-26.6c1-7.2 13.2-4.7 18-4.7 28.6 0 46.1-17 46.1-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.2 8.2-5.8-8.5-14.2-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9 0 20.2-4.9 26.5-11.9-.5 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H200c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm40.5 97.9l63.7-92.6c.5-.5.5-1 .5-1.7 0-1.7-1.5-3.5-3.2-3.5h-19.2c-1.7 0-3.5 1-4.5 2.5l-26.5 39-11-37.5c-.8-2.2-3-4-5.5-4h-18.7c-1.7 0-3.2 1.8-3.2 3.5 0 1.2 19.5 56.8 21.2 62.1-2.7 3.8-20.5 28.6-20.5 31.6 0 1.8 1.5 3.2 3.2 3.2h19.2c1.8-.1 3.5-1.1 4.5-2.6zm159.3-106.7c0-21-16.2-28-34.7-28h-39.7c-2.7 0-5.2 2-5.5 4.7l-16.2 102c-.2 2 1.3 4 3.2 4h20.5c2 0 3.5-1.5 4-3.2l4.5-29c1-7.2 13.2-4.7 18-4.7 28.4 0 45.9-17 45.9-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.3 8.2-5.5-8.5-14-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9.3 0 20.5-4.9 26.5-11.9-.3 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H484c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm47.5-33.3c0-2-1.5-3.5-3.2-3.5h-18.5c-1.5 0-3 1.2-3.2 2.7l-16.2 104-.3.5c0 1.8 1.5 3.5 3.5 3.5h16.5c2.5 0 5-2.9 5.2-5.7L544 191.2v-.3zm-90 51.8c-12.2 0-21.7 9.7-21.7 22 0 9.7 7 15 16.2 15 12 0 21.7-9.2 21.7-21.5.1-9.8-6.9-15.5-16.2-15.5z"],"cc-stripe":[576,512,[],"f1f5","M492.4 220.8c-8.9 0-18.7 6.7-18.7 22.7h36.7c0-16-9.3-22.7-18-22.7zM375 223.4c-8.2 0-13.3 2.9-17 7l.2 52.8c3.5 3.7 8.5 6.7 16.8 6.7 13.1 0 21.9-14.3 21.9-33.4 0-18.6-9-33.2-21.9-33.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM122.2 281.1c0 25.6-20.3 40.1-49.9 40.3-12.2 0-25.6-2.4-38.8-8.1v-33.9c12 6.4 27.1 11.3 38.9 11.3 7.9 0 13.6-2.1 13.6-8.7 0-17-54-10.6-54-49.9 0-25.2 19.2-40.2 48-40.2 11.8 0 23.5 1.8 35.3 6.5v33.4c-10.8-5.8-24.5-9.1-35.3-9.1-7.5 0-12.1 2.2-12.1 7.7 0 16 54.3 8.4 54.3 50.7zm68.8-56.6h-27V275c0 20.9 22.5 14.4 27 12.6v28.9c-4.7 2.6-13.3 4.7-24.9 4.7-21.1 0-36.9-15.5-36.9-36.5l.2-113.9 34.7-7.4v30.8H191zm74 2.4c-4.5-1.5-18.7-3.6-27.1 7.4v84.4h-35.5V194.2h30.7l2.2 10.5c8.3-15.3 24.9-12.2 29.6-10.5h.1zm44.1 91.8h-35.7V194.2h35.7zm0-142.9l-35.7 7.6v-28.9l35.7-7.6zm74.1 145.5c-12.4 0-20-5.3-25.1-9l-.1 40.2-35.5 7.5V194.2h31.3l1.8 8.8c4.9-4.5 13.9-11.1 27.8-11.1 24.9 0 48.4 22.5 48.4 63.8 0 45.1-23.2 65.5-48.6 65.6zm160.4-51.5h-69.5c1.6 16.6 13.8 21.5 27.6 21.5 14.1 0 25.2-3 34.9-7.9V312c-9.7 5.3-22.4 9.2-39.4 9.2-34.6 0-58.8-21.7-58.8-64.5 0-36.2 20.5-64.9 54.3-64.9 33.7 0 51.3 28.7 51.3 65.1 0 3.5-.3 10.9-.4 12.9z"],"cc-visa":[576,512,[],"f1f0","M470.1 231.3s7.6 37.2 9.3 45H446c3.3-8.9 16-43.5 16-43.5-.2.3 3.3-9.1 5.3-14.9l2.8 13.4zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM152.5 331.2L215.7 176h-42.5l-39.3 106-4.3-21.5-14-71.4c-2.3-9.9-9.4-12.7-18.2-13.1H32.7l-.7 3.1c15.8 4 29.9 9.8 42.2 17.1l35.8 135h42.5zm94.4.2L272.1 176h-40.2l-25.1 155.4h40.1zm139.9-50.8c.2-17.7-10.6-31.2-33.7-42.3-14.1-7.1-22.7-11.9-22.7-19.2.2-6.6 7.3-13.4 23.1-13.4 13.1-.3 22.7 2.8 29.9 5.9l3.6 1.7 5.5-33.6c-7.9-3.1-20.5-6.6-36-6.6-39.7 0-67.6 21.2-67.8 51.4-.3 22.3 20 34.7 35.2 42.2 15.5 7.6 20.8 12.6 20.8 19.3-.2 10.4-12.6 15.2-24.1 15.2-16 0-24.6-2.5-37.7-8.3l-5.3-2.5-5.6 34.9c9.4 4.3 26.8 8.1 44.8 8.3 42.2.1 69.7-20.8 70-53zM528 331.4L495.6 176h-31.1c-9.6 0-16.9 2.8-21 12.9l-59.7 142.5H426s6.9-19.2 8.4-23.3H486c1.2 5.5 4.8 23.3 4.8 23.3H528z"],centercode:[512,512,[],"f380","M329.2 268.6c-3.8 35.2-35.4 60.6-70.6 56.8-35.2-3.8-60.6-35.4-56.8-70.6 3.8-35.2 35.4-60.6 70.6-56.8 35.1 3.8 60.6 35.4 56.8 70.6zm-85.8 235.1C96.7 496-8.2 365.5 10.1 224.3c11.2-86.6 65.8-156.9 139.1-192 161-77.1 349.7 37.4 354.7 216.6 4.1 147-118.4 262.2-260.5 254.8zm179.9-180c27.9-118-160.5-205.9-237.2-234.2-57.5 56.3-69.1 188.6-33.8 344.4 68.8 15.8 169.1-26.4 271-110.2z"],centos:[448,512,[],"f789","M289.6 97.5l31.6 31.7-76.3 76.5V97.5zm-162.4 31.7l76.3 76.5V97.5h-44.7zm41.5-41.6h44.7v127.9l10.8 10.8 10.8-10.8V87.6h44.7L224.2 32zm26.2 168.1l-10.8-10.8H55.5v-44.8L0 255.7l55.5 55.6v-44.8h128.6l10.8-10.8zm79.3-20.7h107.9v-44.8l-31.6-31.7zm173.3 20.7L392 200.1v44.8H264.3l-10.8 10.8 10.8 10.8H392v44.8l55.5-55.6zM65.4 176.2l32.5-31.7 90.3 90.5h15.3v-15.3l-90.3-90.5 31.6-31.7H65.4zm316.7-78.7h-78.5l31.6 31.7-90.3 90.5V235h15.3l90.3-90.5 31.6 31.7zM203.5 413.9V305.8l-76.3 76.5 31.6 31.7h44.7zM65.4 235h108.8l-76.3-76.5-32.5 31.7zm316.7 100.2l-31.6 31.7-90.3-90.5h-15.3v15.3l90.3 90.5-31.6 31.7h78.5zm0-58.8H274.2l76.3 76.5 31.6-31.7zm-60.9 105.8l-76.3-76.5v108.1h44.7zM97.9 352.9l76.3-76.5H65.4v44.8zm181.8 70.9H235V295.9l-10.8-10.8-10.8 10.8v127.9h-44.7l55.5 55.6zm-166.5-41.6l90.3-90.5v-15.3h-15.3l-90.3 90.5-32.5-31.7v78.7h79.4z"],chrome:[496,512,[],"f268","M131.5 217.5L55.1 100.1c47.6-59.2 119-91.8 192-92.1 42.3-.3 85.5 10.5 124.8 33.2 43.4 25.2 76.4 61.4 97.4 103L264 133.4c-58.1-3.4-113.4 29.3-132.5 84.1zm32.9 38.5c0 46.2 37.4 83.6 83.6 83.6s83.6-37.4 83.6-83.6-37.4-83.6-83.6-83.6-83.6 37.3-83.6 83.6zm314.9-89.2L339.6 174c37.9 44.3 38.5 108.2 6.6 157.2L234.1 503.6c46.5 2.5 94.4-7.7 137.8-32.9 107.4-62 150.9-192 107.4-303.9zM133.7 303.6L40.4 120.1C14.9 159.1 0 205.9 0 256c0 124 90.8 226.7 209.5 244.9l63.7-124.8c-57.6 10.8-113.2-20.8-139.5-72.5z"],chromecast:[512,512,[],"f838","M447.83 64H64a42.72 42.72 0 0 0-42.72 42.72v63.92H64v-63.92h383.83v298.56H298.64V448H448a42.72 42.72 0 0 0 42.72-42.72V106.72A42.72 42.72 0 0 0 448 64zM21.28 383.58v63.92h63.91a63.91 63.91 0 0 0-63.91-63.92zm0-85.28V341a106.63 106.63 0 0 1 106.64 106.66v.34h42.72a149.19 149.19 0 0 0-149-149.36h-.33zm0-85.27v42.72c106-.1 192 85.75 192.08 191.75v.5h42.72c-.46-129.46-105.34-234.27-234.8-234.64z"],cloudscale:[448,512,[],"f383","M318.1 154l-9.4 7.6c-22.5-19.3-51.5-33.6-83.3-33.6C153.8 128 96 188.8 96 260.3c0 6.6.4 13.1 1.4 19.4-2-56 41.8-97.4 92.6-97.4 24.2 0 46.2 9.4 62.6 24.7l-25.2 20.4c-8.3-.9-16.8 1.8-23.1 8.1-11.1 11-11.1 28.9 0 40 11.1 11 28.9 11 40 0 6.3-6.3 9-14.9 8.1-23.1l75.2-88.8c6.3-6.5-3.3-15.9-9.5-9.6zm-83.8 111.5c-5.6 5.5-14.6 5.5-20.2 0-5.6-5.6-5.6-14.6 0-20.2s14.6-5.6 20.2 0 5.6 14.7 0 20.2zM224 32C100.5 32 0 132.5 0 256s100.5 224 224 224 224-100.5 224-224S347.5 32 224 32zm0 384c-88.2 0-160-71.8-160-160S135.8 96 224 96s160 71.8 160 160-71.8 160-160 160z"],cloudsmith:[332,512,[],"f384","M332.5 419.9c0 46.4-37.6 84.1-84 84.1s-84-37.7-84-84.1 37.6-84 84-84 84 37.6 84 84zm-84-243.9c46.4 0 80-37.6 80-84s-33.6-84-80-84-88 37.6-88 84-29.6 76-76 76-84 41.6-84 88 37.6 80 84 80 84-33.6 84-80 33.6-80 80-80z"],cloudversify:[616,512,[],"f385","M148.6 304c8.2 68.5 67.4 115.5 146 111.3 51.2 43.3 136.8 45.8 186.4-5.6 69.2 1.1 118.5-44.6 131.5-99.5 14.8-62.5-18.2-132.5-92.1-155.1-33-88.1-131.4-101.5-186.5-85-57.3 17.3-84.3 53.2-99.3 109.7-7.8 2.7-26.5 8.9-45 24.1 11.7 0 15.2 8.9 15.2 19.5v20.4c0 10.7-8.7 19.5-19.5 19.5h-20.2c-10.7 0-19.5-6-19.5-16.7V240H98.8C95 240 88 244.3 88 251.9v40.4c0 6.4 5.3 11.8 11.7 11.8h48.9zm227.4 8c-10.7 46.3 21.7 72.4 55.3 86.8C324.1 432.6 259.7 348 296 288c-33.2 21.6-33.7 71.2-29.2 92.9-17.9-12.4-53.8-32.4-57.4-79.8-3-39.9 21.5-75.7 57-93.9C297 191.4 369.9 198.7 400 248c-14.1-48-53.8-70.1-101.8-74.8 30.9-30.7 64.4-50.3 114.2-43.7 69.8 9.3 133.2 82.8 67.7 150.5 35-16.3 48.7-54.4 47.5-76.9l10.5 19.6c11.8 22 15.2 47.6 9.4 72-9.2 39-40.6 68.8-79.7 76.5-32.1 6.3-83.1-5.1-91.8-59.2zM128 208H88.2c-8.9 0-16.2-7.3-16.2-16.2v-39.6c0-8.9 7.3-16.2 16.2-16.2H128c8.9 0 16.2 7.3 16.2 16.2v39.6c0 8.9-7.3 16.2-16.2 16.2zM10.1 168C4.5 168 0 163.5 0 157.9v-27.8c0-5.6 4.5-10.1 10.1-10.1h27.7c5.5 0 10.1 4.5 10.1 10.1v27.8c0 5.6-4.5 10.1-10.1 10.1H10.1zM168 142.7v-21.4c0-5.1 4.2-9.3 9.3-9.3h21.4c5.1 0 9.3 4.2 9.3 9.3v21.4c0 5.1-4.2 9.3-9.3 9.3h-21.4c-5.1 0-9.3-4.2-9.3-9.3zM56 235.5v25c0 6.3-5.1 11.5-11.4 11.5H19.4C13.1 272 8 266.8 8 260.5v-25c0-6.3 5.1-11.5 11.4-11.5h25.1c6.4 0 11.5 5.2 11.5 11.5z"],codepen:[512,512,[],"f1cb","M502.285 159.704l-234-156c-7.987-4.915-16.511-4.96-24.571 0l-234 156C3.714 163.703 0 170.847 0 177.989v155.999c0 7.143 3.714 14.286 9.715 18.286l234 156.022c7.987 4.915 16.511 4.96 24.571 0l234-156.022c6-3.999 9.715-11.143 9.715-18.286V177.989c-.001-7.142-3.715-14.286-9.716-18.285zM278 63.131l172.286 114.858-76.857 51.429L278 165.703V63.131zm-44 0v102.572l-95.429 63.715-76.857-51.429L234 63.131zM44 219.132l55.143 36.857L44 292.846v-73.714zm190 229.715L61.714 333.989l76.857-51.429L234 346.275v102.572zm22-140.858l-77.715-52 77.715-52 77.715 52-77.715 52zm22 140.858V346.275l95.429-63.715 76.857 51.429L278 448.847zm190-156.001l-55.143-36.857L468 219.132v73.714z"],codiepie:[472,512,[],"f284","M422.5 202.9c30.7 0 33.5 53.1-.3 53.1h-10.8v44.3h-26.6v-97.4h37.7zM472 352.6C429.9 444.5 350.4 504 248 504 111 504 0 393 0 256S111 8 248 8c97.4 0 172.8 53.7 218.2 138.4l-186 108.8L472 352.6zm-38.5 12.5l-60.3-30.7c-27.1 44.3-70.4 71.4-122.4 71.4-82.5 0-149.2-66.7-149.2-148.9 0-82.5 66.7-149.2 149.2-149.2 48.4 0 88.9 23.5 116.9 63.4l59.5-34.6c-40.7-62.6-104.7-100-179.2-100-121.2 0-219.5 98.3-219.5 219.5S126.8 475.5 248 475.5c78.6 0 146.5-42.1 185.5-110.4z"],confluence:[512,512,[],"f78d","M2.3 412.2c-4.5 7.6-2.1 17.5 5.5 22.2l105.9 65.2c7.7 4.7 17.7 2.4 22.4-5.3 0-.1.1-.2.1-.2 67.1-112.2 80.5-95.9 280.9-.7 8.1 3.9 17.8.4 21.7-7.7.1-.1.1-.3.2-.4l50.4-114.1c3.6-8.1-.1-17.6-8.1-21.3-22.2-10.4-66.2-31.2-105.9-50.3C127.5 179 44.6 345.3 2.3 412.2zm507.4-312.1c4.5-7.6 2.1-17.5-5.5-22.2L398.4 12.8c-7.5-5-17.6-3.1-22.6 4.4-.2.3-.4.6-.6 1-67.3 112.6-81.1 95.6-280.6.9-8.1-3.9-17.8-.4-21.7 7.7-.1.1-.1.3-.2.4L22.2 141.3c-3.6 8.1.1 17.6 8.1 21.3 22.2 10.4 66.3 31.2 106 50.4 248 120 330.8-45.4 373.4-112.9z"],connectdevelop:[576,512,[],"f20e","M550.5 241l-50.089-86.786c1.071-2.142 1.875-4.553 1.875-7.232 0-8.036-6.696-14.733-14.732-15.001l-55.447-95.893c.536-1.607 1.071-3.214 1.071-4.821 0-8.571-6.964-15.268-15.268-15.268-4.821 0-8.839 2.143-11.786 5.625H299.518C296.839 18.143 292.821 16 288 16s-8.839 2.143-11.518 5.625H170.411C167.464 18.143 163.447 16 158.625 16c-8.303 0-15.268 6.696-15.268 15.268 0 1.607.536 3.482 1.072 4.821l-55.983 97.233c-5.356 2.41-9.107 7.5-9.107 13.661 0 .535.268 1.071.268 1.607l-53.304 92.143c-7.232 1.339-12.59 7.5-12.59 15 0 7.232 5.089 13.393 12.054 15l55.179 95.358c-.536 1.607-.804 2.946-.804 4.821 0 7.232 5.089 13.393 12.054 14.732l51.697 89.732c-.536 1.607-1.071 3.482-1.071 5.357 0 8.571 6.964 15.268 15.268 15.268 4.821 0 8.839-2.143 11.518-5.357h106.875C279.161 493.857 283.447 496 288 496s8.839-2.143 11.518-5.357h107.143c2.678 2.946 6.696 4.821 10.982 4.821 8.571 0 15.268-6.964 15.268-15.268 0-1.607-.267-2.946-.803-4.285l51.697-90.268c6.964-1.339 12.054-7.5 12.054-14.732 0-1.607-.268-3.214-.804-4.821l54.911-95.358c6.964-1.339 12.322-7.5 12.322-15-.002-7.232-5.092-13.393-11.788-14.732zM153.535 450.732l-43.66-75.803h43.66v75.803zm0-83.839h-43.66c-.268-1.071-.804-2.142-1.339-3.214l44.999-47.41v50.624zm0-62.411l-50.357 53.304c-1.339-.536-2.679-1.34-4.018-1.607L43.447 259.75c.535-1.339.535-2.679.535-4.018s0-2.41-.268-3.482l51.965-90c2.679-.268 5.357-1.072 7.768-2.679l50.089 51.965v92.946zm0-102.322l-45.803-47.41c1.339-2.143 2.143-4.821 2.143-7.767 0-.268-.268-.804-.268-1.072l43.928-15.804v72.053zm0-80.625l-43.66 15.804 43.66-75.536v59.732zm326.519 39.108l.804 1.339L445.5 329.125l-63.75-67.232 98.036-101.518.268.268zM291.75 355.107l11.518 11.786H280.5l11.25-11.786zm-.268-11.25l-83.303-85.446 79.553-84.375 83.036 87.589-79.286 82.232zm5.357 5.893l79.286-82.232 67.5 71.25-5.892 28.125H313.714l-16.875-17.143zM410.411 44.393c1.071.536 2.142 1.072 3.482 1.34l57.857 100.714v.536c0 2.946.803 5.624 2.143 7.767L376.393 256l-83.035-87.589L410.411 44.393zm-9.107-2.143L287.732 162.518l-57.054-60.268 166.339-60h4.287zm-123.483 0c2.678 2.678 6.16 4.285 10.179 4.285s7.5-1.607 10.179-4.285h75L224.786 95.821 173.893 42.25h103.928zm-116.249 5.625l1.071-2.142a33.834 33.834 0 0 0 2.679-.804l51.161 53.84-54.911 19.821V47.875zm0 79.286l60.803-21.964 59.732 63.214-79.553 84.107-40.982-42.053v-83.304zm0 92.678L198 257.607l-36.428 38.304v-76.072zm0 87.858l42.053-44.464 82.768 85.982-17.143 17.678H161.572v-59.196zm6.964 162.053c-1.607-1.607-3.482-2.678-5.893-3.482l-1.071-1.607v-89.732h99.91l-91.607 94.821h-1.339zm129.911 0c-2.679-2.41-6.428-4.285-10.447-4.285s-7.767 1.875-10.447 4.285h-96.429l91.607-94.821h38.304l91.607 94.821H298.447zm120-11.786l-4.286 7.5c-1.339.268-2.41.803-3.482 1.339l-89.196-91.875h114.376l-17.412 83.036zm12.856-22.232l12.858-60.803h21.964l-34.822 60.803zm34.822-68.839h-20.357l4.553-21.16 17.143 18.214c-.535.803-1.071 1.874-1.339 2.946zm66.161-107.411l-55.447 96.697c-1.339.535-2.679 1.071-4.018 1.874l-20.625-21.964 34.554-163.928 45.803 79.286c-.267 1.339-.803 2.678-.803 4.285 0 1.339.268 2.411.536 3.75z"],contao:[512,512,[],"f26d","M45.4 305c14.4 67.1 26.4 129 68.2 175H34c-18.7 0-34-15.2-34-34V66c0-18.7 15.2-34 34-34h57.7C77.9 44.6 65.6 59.2 54.8 75.6c-45.4 70-27 146.8-9.4 229.4zM478 32h-90.2c21.4 21.4 39.2 49.5 52.7 84.1l-137.1 29.3c-14.9-29-37.8-53.3-82.6-43.9-24.6 5.3-41 19.3-48.3 34.6-8.8 18.7-13.2 39.8 8.2 140.3 21.1 100.2 33.7 117.7 49.5 131.2 12.9 11.1 33.4 17 58.3 11.7 44.5-9.4 55.7-40.7 57.4-73.2l137.4-29.6c3.2 71.5-18.7 125.2-57.4 163.6H478c18.7 0 34-15.2 34-34V66c0-18.8-15.2-34-34-34z"],"cotton-bureau":[512,512,[],"f89e","M474.31 330.41c-23.66 91.85-94.23 144.59-201.9 148.35V429.6c0-48 26.41-74.39 74.39-74.39 62 0 99.2-37.2 99.2-99.21 0-61.37-36.53-98.28-97.38-99.06-33-69.32-146.5-64.65-177.24 0C110.52 157.72 74 194.63 74 256c0 62.13 37.27 99.41 99.4 99.41 48 0 74.55 26.23 74.55 74.39V479c-134.43-5-211.1-85.07-211.1-223 0-141.82 81.35-223.2 223.2-223.2 114.77 0 189.84 53.2 214.69 148.81H500C473.88 71.51 388.22 8 259.82 8 105 8 12 101.19 12 255.82 12 411.14 105.19 504.34 259.82 504c128.27 0 213.87-63.81 239.67-173.59zM357 182.33c41.37 3.45 64.2 29 64.2 73.67 0 48-26.43 74.41-74.4 74.41-28.61 0-49.33-9.59-61.59-27.33 83.06-16.55 75.59-99.67 71.79-120.75zm-81.68 97.36c-2.46-10.34-16.33-87 56.23-97 2.27 10.09 16.52 87.11-56.26 97zM260 132c28.61 0 49 9.67 61.44 27.61-28.36 5.48-49.36 20.59-61.59 43.45-12.23-22.86-33.23-38-61.6-43.45 12.41-17.69 33.27-27.35 61.57-27.35zm-71.52 50.72c73.17 10.57 58.91 86.81 56.49 97-72.41-9.84-59-86.95-56.25-97zM173.2 330.41c-48 0-74.4-26.4-74.4-74.41 0-44.36 22.86-70 64.22-73.67-6.75 37.2-1.38 106.53 71.65 120.75-12.14 17.63-32.84 27.3-61.14 27.3zm53.21 12.39A80.8 80.8 0 0 0 260 309.25c7.77 14.49 19.33 25.54 33.82 33.55a80.28 80.28 0 0 0-33.58 33.83c-8-14.5-19.07-26.23-33.56-33.83z"],cpanel:[640,512,[],"f388","M210.3 220.2c-5.6-24.8-26.9-41.2-51-41.2h-37c-7.1 0-12.5 4.5-14.3 10.9L73.1 320l24.7-.1c6.8 0 12.3-4.5 14.2-10.7l25.8-95.7h19.8c8.4 0 16.2 5.6 18.3 14.8 2.5 10.9-5.9 22.6-18.3 22.6h-10.3c-7 0-12.5 4.6-14.3 10.8l-6.4 23.8h32c37.2 0 58.3-36.2 51.7-65.3zm-156.5 28h18.6c6.9 0 12.4-4.4 14.3-10.9l6.2-23.6h-40C30 213.7 9 227.8 1.7 254.8-7 288.6 18.5 320 52 320h12.4l7.1-26.1c1.2-4.4-2.2-8.3-6.4-8.3H53.8c-24.7 0-24.9-37.4 0-37.4zm247.5-34.8h-77.9l-3.5 13.4c-2.4 9.6 4.5 18.5 14.2 18.5h57.5c4 0 2.4 4.3 2.1 5.3l-8.6 31.8c-.4 1.4-.9 5.3-5.5 5.3h-34.9c-5.3 0-5.3-7.9 0-7.9h21.6c6.8 0 12.3-4.6 14.2-10.8l3.5-13.2h-48.4c-39.2 0-43.6 63.8-.7 63.8l57.5.2c11.2 0 20.6-7.2 23.4-17.8l14-51.8c4.8-19.2-9.7-36.8-28.5-36.8zM633.1 179h-18.9c-4.9 0-9.2 3.2-10.4 7.9L568.2 320c20.7 0 39.8-13.8 44.9-34.5l26.5-98.2c1.2-4.3-2-8.3-6.5-8.3zm-236.3 34.7v.1h-48.3l-26.2 98c-1.2 4.4 2.2 8.3 6.4 8.3h18.9c4.8 0 9.2-3 10.4-7.8l17.2-64H395c12.5 0 21.4 11.8 18.1 23.4l-10.6 40c-1.2 4.3 1.9 8.3 6.4 8.3H428c4.6 0 9.1-2.9 10.3-7.8l8.8-33.1c9-33.1-15.9-65.4-50.3-65.4zm98.3 74.6c-3.6 0-6-3.4-5.1-6.7l8-30c.9-3.9 3.7-6 7.8-6h32.9c2.6 0 4.6 2.4 3.9 5.1l-.7 2.6c-.6 2-1.9 3-3.9 3h-21.6c-7 0-12.6 4.6-14.2 10.8l-3.5 13h53.4c10.5 0 20.3-6.6 23.2-17.6l3.2-12c4.9-19.1-9.3-36.8-28.3-36.8h-47.3c-17.9 0-33.8 12-38.6 29.6l-10.8 40c-5 17.7 8.3 36.7 28.3 36.7h66.7c6.8 0 12.3-4.5 14.2-10.7l5.7-21z"],"creative-commons":[496,512,[],"f25e","M245.83 214.87l-33.22 17.28c-9.43-19.58-25.24-19.93-27.46-19.93-22.13 0-33.22 14.61-33.22 43.84 0 23.57 9.21 43.84 33.22 43.84 14.47 0 24.65-7.09 30.57-21.26l30.55 15.5c-6.17 11.51-25.69 38.98-65.1 38.98-22.6 0-73.96-10.32-73.96-77.05 0-58.69 43-77.06 72.63-77.06 30.72-.01 52.7 11.95 65.99 35.86zm143.05 0l-32.78 17.28c-9.5-19.77-25.72-19.93-27.9-19.93-22.14 0-33.22 14.61-33.22 43.84 0 23.55 9.23 43.84 33.22 43.84 14.45 0 24.65-7.09 30.54-21.26l31 15.5c-2.1 3.75-21.39 38.98-65.09 38.98-22.69 0-73.96-9.87-73.96-77.05 0-58.67 42.97-77.06 72.63-77.06 30.71-.01 52.58 11.95 65.56 35.86zM247.56 8.05C104.74 8.05 0 123.11 0 256.05c0 138.49 113.6 248 247.56 248 129.93 0 248.44-100.87 248.44-248 0-137.87-106.62-248-248.44-248zm.87 450.81c-112.54 0-203.7-93.04-203.7-202.81 0-105.42 85.43-203.27 203.72-203.27 112.53 0 202.82 89.46 202.82 203.26-.01 121.69-99.68 202.82-202.84 202.82z"],"creative-commons-by":[496,512,[],"f4e7","M314.9 194.4v101.4h-28.3v120.5h-77.1V295.9h-28.3V194.4c0-4.4 1.6-8.2 4.6-11.3 3.1-3.1 6.9-4.7 11.3-4.7H299c4.1 0 7.8 1.6 11.1 4.7 3.1 3.2 4.8 6.9 4.8 11.3zm-101.5-63.7c0-23.3 11.5-35 34.5-35s34.5 11.7 34.5 35c0 23-11.5 34.5-34.5 34.5s-34.5-11.5-34.5-34.5zM247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3z"],"creative-commons-nc":[496,512,[],"f4e8","M247.6 8C387.4 8 496 115.9 496 256c0 147.2-118.5 248-248.4 248C113.1 504 0 393.2 0 256 0 123.1 104.7 8 247.6 8zM55.8 189.1c-7.4 20.4-11.1 42.7-11.1 66.9 0 110.9 92.1 202.4 203.7 202.4 122.4 0 177.2-101.8 178.5-104.1l-93.4-41.6c-7.7 37.1-41.2 53-68.2 55.4v38.1h-28.8V368c-27.5-.3-52.6-10.2-75.3-29.7l34.1-34.5c31.7 29.4 86.4 31.8 86.4-2.2 0-6.2-2.2-11.2-6.6-15.1-14.2-6-1.8-.1-219.3-97.4zM248.4 52.3c-38.4 0-112.4 8.7-170.5 93l94.8 42.5c10-31.3 40.4-42.9 63.8-44.3v-38.1h28.8v38.1c22.7 1.2 43.4 8.9 62 23L295 199.7c-42.7-29.9-83.5-8-70 11.1 53.4 24.1 43.8 19.8 93 41.6l127.1 56.7c4.1-17.4 6.2-35.1 6.2-53.1 0-57-19.8-105-59.3-143.9-39.3-39.9-87.2-59.8-143.6-59.8z"],"creative-commons-nc-eu":[496,512,[],"f4e9","M247.7 8C103.6 8 0 124.8 0 256c0 136.3 111.7 248 247.7 248C377.9 504 496 403.1 496 256 496 117 388.4 8 247.7 8zm.6 450.7c-112 0-203.6-92.5-203.6-202.7 0-23.2 3.7-45.2 10.9-66l65.7 29.1h-4.7v29.5h23.3c0 6.2-.4 3.2-.4 19.5h-22.8v29.5h27c11.4 67 67.2 101.3 124.6 101.3 26.6 0 50.6-7.9 64.8-15.8l-10-46.1c-8.7 4.6-28.2 10.8-47.3 10.8-28.2 0-58.1-10.9-67.3-50.2h90.3l128.3 56.8c-1.5 2.1-56.2 104.3-178.8 104.3zm-16.7-190.6l-.5-.4.9.4h-.4zm77.2-19.5h3.7v-29.5h-70.3l-28.6-12.6c2.5-5.5 5.4-10.5 8.8-14.3 12.9-15.8 31.1-22.4 51.1-22.4 18.3 0 35.3 5.4 46.1 10l11.6-47.3c-15-6.6-37-12.4-62.3-12.4-39 0-72.2 15.8-95.9 42.3-5.3 6.1-9.8 12.9-13.9 20.1l-81.6-36.1c64.6-96.8 157.7-93.6 170.7-93.6 113 0 203 90.2 203 203.4 0 18.7-2.1 36.3-6.3 52.9l-136.1-60.5z"],"creative-commons-nc-jp":[496,512,[],"f4ea","M247.7 8C103.6 8 0 124.8 0 256c0 136.4 111.8 248 247.7 248C377.9 504 496 403.2 496 256 496 117.2 388.5 8 247.7 8zm.6 450.7c-112 0-203.6-92.5-203.6-202.7 0-21.1 3-41.2 9-60.3l127 56.5h-27.9v38.6h58.1l5.7 11.8v18.7h-63.8V360h63.8v56h61.7v-56h64.2v-35.7l81 36.1c-1.5 2.2-57.1 98.3-175.2 98.3zm87.6-137.3h-57.6v-18.7l2.9-5.6 54.7 24.3zm6.5-51.4v-17.8h-38.6l63-116H301l-43.4 96-23-10.2-39.6-85.7h-65.8l27.3 51-81.9-36.5c27.8-44.1 82.6-98.1 173.7-98.1 112.8 0 203 90 203 203.4 0 21-2.7 40.6-7.9 59l-101-45.1z"],"creative-commons-nd":[496,512,[],"f4eb","M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm94 144.3v42.5H162.1V197h180.3zm0 79.8v42.5H162.1v-42.5h180.3z"],"creative-commons-pd":[496,512,[],"f4ec","M248 8C111 8 0 119.1 0 256c0 137 111 248 248 248s248-111 248-248C496 119.1 385 8 248 8zm0 449.5c-139.2 0-235.8-138-190.2-267.9l78.8 35.1c-2.1 10.5-3.3 21.5-3.3 32.9 0 99 73.9 126.9 120.4 126.9 22.9 0 53.5-6.7 79.4-29.5L297 311.1c-5.5 6.3-17.6 16.7-36.3 16.7-37.8 0-53.7-39.9-53.9-71.9 230.4 102.6 216.5 96.5 217.9 96.8-34.3 62.4-100.6 104.8-176.7 104.8zm194.2-150l-224-100c18.8-34 54.9-30.7 74.7-11l40.4-41.6c-27.1-23.3-58-27.5-78.1-27.5-47.4 0-80.9 20.5-100.7 51.6l-74.9-33.4c36.1-54.9 98.1-91.2 168.5-91.2 111.1 0 201.5 90.4 201.5 201.5 0 18-2.4 35.4-6.8 52-.3-.1-.4-.2-.6-.4z"],"creative-commons-pd-alt":[496,512,[],"f4ed","M247.6 8C104.7 8 0 123.1 0 256c0 138.5 113.6 248 247.6 248C377.5 504 496 403.1 496 256 496 118.1 389.4 8 247.6 8zm.8 450.8c-112.5 0-203.7-93-203.7-202.8 0-105.4 85.5-203.3 203.7-203.3 112.6 0 202.9 89.5 202.8 203.3 0 121.7-99.6 202.8-202.8 202.8zM316.7 186h-53.2v137.2h53.2c21.4 0 70-5.1 70-68.6 0-63.4-48.6-68.6-70-68.6zm.8 108.5h-19.9v-79.7l19.4-.1c3.8 0 35-2.1 35 39.9 0 24.6-10.5 39.9-34.5 39.9zM203.7 186h-68.2v137.3h34.6V279h27c54.1 0 57.1-37.5 57.1-46.5 0-31-16.8-46.5-50.5-46.5zm-4.9 67.3h-29.2v-41.6h28.3c30.9 0 28.8 41.6.9 41.6z"],"creative-commons-remix":[496,512,[],"f4ee","M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm161.7 207.7l4.9 2.2v70c-7.2 3.6-63.4 27.5-67.3 28.8-6.5-1.8-113.7-46.8-137.3-56.2l-64.2 26.6-63.3-27.5v-63.8l59.3-24.8c-.7-.7-.4 5-.4-70.4l67.3-29.7L361 178.5v61.6l49.1 20.3zm-70.4 81.5v-43.8h-.4v-1.8l-113.8-46.5V295l113.8 46.9v-.4l.4.4zm7.5-57.6l39.9-16.4-36.8-15.5-39 16.4 35.9 15.5zm52.3 38.1v-43L355.2 298v43.4l44.3-19z"],"creative-commons-sa":[496,512,[],"f4ef","M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zM137.7 221c13-83.9 80.5-95.7 108.9-95.7 99.8 0 127.5 82.5 127.5 134.2 0 63.6-41 132.9-128.9 132.9-38.9 0-99.1-20-109.4-97h62.5c1.5 30.1 19.6 45.2 54.5 45.2 23.3 0 58-18.2 58-82.8 0-82.5-49.1-80.6-56.7-80.6-33.1 0-51.7 14.6-55.8 43.8h18.2l-49.2 49.2-49-49.2h19.4z"],"creative-commons-sampling":[496,512,[],"f4f0","M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm3.6 53.2c2.8-.3 11.5 1 11.5 11.5l6.6 107.2 4.9-59.3c0-6 4.7-10.6 10.6-10.6 5.9 0 10.6 4.7 10.6 10.6 0 2.5-.5-5.7 5.7 81.5l5.8-64.2c.3-2.9 2.9-9.3 10.2-9.3 3.8 0 9.9 2.3 10.6 8.9l11.5 96.5 5.3-12.8c1.8-4.4 5.2-6.6 10.2-6.6h58v21.3h-50.9l-18.2 44.3c-3.9 9.9-19.5 9.1-20.8-3.1l-4-31.9-7.5 92.6c-.3 3-3 9.3-10.2 9.3-3 0-9.8-2.1-10.6-9.3 0-1.9.6 5.8-6.2-77.9l-5.3 72.2c-1.1 4.8-4.8 9.3-10.6 9.3-2.9 0-9.8-2-10.6-9.3 0-1.9.5 6.7-5.8-87.7l-5.8 94.8c0 6.3-3.6 12.4-10.6 12.4-5.2 0-10.6-4.1-10.6-12l-5.8-87.7c-5.8 92.5-5.3 84-5.3 85.9-1.1 4.8-4.8 9.3-10.6 9.3-3 0-9.8-2.1-10.6-9.3 0-.7-.4-1.1-.4-2.6l-6.2-88.6L182 348c-.7 6.5-6.7 9.3-10.6 9.3-5.8 0-9.6-4.1-10.6-8.9L149.7 272c-2 4-3.5 8.4-11.1 8.4H87.2v-21.3H132l13.7-27.9c4.4-9.9 18.2-7.2 19.9 2.7l3.1 20.4 8.4-97.9c0-6 4.8-10.6 10.6-10.6.5 0 10.6-.2 10.6 12.4l4.9 69.1 6.6-92.6c0-10.1 9.5-10.6 10.2-10.6.6 0 10.6.7 10.6 10.6l5.3 80.6 6.2-97.9c.1-1.1-.6-10.3 9.9-11.5z"],"creative-commons-sampling-plus":[496,512,[],"f4f1","M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm107 205.6c-4.7 0-9 2.8-10.7 7.2l-4 9.5-11-92.8c-1.7-13.9-22-13.4-23.1.4l-4.3 51.4-5.2-68.8c-1.1-14.3-22.1-14.2-23.2 0l-3.5 44.9-5.9-94.3c-.9-14.5-22.3-14.4-23.2 0l-5.1 83.7-4.3-66.3c-.9-14.4-22.2-14.4-23.2 0l-5.3 80.2-4.1-57c-1.1-14.3-22-14.3-23.2-.2l-7.7 89.8-1.8-12.2c-1.7-11.4-17.1-13.6-22-3.3l-13.2 27.7H87.5v23.2h51.3c4.4 0 8.4-2.5 10.4-6.4l10.7 73.1c2 13.5 21.9 13 23.1-.7l3.8-43.6 5.7 78.3c1.1 14.4 22.3 14.2 23.2-.1l4.6-70.4 4.8 73.3c.9 14.4 22.3 14.4 23.2-.1l4.9-80.5 4.5 71.8c.9 14.3 22.1 14.5 23.2.2l4.6-58.6 4.9 64.4c1.1 14.3 22 14.2 23.1.1l6.8-83 2.7 22.3c1.4 11.8 17.7 14.1 22.3 3.1l18-43.4h50.5V258l-58.4.3zm-78 5.2h-21.9v21.9c0 4.1-3.3 7.5-7.5 7.5-4.1 0-7.5-3.3-7.5-7.5v-21.9h-21.9c-4.1 0-7.5-3.3-7.5-7.5 0-4.1 3.4-7.5 7.5-7.5h21.9v-21.9c0-4.1 3.4-7.5 7.5-7.5s7.5 3.3 7.5 7.5v21.9h21.9c4.1 0 7.5 3.3 7.5 7.5 0 4.1-3.4 7.5-7.5 7.5z"],"creative-commons-share":[496,512,[],"f4f2","M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm101 132.4c7.8 0 13.7 6.1 13.7 13.7v182.5c0 7.7-6.1 13.7-13.7 13.7H214.3c-7.7 0-13.7-6-13.7-13.7v-54h-54c-7.8 0-13.7-6-13.7-13.7V131.1c0-8.2 6.6-12.7 12.4-13.7h136.4c7.7 0 13.7 6 13.7 13.7v54h54zM159.9 300.3h40.7V198.9c0-7.4 5.8-12.6 12-13.7h55.8v-40.3H159.9v155.4zm176.2-88.1H227.6v155.4h108.5V212.2z"],"creative-commons-zero":[496,512,[],"f4f3","M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm-.4 60.5c-81.9 0-102.5 77.3-102.5 142.8 0 65.5 20.6 142.8 102.5 142.8S350.5 321.5 350.5 256c0-65.5-20.6-142.8-102.5-142.8zm0 53.9c3.3 0 6.4.5 9.2 1.2 5.9 5.1 8.8 12.1 3.1 21.9l-54.5 100.2c-1.7-12.7-1.9-25.1-1.9-34.4 0-28.8 2-88.9 44.1-88.9zm40.8 46.2c2.9 15.4 3.3 31.4 3.3 42.7 0 28.9-2 88.9-44.1 88.9-13.5 0-32.6-7.7-20.1-26.4l60.9-105.2z"],"critical-role":[448,512,[],"f6c9","M225.82 0c.26.15 216.57 124.51 217.12 124.72 3 1.18 3.7 3.46 3.7 6.56q-.11 125.17 0 250.36a5.88 5.88 0 0 1-3.38 5.78c-21.37 12-207.86 118.29-218.93 124.58h-3C142 466.34 3.08 386.56 2.93 386.48a3.29 3.29 0 0 1-1.88-3.24c0-.87 0-225.94-.05-253.1a5 5 0 0 1 2.93-4.93C27.19 112.11 213.2 6 224.07 0zM215.4 20.42l-.22-.16Q118.06 75.55 21 130.87c0 .12.08.23.13.35l30.86 11.64c-7.71 6-8.32 6-10.65 5.13-.1 0-24.17-9.28-26.8-10v230.43c.88-1.41 64.07-110.91 64.13-111 1.62-2.82 3-1.92 9.12-1.52 1.4.09 1.48.22.78 1.42-41.19 71.33-36.4 63-67.48 116.94-.81 1.4-.61 1.13 1.25 1.13h186.5c1.44 0 1.69-.23 1.7-1.64v-8.88c0-1.34 2.36-.81-18.37-1-7.46-.07-14.14-3.22-21.38-12.7-7.38-9.66-14.62-19.43-21.85-29.21-2.28-3.08-3.45-2.38-16.76-2.38-1.75 0-1.78 0-1.76 1.82.29 26.21.15 25.27 1 32.66.52 4.37 2.16 4.2 9.69 4.81 3.14.26 3.88 4.08.52 4.92-1.57.39-31.6.51-33.67-.1a2.42 2.42 0 0 1 .3-4.73c3.29-.76 6.16.81 6.66-4.44 1.3-13.66 1.17-9 1.1-79.42 0-10.82-.35-12.58-5.36-13.55-1.22-.24-3.54-.16-4.69-.55-2.88-1-2-4.84 1.77-4.85 33.67 0 46.08-1.07 56.06 4.86 7.74 4.61 12 11.48 12.51 20.4.88 14.59-6.51 22.35-15 32.59a1.46 1.46 0 0 0 0 2.22c2.6 3.25 5 6.63 7.71 9.83 27.56 33.23 24.11 30.54 41.28 33.06.89.13 1-.42 1-1.15v-11c0-1 .32-1.43 1.41-1.26a72.37 72.37 0 0 0 23.58-.3c1.08-.15 1.5.2 1.48 1.33 0 .11.88 26.69.87 26.8-.05 1.52.67 1.62 1.89 1.62h186.71Q386.51 304.6 346 234.33c2.26-.66-.4 0 6.69-1.39 2-.39 2.05-.41 3.11 1.44 7.31 12.64 77.31 134 77.37 134.06V138c-1.72.5-103.3 38.72-105.76 39.68-1.08.42-1.55.2-1.91-.88-.63-1.9-1.34-3.76-2.09-5.62-.32-.79-.09-1.13.65-1.39.1 0 95.53-35.85 103-38.77-65.42-37.57-130.56-75-196-112.6l86.82 150.39-.28.33c-9.57-.9-10.46-1.6-11.8-3.94-1-1.69-73.5-127.71-82-142.16-9.1 14.67-83.56 146.21-85.37 146.32-2.93.17-5.88.08-9.25.08q43.25-74.74 86.18-149zm51.93 129.92a37.68 37.68 0 0 0 5.54-.85c1.69-.3 2.53.2 2.6 1.92 0 .11.07 19.06-.86 20.45s-1.88 1.22-2.6-.19c-5-9.69 6.22-9.66-39.12-12-.7 0-1 .23-1 .93 0 .13 3.72 122 3.73 122.11 0 .89.52 1.2 1.21 1.51a83.92 83.92 0 0 1 8.7 4.05c7.31 4.33 11.38 10.84 12.41 19.31 1.44 11.8-2.77 35.77-32.21 37.14-2.75.13-28.26 1.08-34.14-23.25-4.66-19.26 8.26-32.7 19.89-36.4a2.45 2.45 0 0 0 2-2.66c.1-5.63 3-107.1 3.71-121.35.05-1.08-.62-1.16-1.35-1.15-32.35.52-36.75-.34-40.22 8.52-2.42 6.18-4.14 1.32-3.95.23q1.59-9 3.31-18c.4-2.11 1.43-2.61 3.43-1.86 5.59 2.11 6.72 1.7 37.25 1.92 1.73 0 1.78-.08 1.82-1.85.68-27.49.58-22.59 1-29.55a2.69 2.69 0 0 0-1.63-2.8c-5.6-2.91-8.75-7.55-8.9-13.87-.35-14.81 17.72-21.67 27.38-11.51 6.84 7.19 5.8 18.91-2.45 24.15a4.35 4.35 0 0 0-2.22 4.34c0 .59-.11-4.31 1 30.05 0 .9.43 1.12 1.24 1.11.1 0 23-.09 34.47-.37zM68.27 141.7c19.84-4.51 32.68-.56 52.49 1.69 2.76.31 3.74 1.22 3.62 4-.21 5-1.16 22.33-1.24 23.15a2.65 2.65 0 0 1-1.63 2.34c-4.06 1.7-3.61-4.45-4-7.29-3.13-22.43-73.87-32.7-74.63 25.4-.31 23.92 17 53.63 54.08 50.88 27.24-2 19-20.19 24.84-20.47a2.72 2.72 0 0 1 3 3.36c-1.83 10.85-3.42 18.95-3.45 19.15-1.54 9.17-86.7 22.09-93.35-42.06-2.71-25.85 10.44-53.37 40.27-60.15zm80 87.67h-19.49a2.57 2.57 0 0 1-2.66-1.79c2.38-3.75 5.89.92 5.86-6.14-.08-25.75.21-38 .23-40.1 0-3.42-.53-4.65-3.32-4.94-7-.72-3.11-3.37-1.11-3.38 11.84-.1 22.62-.18 30.05.72 8.77 1.07 16.71 12.63 7.93 22.62-2 2.25-4 4.42-6.14 6.73.95 1.15 6.9 8.82 17.28 19.68 2.66 2.78 6.15 3.51 9.88 3.13a2.21 2.21 0 0 0 2.23-2.12c.3-3.42.26 4.73.45-40.58 0-5.65-.34-6.58-3.23-6.83-3.95-.35-4-2.26-.69-3.37l19.09-.09c.32 0 4.49.53 1 3.38 0 .05-.16 0-.24 0-3.61.26-3.94 1-4 4.62-.27 43.93.07 40.23.41 42.82.11.84.27 2.23 5.1 2.14 2.49 0 3.86 3.37 0 3.4-10.37.08-20.74 0-31.11.07-10.67 0-13.47-6.2-24.21-20.82-1.6-2.18-8.31-2.36-8.2-.37.88 16.47 0 17.78 4 17.67 4.75-.1 4.73 3.57.83 3.55zm275-10.15c-1.21 7.13.17 10.38-5.3 10.34-61.55-.42-47.82-.22-50.72-.31a18.4 18.4 0 0 1-3.63-.73c-2.53-.6 1.48-1.23-.38-5.6-1.43-3.37-2.78-6.78-4.11-10.19a1.94 1.94 0 0 0-2-1.44 138 138 0 0 0-14.58.07 2.23 2.23 0 0 0-1.62 1.06c-1.58 3.62-3.07 7.29-4.51 11-1.27 3.23 7.86 1.32 12.19 2.16 3 .57 4.53 3.72.66 3.73H322.9c-2.92 0-3.09-3.15-.74-3.21a6.3 6.3 0 0 0 5.92-3.47c1.5-3 2.8-6 4.11-9.09 18.18-42.14 17.06-40.17 18.42-41.61a1.83 1.83 0 0 1 3 0c2.93 3.34 18.4 44.71 23.62 51.92 2 2.7 5.74 2 6.36 2 3.61.13 4-1.11 4.13-4.29.09-1.87.08 1.17.07-41.24 0-4.46-2.36-3.74-5.55-4.27-.26 0-2.56-.63-.08-3.06.21-.2-.89-.24 21.7-.15 2.32 0 5.32 2.75-1.21 3.45a2.56 2.56 0 0 0-2.66 2.83c-.07 1.63-.19 38.89.29 41.21a3.06 3.06 0 0 0 3.23 2.43c13.25.43 14.92.44 16-3.41 1.67-5.78 4.13-2.52 3.73-.19zm-104.72 64.37c-4.24 0-4.42-3.39-.61-3.41 35.91-.16 28.11.38 37.19-.65 1.68-.19 2.38.24 2.25 1.89-.26 3.39-.64 6.78-1 10.16-.25 2.16-3.2 2.61-3.4-.15-.38-5.31-2.15-4.45-15.63-5.08-1.58-.07-1.64 0-1.64 1.52V304c0 1.65 0 1.6 1.62 1.47 3.12-.25 10.31.34 15.69-1.52.47-.16 3.3-1.79 3.07 1.76 0 .21-.76 10.35-1.18 11.39-.53 1.29-1.88 1.51-2.58.32-1.17-2 0-5.08-3.71-5.3-15.42-.9-12.91-2.55-12.91 6 0 12.25-.76 16.11 3.89 16.24 16.64.48 14.4 0 16.43-5.71.84-2.37 3.5-1.77 3.18.58-.44 3.21-.85 6.43-1.23 9.64 0 .36-.16 2.4-4.66 2.39-37.16-.08-34.54-.19-35.21-.31-2.72-.51-2.2-3 .22-3.45 1.1-.19 4 .54 4.16-2.56 2.44-56.22-.07-51.34-3.91-51.33zm-.41-109.52c2.46.61 3.13 1.76 2.95 4.65-.33 5.3-.34 9-.55 9.69-.66 2.23-3.15 2.12-3.34-.27-.38-4.81-3.05-7.82-7.57-9.15-26.28-7.73-32.81 15.46-27.17 30.22 5.88 15.41 22 15.92 28.86 13.78 5.92-1.85 5.88-6.5 6.91-7.58 1.23-1.3 2.25-1.84 3.12 1.1 0 .1.57 11.89-6 12.75-1.6.21-19.38 3.69-32.68-3.39-21-11.19-16.74-35.47-6.88-45.33 14-14.06 39.91-7.06 42.32-6.47zM289.8 280.14c3.28 0 3.66 3 .16 3.43-2.61.32-5-.42-5 5.46 0 2-.19 29.05.4 41.45.11 2.29 1.15 3.52 3.44 3.65 22 1.21 14.95-1.65 18.79-6.34 1.83-2.24 2.76.84 2.76 1.08.35 13.62-4 12.39-5.19 12.4l-38.16-.19c-1.93-.23-2.06-3-.42-3.38 2-.48 4.94.4 5.13-2.8 1-15.87.57-44.65.34-47.81-.27-3.77-2.8-3.27-5.68-3.71-2.47-.38-2-3.22.34-3.22 1.45-.02 17.97-.03 23.09-.02zm-31.63-57.79c.07 4.08 2.86 3.46 6 3.58 2.61.1 2.53 3.41-.07 3.43-6.48 0-13.7 0-21.61-.06-3.84 0-3.38-3.35 0-3.37 4.49 0 3.24 1.61 3.41-45.54 0-5.08-3.27-3.54-4.72-4.23-2.58-1.23-1.36-3.09.41-3.15 1.29 0 20.19-.41 21.17.21s1.87 1.65-.42 2.86c-1 .52-3.86-.28-4.15 2.47 0 .21-.82 1.63-.07 43.8zm-36.91 274.27a2.93 2.93 0 0 0 3.26 0c17-9.79 182-103.57 197.42-112.51-.14-.43 11.26-.18-181.52-.27-1.22 0-1.57.37-1.53 1.56 0 .1 1.25 44.51 1.22 50.38a28.33 28.33 0 0 1-1.36 7.71c-.55 1.83.38-.5-13.5 32.23-.73 1.72-1 2.21-2-.08-4.19-10.34-8.28-20.72-12.57-31a23.6 23.6 0 0 1-2-10.79c.16-2.46.8-16.12 1.51-48 0-1.95 0-2-2-2h-183c2.58 1.63 178.32 102.57 196 112.76zm-90.9-188.75c0 2.4.36 2.79 2.76 3 11.54 1.17 21 3.74 25.64-7.32 6-14.46 2.66-34.41-12.48-38.84-2-.59-16-2.76-15.94 1.51.05 8.04.01 11.61.02 41.65zm105.75-15.05c0 2.13 1.07 38.68 1.09 39.13.34 9.94-25.58 5.77-25.23-2.59.08-2 1.37-37.42 1.1-39.43-14.1 7.44-14.42 40.21 6.44 48.8a17.9 17.9 0 0 0 22.39-7.07c4.91-7.76 6.84-29.47-5.43-39a2.53 2.53 0 0 1-.36.12zm-12.28-198c-9.83 0-9.73 14.75-.07 14.87s10.1-14.88.07-14.91zm-80.15 103.83c0 1.8.41 2.4 2.17 2.58 13.62 1.39 12.51-11 12.16-13.36-1.69-11.22-14.38-10.2-14.35-7.81.05 4.5-.03 13.68.02 18.59zm212.32 6.4l-6.1-15.84c-2.16 5.48-4.16 10.57-6.23 15.84z"],css3:[512,512,[],"f13c","M480 32l-64 368-223.3 80L0 400l19.6-94.8h82l-8 40.6L210 390.2l134.1-44.4 18.8-97.1H29.5l16-82h333.7l10.5-52.7H56.3l16.3-82H480z"],"css3-alt":[384,512,[],"f38b","M0 32l34.9 395.8L192 480l157.1-52.2L384 32H0zm313.1 80l-4.8 47.3L193 208.6l-.3.1h111.5l-12.8 146.6-98.2 28.7-98.8-29.2-6.4-73.9h48.9l3.2 38.3 52.6 13.3 54.7-15.4 3.7-61.6-166.3-.5v-.1l-.2.1-3.6-46.3L193.1 162l6.5-2.7H76.7L70.9 112h242.2z"],cuttlefish:[440,512,[],"f38c","M344 305.5c-17.5 31.6-57.4 54.5-96 54.5-56.6 0-104-47.4-104-104s47.4-104 104-104c38.6 0 78.5 22.9 96 54.5 13.7-50.9 41.7-93.3 87-117.8C385.7 39.1 320.5 8 248 8 111 8 0 119 0 256s111 248 248 248c72.5 0 137.7-31.1 183-80.7-45.3-24.5-73.3-66.9-87-117.8z"],"d-and-d":[576,512,[],"f38d","M82.5 98.9c-.6-17.2 2-33.8 12.7-48.2.3 7.4 1.2 14.5 4.2 21.6 5.9-27.5 19.7-49.3 42.3-65.5-1.9 5.9-3.5 11.8-3 17.7 8.7-7.4 18.8-17.8 44.4-22.7 14.7-2.8 29.7-2 42.1 1 38.5 9.3 61 34.3 69.7 72.3 5.3 23.1.7 45-8.3 66.4-5.2 12.4-12 24.4-20.7 35.1-2-1.9-3.9-3.8-5.8-5.6-42.8-40.8-26.8-25.2-37.4-37.4-1.1-1.2-1-2.2-.1-3.6 8.3-13.5 11.8-28.2 10-44-1.1-9.8-4.3-18.9-11.3-26.2-14.5-15.3-39.2-15-53.5.6-11.4 12.5-14.1 27.4-10.9 43.6.2 1.3.4 2.7 0 3.9-3.4 13.7-4.6 27.6-2.5 41.6.1.5.1 1.1.1 1.6 0 .3-.1.5-.2 1.1-21.8-11-36-28.3-43.2-52.2-8.3 17.8-11.1 35.5-6.6 54.1-15.6-15.2-21.3-34.3-22-55.2zm469.6 123.2c-11.6-11.6-25-20.4-40.1-26.6-12.8-5.2-26-7.9-39.9-7.1-10 .6-19.6 3.1-29 6.4-2.5.9-5.1 1.6-7.7 2.2-4.9 1.2-7.3-3.1-4.7-6.8 3.2-4.6 3.4-4.2 15-12 .6-.4 1.2-.8 2.2-1.5h-2.5c-.6 0-1.2.2-1.9.3-19.3 3.3-30.7 15.5-48.9 29.6-10.4 8.1-13.8 3.8-12-.5 1.4-3.5 3.3-6.7 5.1-10 1-1.8 2.3-3.4 3.5-5.1-.2-.2-.5-.3-.7-.5-27 18.3-46.7 42.4-57.7 73.3.3.3.7.6 1 .9.3-.6.5-1.2.9-1.7 10.4-12.1 22.8-21.8 36.6-29.8 18.2-10.6 37.5-18.3 58.7-20.2 4.3-.4 8.7-.1 13.1-.1-1.8.7-3.5.9-5.3 1.1-18.5 2.4-35.5 9-51.5 18.5-30.2 17.9-54.5 42.2-75.1 70.4-.3.4-.4.9-.7 1.3 14.5 5.3 24 17.3 36.1 25.6.2-.1.3-.2.4-.4l1.2-2.7c12.2-26.9 27-52.3 46.7-74.5 16.7-18.8 38-25.3 62.5-20 5.9 1.3 11.4 4.4 17.2 6.8 2.3-1.4 5.1-3.2 8-4.7 8.4-4.3 17.4-7 26.7-9 14.7-3.1 29.5-4.9 44.5-1.3v-.5c-.5-.4-1.2-.8-1.7-1.4zM316.7 397.6c-39.4-33-22.8-19.5-42.7-35.6-.8.9 0-.2-1.9 3-11.2 19.1-25.5 35.3-44 47.6-10.3 6.8-21.5 11.8-34.1 11.8-21.6 0-38.2-9.5-49.4-27.8-12-19.5-13.3-40.7-8.2-62.6 7.8-33.8 30.1-55.2 38.6-64.3-18.7-6.2-33 1.7-46.4 13.9.8-13.9 4.3-26.2 11.8-37.3-24.3 10.6-45.9 25-64.8 43.9-.3-5.8 5.4-43.7 5.6-44.7.3-2.7-.6-5.3-3-7.4-24.2 24.7-44.5 51.8-56.1 84.6 7.4-5.9 14.9-11.4 23.6-16.2-8.3 22.3-19.6 52.8-7.8 101.1 4.6 19 11.9 36.8 24.1 52.3 2.9 3.7 6.3 6.9 9.5 10.3.2-.2.4-.3.6-.5-1.4-7-2.2-14.1-1.5-21.9 2.2 3.2 3.9 6 5.9 8.6 12.6 16 28.7 27.4 47.2 35.6 25 11.3 51.1 13.3 77.9 8.6 54.9-9.7 90.7-48.6 116-98.8 1-1.8.6-2.9-.9-4.2zm172-46.4c-9.5-3.1-22.2-4.2-28.7-2.9 9.9 4 14.1 6.6 18.8 12 12.6 14.4 10.4 34.7-5.4 45.6-11.7 8.1-24.9 10.5-38.9 9.1-1.2-.1-2.3-.4-3-.6 2.8-3.7 6-7 8.1-10.8 9.4-16.8 5.4-42.1-8.7-56.1-2.1-2.1-4.6-3.9-7-5.9-.3 1.3-.1 2.1.1 2.8 4.2 16.6-8.1 32.4-24.8 31.8-7.6-.3-13.9-3.8-19.6-8.5-19.5-16.1-39.1-32.1-58.5-48.3-5.9-4.9-12.5-8.1-20.1-8.7-4.6-.4-9.3-.6-13.9-.9-5.9-.4-8.8-2.8-10.4-8.4-.9-3.4-1.5-6.8-2.2-10.2-1.5-8.1-6.2-13-14.3-14.2-4.4-.7-8.9-1-13.3-1.5-13-1.4-19.8-7.4-22.6-20.3-5 11-1.6 22.4 7.3 29.9 4.5 3.8 9.3 7.3 13.8 11.2 4.6 3.8 7.4 8.7 7.9 14.8.4 4.7.8 9.5 1.8 14.1 2.2 10.6 8.9 18.4 17 25.1 16.5 13.7 33 27.3 49.5 41.1 17.9 15 13.9 32.8 13 56-.9 22.9 12.2 42.9 33.5 51.2 1 .4 2 .6 3.6 1.1-15.7-18.2-10.1-44.1.7-52.3.3 2.2.4 4.3.9 6.4 9.4 44.1 45.4 64.2 85 56.9 16-2.9 30.6-8.9 42.9-19.8 2-1.8 3.7-4.1 5.9-6.5-19.3 4.6-35.8.1-50.9-10.6.7-.3 1.3-.3 1.9-.3 21.3 1.8 40.6-3.4 57-17.4 19.5-16.6 26.6-42.9 17.4-66-8.3-20.1-23.6-32.3-43.8-38.9zM99.4 179.3c-5.3-9.2-13.2-15.6-22.1-21.3 13.7-.5 26.6.2 39.6 3.7-7-12.2-8.5-24.7-5-38.7 5.3 11.9 13.7 20.1 23.6 26.8 19.7 13.2 35.7 19.6 46.7 30.2 3.4 3.3 6.3 7.1 9.6 10.9-.8-2.1-1.4-4.1-2.2-6-5-10.6-13-18.6-22.6-25-1.8-1.2-2.8-2.5-3.4-4.5-3.3-12.5-3-25.1-.7-37.6 1-5.5 2.8-10.9 4.5-16.3.8-2.4 2.3-4.6 4-6.6.6 6.9 0 25.5 19.6 46 10.8 11.3 22.4 21.9 33.9 32.7 9 8.5 18.3 16.7 25.5 26.8 1.1 1.6 2.2 3.3 3.8 4.7-5-13-14.2-24.1-24.2-33.8-9.6-9.3-19.4-18.4-29.2-27.4-3.3-3-4.6-6.7-5.1-10.9-1.2-10.4 0-20.6 4.3-30.2.5-1 1.1-2 1.9-3.3.5 4.2.6 7.9 1.4 11.6 4.8 23.1 20.4 36.3 49.3 63.5 10 9.4 19.3 19.2 25.6 31.6 4.8 9.3 7.3 19 5.7 29.6-.1.6.5 1.7 1.1 2 6.2 2.6 10 6.9 9.7 14.3 7.7-2.6 12.5-8 16.4-14.5 4.2 20.2-9.1 50.3-27.2 58.7.4-4.5 5-23.4-16.5-27.7-6.8-1.3-12.8-1.3-22.9-2.1 4.7-9 10.4-20.6.5-22.4-24.9-4.6-52.8 1.9-57.8 4.6 8.2.4 16.3 1 23.5 3.3-2 6.5-4 12.7-5.8 18.9-1.9 6.5 2.1 14.6 9.3 9.6 1.2-.9 2.3-1.9 3.3-2.7-3.1 17.9-2.9 15.9-2.8 18.3.3 10.2 9.5 7.8 15.7 7.3-2.5 11.8-29.5 27.3-45.4 25.8 7-4.7 12.7-10.3 15.9-17.9-6.5.8-12.9 1.6-19.2 2.4l-.3-.9c4.7-3.4 8-7.8 10.2-13.1 8.7-21.1-3.6-38-25-39.9-9.1-.8-17.8.8-25.9 5.5 6.2-15.6 17.2-26.6 32.6-34.5-15.2-4.3-8.9-2.7-24.6-6.3 14.6-9.3 30.2-13.2 46.5-14.6-5.2-3.2-48.1-3.6-70.2 20.9 7.9 1.4 15.5 2.8 23.2 4.2-23.8 7-44 19.7-62.4 35.6 1.1-4.8 2.7-9.5 3.3-14.3.6-4.5.8-9.2.1-13.6-1.5-9.4-8.9-15.1-19.7-16.3-7.9-.9-15.6.1-23.3 1.3-.9.1-1.7.3-2.9 0 15.8-14.8 36-21.7 53.1-33.5 6-4.5 6.8-8.2 3-14.9zm128.4 26.8c3.3 16 12.6 25.5 23.8 24.3-4.6-11.3-12.1-19.5-23.8-24.3z"],"d-and-d-beyond":[640,512,[],"f6ca","M313.8 241.5c13.8 0 21-10.1 24.8-17.9-1-1.1-5-4.2-7.4-6.6-2.4 4.3-8.2 10.7-13.9 10.7-10.2 0-15.4-14.7-3.2-26.6-.5-.2-4.3-1.8-8 2.4 0-3 1-5.1 2.1-6.6-3.5 1.3-9.8 5.6-11.4 7.9.2-5.8 1.6-7.5.6-9l-.2-.2s-8.5 5.6-9.3 14.7c0 0 1.1-1.6 2.1-1.9.6-.3 1.3 0 .6 1.9-.2.6-5.8 15.7 5.1 26-.6-1.6-1.9-7.6 2.4-1.9-.3.1 5.8 7.1 15.7 7.1zm52.4-21.1c0-4-4.9-4.4-5.6-4.5 2 3.9.9 7.5.2 9 2.5-.4 5.4-1.6 5.4-4.5zm10.3 5.2c0-6.4-6.2-11.4-13.5-10.7 8 1.3 5.6 13.8-5 11.4 3.7-2.6 3.2-9.9-1.3-12.5 1.4 4.2-3 8.2-7.4 4.6-2.4-1.9-8-6.6-10.6-8.6-2.4-2.1-5.5-1-6.6-1.8-1.3-1.1-.5-3.8-2.2-5-1.6-.8-3-.3-4.8-1-1.6-.6-2.7-1.9-2.6-3.5-2.5 4.4 3.4 6.3 4.5 8.5 1 1.9-.8 4.8 4 8.5 14.8 11.6 9.1 8 10.4 18.1.6 4.3 4.2 6.7 6.4 7.4-2.1-1.9-2.9-6.4 0-9.3 0 13.9 19.2 13.3 23.1 6.4-2.4 1.1-7-.2-9-1.9 7.7 1 14.2-4.1 14.6-10.6zm-39.4-18.4c2 .8 1.6.7 6.4 4.5 10.2-24.5 21.7-15.7 22-15.5 2.2-1.9 9.8-3.8 13.8-2.7-2.4-2.7-7.5-6.2-13.3-6.2-4.7 0-7.4 2.2-8 1.3-.8-1.4 3.2-3.4 3.2-3.4-5.4.2-9.6 6.7-11.2 5.9-1.1-.5 1.4-3.7 1.4-3.7-5.1 2.9-9.3 9.1-10.2 13 4.6-5.8 13.8-9.8 19.7-9-10.5.5-19.5 9.7-23.8 15.8zm242.5 51.9c-20.7 0-40 1.3-50.3 2.1l7.4 8.2v77.2l-7.4 8.2c10.4.8 30.9 2.1 51.6 2.1 42.1 0 59.1-20.7 59.1-48.9 0-29.3-23.2-48.9-60.4-48.9zm-15.1 75.6v-53.3c30.1-3.3 46.8 3.8 46.8 26.3 0 25.6-21.4 30.2-46.8 27zM301.6 181c-1-3.4-.2-6.9 1.1-9.4 1 3 2.6 6.4 7.5 9-.5-2.4-.2-5.6.5-8-1.4-5.4 2.1-9.9 6.4-9.9 6.9 0 8.5 8.8 4.7 14.4 2.1 3.2 5.5 5.6 7.7 7.8 3.2-3.7 5.5-9.5 5.5-13.8 0-8.2-5.5-15.9-16.7-16.5-20-.9-20.2 16.6-20 18.9.5 5.2 3.4 7.8 3.3 7.5zm-.4 6c-.5 1.8-7 3.7-10.2 6.9 4.8-1 7-.2 7.8 1.8.5 1.4-.2 3.4-.5 5.6 1.6-1.8 7-5.5 11-6.2-1-.3-3.4-.8-4.3-.8 2.9-3.4 9.3-4.5 12.8-3.7-2.2-.2-6.7 1.1-8.5 2.6 1.6.3 3 .6 4.3 1.1-2.1.8-4.8 3.4-5.8 6.1 7-5 13.1 5.2 7 8.2.8.2 2.7 0 3.5-.5-.3 1.1-1.9 3-3 3.4 2.9 0 7-1.9 8.2-4.6 0 0-1.8.6-2.6-.2s.3-4.3.3-4.3c-2.3 2.9-3.4-1.3-1.3-4.2-1-.3-3.5-.6-4.6-.5 3.2-1.1 10.4-1.8 11.2-.3.6 1.1-1 3.4-1 3.4 4-.5 8.3 1.1 6.7 5.1 2.9-1.4 5.5-5.9 4.8-10.4-.3 1-1.6 2.4-2.9 2.7.2-1.4-1-2.2-1.9-2.6 1.7-9.6-14.6-14.2-14.1-23.9-1 1.3-1.8 5-.8 7.1 2.7 3.2 8.7 6.7 10.1 12.2-2.6-6.4-15.1-11.4-14.6-20.2-1.6 1.6-2.6 7.8-1.3 11 2.4 1.4 4.5 3.8 4.8 6.1-2.2-5.1-11.4-6.1-13.9-12.2-.6 2.2-.3 5 1 6.7 0 0-2.2-.8-7-.6 1.7.6 5.1 3.5 4.8 5.2zm25.9 7.4c-2.7 0-3.5-2.1-4.2-4.3 3.3 1.3 4.2 4.3 4.2 4.3zm38.9 3.7l-1-.6c-1.1-1-2.9-1.4-4.7-1.4-2.9 0-5.8 1.3-7.5 3.4-.8.8-1.4 1.8-2.1 2.6v15.7c3.5 2.6 7.1-2.9 3-7.2 1.5.3 4.6 2.7 5.1 3.2 0 0 2.6-.5 5-.5 2.1 0 3.9.3 5.6 1.1V196c-1.1.5-2.2 1-2.7 1.4zM79.9 305.9c17.2-4.6 16.2-18 16.2-19.9 0-20.6-24.1-25-37-25H3l8.3 8.6v29.5H0l11.4 14.6V346L3 354.6c61.7 0 73.8 1.5 86.4-5.9 6.7-4 9.9-9.8 9.9-17.6 0-5.1 2.6-18.8-19.4-25.2zm-41.3-27.5c20 0 29.6-.8 29.6 9.1v3c0 12.1-19 8.8-29.6 8.8zm0 59.2V315c12.2 0 32.7-2.3 32.7 8.8v4.5h.2c0 11.2-12.5 9.3-32.9 9.3zm101.2-19.3l23.1.2v-.2l14.1-21.2h-37.2v-14.9h52.4l-14.1-21v-.2l-73.5.2 7.4 8.2v77.1l-7.4 8.2h81.2l14.1-21.2-60.1.2zm214.7-60.1c-73.9 0-77.5 99.3-.3 99.3 77.9 0 74.1-99.3.3-99.3zm-.3 77.5c-37.4 0-36.9-55.3.2-55.3 36.8.1 38.8 55.3-.2 55.3zm-91.3-8.3l44.1-66.2h-41.7l6.1 7.2-20.5 37.2h-.3l-21-37.2 6.4-7.2h-44.9l44.1 65.8.2 19.4-7.7 8.2h42.6l-7.2-8.2zm-28.4-151.3c1.6 1.3 2.9 2.4 2.9 6.6v38.8c0 4.2-.8 5.3-2.7 6.4-.1.1-7.5 4.5-7.9 4.6h35.1c10 0 17.4-1.5 26-8.6-.6-5 .2-9.5.8-12 0-.2-1.8 1.4-2.7 3.5 0-5.7 1.6-15.4 9.6-20.5-.1 0-3.7-.8-9 1.1 2-3.1 10-7.9 10.4-7.9-8.2-26-38-22.9-32.2-22.9-30.9 0-32.6.3-39.9-4 .1.8.5 8.2 9.6 14.9zm21.5 5.5c4.6 0 23.1-3.3 23.1 17.3 0 20.7-18.4 17.3-23.1 17.3zm228.9 79.6l7 8.3V312h-.3c-5.4-14.4-42.3-41.5-45.2-50.9h-31.6l7.4 8.5v76.9l-7.2 8.3h39l-7.4-8.2v-47.4h.3c3.7 10.6 44.5 42.9 48.5 55.6h21.3v-85.2l7.4-8.3zm-106.7-96.1c-32.2 0-32.8.2-39.9-4 .1.7.5 8.3 9.6 14.9 3.1 2 2.9 4.3 2.9 9.5 1.8-1.1 3.8-2.2 6.1-3-1.1 1.1-2.7 2.7-3.5 4.5 1-1.1 7.5-5.1 14.6-3.5-1.6.3-4 1.1-6.1 2.9.1 0 2.1-1.1 7.5-.3v-4.3c4.7 0 23.1-3.4 23.1 17.3 0 20.5-18.5 17.3-19.7 17.3 5.7 4.4 5.8 12 2.2 16.3h.3c33.4 0 36.7-27.3 36.7-34 0-3.8-1.1-32-33.8-33.6z"],dailymotion:[448,512,[],"f952","M298.93,267a48.4,48.4,0,0,0-24.36-6.21q-19.83,0-33.44,13.27t-13.61,33.42q0,21.16,13.28,34.6t33.43,13.44q20.5,0,34.11-13.78T322,307.47A47.13,47.13,0,0,0,315.9,284,44.13,44.13,0,0,0,298.93,267ZM0,32V480H448V32ZM374.71,405.26h-53.1V381.37h-.67q-15.79,26.2-55.78,26.2-27.56,0-48.89-13.1a88.29,88.29,0,0,1-32.94-35.77q-11.6-22.68-11.59-50.89,0-27.56,11.76-50.22a89.9,89.9,0,0,1,32.93-35.78q21.18-13.09,47.72-13.1a80.87,80.87,0,0,1,29.74,5.21q13.28,5.21,25,17V153l55.79-12.09Z"],dashcube:[448,512,[],"f210","M326.6 104H110.4c-51.1 0-91.2 43.3-91.2 93.5V427c0 50.5 40.1 85 91.2 85h227.2c51.1 0 91.2-34.5 91.2-85V0L326.6 104zM153.9 416.5c-17.7 0-32.4-15.1-32.4-32.8V240.8c0-17.7 14.7-32.5 32.4-32.5h140.7c17.7 0 32 14.8 32 32.5v123.5l51.1 52.3H153.9z"],delicious:[448,512,[],"f1a5","M446.5 68c-.4-1.5-.9-3-1.4-4.5-.9-2.5-2-4.8-3.3-7.1-1.4-2.4-3-4.8-4.7-6.9-2.1-2.5-4.4-4.8-6.9-6.8-1.1-.9-2.2-1.7-3.3-2.5-1.3-.9-2.6-1.7-4-2.4-1.8-1-3.6-1.8-5.5-2.5-1.7-.7-3.5-1.3-5.4-1.7-3.8-1-7.9-1.5-12-1.5H48C21.5 32 0 53.5 0 80v352c0 4.1.5 8.2 1.5 12 2 7.7 5.8 14.6 11 20.3 1 1.1 2.1 2.2 3.3 3.3 5.7 5.2 12.6 9 20.3 11 3.8 1 7.9 1.5 12 1.5h352c26.5 0 48-21.5 48-48V80c-.1-4.1-.6-8.2-1.6-12zM416 432c0 8.8-7.2 16-16 16H224V256H32V80c0-8.8 7.2-16 16-16h176v192h192z"],deploydog:[512,512,[],"f38e","M382.2 136h51.7v239.6h-51.7v-20.7c-19.8 24.8-52.8 24.1-73.8 14.7-26.2-11.7-44.3-38.1-44.3-71.8 0-29.8 14.8-57.9 43.3-70.8 20.2-9.1 52.7-10.6 74.8 12.9V136zm-64.7 161.8c0 18.2 13.6 33.5 33.2 33.5 19.8 0 33.2-16.4 33.2-32.9 0-17.1-13.7-33.2-33.2-33.2-19.6 0-33.2 16.4-33.2 32.6zM188.5 136h51.7v239.6h-51.7v-20.7c-19.8 24.8-52.8 24.1-73.8 14.7-26.2-11.7-44.3-38.1-44.3-71.8 0-29.8 14.8-57.9 43.3-70.8 20.2-9.1 52.7-10.6 74.8 12.9V136zm-64.7 161.8c0 18.2 13.6 33.5 33.2 33.5 19.8 0 33.2-16.4 33.2-32.9 0-17.1-13.7-33.2-33.2-33.2-19.7 0-33.2 16.4-33.2 32.6zM448 96c17.5 0 32 14.4 32 32v256c0 17.5-14.4 32-32 32H64c-17.5 0-32-14.4-32-32V128c0-17.5 14.4-32 32-32h384m0-32H64C28.8 64 0 92.8 0 128v256c0 35.2 28.8 64 64 64h384c35.2 0 64-28.8 64-64V128c0-35.2-28.8-64-64-64z"],deskpro:[480,512,[],"f38f","M205.9 512l31.1-38.4c12.3-.2 25.6-1.4 36.5-6.6 38.9-18.6 38.4-61.9 38.3-63.8-.1-5-.8-4.4-28.9-37.4H362c-.2 50.1-7.3 68.5-10.2 75.7-9.4 23.7-43.9 62.8-95.2 69.4-8.7 1.1-32.8 1.2-50.7 1.1zm200.4-167.7c38.6 0 58.5-13.6 73.7-30.9l-175.5-.3-17.4 31.3 119.2-.1zm-43.6-223.9v168.3h-73.5l-32.7 55.5H250c-52.3 0-58.1-56.5-58.3-58.9-1.2-13.2-21.3-11.6-20.1 1.8 1.4 15.8 8.8 40 26.4 57.1h-91c-25.5 0-110.8-26.8-107-114V16.9C0 .9 9.7.3 15 .1h82c.2 0 .3.1.5.1 4.3-.4 50.1-2.1 50.1 43.7 0 13.3 20.2 13.4 20.2 0 0-18.2-5.5-32.8-15.8-43.7h84.2c108.7-.4 126.5 79.4 126.5 120.2zm-132.5 56l64 29.3c13.3-45.5-42.2-71.7-64-29.3z"],dev:[448,512,[],"f6cc","M120.12 208.29c-3.88-2.9-7.77-4.35-11.65-4.35H91.03v104.47h17.45c3.88 0 7.77-1.45 11.65-4.35 3.88-2.9 5.82-7.25 5.82-13.06v-69.65c-.01-5.8-1.96-10.16-5.83-13.06zM404.1 32H43.9C19.7 32 .06 51.59 0 75.8v360.4C.06 460.41 19.7 480 43.9 480h360.2c24.21 0 43.84-19.59 43.9-43.8V75.8c-.06-24.21-19.7-43.8-43.9-43.8zM154.2 291.19c0 18.81-11.61 47.31-48.36 47.25h-46.4V172.98h47.38c35.44 0 47.36 28.46 47.37 47.28l.01 70.93zm100.68-88.66H201.6v38.42h32.57v29.57H201.6v38.41h53.29v29.57h-62.18c-11.16.29-20.44-8.53-20.72-19.69V193.7c-.27-11.15 8.56-20.41 19.71-20.69h63.19l-.01 29.52zm103.64 115.29c-13.2 30.75-36.85 24.63-47.44 0l-38.53-144.8h32.57l29.71 113.72 29.57-113.72h32.58l-38.46 144.8z"],deviantart:[320,512,[],"f1bd","M320 93.2l-98.2 179.1 7.4 9.5H320v127.7H159.1l-13.5 9.2-43.7 84c-.3 0-8.6 8.6-9.2 9.2H0v-93.2l93.2-179.4-7.4-9.2H0V102.5h156l13.5-9.2 43.7-84c.3 0 8.6-8.6 9.2-9.2H320v93.1z"],dhl:[640,512,[],"f790","M238 301.2h58.7L319 271h-58.7L238 301.2zM0 282.9v6.4h81.8l4.7-6.4H0zM172.9 271c-8.7 0-6-3.6-4.6-5.5 2.8-3.8 7.6-10.4 10.4-14.1 2.8-3.7 2.8-5.9-2.8-5.9h-51l-41.1 55.8h100.1c33.1 0 51.5-22.5 57.2-30.3h-68.2zm317.5-6.9l39.3-53.4h-62.2l-39.3 53.4h62.2zM95.3 271H0v6.4h90.6l4.7-6.4zm111-26.6c-2.8 3.8-7.5 10.4-10.3 14.2-1.4 2-4.1 5.5 4.6 5.5h45.6s7.3-10 13.5-18.4c8.4-11.4.7-35-29.2-35H112.6l-20.4 27.8h111.4c5.6 0 5.5 2.2 2.7 5.9zM0 301.2h73.1l4.7-6.4H0v6.4zm323 0h58.7L404 271h-58.7c-.1 0-22.3 30.2-22.3 30.2zm222 .1h95v-6.4h-90.3l-4.7 6.4zm22.3-30.3l-4.7 6.4H640V271h-72.7zm-13.5 18.3H640v-6.4h-81.5l-4.7 6.4zm-164.2-78.6l-22.5 30.6h-26.2l22.5-30.6h-58.7l-39.3 53.4H409l39.3-53.4h-58.7zm33.5 60.3s-4.3 5.9-6.4 8.7c-7.4 10-.9 21.6 23.2 21.6h94.3l22.3-30.3H423.1z"],diaspora:[512,512,[],"f791","M251.64 354.55c-1.4 0-88 119.9-88.7 119.9S76.34 414 76 413.25s86.6-125.7 86.6-127.4c0-2.2-129.6-44-137.6-47.1-1.3-.5 31.4-101.8 31.7-102.1.6-.7 144.4 47 145.5 47 .4 0 .9-.6 1-1.3.4-2 1-148.6 1.7-149.6.8-1.2 104.5-.7 105.1-.3 1.5 1 3.5 156.1 6.1 156.1 1.4 0 138.7-47 139.3-46.3.8.9 31.9 102.2 31.5 102.6-.9.9-140.2 47.1-140.6 48.8-.3 1.4 82.8 122.1 82.5 122.9s-85.5 63.5-86.3 63.5c-1-.2-89-125.5-90.9-125.5z"],digg:[512,512,[],"f1a6","M81.7 172.3H0v174.4h132.7V96h-51v76.3zm0 133.4H50.9v-92.3h30.8v92.3zm297.2-133.4v174.4h81.8v28.5h-81.8V416H512V172.3H378.9zm81.8 133.4h-30.8v-92.3h30.8v92.3zm-235.6 41h82.1v28.5h-82.1V416h133.3V172.3H225.1v174.4zm51.2-133.3h30.8v92.3h-30.8v-92.3zM153.3 96h51.3v51h-51.3V96zm0 76.3h51.3v174.4h-51.3V172.3z"],"digital-ocean":[512,512,[],"f391","M87 481.8h73.7v-73.6H87zM25.4 346.6v61.6H87v-61.6zm466.2-169.7c-23-74.2-82.4-133.3-156.6-156.6C164.9-32.8 8 93.7 8 255.9h95.8c0-101.8 101-180.5 208.1-141.7 39.7 14.3 71.5 46.1 85.8 85.7 39.1 107-39.7 207.8-141.4 208v.3h-.3V504c162.6 0 288.8-156.8 235.6-327.1zm-235.3 231v-95.3h-95.6v95.6H256v-.3z"],discord:[448,512,[],"f392","M297.216 243.2c0 15.616-11.52 28.416-26.112 28.416-14.336 0-26.112-12.8-26.112-28.416s11.52-28.416 26.112-28.416c14.592 0 26.112 12.8 26.112 28.416zm-119.552-28.416c-14.592 0-26.112 12.8-26.112 28.416s11.776 28.416 26.112 28.416c14.592 0 26.112-12.8 26.112-28.416.256-15.616-11.52-28.416-26.112-28.416zM448 52.736V512c-64.494-56.994-43.868-38.128-118.784-107.776l13.568 47.36H52.48C23.552 451.584 0 428.032 0 398.848V52.736C0 23.552 23.552 0 52.48 0h343.04C424.448 0 448 23.552 448 52.736zm-72.96 242.688c0-82.432-36.864-149.248-36.864-149.248-36.864-27.648-71.936-26.88-71.936-26.88l-3.584 4.096c43.52 13.312 63.744 32.512 63.744 32.512-60.811-33.329-132.244-33.335-191.232-7.424-9.472 4.352-15.104 7.424-15.104 7.424s21.248-20.224 67.328-33.536l-2.56-3.072s-35.072-.768-71.936 26.88c0 0-36.864 66.816-36.864 149.248 0 0 21.504 37.12 78.08 38.912 0 0 9.472-11.52 17.152-21.248-32.512-9.728-44.8-30.208-44.8-30.208 3.766 2.636 9.976 6.053 10.496 6.4 43.21 24.198 104.588 32.126 159.744 8.96 8.96-3.328 18.944-8.192 29.44-15.104 0 0-12.8 20.992-46.336 30.464 7.68 9.728 16.896 20.736 16.896 20.736 56.576-1.792 78.336-38.912 78.336-38.912z"],discourse:[448,512,[],"f393","M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z"],dochub:[416,512,[],"f394","M397.9 160H256V19.6L397.9 160zM304 192v130c0 66.8-36.5 100.1-113.3 100.1H96V84.8h94.7c12 0 23.1.8 33.1 2.5v-84C212.9 1.1 201.4 0 189.2 0H0v512h189.2C329.7 512 400 447.4 400 318.1V192h-96z"],docker:[640,512,[],"f395","M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z"],draft2digital:[480,512,[],"f396","M480 398.1l-144-82.2v64.7h-91.3c30.8-35 81.8-95.9 111.8-149.3 35.2-62.6 16.1-123.4-12.8-153.3-4.4-4.6-62.2-62.9-166-41.2-59.1 12.4-89.4 43.4-104.3 67.3-13.1 20.9-17 39.8-18.2 47.7-5.5 33 19.4 67.1 56.7 67.1 31.7 0 57.3-25.7 57.3-57.4 0-27.1-19.7-52.1-48-56.8 1.8-7.3 17.7-21.1 26.3-24.7 41.1-17.3 78 5.2 83.3 33.5 8.3 44.3-37.1 90.4-69.7 127.6C84.5 328.1 18.3 396.8 0 415.9l336-.1V480zM369.9 371l47.1 27.2-47.1 27.2zM134.2 161.4c0 12.4-10 22.4-22.4 22.4s-22.4-10-22.4-22.4 10-22.4 22.4-22.4 22.4 10.1 22.4 22.4zM82.5 380.5c25.6-27.4 97.7-104.7 150.8-169.9 35.1-43.1 40.3-82.4 28.4-112.7-7.4-18.8-17.5-30.2-24.3-35.7 45.3 2.1 68 23.4 82.2 38.3 0 0 42.4 48.2 5.8 113.3-37 65.9-110.9 147.5-128.5 166.7z"],dribbble:[512,512,[],"f17d","M256 8C119.252 8 8 119.252 8 256s111.252 248 248 248 248-111.252 248-248S392.748 8 256 8zm163.97 114.366c29.503 36.046 47.369 81.957 47.835 131.955-6.984-1.477-77.018-15.682-147.502-6.818-5.752-14.041-11.181-26.393-18.617-41.614 78.321-31.977 113.818-77.482 118.284-83.523zM396.421 97.87c-3.81 5.427-35.697 48.286-111.021 76.519-34.712-63.776-73.185-116.168-79.04-124.008 67.176-16.193 137.966 1.27 190.061 47.489zm-230.48-33.25c5.585 7.659 43.438 60.116 78.537 122.509-99.087 26.313-186.36 25.934-195.834 25.809C62.38 147.205 106.678 92.573 165.941 64.62zM44.17 256.323c0-2.166.043-4.322.108-6.473 9.268.19 111.92 1.513 217.706-30.146 6.064 11.868 11.857 23.915 17.174 35.949-76.599 21.575-146.194 83.527-180.531 142.306C64.794 360.405 44.17 310.73 44.17 256.323zm81.807 167.113c22.127-45.233 82.178-103.622 167.579-132.756 29.74 77.283 42.039 142.053 45.189 160.638-68.112 29.013-150.015 21.053-212.768-27.882zm248.38 8.489c-2.171-12.886-13.446-74.897-41.152-151.033 66.38-10.626 124.7 6.768 131.947 9.055-9.442 58.941-43.273 109.844-90.795 141.978z"],"dribbble-square":[448,512,[],"f397","M90.2 228.2c8.9-42.4 37.4-77.7 75.7-95.7 3.6 4.9 28 38.8 50.7 79-64 17-120.3 16.8-126.4 16.7zM314.6 154c-33.6-29.8-79.3-41.1-122.6-30.6 3.8 5.1 28.6 38.9 51 80 48.6-18.3 69.1-45.9 71.6-49.4zM140.1 364c40.5 31.6 93.3 36.7 137.3 18-2-12-10-53.8-29.2-103.6-55.1 18.8-93.8 56.4-108.1 85.6zm98.8-108.2c-3.4-7.8-7.2-15.5-11.1-23.2C159.6 253 93.4 252.2 87.4 252c0 1.4-.1 2.8-.1 4.2 0 35.1 13.3 67.1 35.1 91.4 22.2-37.9 67.1-77.9 116.5-91.8zm34.9 16.3c17.9 49.1 25.1 89.1 26.5 97.4 30.7-20.7 52.5-53.6 58.6-91.6-4.6-1.5-42.3-12.7-85.1-5.8zm-20.3-48.4c4.8 9.8 8.3 17.8 12 26.8 45.5-5.7 90.7 3.4 95.2 4.4-.3-32.3-11.8-61.9-30.9-85.1-2.9 3.9-25.8 33.2-76.3 53.9zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-64 176c0-88.2-71.8-160-160-160S64 167.8 64 256s71.8 160 160 160 160-71.8 160-160z"],dropbox:[528,512,[],"f16b","M264.4 116.3l-132 84.3 132 84.3-132 84.3L0 284.1l132.3-84.3L0 116.3 132.3 32l132.1 84.3zM131.6 395.7l132-84.3 132 84.3-132 84.3-132-84.3zm132.8-111.6l132-84.3-132-83.6L395.7 32 528 116.3l-132.3 84.3L528 284.8l-132.3 84.3-131.3-85z"],drupal:[448,512,[],"f1a9","M319.5 114.7c-22.2-14-43.5-19.5-64.7-33.5-13-8.8-31.3-30-46.5-48.3-2.7 29.3-11.5 41.2-22 49.5-21.3 17-34.8 22.2-53.5 32.3C117 123 32 181.5 32 290.5 32 399.7 123.8 480 225.8 480 327.5 480 416 406 416 294c0-112.3-83-171-96.5-179.3zm2.5 325.6c-20.1 20.1-90.1 28.7-116.7 4.2-4.8-4.8.3-12 6.5-12 0 0 17 13.3 51.5 13.3 27 0 46-7.7 54.5-14 6.1-4.6 8.4 4.3 4.2 8.5zm-54.5-52.6c8.7-3.6 29-3.8 36.8 1.3 4.1 2.8 16.1 18.8 6.2 23.7-8.4 4.2-1.2-15.7-26.5-15.7-14.7 0-19.5 5.2-26.7 11-7 6-9.8 8-12.2 4.7-6-8.2 15.9-22.3 22.4-25zM360 405c-15.2-1-45.5-48.8-65-49.5-30.9-.9-104.1 80.7-161.3 42-38.8-26.6-14.6-104.8 51.8-105.2 49.5-.5 83.8 49 108.5 48.5 21.3-.3 61.8-41.8 81.8-41.8 48.7 0 23.3 109.3-15.8 106z"],dyalog:[416,512,[],"f399","M0 32v119.2h64V96h107.2C284.6 96 352 176.2 352 255.9 352 332 293.4 416 171.2 416H0v64h171.2C331.9 480 416 367.3 416 255.9c0-58.7-22.1-113.4-62.3-154.3C308.9 56 245.7 32 171.2 32H0z"],earlybirds:[480,512,[],"f39a","M313.2 47.5c1.2-13 21.3-14 36.6-8.7.9.3 26.2 9.7 19 15.2-27.9-7.4-56.4 18.2-55.6-6.5zm-201 6.9c30.7-8.1 62 20 61.1-7.1-1.3-14.2-23.4-15.3-40.2-9.6-1 .3-28.7 10.5-20.9 16.7zM319.4 160c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-159.7 0c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm318.5 163.2c-9.9 24-40.7 11-63.9-1.2-13.5 69.1-58.1 111.4-126.3 124.2.3.9-2-.1 24 1 33.6 1.4 63.8-3.1 97.4-8-19.8-13.8-11.4-37.1-9.8-38.1 1.4-.9 14.7 1.7 21.6 11.5 8.6-12.5 28.4-14.8 30.2-13.6 1.6 1.1 6.6 20.9-6.9 34.6 4.7-.9 8.2-1.6 9.8-2.1 2.6-.8 17.7 11.3 3.1 13.3-14.3 2.3-22.6 5.1-47.1 10.8-45.9 10.7-85.9 11.8-117.7 12.8l1 11.6c3.8 18.1-23.4 24.3-27.6 6.2.8 17.9-27.1 21.8-28.4-1l-.5 5.3c-.7 18.4-28.4 17.9-28.3-.6-7.5 13.5-28.1 6.8-26.4-8.5l1.2-12.4c-36.7.9-59.7 3.1-61.8 3.1-20.9 0-20.9-31.6 0-31.6 2.4 0 27.7 1.3 63.2 2.8-61.1-15.5-103.7-55-114.9-118.2-25 12.8-57.5 26.8-68.2.8-10.5-25.4 21.5-42.6 66.8-73.4.7-6.6 1.6-13.3 2.7-19.8-14.4-19.6-11.6-36.3-16.1-60.4-16.8 2.4-23.2-9.1-23.6-23.1.3-7.3 2.1-14.9 2.4-15.4 1.1-1.8 10.1-2 12.7-2.6 6-31.7 50.6-33.2 90.9-34.5 19.7-21.8 45.2-41.5 80.9-48.3C203.3 29 215.2 8.5 216.2 8c1.7-.8 21.2 4.3 26.3 23.2 5.2-8.8 18.3-11.4 19.6-10.7 1.1.6 6.4 15-4.9 25.9 40.3 3.5 72.2 24.7 96 50.7 36.1 1.5 71.8 5.9 77.1 34 2.7.6 11.6.8 12.7 2.6.3.5 2.1 8.1 2.4 15.4-.5 13.9-6.8 25.4-23.6 23.1-3.2 17.3-2.7 32.9-8.7 47.7 2.4 11.7 4 23.8 4.8 36.4 37 25.4 70.3 42.5 60.3 66.9zM207.4 159.9c.9-44-37.9-42.2-78.6-40.3-21.7 1-38.9 1.9-45.5 13.9-11.4 20.9 5.9 92.9 23.2 101.2 9.8 4.7 73.4 7.9 86.3-7.1 8.2-9.4 15-49.4 14.6-67.7zm52 58.3c-4.3-12.4-6-30.1-15.3-32.7-2-.5-9-.5-11 0-10 2.8-10.8 22.1-17 37.2 15.4 0 19.3 9.7 23.7 9.7 4.3 0 6.3-11.3 19.6-14.2zm135.7-84.7c-6.6-12.1-24.8-12.9-46.5-13.9-40.2-1.9-78.2-3.8-77.3 40.3-.5 18.3 5 58.3 13.2 67.8 13 14.9 76.6 11.8 86.3 7.1 15.8-7.6 36.5-78.9 24.3-101.3z"],ebay:[640,512,[],"f4f4","M606 189.5l-54.8 109.9-54.9-109.9h-37.5l10.9 20.6c-11.5-19-35.9-26-63.3-26-31.8 0-67.9 8.7-71.5 43.1h33.7c1.4-13.8 15.7-21.8 35-21.8 26 0 41 9.6 41 33v3.4c-12.7 0-28 .1-41.7.4-42.4.9-69.6 10-76.7 34.4 1-5.2 1.5-10.6 1.5-16.2 0-52.1-39.7-76.2-75.4-76.2-21.3 0-43 5.5-58.7 24.2v-80.6h-32.1v169.5c0 10.3-.6 22.9-1.1 33.1h31.5c.7-6.3 1.1-12.9 1.1-19.5 13.6 16.6 35.4 24.9 58.7 24.9 36.9 0 64.9-21.9 73.3-54.2-.5 2.8-.7 5.8-.7 9 0 24.1 21.1 45 60.6 45 26.6 0 45.8-5.7 61.9-25.5 0 6.6.3 13.3 1.1 20.2h29.8c-.7-8.2-1-17.5-1-26.8v-65.6c0-9.3-1.7-17.2-4.8-23.8l61.5 116.1-28.5 54.1h35.9L640 189.5zM243.7 313.8c-29.6 0-50.2-21.5-50.2-53.8 0-32.4 20.6-53.8 50.2-53.8 29.8 0 50.2 21.4 50.2 53.8 0 32.3-20.4 53.8-50.2 53.8zm200.9-47.3c0 30-17.9 48.4-51.6 48.4-25.1 0-35-13.4-35-25.8 0-19.1 18.1-24.4 47.2-25.3 13.1-.5 27.6-.6 39.4-.6zm-411.9 1.6h128.8v-8.5c0-51.7-33.1-75.4-78.4-75.4-56.8 0-83 30.8-83 77.6 0 42.5 25.3 74 82.5 74 31.4 0 68-11.7 74.4-46.1h-33.1c-12 35.8-87.7 36.7-91.2-21.6zm95-21.4H33.3c6.9-56.6 92.1-54.7 94.4 0z"],edge:[512,512,[],"f282","M481.92,134.48C440.87,54.18,352.26,8,255.91,8,137.05,8,37.51,91.68,13.47,203.66c26-46.49,86.22-79.14,149.46-79.14,79.27,0,121.09,48.93,122.25,50.18,22,23.8,33,50.39,33,83.1,0,10.4-5.31,25.82-15.11,38.57-1.57,2-6.39,4.84-6.39,11,0,5.06,3.29,9.92,9.14,14,27.86,19.37,80.37,16.81,80.51,16.81A115.39,115.39,0,0,0,444.94,322a118.92,118.92,0,0,0,58.95-102.44C504.39,176.13,488.39,147.26,481.92,134.48ZM212.77,475.67a154.88,154.88,0,0,1-46.64-45c-32.94-47.42-34.24-95.6-20.1-136A155.5,155.5,0,0,1,203,215.75c59-45.2,94.84-5.65,99.06-1a80,80,0,0,0-4.89-10.14c-9.24-15.93-24-36.41-56.56-53.51-33.72-17.69-70.59-18.59-77.64-18.59-38.71,0-77.9,13-107.53,35.69C35.68,183.3,12.77,208.72,8.6,243c-1.08,12.31-2.75,62.8,23,118.27a248,248,0,0,0,248.3,141.61C241.78,496.26,214.05,476.24,212.77,475.67Zm250.72-98.33a7.76,7.76,0,0,0-7.92-.23,181.66,181.66,0,0,1-20.41,9.12,197.54,197.54,0,0,1-69.55,12.52c-91.67,0-171.52-63.06-171.52-144A61.12,61.12,0,0,1,200.61,228,168.72,168.72,0,0,0,161.85,278c-14.92,29.37-33,88.13,13.33,151.66,6.51,8.91,23,30,56,47.67,23.57,12.65,49,19.61,71.7,19.61,35.14,0,115.43-33.44,163-108.87A7.75,7.75,0,0,0,463.49,377.34Z"],elementor:[448,512,[],"f430","M425.6 32H22.4C10 32 0 42 0 54.4v403.2C0 470 10 480 22.4 480h403.2c12.4 0 22.4-10 22.4-22.4V54.4C448 42 438 32 425.6 32M164.3 355.5h-39.8v-199h39.8v199zm159.3 0H204.1v-39.8h119.5v39.8zm0-79.6H204.1v-39.8h119.5v39.8zm0-79.7H204.1v-39.8h119.5v39.8z"],ello:[496,512,[],"f5f1","M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm143.84 285.2C375.31 358.51 315.79 404.8 248 404.8s-127.31-46.29-143.84-111.6c-1.65-7.44 2.48-15.71 9.92-17.36 7.44-1.65 15.71 2.48 17.36 9.92 14.05 52.91 62 90.11 116.56 90.11s102.51-37.2 116.56-90.11c1.65-7.44 9.92-12.4 17.36-9.92 7.44 1.65 12.4 9.92 9.92 17.36z"],ember:[640,512,[],"f423","M639.9 254.6c-1.1-10.7-10.7-6.8-10.7-6.8s-15.6 12.1-29.3 10.7c-13.7-1.3-9.4-32-9.4-32s3-28.1-5.1-30.4c-8.1-2.4-18 7.3-18 7.3s-12.4 13.7-18.3 31.2l-1.6.5s1.9-30.6-.3-37.6c-1.6-3.5-16.4-3.2-18.8 3s-14.2 49.2-15 67.2c0 0-23.1 19.6-43.3 22.8s-25-9.4-25-9.4 54.8-15.3 52.9-59.1-44.2-27.6-49-24c-4.6 3.5-29.4 18.4-36.6 59.7-.2 1.4-.7 7.5-.7 7.5s-21.2 14.2-33 18c0 0 33-55.6-7.3-80.9-11.4-6.8-21.3-.5-27.2 5.3 13.6-17.3 46.4-64.2 36.9-105.2-5.8-24.4-18-27.1-29.2-23.1-17 6.7-23.5 16.7-23.5 16.7s-22 32-27.1 79.5-12.6 105.1-12.6 105.1-10.5 10.2-20.2 10.7-5.4-28.7-5.4-28.7 7.5-44.6 7-52.1-1.1-11.6-9.9-14.2c-8.9-2.7-18.5 8.6-18.5 8.6s-25.5 38.7-27.7 44.6l-1.3 2.4-1.3-1.6s18-52.7.8-53.5-28.5 18.8-28.5 18.8-19.6 32.8-20.4 36.5l-1.3-1.6s8.1-38.2 6.4-47.6c-1.6-9.4-10.5-7.5-10.5-7.5s-11.3-1.3-14.2 5.9-13.7 55.3-15 70.7c0 0-28.2 20.2-46.8 20.4-18.5.3-16.7-11.8-16.7-11.8s68-23.3 49.4-69.2c-8.3-11.8-18-15.5-31.7-15.3-13.7.3-30.3 8.6-41.3 33.3-5.3 11.8-6.8 23-7.8 31.5 0 0-12.3 2.4-18.8-2.9s-10 0-10 0-11.2 14-.1 18.3 28.1 6.1 28.1 6.1c1.6 7.5 6.2 19.5 19.6 29.7 20.2 15.3 58.8-1.3 58.8-1.3l15.9-8.8s.5 14.6 12.1 16.7 16.4 1 36.5-47.9c11.8-25 12.6-23.6 12.6-23.6l1.3-.3s-9.1 46.8-5.6 59.7C187.7 319.4 203 318 203 318s8.3 2.4 15-21.2 19.6-49.9 19.6-49.9h1.6s-5.6 48.1 3 63.7 30.9 5.3 30.9 5.3 15.6-7.8 18-10.2c0 0 18.5 15.8 44.6 12.9 58.3-11.5 79.1-25.9 79.1-25.9s10 24.4 41.1 26.7c35.5 2.7 54.8-18.6 54.8-18.6s-.3 13.5 12.1 18.6 20.7-22.8 20.7-22.8l20.7-57.2h1.9s1.1 37.3 21.5 43.2 47-13.7 47-13.7 6.4-3.5 5.3-14.3zm-578 5.3c.8-32 21.8-45.9 29-39 7.3 7 4.6 22-9.1 31.4-13.7 9.5-19.9 7.6-19.9 7.6zm272.8-123.8s19.1-49.7 23.6-25.5-40 96.2-40 96.2c.5-16.2 16.4-70.7 16.4-70.7zm22.8 138.4c-12.6 33-43.3 19.6-43.3 19.6s-3.5-11.8 6.4-44.9 33.3-20.2 33.3-20.2 16.2 12.4 3.6 45.5zm84.6-14.6s-3-10.5 8.1-30.6c11-20.2 19.6-9.1 19.6-9.1s9.4 10.2-1.3 25.5-26.4 14.2-26.4 14.2z"],empire:[496,512,[],"f1d1","M287.6 54.2c-10.8-2.2-22.1-3.3-33.5-3.6V32.4c78.1 2.2 146.1 44 184.6 106.6l-15.8 9.1c-6.1-9.7-12.7-18.8-20.2-27.1l-18 15.5c-26-29.6-61.4-50.7-101.9-58.4l4.8-23.9zM53.4 322.4l23-7.7c-6.4-18.3-10-38.2-10-58.7s3.3-40.4 9.7-58.7l-22.7-7.7c3.6-10.8 8.3-21.3 13.6-31l-15.8-9.1C34 181 24.1 217.5 24.1 256s10 75 27.1 106.6l15.8-9.1c-5.3-10-9.7-20.3-13.6-31.1zM213.1 434c-40.4-8-75.8-29.1-101.9-58.7l-18 15.8c-7.5-8.6-14.4-17.7-20.2-27.4l-16 9.4c38.5 62.3 106.8 104.3 184.9 106.6v-18.3c-11.3-.3-22.7-1.7-33.5-3.6l4.7-23.8zM93.3 120.9l18 15.5c26-29.6 61.4-50.7 101.9-58.4l-4.7-23.8c10.8-2.2 22.1-3.3 33.5-3.6V32.4C163.9 34.6 95.9 76.4 57.4 139l15.8 9.1c6-9.7 12.6-18.9 20.1-27.2zm309.4 270.2l-18-15.8c-26 29.6-61.4 50.7-101.9 58.7l4.7 23.8c-10.8 1.9-22.1 3.3-33.5 3.6v18.3c78.1-2.2 146.4-44.3 184.9-106.6l-16.1-9.4c-5.7 9.7-12.6 18.8-20.1 27.4zM496 256c0 137-111 248-248 248S0 393 0 256 111 8 248 8s248 111 248 248zm-12.2 0c0-130.1-105.7-235.8-235.8-235.8S12.2 125.9 12.2 256 117.9 491.8 248 491.8 483.8 386.1 483.8 256zm-39-106.6l-15.8 9.1c5.3 9.7 10 20.2 13.6 31l-22.7 7.7c6.4 18.3 9.7 38.2 9.7 58.7s-3.6 40.4-10 58.7l23 7.7c-3.9 10.8-8.3 21-13.6 31l15.8 9.1C462 331 471.9 294.5 471.9 256s-9.9-75-27.1-106.6zm-183 177.7c16.3-3.3 30.4-11.6 40.7-23.5l51.2 44.8c11.9-13.6 21.3-29.3 27.1-46.8l-64.2-22.1c2.5-7.5 3.9-15.2 3.9-23.5s-1.4-16.1-3.9-23.5l64.5-22.1c-6.1-17.4-15.5-33.2-27.4-46.8l-51.2 44.8c-10.2-11.9-24.4-20.5-40.7-23.8l13.3-66.4c-8.6-1.9-17.7-2.8-27.1-2.8-9.4 0-18.5.8-27.1 2.8l13.3 66.4c-16.3 3.3-30.4 11.9-40.7 23.8l-51.2-44.8c-11.9 13.6-21.3 29.3-27.4 46.8l64.5 22.1c-2.5 7.5-3.9 15.2-3.9 23.5s1.4 16.1 3.9 23.5l-64.2 22.1c5.8 17.4 15.2 33.2 27.1 46.8l51.2-44.8c10.2 11.9 24.4 20.2 40.7 23.5l-13.3 66.7c8.6 1.7 17.7 2.8 27.1 2.8 9.4 0 18.5-1.1 27.1-2.8l-13.3-66.7z"],envira:[448,512,[],"f299","M0 32c477.6 0 366.6 317.3 367.1 366.3L448 480h-26l-70.4-71.2c-39 4.2-124.4 34.5-214.4-37C47 300.3 52 214.7 0 32zm79.7 46c-49.7-23.5-5.2 9.2-5.2 9.2 45.2 31.2 66 73.7 90.2 119.9 31.5 60.2 79 139.7 144.2 167.7 65 28 34.2 12.5 6-8.5-28.2-21.2-68.2-87-91-130.2-31.7-60-61-118.6-144.2-158.1z"],erlang:[640,512,[],"f39d","M87.2 53.5H0v405h100.4c-49.7-52.6-78.8-125.3-78.7-212.1-.1-76.7 24-142.7 65.5-192.9zm238.2 9.7c-45.9.1-85.1 33.5-89.2 83.2h169.9c-1.1-49.7-34.5-83.1-80.7-83.2zm230.7-9.6h.3l-.1-.1zm.3 0c31.4 42.7 48.7 97.5 46.2 162.7.5 6 .5 11.7 0 24.1H230.2c-.2 109.7 38.9 194.9 138.6 195.3 68.5-.3 118-51 151.9-106.1l96.4 48.2c-17.4 30.9-36.5 57.8-57.9 80.8H640v-405z"],ethereum:[320,512,[],"f42e","M311.9 260.8L160 353.6 8 260.8 160 0l151.9 260.8zM160 383.4L8 290.6 160 512l152-221.4-152 92.8z"],etsy:[384,512,[],"f2d7","M384 348c-1.75 10.75-13.75 110-15.5 132-117.879-4.299-219.895-4.743-368.5 0v-25.5c45.457-8.948 60.627-8.019 61-35.25 1.793-72.322 3.524-244.143 0-322-1.029-28.46-12.13-26.765-61-36v-25.5c73.886 2.358 255.933 8.551 362.999-3.75-3.5 38.25-7.75 126.5-7.75 126.5H332C320.947 115.665 313.241 68 277.25 68h-137c-10.25 0-10.75 3.5-10.75 9.75V241.5c58 .5 88.5-2.5 88.5-2.5 29.77-.951 27.56-8.502 40.75-65.251h25.75c-4.407 101.351-3.91 61.829-1.75 160.25H257c-9.155-40.086-9.065-61.045-39.501-61.5 0 0-21.5-2-88-2v139c0 26 14.25 38.25 44.25 38.25H263c63.636 0 66.564-24.996 98.751-99.75H384z"],evernote:[384,512,[],"f839","M120.82 132.21c1.6 22.31-17.55 21.59-21.61 21.59-68.93 0-73.64-1-83.58 3.34-.56.22-.74 0-.37-.37L123.79 46.45c.38-.37.6-.22.38.37-4.35 9.99-3.35 15.09-3.35 85.39zm79 308c-14.68-37.08 13-76.93 52.52-76.62 17.49 0 22.6 23.21 7.95 31.42-6.19 3.3-24.95 1.74-25.14 19.2-.05 17.09 19.67 25 31.2 24.89A45.64 45.64 0 0 0 312 393.45v-.08c0-11.63-7.79-47.22-47.54-55.34-7.72-1.54-65-6.35-68.35-50.52-3.74 16.93-17.4 63.49-43.11 69.09-8.74 1.94-69.68 7.64-112.92-36.77 0 0-18.57-15.23-28.23-57.95-3.38-15.75-9.28-39.7-11.14-62 0-18 11.14-30.45 25.07-32.2 81 0 90 2.32 101-7.8 9.82-9.24 7.8-15.5 7.8-102.78 1-8.3 7.79-30.81 53.41-24.14 6 .86 31.91 4.18 37.48 30.64l64.26 11.15c20.43 3.71 70.94 7 80.6 57.94 22.66 121.09 8.91 238.46 7.8 238.46C362.15 485.53 267.06 480 267.06 480c-18.95-.23-54.25-9.4-67.27-39.83zm80.94-204.84c-1 1.92-2.2 6 .85 7 14.09 4.93 39.75 6.84 45.88 5.53 3.11-.25 3.05-4.43 2.48-6.65-3.53-21.85-40.83-26.5-49.24-5.92z"],expeditedssl:[496,512,[],"f23e","M248 43.4C130.6 43.4 35.4 138.6 35.4 256S130.6 468.6 248 468.6 460.6 373.4 460.6 256 365.4 43.4 248 43.4zm-97.4 132.9c0-53.7 43.7-97.4 97.4-97.4s97.4 43.7 97.4 97.4v26.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-26.6c0-82.1-124-82.1-124 0v26.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-26.6zM389.7 380c0 9.7-8 17.7-17.7 17.7H124c-9.7 0-17.7-8-17.7-17.7V238.3c0-9.7 8-17.7 17.7-17.7h248c9.7 0 17.7 8 17.7 17.7V380zm-248-137.3v132.9c0 2.5-1.9 4.4-4.4 4.4h-8.9c-2.5 0-4.4-1.9-4.4-4.4V242.7c0-2.5 1.9-4.4 4.4-4.4h8.9c2.5 0 4.4 1.9 4.4 4.4zm141.7 48.7c0 13-7.2 24.4-17.7 30.4v31.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-31.6c-10.5-6.1-17.7-17.4-17.7-30.4 0-19.7 15.8-35.4 35.4-35.4s35.5 15.8 35.5 35.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 478.3C121 486.3 17.7 383 17.7 256S121 25.7 248 25.7 478.3 129 478.3 256 375 486.3 248 486.3z"],facebook:[512,512,[],"f09a","M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256z"],"facebook-f":[320,512,[],"f39e","M279.14 288l14.22-92.66h-88.91v-60.13c0-25.35 12.42-50.06 52.24-50.06h40.42V6.26S260.43 0 225.36 0c-73.22 0-121.08 44.38-121.08 124.72v70.62H22.89V288h81.39v224h100.17V288z"],"facebook-messenger":[512,512,[],"f39f","M256.55 8C116.52 8 8 110.34 8 248.57c0 72.3 29.71 134.78 78.07 177.94 8.35 7.51 6.63 11.86 8.05 58.23A19.92 19.92 0 0 0 122 502.31c52.91-23.3 53.59-25.14 62.56-22.7C337.85 521.8 504 423.7 504 248.57 504 110.34 396.59 8 256.55 8zm149.24 185.13l-73 115.57a37.37 37.37 0 0 1-53.91 9.93l-58.08-43.47a15 15 0 0 0-18 0l-78.37 59.44c-10.46 7.93-24.16-4.6-17.11-15.67l73-115.57a37.36 37.36 0 0 1 53.91-9.93l58.06 43.46a15 15 0 0 0 18 0l78.41-59.38c10.44-7.98 24.14 4.54 17.09 15.62z"],"facebook-square":[448,512,[],"f082","M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h137.25V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.27c-30.81 0-40.42 19.12-40.42 38.73V256h68.78l-11 71.69h-57.78V480H400a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48z"],"fantasy-flight-games":[512,512,[],"f6dc","M256 32.86L32.86 256 256 479.14 479.14 256 256 32.86zM88.34 255.83c1.96-2 11.92-12.3 96.49-97.48 41.45-41.75 86.19-43.77 119.77-18.69 24.63 18.4 62.06 58.9 62.15 59 .68.74 1.07 2.86.58 3.38-11.27 11.84-22.68 23.54-33.5 34.69-34.21-32.31-40.52-38.24-48.51-43.95-17.77-12.69-41.4-10.13-56.98 5.1-2.17 2.13-1.79 3.43.12 5.35 2.94 2.95 28.1 28.33 35.09 35.78-11.95 11.6-23.66 22.97-35.69 34.66-12.02-12.54-24.48-25.53-36.54-38.11-21.39 21.09-41.69 41.11-61.85 60.99a42569.01 42569.01 0 0 1-41.13-40.72zm234.82 101.6c-35.49 35.43-78.09 38.14-106.99 20.47-22.08-13.5-39.38-32.08-72.93-66.84 12.05-12.37 23.79-24.42 35.37-36.31 33.02 31.91 37.06 36.01 44.68 42.09 18.48 14.74 42.52 13.67 59.32-1.8 3.68-3.39 3.69-3.64.14-7.24-10.59-10.73-21.19-21.44-31.77-32.18-1.32-1.34-3.03-2.48-.8-4.69 10.79-10.71 21.48-21.52 32.21-32.29.26-.26.65-.38 1.91-1.07 12.37 12.87 24.92 25.92 37.25 38.75 21.01-20.73 41.24-40.68 61.25-60.42 13.68 13.4 27.13 26.58 40.86 40.03-20.17 20.86-81.68 82.71-100.5 101.5zM256 0L0 256l256 256 256-256L256 0zM16 256L256 16l240 240-240 240L16 256z"],fedex:[640,512,[],"f797","M586 284.5l53.3-59.9h-62.4l-21.7 24.8-22.5-24.8H414v-16h56.1v-48.1H318.9V236h-.5c-9.6-11-21.5-14.8-35.4-14.8-28.4 0-49.8 19.4-57.3 44.9-18-59.4-97.4-57.6-121.9-14v-24.2H49v-26.2h60v-41.1H0V345h49v-77.5h48.9c-1.5 5.7-2.3 11.8-2.3 18.2 0 73.1 102.6 91.4 130.2 23.7h-42c-14.7 20.9-45.8 8.9-45.8-14.6h85.5c3.7 30.5 27.4 56.9 60.1 56.9 14.1 0 27-6.9 34.9-18.6h.5V345h212.2l22.1-25 22.3 25H640l-54-60.5zm-446.7-16.6c6.1-26.3 41.7-25.6 46.5 0h-46.5zm153.4 48.9c-34.6 0-34-62.8 0-62.8 32.6 0 34.5 62.8 0 62.8zm167.8 19.1h-94.4V169.4h95v30.2H405v33.9h55.5v28.1h-56.1v44.7h56.1v29.6zm-45.9-39.8v-24.4h56.1v-44l50.7 57-50.7 57v-45.6h-56.1zm138.6 10.3l-26.1 29.5H489l45.6-51.2-45.6-51.2h39.7l26.6 29.3 25.6-29.3h38.5l-45.4 51 46 51.4h-40.5l-26.3-29.5z"],fedora:[448,512,[],"f798","M225 32C101.3 31.7.8 131.7.4 255.4L0 425.7a53.6 53.6 0 0 0 53.6 53.9l170.2.4c123.7.3 224.3-99.7 224.6-223.4S348.7 32.3 225 32zm169.8 157.2L333 126.6c2.3-4.7 3.8-9.2 3.8-14.3v-1.6l55.2 56.1a101 101 0 0 1 2.8 22.4zM331 94.3a106.06 106.06 0 0 1 58.5 63.8l-54.3-54.6a26.48 26.48 0 0 0-4.2-9.2zM118.1 247.2a49.66 49.66 0 0 0-7.7 11.4l-8.5-8.5a85.78 85.78 0 0 1 16.2-2.9zM97 251.4l11.8 11.9-.9 8a34.74 34.74 0 0 0 2.4 12.5l-27-27.2a80.6 80.6 0 0 1 13.7-5.2zm-18.2 7.4l38.2 38.4a53.17 53.17 0 0 0-14.1 4.7L67.6 266a107 107 0 0 1 11.2-7.2zm-15.2 9.8l35.3 35.5a67.25 67.25 0 0 0-10.5 8.5L53.5 278a64.33 64.33 0 0 1 10.1-9.4zm-13.3 12.3l34.9 35a56.84 56.84 0 0 0-7.7 11.4l-35.8-35.9c2.8-3.8 5.7-7.2 8.6-10.5zm-11 14.3l36.4 36.6a48.29 48.29 0 0 0-3.6 15.2l-39.5-39.8a99.81 99.81 0 0 1 6.7-12zm-8.8 16.3l41.3 41.8a63.47 63.47 0 0 0 6.7 26.2L25.8 326c1.4-4.9 2.9-9.6 4.7-14.5zm-7.9 43l61.9 62.2a31.24 31.24 0 0 0-3.6 14.3v1.1l-55.4-55.7a88.27 88.27 0 0 1-2.9-21.9zm5.3 30.7l54.3 54.6a28.44 28.44 0 0 0 4.2 9.2 106.32 106.32 0 0 1-58.5-63.8zm-5.3-37a80.69 80.69 0 0 1 2.1-17l72.2 72.5a37.59 37.59 0 0 0-9.9 8.7zm253.3-51.8l-42.6-.1-.1 56c-.2 69.3-64.4 115.8-125.7 102.9-5.7 0-19.9-8.7-19.9-24.2a24.89 24.89 0 0 1 24.5-24.6c6.3 0 6.3 1.6 15.7 1.6a55.91 55.91 0 0 0 56.1-55.9l.1-47c0-4.5-4.5-9-8.9-9l-33.6-.1c-32.6-.1-32.5-49.4.1-49.3l42.6.1.1-56a105.18 105.18 0 0 1 105.6-105 86.35 86.35 0 0 1 20.2 2.3c11.2 1.8 19.9 11.9 19.9 24 0 15.5-14.9 27.8-30.3 23.9-27.4-5.9-65.9 14.4-66 54.9l-.1 47a8.94 8.94 0 0 0 8.9 9l33.6.1c32.5.2 32.4 49.5-.2 49.4zm23.5-.3a35.58 35.58 0 0 0 7.6-11.4l8.5 8.5a102 102 0 0 1-16.1 2.9zm21-4.2L308.6 280l.9-8.1a34.74 34.74 0 0 0-2.4-12.5l27 27.2a74.89 74.89 0 0 1-13.7 5.3zm18-7.4l-38-38.4c4.9-1.1 9.6-2.4 13.7-4.7l36.2 35.9c-3.8 2.5-7.9 5-11.9 7.2zm15.5-9.8l-35.3-35.5a61.06 61.06 0 0 0 10.5-8.5l34.9 35a124.56 124.56 0 0 1-10.1 9zm13.2-12.3l-34.9-35a63.18 63.18 0 0 0 7.7-11.4l35.8 35.9a130.28 130.28 0 0 1-8.6 10.5zm11-14.3l-36.4-36.6a48.29 48.29 0 0 0 3.6-15.2l39.5 39.8a87.72 87.72 0 0 1-6.7 12zm13.5-30.9a140.63 140.63 0 0 1-4.7 14.3L345.6 190a58.19 58.19 0 0 0-7.1-26.2zm1-5.6l-71.9-72.1a32 32 0 0 0 9.9-9.2l64.3 64.7a90.93 90.93 0 0 1-2.3 16.6z"],figma:[384,512,[],"f799","M277 170.7A85.35 85.35 0 0 0 277 0H106.3a85.3 85.3 0 0 0 0 170.6 85.35 85.35 0 0 0 0 170.7 85.35 85.35 0 1 0 85.3 85.4v-256zm0 0a85.3 85.3 0 1 0 85.3 85.3 85.31 85.31 0 0 0-85.3-85.3z"],firefox:[512,512,[],"f269","M503.52,241.48c-.12-1.56-.24-3.12-.24-4.68v-.12l-.36-4.68v-.12a245.86,245.86,0,0,0-7.32-41.15c0-.12,0-.12-.12-.24l-1.08-4c-.12-.24-.12-.48-.24-.6-.36-1.2-.72-2.52-1.08-3.72-.12-.24-.12-.6-.24-.84-.36-1.2-.72-2.4-1.08-3.48-.12-.36-.24-.6-.36-1-.36-1.2-.72-2.28-1.2-3.48l-.36-1.08c-.36-1.08-.84-2.28-1.2-3.36a8.27,8.27,0,0,0-.36-1c-.48-1.08-.84-2.28-1.32-3.36-.12-.24-.24-.6-.36-.84-.48-1.2-1-2.28-1.44-3.48,0-.12-.12-.24-.12-.36-1.56-3.84-3.24-7.68-5-11.4l-.36-.72c-.48-1-.84-1.8-1.32-2.64-.24-.48-.48-1.08-.72-1.56-.36-.84-.84-1.56-1.2-2.4-.36-.6-.6-1.2-1-1.8s-.84-1.44-1.2-2.28c-.36-.6-.72-1.32-1.08-1.92s-.84-1.44-1.2-2.16a18.07,18.07,0,0,0-1.2-2c-.36-.72-.84-1.32-1.2-2s-.84-1.32-1.2-2-.84-1.32-1.2-1.92-.84-1.44-1.32-2.16a15.63,15.63,0,0,0-1.2-1.8L463.2,119a15.63,15.63,0,0,0-1.2-1.8c-.48-.72-1.08-1.56-1.56-2.28-.36-.48-.72-1.08-1.08-1.56l-1.8-2.52c-.36-.48-.6-.84-1-1.32-1-1.32-1.8-2.52-2.76-3.72a248.76,248.76,0,0,0-23.51-26.64A186.82,186.82,0,0,0,412,62.46c-4-3.48-8.16-6.72-12.48-9.84a162.49,162.49,0,0,0-24.6-15.12c-2.4-1.32-4.8-2.52-7.2-3.72a254,254,0,0,0-55.43-19.56c-1.92-.36-3.84-.84-5.64-1.2h-.12c-1-.12-1.8-.36-2.76-.48a236.35,236.35,0,0,0-38-4H255.14a234.62,234.62,0,0,0-45.48,5c-33.59,7.08-63.23,21.24-82.91,39-1.08,1-1.92,1.68-2.4,2.16l-.48.48H124l-.12.12.12-.12a.12.12,0,0,0,.12-.12l-.12.12a.42.42,0,0,1,.24-.12c14.64-8.76,34.92-16,49.44-19.56l5.88-1.44c.36-.12.84-.12,1.2-.24,1.68-.36,3.36-.72,5.16-1.08.24,0,.6-.12.84-.12C250.94,20.94,319.34,40.14,367,85.61a171.49,171.49,0,0,1,26.88,32.76c30.36,49.2,27.48,111.11,3.84,147.59-34.44,53-111.35,71.27-159,24.84a84.19,84.19,0,0,1-25.56-59,74.05,74.05,0,0,1,6.24-31c1.68-3.84,13.08-25.67,18.24-24.59-13.08-2.76-37.55,2.64-54.71,28.19-15.36,22.92-14.52,58.2-5,83.28a132.85,132.85,0,0,1-12.12-39.24c-12.24-82.55,43.31-153,94.31-170.51-27.48-24-96.47-22.31-147.71,15.36-29.88,22-51.23,53.16-62.51,90.36,1.68-20.88,9.6-52.08,25.8-83.88-17.16,8.88-39,37-49.8,62.88-15.6,37.43-21,82.19-16.08,124.79.36,3.24.72,6.36,1.08,9.6,19.92,117.11,122,206.38,244.78,206.38C392.77,503.42,504,392.19,504,255,503.88,250.48,503.76,245.92,503.52,241.48Z"],"firefox-browser":[512,512,[],"f907","M189.37,152.86Zm-58.74-29.37C130.79,123.5,130.71,123.5,130.63,123.49Zm351.42,45.35c-10.61-25.5-32.08-53-48.94-61.73,13.72,26.89,21.67,53.88,24.7,74,0,0,0,.14.05.41-27.58-68.75-74.35-96.47-112.55-156.83-1.93-3.05-3.86-6.11-5.74-9.33-1-1.65-1.86-3.34-2.69-5.05A44.88,44.88,0,0,1,333.24.69a.63.63,0,0,0-.55-.66.9.9,0,0,0-.46,0l-.12.07-.18.1.1-.14c-54.23,31.77-76.72,87.38-82.5,122.78a130,130,0,0,0-48.33,12.33,6.25,6.25,0,0,0-3.09,7.75,6.13,6.13,0,0,0,7.79,3.79l.52-.21a117.84,117.84,0,0,1,42.11-11l1.42-.1c2-.12,4-.2,6-.22A122.61,122.61,0,0,1,291,140c.67.2,1.32.42,2,.63,1.89.57,3.76,1.2,5.62,1.87,1.36.5,2.71,1,4.05,1.58,1.09.44,2.18.88,3.25,1.35q2.52,1.13,5,2.35c.75.37,1.5.74,2.25,1.13q2.4,1.26,4.74,2.63,1.51.87,3,1.8a124.89,124.89,0,0,1,42.66,44.13c-13-9.15-36.35-18.19-58.82-14.28,87.74,43.86,64.18,194.9-57.39,189.2a108.43,108.43,0,0,1-31.74-6.12c-2.42-.91-4.8-1.89-7.16-2.93-1.38-.63-2.76-1.27-4.12-2C174.5,346,149.9,316.92,146.83,281.59c0,0,11.25-41.95,80.62-41.95,7.5,0,28.93-20.92,29.33-27-.09-2-42.54-18.87-59.09-35.18-8.85-8.71-13.05-12.91-16.77-16.06a69.58,69.58,0,0,0-6.31-4.77A113.05,113.05,0,0,1,173.92,97c-25.06,11.41-44.55,29.45-58.71,45.37h-.12c-9.67-12.25-9-52.65-8.43-61.08-.12-.53-7.22,3.68-8.15,4.31a178.54,178.54,0,0,0-23.84,20.43A214,214,0,0,0,51.9,133.36l0,0a.08.08,0,0,1,0,0,205.84,205.84,0,0,0-32.73,73.9c-.06.27-2.33,10.21-4,22.48q-.42,2.87-.78,5.74c-.57,3.69-1,7.71-1.44,14,0,.24,0,.48-.05.72-.18,2.71-.34,5.41-.49,8.12,0,.41,0,.82,0,1.24,0,134.7,109.21,243.89,243.92,243.89,120.64,0,220.82-87.58,240.43-202.62.41-3.12.74-6.26,1.11-9.41,4.85-41.83-.54-85.79-15.82-122.55Z"],"first-order":[448,512,[],"f2b0","M12.9 229.2c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4h-.2zM224 96.6c-7.1 0-14.6.6-21.4 1.7l3.7 67.4-22-64c-14.3 3.7-27.7 9.4-40 16.6l29.4 61.4-45.1-50.9c-11.4 8.9-21.7 19.1-30.6 30.9l50.6 45.4-61.1-29.7c-7.1 12.3-12.9 25.7-16.6 40l64.3 22.6-68-4c-.9 7.1-1.4 14.6-1.4 22s.6 14.6 1.4 21.7l67.7-4-64 22.6c3.7 14.3 9.4 27.7 16.6 40.3l61.1-29.7L97.7 352c8.9 11.7 19.1 22.3 30.9 30.9l44.9-50.9-29.5 61.4c12.3 7.4 25.7 13.1 40 16.9l22.3-64.6-4 68c7.1 1.1 14.6 1.7 21.7 1.7 7.4 0 14.6-.6 21.7-1.7l-4-68.6 22.6 65.1c14.3-4 27.7-9.4 40-16.9L274.9 332l44.9 50.9c11.7-8.9 22-19.1 30.6-30.9l-50.6-45.1 61.1 29.4c7.1-12.3 12.9-25.7 16.6-40.3l-64-22.3 67.4 4c1.1-7.1 1.4-14.3 1.4-21.7s-.3-14.9-1.4-22l-67.7 4 64-22.3c-3.7-14.3-9.1-28-16.6-40.3l-60.9 29.7 50.6-45.4c-8.9-11.7-19.1-22-30.6-30.9l-45.1 50.9 29.4-61.1c-12.3-7.4-25.7-13.1-40-16.9L241.7 166l4-67.7c-7.1-1.2-14.3-1.7-21.7-1.7zM443.4 128v256L224 512 4.6 384V128L224 0l219.4 128zm-17.1 10.3L224 20.9 21.7 138.3v235.1L224 491.1l202.3-117.7V138.3zM224 37.1l187.7 109.4v218.9L224 474.9 36.3 365.4V146.6L224 37.1zm0 50.9c-92.3 0-166.9 75.1-166.9 168 0 92.6 74.6 167.7 166.9 167.7 92 0 166.9-75.1 166.9-167.7 0-92.9-74.9-168-166.9-168z"],"first-order-alt":[496,512,[],"f50a","M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 488.21C115.34 496.21 7.79 388.66 7.79 256S115.34 15.79 248 15.79 488.21 123.34 488.21 256 380.66 496.21 248 496.21zm0-459.92C126.66 36.29 28.29 134.66 28.29 256S126.66 475.71 248 475.71 467.71 377.34 467.71 256 369.34 36.29 248 36.29zm0 431.22c-116.81 0-211.51-94.69-211.51-211.51S131.19 44.49 248 44.49 459.51 139.19 459.51 256 364.81 467.51 248 467.51zm186.23-162.98a191.613 191.613 0 0 1-20.13 48.69l-74.13-35.88 61.48 54.82a193.515 193.515 0 0 1-37.2 37.29l-54.8-61.57 35.88 74.27a190.944 190.944 0 0 1-48.63 20.23l-27.29-78.47 4.79 82.93c-8.61 1.18-17.4 1.8-26.33 1.8s-17.72-.62-26.33-1.8l4.76-82.46-27.15 78.03a191.365 191.365 0 0 1-48.65-20.2l35.93-74.34-54.87 61.64a193.85 193.85 0 0 1-37.22-37.28l61.59-54.9-74.26 35.93a191.638 191.638 0 0 1-20.14-48.69l77.84-27.11-82.23 4.76c-1.16-8.57-1.78-17.32-1.78-26.21 0-9 .63-17.84 1.82-26.51l82.38 4.77-77.94-27.16a191.726 191.726 0 0 1 20.23-48.67l74.22 35.92-61.52-54.86a193.85 193.85 0 0 1 37.28-37.22l54.76 61.53-35.83-74.17a191.49 191.49 0 0 1 48.65-20.13l26.87 77.25-4.71-81.61c8.61-1.18 17.39-1.8 26.32-1.8s17.71.62 26.32 1.8l-4.74 82.16 27.05-77.76c17.27 4.5 33.6 11.35 48.63 20.17l-35.82 74.12 54.72-61.47a193.13 193.13 0 0 1 37.24 37.23l-61.45 54.77 74.12-35.86a191.515 191.515 0 0 1 20.2 48.65l-77.81 27.1 82.24-4.75c1.19 8.66 1.82 17.5 1.82 26.49 0 8.88-.61 17.63-1.78 26.19l-82.12-4.75 77.72 27.09z"],firstdraft:[384,512,[],"f3a1","M384 192h-64v128H192v128H0v-25.6h166.4v-128h128v-128H384V192zm-25.6 38.4v128h-128v128H64V512h192V384h128V230.4h-25.6zm25.6 192h-89.6V512H320v-64h64v-25.6zM0 0v384h128V256h128V128h128V0H0z"],flickr:[448,512,[],"f16e","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM144.5 319c-35.1 0-63.5-28.4-63.5-63.5s28.4-63.5 63.5-63.5 63.5 28.4 63.5 63.5-28.4 63.5-63.5 63.5zm159 0c-35.1 0-63.5-28.4-63.5-63.5s28.4-63.5 63.5-63.5 63.5 28.4 63.5 63.5-28.4 63.5-63.5 63.5z"],flipboard:[448,512,[],"f44d","M0 32v448h448V32H0zm358.4 179.2h-89.6v89.6h-89.6v89.6H89.6V121.6h268.8v89.6z"],fly:[384,512,[],"f417","M197.8 427.8c12.9 11.7 33.7 33.3 33.2 50.7 0 .8-.1 1.6-.1 2.5-1.8 19.8-18.8 31.1-39.1 31-25-.1-39.9-16.8-38.7-35.8 1-16.2 20.5-36.7 32.4-47.6 2.3-2.1 2.7-2.7 5.6-3.6 3.4 0 3.9.3 6.7 2.8zM331.9 67.3c-16.3-25.7-38.6-40.6-63.3-52.1C243.1 4.5 214-.2 192 0c-44.1 0-71.2 13.2-81.1 17.3C57.3 45.2 26.5 87.2 28 158.6c7.1 82.2 97 176 155.8 233.8 1.7 1.6 4.5 4.5 6.2 5.1l3.3.1c2.1-.7 1.8-.5 3.5-2.1 52.3-49.2 140.7-145.8 155.9-215.7 7-39.2 3.1-72.5-20.8-112.5zM186.8 351.9c-28-51.1-65.2-130.7-69.3-189-3.4-47.5 11.4-131.2 69.3-136.7v325.7zM328.7 180c-16.4 56.8-77.3 128-118.9 170.3C237.6 298.4 275 217 277 158.4c1.6-45.9-9.8-105.8-48-131.4 88.8 18.3 115.5 98.1 99.7 153z"],"font-awesome":[448,512,[],"f2b4","M397.8 32H50.2C22.7 32 0 54.7 0 82.2v347.6C0 457.3 22.7 480 50.2 480h347.6c27.5 0 50.2-22.7 50.2-50.2V82.2c0-27.5-22.7-50.2-50.2-50.2zm-45.4 284.3c0 4.2-3.6 6-7.8 7.8-16.7 7.2-34.6 13.7-53.8 13.7-26.9 0-39.4-16.7-71.7-16.7-23.3 0-47.8 8.4-67.5 17.3-1.2.6-2.4.6-3.6 1.2V385c0 1.8 0 3.6-.6 4.8v1.2c-2.4 8.4-10.2 14.3-19.1 14.3-11.3 0-20.3-9-20.3-20.3V166.4c-7.8-6-13.1-15.5-13.1-26.3 0-18.5 14.9-33.5 33.5-33.5 18.5 0 33.5 14.9 33.5 33.5 0 10.8-4.8 20.3-13.1 26.3v18.5c1.8-.6 3.6-1.2 5.4-2.4 18.5-7.8 40.6-14.3 61.5-14.3 22.7 0 40.6 6 60.9 13.7 4.2 1.8 8.4 2.4 13.1 2.4 22.7 0 47.8-16.1 53.8-16.1 4.8 0 9 3.6 9 7.8v140.3z"],"font-awesome-alt":[448,512,[],"f35c","M339.3 171.2c-6 0-29.9 15.5-52.6 15.5-4.2 0-8.4-.6-12.5-2.4-19.7-7.8-37-13.7-59.1-13.7-20.3 0-41.8 6.6-59.7 13.7-1.8.6-3.6 1.2-4.8 1.8v-17.9c7.8-6 12.5-14.9 12.5-25.7 0-17.9-14.3-32.3-32.3-32.3s-32.3 14.3-32.3 32.3c0 10.2 4.8 19.7 12.5 25.7v212.1c0 10.8 9 19.7 19.7 19.7 9 0 16.1-6 18.5-13.7V385c.6-1.8.6-3 .6-4.8V336c1.2 0 2.4-.6 3-1.2 19.7-8.4 43-16.7 65.7-16.7 31.1 0 43 16.1 69.3 16.1 18.5 0 36.4-6.6 52-13.7 4.2-1.8 7.2-3.6 7.2-7.8V178.3c1.8-4.1-2.3-7.1-7.7-7.1zM397.8 32H50.2C22.7 32 0 54.7 0 82.2v347.6C0 457.3 22.7 480 50.2 480h347.6c27.5 0 50.2-22.7 50.2-50.2V82.2c0-27.5-22.7-50.2-50.2-50.2zm14.3 397.7c0 7.8-6.6 14.3-14.3 14.3H50.2c-7.8 0-14.3-6.6-14.3-14.3V82.2c0-7.8 6.6-14.3 14.3-14.3h347.6v-.1c7.8 0 14.3 6.6 14.3 14.3z"],"font-awesome-flag":[448,512,[],"f425","M444.373 359.424c0 7.168-6.144 10.24-13.312 13.312-28.672 12.288-59.392 23.552-92.16 23.552-46.08 0-67.584-28.672-122.88-28.672-39.936 0-81.92 14.336-115.712 29.696-2.048 1.024-4.096 1.024-6.144 2.048v77.824c0 21.405-16.122 34.816-33.792 34.816-19.456 0-34.816-15.36-34.816-34.816V102.4C12.245 92.16 3.029 75.776 3.029 57.344 3.029 25.6 28.629 0 60.373 0s57.344 25.6 57.344 57.344c0 18.432-8.192 34.816-22.528 45.056v31.744c4.124-1.374 58.768-28.672 114.688-28.672 65.27 0 97.676 27.648 126.976 27.648 38.912 0 81.92-27.648 92.16-27.648 8.192 0 15.36 6.144 15.36 13.312v240.64z"],"font-awesome-logo-full":[3992,512,["Font Awesome"],"f4e6","M454.6 0H57.4C25.9 0 0 25.9 0 57.4v397.3C0 486.1 25.9 512 57.4 512h397.3c31.4 0 57.4-25.9 57.4-57.4V57.4C512 25.9 486.1 0 454.6 0zm-58.9 324.9c0 4.8-4.1 6.9-8.9 8.9-19.2 8.1-39.7 15.7-61.5 15.7-40.5 0-68.7-44.8-163.2 2.5v51.8c0 30.3-45.7 30.2-45.7 0v-250c-9-7-15-17.9-15-30.3 0-21 17.1-38.2 38.2-38.2 21 0 38.2 17.1 38.2 38.2 0 12.2-5.8 23.2-14.9 30.2v21c37.1-12 65.5-34.4 146.1-3.4 26.6 11.4 68.7-15.7 76.5-15.7 5.5 0 10.3 4.1 10.3 8.9v160.4zm432.9-174.2h-137v70.1H825c39.8 0 40.4 62.2 0 62.2H691.6v105.6c0 45.5-70.7 46.4-70.7 0V128.3c0-22 18-39.8 39.8-39.8h167.8c39.6 0 40.5 62.2.1 62.2zm191.1 23.4c-169.3 0-169.1 252.4 0 252.4 169.9 0 169.9-252.4 0-252.4zm0 196.1c-81.6 0-82.1-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm372.4 53.4c-17.5 0-31.4-13.9-31.4-31.4v-117c0-62.4-72.6-52.5-99.1-16.4v133.4c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c43.3-51.6 162.4-60.4 162.4 39.3v141.5c.3 30.4-31.5 31.4-31.7 31.4zm179.7 2.9c-44.3 0-68.3-22.9-68.3-65.8V235.2H1488c-35.6 0-36.7-55.3 0-55.3h15.5v-37.3c0-41.3 63.8-42.1 63.8 0v37.5h24.9c35.4 0 35.7 55.3 0 55.3h-24.9v108.5c0 29.6 26.1 26.3 27.4 26.3 31.4 0 52.6 56.3-22.9 56.3zM1992 123c-19.5-50.2-95.5-50-114.5 0-107.3 275.7-99.5 252.7-99.5 262.8 0 42.8 58.3 51.2 72.1 14.4l13.5-35.9H2006l13 35.9c14.2 37.7 72.1 27.2 72.1-14.4 0-10.1 5.3 6.8-99.1-262.8zm-108.9 179.1l51.7-142.9 51.8 142.9h-103.5zm591.3-85.6l-53.7 176.3c-12.4 41.2-72 41-84 0l-42.3-135.9-42.3 135.9c-12.4 40.9-72 41.2-84.5 0l-54.2-176.3c-12.5-39.4 49.8-56.1 60.2-16.9L2213 342l45.3-139.5c10.9-32.7 59.6-34.7 71.2 0l45.3 139.5 39.3-142.4c10.3-38.3 72.6-23.8 60.3 16.9zm275.4 75.1c0-42.4-33.9-117.5-119.5-117.5-73.2 0-124.4 56.3-124.4 126 0 77.2 55.3 126.4 128.5 126.4 31.7 0 93-11.5 93-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-109 8.4-115.9-43.8h148.3c16.3 0 29.3-13.4 29.3-28.9zM2571 277.7c9.5-73.4 113.9-68.6 118.6 0H2571zm316.7 148.8c-31.4 0-81.6-10.5-96.6-31.9-12.4-17 2.5-39.8 21.8-39.8 16.3 0 36.8 22.9 77.7 22.9 27.4 0 40.4-11 40.4-25.8 0-39.8-142.9-7.4-142.9-102 0-40.4 35.3-75.7 98.6-75.7 31.4 0 74.1 9.9 87.6 29.4 10.8 14.8-1.4 36.2-20.9 36.2-15.1 0-26.7-17.3-66.2-17.3-22.9 0-37.8 10.5-37.8 23.8 0 35.9 142.4 6 142.4 103.1-.1 43.7-37.4 77.1-104.1 77.1zm266.8-252.4c-169.3 0-169.1 252.4 0 252.4 170.1 0 169.6-252.4 0-252.4zm0 196.1c-81.8 0-82-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm476.9 22V268.7c0-53.8-61.4-45.8-85.7-10.5v134c0 41.3-63.8 42.1-63.8 0V268.7c0-52.1-59.5-47.4-85.7-10.1v133.6c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c9.9-14.4 41.8-37.3 78.6-37.3 35.3 0 57.7 16.4 66.7 43.8 13.9-21.8 45.8-43.8 82.6-43.8 44.3 0 70.7 23.4 70.7 72.7v145.3c.5 17.3-13.5 31.4-31.9 31.4 3.5.1-31.3 1.1-31.3-31.3zM3992 291.6c0-42.4-32.4-117.5-117.9-117.5-73.2 0-127.5 56.3-127.5 126 0 77.2 58.3 126.4 131.6 126.4 31.7 0 91.5-11.5 91.5-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-110.5 8.4-117.5-43.8h149.8c16.3 0 29.1-13.4 29.3-28.9zm-180.5-13.9c9.7-74.4 115.9-68.3 120.1 0h-120.1z"],fonticons:[448,512,[],"f280","M0 32v448h448V32zm187 140.9c-18.4 0-19 9.9-19 27.4v23.3c0 2.4-3.5 4.4-.6 4.4h67.4l-11.1 37.3H168v112.9c0 5.8-2 6.7 3.2 7.3l43.5 4.1v25.1H84V389l21.3-2c5.2-.6 6.7-2.3 6.7-7.9V267.7c0-2.3-2.9-2.3-5.8-2.3H84V228h28v-21c0-49.6 26.5-70 77.3-70 34.1 0 64.7 8.2 64.7 52.8l-50.7 6.1c.3-18.7-4.4-23-16.3-23zm74.3 241.8v-25.1l20.4-2.6c5.2-.6 7.6-1.7 7.6-7.3V271.8c0-4.1-2.9-6.7-6.7-7.9l-24.2-6.4 6.7-29.5h80.2v151.7c0 5.8-2.6 6.4 2.9 7.3l15.7 2.6v25.1zm80.8-255.5l9 33.2-7.3 7.3-31.2-16.6-31.2 16.6-7.3-7.3 9-33.2-21.8-24.2 3.5-9.6h27.7l15.5-28h9.3l15.5 28h27.7l3.5 9.6z"],"fonticons-fi":[384,512,[],"f3a2","M114.4 224h92.4l-15.2 51.2h-76.4V433c0 8-2.8 9.2 4.4 10l59.6 5.6V483H0v-35.2l29.2-2.8c7.2-.8 9.2-3.2 9.2-10.8V278.4c0-3.2-4-3.2-8-3.2H0V224h38.4v-28.8c0-68 36.4-96 106-96 46.8 0 88.8 11.2 88.8 72.4l-69.6 8.4c.4-25.6-6-31.6-22.4-31.6-25.2 0-26 13.6-26 37.6v32c0 3.2-4.8 6-.8 6zM384 483H243.2v-34.4l28-3.6c7.2-.8 10.4-2.4 10.4-10V287c0-5.6-4-9.2-9.2-10.8l-33.2-8.8 9.2-40.4h110v208c0 8-3.6 8.8 4 10l21.6 3.6V483zm-30-347.2l12.4 45.6-10 10-42.8-22.8-42.8 22.8-10-10 12.4-45.6-30-36.4 4.8-10h38L307.2 51H320l21.2 38.4h38l4.8 13.2-30 33.2z"],"fort-awesome":[512,512,[],"f286","M489.2 287.9h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6V146.2c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6v-32c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6v-32c0-6-8-4.6-11.7-4.6v-38c8.3-2 17.1-3.4 25.7-3.4 10.9 0 20.9 4.3 31.4 4.3 4.6 0 27.7-1.1 27.7-8v-60c0-2.6-2-4.6-4.6-4.6-5.1 0-15.1 4.3-24 4.3-9.7 0-20.9-4.3-32.6-4.3-8 0-16 1.1-23.7 2.9v-4.9c5.4-2.6 9.1-8.3 9.1-14.3 0-20.7-31.4-20.8-31.4 0 0 6 3.7 11.7 9.1 14.3v111.7c-3.7 0-11.7-1.4-11.7 4.6v32h-36.6v-32c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32H128v-32c0-2.6-2-4.6-4.6-4.6H96c-2.6 0-4.6 2-4.6 4.6v178.3H54.8v-32c0-2.6-2-4.6-4.6-4.6H22.8c-2.6 0-4.6 2-4.6 4.6V512h182.9v-96c0-72.6 109.7-72.6 109.7 0v96h182.9V292.5c.1-2.6-1.9-4.6-4.5-4.6zm-288.1-4.5c0 2.6-2 4.6-4.6 4.6h-27.4c-2.6 0-4.6-2-4.6-4.6v-64c0-2.6 2-4.6 4.6-4.6h27.4c2.6 0 4.6 2 4.6 4.6v64zm146.4 0c0 2.6-2 4.6-4.6 4.6h-27.4c-2.6 0-4.6-2-4.6-4.6v-64c0-2.6 2-4.6 4.6-4.6h27.4c2.6 0 4.6 2 4.6 4.6v64z"],"fort-awesome-alt":[512,512,[],"f3a3","M208 237.4h-22.2c-2.1 0-3.7 1.6-3.7 3.7v51.7c0 2.1 1.6 3.7 3.7 3.7H208c2.1 0 3.7-1.6 3.7-3.7v-51.7c0-2.1-1.6-3.7-3.7-3.7zm118.2 0H304c-2.1 0-3.7 1.6-3.7 3.7v51.7c0 2.1 1.6 3.7 3.7 3.7h22.2c2.1 0 3.7-1.6 3.7-3.7v-51.7c-.1-2.1-1.7-3.7-3.7-3.7zm132-125.1c-2.3-3.2-4.6-6.4-7.1-9.5-9.8-12.5-20.8-24-32.8-34.4-4.5-3.9-9.1-7.6-13.9-11.2-1.6-1.2-3.2-2.3-4.8-3.5C372 34.1 340.3 20 306 13c-16.2-3.3-32.9-5-50-5s-33.9 1.7-50 5c-34.3 7.1-66 21.2-93.3 40.8-1.6 1.1-3.2 2.3-4.8 3.5-4.8 3.6-9.4 7.3-13.9 11.2-3 2.6-5.9 5.3-8.8 8s-5.7 5.5-8.4 8.4c-5.5 5.7-10.7 11.8-15.6 18-2.4 3.1-4.8 6.3-7.1 9.5C25.2 153 8.3 202.5 8.3 256c0 2 .1 4 .1 6 .1.7.1 1.3.1 2 .1 1.3.1 2.7.2 4 0 .8.1 1.5.1 2.3 0 1.3.1 2.5.2 3.7.1.8.1 1.6.2 2.4.1 1.1.2 2.3.3 3.5 0 .8.1 1.6.2 2.4.1 1.2.3 2.4.4 3.6.1.8.2 1.5.3 2.3.1 1.3.3 2.6.5 3.9.1.6.2 1.3.3 1.9l.9 5.7c.1.6.2 1.1.3 1.7.3 1.3.5 2.7.8 4 .2.8.3 1.6.5 2.4.2 1 .5 2.1.7 3.2.2.9.4 1.7.6 2.6.2 1 .4 2 .7 3 .2.9.5 1.8.7 2.7.3 1 .5 1.9.8 2.9.3.9.5 1.8.8 2.7.2.9.5 1.9.8 2.8s.5 1.8.8 2.7c.3 1 .6 1.9.9 2.8.6 1.6 1.1 3.3 1.7 4.9.4 1 .7 1.9 1 2.8.3 1 .7 2 1.1 3 .3.8.6 1.5.9 2.3l1.2 3c.3.7.6 1.5.9 2.2.4 1 .9 2 1.3 3l.9 2.1c.5 1 .9 2 1.4 3 .3.7.6 1.3.9 2 .5 1 1 2.1 1.5 3.1.2.6.5 1.1.8 1.7.6 1.1 1.1 2.2 1.7 3.3.1.2.2.3.3.5 2.2 4.1 4.4 8.2 6.8 12.2.2.4.5.8.7 1.2.7 1.1 1.3 2.2 2 3.3.3.5.6.9.9 1.4.6 1.1 1.3 2.1 2 3.2.3.5.6.9.9 1.4.7 1.1 1.4 2.1 2.1 3.2.2.4.5.8.8 1.2.7 1.1 1.5 2.2 2.3 3.3.2.2.3.5.5.7 37.5 51.7 94.4 88.5 160 99.4.9.1 1.7.3 2.6.4 1 .2 2.1.4 3.1.5s1.9.3 2.8.4c1 .2 2 .3 3 .4.9.1 1.9.2 2.9.3s1.9.2 2.9.3 2.1.2 3.1.3c.9.1 1.8.1 2.7.2 1.1.1 2.3.1 3.4.2.8 0 1.7.1 2.5.1 1.3 0 2.6.1 3.9.1.7.1 1.4.1 2.1.1 2 .1 4 .1 6 .1s4-.1 6-.1c.7 0 1.4-.1 2.1-.1 1.3 0 2.6 0 3.9-.1.8 0 1.7-.1 2.5-.1 1.1-.1 2.3-.1 3.4-.2.9 0 1.8-.1 2.7-.2 1-.1 2.1-.2 3.1-.3s1.9-.2 2.9-.3c.9-.1 1.9-.2 2.9-.3s2-.3 3-.4 1.9-.3 2.8-.4c1-.2 2.1-.3 3.1-.5.9-.1 1.7-.3 2.6-.4 65.6-11 122.5-47.7 160.1-102.4.2-.2.3-.5.5-.7.8-1.1 1.5-2.2 2.3-3.3.2-.4.5-.8.8-1.2.7-1.1 1.4-2.1 2.1-3.2.3-.5.6-.9.9-1.4.6-1.1 1.3-2.1 2-3.2.3-.5.6-.9.9-1.4.7-1.1 1.3-2.2 2-3.3.2-.4.5-.8.7-1.2 2.4-4 4.6-8.1 6.8-12.2.1-.2.2-.3.3-.5.6-1.1 1.1-2.2 1.7-3.3.2-.6.5-1.1.8-1.7.5-1 1-2.1 1.5-3.1.3-.7.6-1.3.9-2 .5-1 1-2 1.4-3l.9-2.1c.5-1 .9-2 1.3-3 .3-.7.6-1.5.9-2.2l1.2-3c.3-.8.6-1.5.9-2.3.4-1 .7-2 1.1-3s.7-1.9 1-2.8c.6-1.6 1.2-3.3 1.7-4.9.3-1 .6-1.9.9-2.8s.5-1.8.8-2.7c.2-.9.5-1.9.8-2.8s.6-1.8.8-2.7c.3-1 .5-1.9.8-2.9.2-.9.5-1.8.7-2.7.2-1 .5-2 .7-3 .2-.9.4-1.7.6-2.6.2-1 .5-2.1.7-3.2.2-.8.3-1.6.5-2.4.3-1.3.6-2.7.8-4 .1-.6.2-1.1.3-1.7l.9-5.7c.1-.6.2-1.3.3-1.9.1-1.3.3-2.6.5-3.9.1-.8.2-1.5.3-2.3.1-1.2.3-2.4.4-3.6 0-.8.1-1.6.2-2.4.1-1.1.2-2.3.3-3.5.1-.8.1-1.6.2-2.4.1 1.7.1.5.2-.7 0-.8.1-1.5.1-2.3.1-1.3.2-2.7.2-4 .1-.7.1-1.3.1-2 .1-2 .1-4 .1-6 0-53.5-16.9-103-45.8-143.7zM448 371.5c-9.4 15.5-20.6 29.9-33.6 42.9-20.6 20.6-44.5 36.7-71.2 48-13.9 5.8-28.2 10.3-42.9 13.2v-75.8c0-58.6-88.6-58.6-88.6 0v75.8c-14.7-2.9-29-7.3-42.9-13.2-26.7-11.3-50.6-27.4-71.2-48-13-13-24.2-27.4-33.6-42.9v-71.3c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7V326h29.6V182c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7H208c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-4.8 6.5-3.7 9.5-3.7V88.1c-4.4-2-7.4-6.7-7.4-11.5 0-16.8 25.4-16.8 25.4 0 0 4.8-3 9.4-7.4 11.5V92c6.3-1.4 12.7-2.3 19.2-2.3 9.4 0 18.4 3.5 26.3 3.5 7.2 0 15.2-3.5 19.4-3.5 2.1 0 3.7 1.6 3.7 3.7v48.4c0 5.6-18.7 6.5-22.4 6.5-8.6 0-16.6-3.5-25.4-3.5-7 0-14.1 1.2-20.8 2.8v30.7c3 0 9.5-1.1 9.5 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7h22.2c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7v144h29.5v-25.8c0-2.1 1.6-3.7 3.7-3.7h22.2c2.1 0 3.7 1.6 3.7 3.7z"],forumbee:[448,512,[],"f211","M5.8 309.7C2 292.7 0 275.5 0 258.3 0 135 99.8 35 223.1 35c16.6 0 33.3 2 49.3 5.5C149 87.5 51.9 186 5.8 309.7zm392.9-189.2C385 103 369 87.8 350.9 75.2c-149.6 44.3-266.3 162.1-309.7 312 12.5 18.1 28 35.6 45.2 49 43.1-151.3 161.2-271.7 312.3-315.7zm15.8 252.7c15.2-25.1 25.4-53.7 29.5-82.8-79.4 42.9-145 110.6-187.6 190.3 30-4.4 58.9-15.3 84.6-31.3 35 13.1 70.9 24.3 107 33.6-9.3-36.5-20.4-74.5-33.5-109.8zm29.7-145.5c-2.6-19.5-7.9-38.7-15.8-56.8C290.5 216.7 182 327.5 137.1 466c18.1 7.6 37 12.5 56.6 15.2C240 367.1 330.5 274.4 444.2 227.7z"],foursquare:[368,512,[],"f180","M323.1 3H49.9C12.4 3 0 31.3 0 49.1v433.8c0 20.3 12.1 27.7 18.2 30.1 6.2 2.5 22.8 4.6 32.9-7.1C180 356.5 182.2 354 182.2 354c3.1-3.4 3.4-3.1 6.8-3.1h83.4c35.1 0 40.6-25.2 44.3-39.7l48.6-243C373.8 25.8 363.1 3 323.1 3zm-16.3 73.8l-11.4 59.7c-1.2 6.5-9.5 13.2-16.9 13.2H172.1c-12 0-20.6 8.3-20.6 20.3v13c0 12 8.6 20.6 20.6 20.6h90.4c8.3 0 16.6 9.2 14.8 18.2-1.8 8.9-10.5 53.8-11.4 58.8-.9 4.9-6.8 13.5-16.9 13.5h-73.5c-13.5 0-17.2 1.8-26.5 12.6 0 0-8.9 11.4-89.5 108.3-.9.9-1.8.6-1.8-.3V75.9c0-7.7 6.8-16.6 16.6-16.6h219c8.2 0 15.6 7.7 13.5 17.5z"],"free-code-camp":[576,512,[],"f2c5","M97.22,96.21c10.36-10.65,16-17.12,16-21.9,0-2.76-1.92-5.51-3.83-7.42A14.81,14.81,0,0,0,101,64.05c-8.48,0-20.92,8.79-35.84,25.69C23.68,137,2.51,182.81,3.37,250.34s17.47,117,54.06,161.87C76.22,435.86,90.62,448,100.9,448a13.55,13.55,0,0,0,8.37-3.84c1.91-2.76,3.81-5.63,3.81-8.38,0-5.63-3.86-12.2-13.2-20.55-44.45-42.33-67.32-97-67.48-165C32.25,188.8,54,137.83,97.22,96.21ZM239.47,420.07c.58.37.91.55.91.55Zm93.79.55.17-.13C333.24,420.62,333.17,420.67,333.26,420.62Zm3.13-158.18c-16.24-4.15,50.41-82.89-68.05-177.17,0,0,15.54,49.38-62.83,159.57-74.27,104.35,23.46,168.73,34,175.23-6.73-4.35-47.4-35.7,9.55-128.64,11-18.3,25.53-34.87,43.5-72.16,0,0,15.91,22.45,7.6,71.13C287.7,364,354,342.91,355,343.94c22.75,26.78-17.72,73.51-21.58,76.55,5.49-3.65,117.71-78,33-188.1C360.43,238.4,352.62,266.59,336.39,262.44ZM510.88,89.69C496,72.79,483.52,64,475,64a14.81,14.81,0,0,0-8.39,2.84c-1.91,1.91-3.83,4.66-3.83,7.42,0,4.78,5.6,11.26,16,21.9,43.23,41.61,65,92.59,64.82,154.06-.16,68-23,122.63-67.48,165-9.34,8.35-13.18,14.92-13.2,20.55,0,2.75,1.9,5.62,3.81,8.38A13.61,13.61,0,0,0,475.1,448c10.28,0,24.68-12.13,43.47-35.79,36.59-44.85,53.14-94.38,54.06-161.87S552.32,137,510.88,89.69Z"],freebsd:[448,512,[],"f3a4","M303.7 96.2c11.1-11.1 115.5-77 139.2-53.2 23.7 23.7-42.1 128.1-53.2 139.2-11.1 11.1-39.4.9-63.1-22.9-23.8-23.7-34.1-52-22.9-63.1zM109.9 68.1C73.6 47.5 22 24.6 5.6 41.1c-16.6 16.6 7.1 69.4 27.9 105.7 18.5-32.2 44.8-59.3 76.4-78.7zM406.7 174c3.3 11.3 2.7 20.7-2.7 26.1-20.3 20.3-87.5-27-109.3-70.1-18-32.3-11.1-53.4 14.9-48.7 5.7-3.6 12.3-7.6 19.6-11.6-29.8-15.5-63.6-24.3-99.5-24.3-119.1 0-215.6 96.5-215.6 215.6 0 119 96.5 215.6 215.6 215.6S445.3 380.1 445.3 261c0-38.4-10.1-74.5-27.7-105.8-3.9 7-7.6 13.3-10.9 18.8z"],fulcrum:[320,512,[],"f50b","M95.75 164.14l-35.38 43.55L25 164.14l35.38-43.55zM144.23 0l-20.54 198.18L72.72 256l51 57.82L144.23 512V300.89L103.15 256l41.08-44.89zm79.67 164.14l35.38 43.55 35.38-43.55-35.38-43.55zm-48.48 47L216.5 256l-41.08 44.89V512L196 313.82 247 256l-51-57.82L175.42 0z"],"galactic-republic":[496,512,[],"f50c","M248 504C111.25 504 0 392.75 0 256S111.25 8 248 8s248 111.25 248 248-111.25 248-248 248zm0-479.47C120.37 24.53 16.53 128.37 16.53 256S120.37 487.47 248 487.47 479.47 383.63 479.47 256 375.63 24.53 248 24.53zm27.62 21.81v24.62a185.933 185.933 0 0 1 83.57 34.54l17.39-17.36c-28.75-22.06-63.3-36.89-100.96-41.8zm-55.37.07c-37.64 4.94-72.16 19.8-100.88 41.85l17.28 17.36h.08c24.07-17.84 52.55-30.06 83.52-34.67V46.41zm12.25 50.17v82.87c-10.04 2.03-19.42 5.94-27.67 11.42l-58.62-58.59-21.93 21.93 58.67 58.67c-5.47 8.23-9.45 17.59-11.47 27.62h-82.9v31h82.9c2.02 10.02 6.01 19.31 11.47 27.54l-58.67 58.69 21.93 21.93 58.62-58.62a77.873 77.873 0 0 0 27.67 11.47v82.9h31v-82.9c10.05-2.03 19.37-6.06 27.62-11.55l58.67 58.69 21.93-21.93-58.67-58.69c5.46-8.23 9.47-17.52 11.5-27.54h82.87v-31h-82.87c-2.02-10.02-6.03-19.38-11.5-27.62l58.67-58.67-21.93-21.93-58.67 58.67c-8.25-5.49-17.57-9.47-27.62-11.5V96.58h-31zm183.24 30.72l-17.36 17.36a186.337 186.337 0 0 1 34.67 83.67h24.62c-4.95-37.69-19.83-72.29-41.93-101.03zm-335.55.13c-22.06 28.72-36.91 63.26-41.85 100.91h24.65c4.6-30.96 16.76-59.45 34.59-83.52l-17.39-17.39zM38.34 283.67c4.92 37.64 19.75 72.18 41.8 100.9l17.36-17.39c-17.81-24.07-29.92-52.57-34.51-83.52H38.34zm394.7 0c-4.61 30.99-16.8 59.5-34.67 83.6l17.36 17.36c22.08-28.74 36.98-63.29 41.93-100.96h-24.62zM136.66 406.38l-17.36 17.36c28.73 22.09 63.3 36.98 100.96 41.93v-24.64c-30.99-4.63-59.53-16.79-83.6-34.65zm222.53.05c-24.09 17.84-52.58 30.08-83.57 34.67v24.57c37.67-4.92 72.21-19.79 100.96-41.85l-17.31-17.39h-.08z"],"galactic-senate":[512,512,[],"f50d","M249.86 33.48v26.07C236.28 80.17 226 168.14 225.39 274.9c11.74-15.62 19.13-33.33 19.13-48.24v-16.88c-.03-5.32.75-10.53 2.19-15.65.65-2.14 1.39-4.08 2.62-5.82 1.23-1.75 3.43-3.79 6.68-3.79 3.24 0 5.45 2.05 6.68 3.79 1.23 1.75 1.97 3.68 2.62 5.82 1.44 5.12 2.22 10.33 2.19 15.65v16.88c0 14.91 7.39 32.62 19.13 48.24-.63-106.76-10.91-194.73-24.49-215.35V33.48h-12.28zm-26.34 147.77c-9.52 2.15-18.7 5.19-27.46 9.08 8.9 16.12 9.76 32.64 1.71 37.29-8 4.62-21.85-4.23-31.36-19.82-11.58 8.79-21.88 19.32-30.56 31.09 14.73 9.62 22.89 22.92 18.32 30.66-4.54 7.7-20.03 7.14-35.47-.96-5.78 13.25-9.75 27.51-11.65 42.42 9.68.18 18.67 2.38 26.18 6.04 17.78-.3 32.77-1.96 40.49-4.22 5.55-26.35 23.02-48.23 46.32-59.51.73-25.55 1.88-49.67 3.48-72.07zm64.96 0c1.59 22.4 2.75 46.52 3.47 72.07 23.29 11.28 40.77 33.16 46.32 59.51 7.72 2.26 22.71 3.92 40.49 4.22 7.51-3.66 16.5-5.85 26.18-6.04-1.9-14.91-5.86-29.17-11.65-42.42-15.44 8.1-30.93 8.66-35.47.96-4.57-7.74 3.6-21.05 18.32-30.66-8.68-11.77-18.98-22.3-30.56-31.09-9.51 15.59-23.36 24.44-31.36 19.82-8.05-4.65-7.19-21.16 1.71-37.29a147.49 147.49 0 0 0-27.45-9.08zm-32.48 8.6c-3.23 0-5.86 8.81-6.09 19.93h-.05v16.88c0 41.42-49.01 95.04-93.49 95.04-52 0-122.75-1.45-156.37 29.17v2.51c9.42 17.12 20.58 33.17 33.18 47.97C45.7 380.26 84.77 360.4 141.2 360c45.68 1.02 79.03 20.33 90.76 40.87.01.01-.01.04 0 .05 7.67 2.14 15.85 3.23 24.04 3.21 8.19.02 16.37-1.07 24.04-3.21.01-.01-.01-.04 0-.05 11.74-20.54 45.08-39.85 90.76-40.87 56.43.39 95.49 20.26 108.02 41.35 12.6-14.8 23.76-30.86 33.18-47.97v-2.51c-33.61-30.62-104.37-29.17-156.37-29.17-44.48 0-93.49-53.62-93.49-95.04v-16.88h-.05c-.23-11.12-2.86-19.93-6.09-19.93zm0 96.59c22.42 0 40.6 18.18 40.6 40.6s-18.18 40.65-40.6 40.65-40.6-18.23-40.6-40.65c0-22.42 18.18-40.6 40.6-40.6zm0 7.64c-18.19 0-32.96 14.77-32.96 32.96S237.81 360 256 360s32.96-14.77 32.96-32.96-14.77-32.96-32.96-32.96zm0 6.14c14.81 0 26.82 12.01 26.82 26.82s-12.01 26.82-26.82 26.82-26.82-12.01-26.82-26.82 12.01-26.82 26.82-26.82zm-114.8 66.67c-10.19.07-21.6.36-30.5 1.66.43 4.42 1.51 18.63 7.11 29.76 9.11-2.56 18.36-3.9 27.62-3.9 41.28.94 71.48 34.35 78.26 74.47l.11 4.7c10.4 1.91 21.19 2.94 32.21 2.94 11.03 0 21.81-1.02 32.21-2.94l.11-4.7c6.78-40.12 36.98-73.53 78.26-74.47 9.26 0 18.51 1.34 27.62 3.9 5.6-11.13 6.68-25.34 7.11-29.76-8.9-1.3-20.32-1.58-30.5-1.66-18.76.42-35.19 4.17-48.61 9.67-12.54 16.03-29.16 30.03-49.58 33.07-.09.02-.17.04-.27.05-.05.01-.11.04-.16.05-5.24 1.07-10.63 1.6-16.19 1.6-5.55 0-10.95-.53-16.19-1.6-.05-.01-.11-.04-.16-.05-.1-.02-.17-.04-.27-.05-20.42-3.03-37.03-17.04-49.58-33.07-13.42-5.49-29.86-9.25-48.61-9.67z"],"get-pocket":[448,512,[],"f265","M407.6 64h-367C18.5 64 0 82.5 0 104.6v135.2C0 364.5 99.7 464 224.2 464c124 0 223.8-99.5 223.8-224.2V104.6c0-22.4-17.7-40.6-40.4-40.6zm-162 268.5c-12.4 11.8-31.4 11.1-42.4 0C89.5 223.6 88.3 227.4 88.3 209.3c0-16.9 13.8-30.7 30.7-30.7 17 0 16.1 3.8 105.2 89.3 90.6-86.9 88.6-89.3 105.5-89.3 16.9 0 30.7 13.8 30.7 30.7 0 17.8-2.9 15.7-114.8 123.2z"],gg:[512,512,[],"f260","M179.2 230.4l102.4 102.4-102.4 102.4L0 256 179.2 76.8l44.8 44.8-25.6 25.6-19.2-19.2-128 128 128 128 51.5-51.5-77.1-76.5 25.6-25.6zM332.8 76.8L230.4 179.2l102.4 102.4 25.6-25.6-77.1-76.5 51.5-51.5 128 128-128 128-19.2-19.2-25.6 25.6 44.8 44.8L512 256 332.8 76.8z"],"gg-circle":[512,512,[],"f261","M257 8C120 8 9 119 9 256s111 248 248 248 248-111 248-248S394 8 257 8zm-49.5 374.8L81.8 257.1l125.7-125.7 35.2 35.4-24.2 24.2-11.1-11.1-77.2 77.2 77.2 77.2 26.6-26.6-53.1-52.9 24.4-24.4 77.2 77.2-75 75.2zm99-2.2l-35.2-35.2 24.1-24.4 11.1 11.1 77.2-77.2-77.2-77.2-26.5 26.5 53.1 52.9-24.4 24.4-77.2-77.2 75-75L432.2 255 306.5 380.6z"],git:[512,512,[],"f1d3","M216.29 158.39H137C97 147.9 6.51 150.63 6.51 233.18c0 30.09 15 51.23 35 61-25.1 23-37 33.85-37 49.21 0 11 4.47 21.14 17.89 26.81C8.13 383.61 0 393.35 0 411.65c0 32.11 28.05 50.82 101.63 50.82 70.75 0 111.79-26.42 111.79-73.18 0-58.66-45.16-56.5-151.63-63l13.43-21.55c27.27 7.58 118.7 10 118.7-67.89 0-18.7-7.73-31.71-15-41.07l37.41-2.84zm-63.42 241.9c0 32.06-104.89 32.1-104.89 2.43 0-8.14 5.27-15 10.57-21.54 77.71 5.3 94.32 3.37 94.32 19.11zm-50.81-134.58c-52.8 0-50.46-71.16 1.2-71.16 49.54 0 50.82 71.16-1.2 71.16zm133.3 100.51v-32.1c26.75-3.66 27.24-2 27.24-11V203.61c0-8.5-2.05-7.38-27.24-16.26l4.47-32.92H324v168.71c0 6.51.4 7.32 6.51 8.14l20.73 2.84v32.1zm52.45-244.31c-23.17 0-36.59-13.43-36.59-36.61s13.42-35.77 36.59-35.77c23.58 0 37 12.62 37 35.77s-13.42 36.61-37 36.61zM512 350.46c-17.49 8.53-43.1 16.26-66.28 16.26-48.38 0-66.67-19.5-66.67-65.46V194.75c0-5.42 1.05-4.06-31.71-4.06V154.5c35.78-4.07 50-22 54.47-66.27h38.63c0 65.83-1.34 61.81 3.26 61.81H501v40.65h-60.56v97.15c0 6.92-4.92 51.41 60.57 26.84z"],"git-alt":[448,512,[],"f841","M439.55 236.05L244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"],"git-square":[448,512,[],"f1d2","M100.59 334.24c48.57 3.31 58.95 2.11 58.95 11.94 0 20-65.55 20.06-65.55 1.52.01-5.09 3.29-9.4 6.6-13.46zm27.95-116.64c-32.29 0-33.75 44.47-.75 44.47 32.51 0 31.71-44.47.75-44.47zM448 80v352a48 48 0 0 1-48 48H48a48 48 0 0 1-48-48V80a48 48 0 0 1 48-48h352a48 48 0 0 1 48 48zm-227 69.31c0 14.49 8.38 22.88 22.86 22.88 14.74 0 23.13-8.39 23.13-22.88S258.62 127 243.88 127c-14.48 0-22.88 7.84-22.88 22.31zM199.18 195h-49.55c-25-6.55-81.56-4.85-81.56 46.75 0 18.8 9.4 32 21.85 38.11C74.23 294.23 66.8 301 66.8 310.6c0 6.87 2.79 13.22 11.18 16.76-8.9 8.4-14 14.48-14 25.92C64 373.35 81.53 385 127.52 385c44.22 0 69.87-16.51 69.87-45.73 0-36.67-28.23-35.32-94.77-39.38l8.38-13.43c17 4.74 74.19 6.23 74.19-42.43 0-11.69-4.83-19.82-9.4-25.67l23.38-1.78zm84.34 109.84l-13-1.78c-3.82-.51-4.07-1-4.07-5.09V192.52h-52.6l-2.79 20.57c15.75 5.55 17 4.86 17 10.17V298c0 5.62-.31 4.58-17 6.87v20.06h72.42zM384 315l-6.87-22.37c-40.93 15.37-37.85-12.41-37.85-16.73v-60.72h37.85v-25.41h-35.82c-2.87 0-2 2.52-2-38.63h-24.18c-2.79 27.7-11.68 38.88-34 41.42v22.62c20.47 0 19.82-.85 19.82 2.54v66.57c0 28.72 11.43 40.91 41.67 40.91 14.45 0 30.45-4.83 41.38-10.2z"],github:[496,512,[],"f09b","M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"],"github-alt":[480,512,[],"f113","M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"],"github-square":[448,512,[],"f092","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM277.3 415.7c-8.4 1.5-11.5-3.7-11.5-8 0-5.4.2-33 .2-55.3 0-15.6-5.2-25.5-11.3-30.7 37-4.1 76-9.2 76-73.1 0-18.2-6.5-27.3-17.1-39 1.7-4.3 7.4-22-1.7-45-13.9-4.3-45.7 17.9-45.7 17.9-13.2-3.7-27.5-5.6-41.6-5.6-14.1 0-28.4 1.9-41.6 5.6 0 0-31.8-22.2-45.7-17.9-9.1 22.9-3.5 40.6-1.7 45-10.6 11.7-15.6 20.8-15.6 39 0 63.6 37.3 69 74.3 73.1-4.8 4.3-9.1 11.7-10.6 22.3-9.5 4.3-33.8 11.7-48.3-13.9-9.1-15.8-25.5-17.1-25.5-17.1-16.2-.2-1.1 10.2-1.1 10.2 10.8 5 18.4 24.2 18.4 24.2 9.7 29.7 56.1 19.7 56.1 19.7 0 13.9.2 36.5.2 40.6 0 4.3-3 9.5-11.5 8-66-22.1-112.2-84.9-112.2-158.3 0-91.8 70.2-161.5 162-161.5S388 165.6 388 257.4c.1 73.4-44.7 136.3-110.7 158.3zm-98.1-61.1c-1.9.4-3.7-.4-3.9-1.7-.2-1.5 1.1-2.8 3-3.2 1.9-.2 3.7.6 3.9 1.9.3 1.3-1 2.6-3 3zm-9.5-.9c0 1.3-1.5 2.4-3.5 2.4-2.2.2-3.7-.9-3.7-2.4 0-1.3 1.5-2.4 3.5-2.4 1.9-.2 3.7.9 3.7 2.4zm-13.7-1.1c-.4 1.3-2.4 1.9-4.1 1.3-1.9-.4-3.2-1.9-2.8-3.2.4-1.3 2.4-1.9 4.1-1.5 2 .6 3.3 2.1 2.8 3.4zm-12.3-5.4c-.9 1.1-2.8.9-4.3-.6-1.5-1.3-1.9-3.2-.9-4.1.9-1.1 2.8-.9 4.3.6 1.3 1.3 1.8 3.3.9 4.1zm-9.1-9.1c-.9.6-2.6 0-3.7-1.5s-1.1-3.2 0-3.9c1.1-.9 2.8-.2 3.7 1.3 1.1 1.5 1.1 3.3 0 4.1zm-6.5-9.7c-.9.9-2.4.4-3.5-.6-1.1-1.3-1.3-2.8-.4-3.5.9-.9 2.4-.4 3.5.6 1.1 1.3 1.3 2.8.4 3.5zm-6.7-7.4c-.4.9-1.7 1.1-2.8.4-1.3-.6-1.9-1.7-1.5-2.6.4-.6 1.5-.9 2.8-.4 1.3.7 1.9 1.8 1.5 2.6z"],gitkraken:[592,512,[],"f3a6","M565.7 118.1c-2.3-6.1-9.3-9.2-15.3-6.6-5.7 2.4-8.5 8.9-6.3 14.6 10.9 29 16.9 60.5 16.9 93.3 0 134.6-100.3 245.7-230.2 262.7V358.4c7.9-1.5 15.5-3.6 23-6.2v104c106.7-25.9 185.9-122.1 185.9-236.8 0-91.8-50.8-171.8-125.8-213.3-5.7-3.2-13-.9-15.9 5-2.7 5.5-.6 12.2 4.7 15.1 67.9 37.6 113.9 110 113.9 193.2 0 93.3-57.9 173.1-139.8 205.4v-92.2c14.2-4.5 24.9-17.7 24.9-33.5 0-13.1-6.8-24.4-17.3-30.5 8.3-79.5 44.5-58.6 44.5-83.9V170c0-38-87.9-161.8-129-164.7-2.5-.2-5-.2-7.6 0C251.1 8.3 163.2 132 163.2 170v14.8c0 25.3 36.3 4.3 44.5 83.9-10.6 6.1-17.3 17.4-17.3 30.5 0 15.8 10.6 29 24.8 33.5v92.2c-81.9-32.2-139.8-112-139.8-205.4 0-83.1 46-155.5 113.9-193.2 5.4-3 7.4-9.6 4.7-15.1-2.9-5.9-10.1-8.2-15.9-5-75 41.5-125.8 121.5-125.8 213.3 0 114.7 79.2 210.8 185.9 236.8v-104c7.6 2.5 15.1 4.6 23 6.2v123.7C131.4 465.2 31 354.1 31 219.5c0-32.8 6-64.3 16.9-93.3 2.2-5.8-.6-12.2-6.3-14.6-6-2.6-13 .4-15.3 6.6C14.5 149.7 8 183.8 8 219.5c0 155.1 122.6 281.6 276.3 287.8V361.4c6.8.4 15 .5 23.4 0v145.8C461.4 501.1 584 374.6 584 219.5c0-35.7-6.5-69.8-18.3-101.4zM365.9 275.5c13 0 23.7 10.5 23.7 23.7 0 13.1-10.6 23.7-23.7 23.7-13 0-23.7-10.5-23.7-23.7 0-13.1 10.6-23.7 23.7-23.7zm-139.8 47.3c-13.2 0-23.7-10.7-23.7-23.7s10.5-23.7 23.7-23.7c13.1 0 23.7 10.6 23.7 23.7 0 13-10.5 23.7-23.7 23.7z"],gitlab:[512,512,[],"f296","M105.2 24.9c-3.1-8.9-15.7-8.9-18.9 0L29.8 199.7h132c-.1 0-56.6-174.8-56.6-174.8zM.9 287.7c-2.6 8 .3 16.9 7.1 22l247.9 184-226.2-294zm160.8-88l94.3 294 94.3-294zm349.4 88l-28.8-88-226.3 294 247.9-184c6.9-5.1 9.7-14 7.2-22zM425.7 24.9c-3.1-8.9-15.7-8.9-18.9 0l-56.6 174.8h132z"],gitter:[384,512,[],"f426","M66.4 322.5H16V0h50.4v322.5zM166.9 76.1h-50.4V512h50.4V76.1zm100.6 0h-50.4V512h50.4V76.1zM368 76h-50.4v247H368V76z"],glide:[448,512,[],"f2a5","M252.8 148.6c0 8.8-1.6 17.7-3.4 26.4-5.8 27.8-11.6 55.8-17.3 83.6-1.4 6.3-8.3 4.9-13.7 4.9-23.8 0-30.5-26-30.5-45.5 0-29.3 11.2-68.1 38.5-83.1 4.3-2.5 9.2-4.2 14.1-4.2 11.4 0 12.3 8.3 12.3 17.9zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-64 187c0-5.1-20.8-37.7-25.5-39.5-2.2-.9-7.2-2.3-9.6-2.3-23.1 0-38.7 10.5-58.2 21.5l-.5-.5c4.3-29.4 14.6-57.2 14.6-87.4 0-44.6-23.8-62.7-67.5-62.7-71.7 0-108 70.8-108 123.5 0 54.7 32 85 86.3 85 7.5 0 6.9-.6 6.9 2.3-10.5 80.3-56.5 82.9-56.5 58.9 0-24.4 28-36.5 28.3-38-.2-7.6-29.3-17.2-36.7-17.2-21.1 0-32.7 33-32.7 50.6 0 32.3 20.4 54.7 53.3 54.7 48.2 0 83.4-49.7 94.3-91.7 9.4-37.7 7-39.4 12.3-42.1 20-10.1 35.8-16.8 58.4-16.8 11.1 0 19 2.3 36.7 5.2 1.8.1 4.1-1.7 4.1-3.5z"],"glide-g":[448,512,[],"f2a6","M407.1 211.2c-3.5-1.4-11.6-3.8-15.4-3.8-37.1 0-62.2 16.8-93.5 34.5l-.9-.9c7-47.3 23.5-91.9 23.5-140.4C320.8 29.1 282.6 0 212.4 0 97.3 0 39 113.7 39 198.4 39 286.3 90.3 335 177.6 335c12 0 11-1 11 3.8-16.9 128.9-90.8 133.1-90.8 94.6 0-39.2 45-58.6 45.5-61-.3-12.2-47-27.6-58.9-27.6-33.9.1-52.4 51.2-52.4 79.3C32 476 64.8 512 117.5 512c77.4 0 134-77.8 151.4-145.4 15.1-60.5 11.2-63.3 19.7-67.6 32.2-16.2 57.5-27 93.8-27 17.8 0 30.5 3.7 58.9 8.4 2.9 0 6.7-2.9 6.7-5.8 0-8-33.4-60.5-40.9-63.4zm-175.3-84.4c-9.3 44.7-18.6 89.6-27.8 134.3-2.3 10.2-13.3 7.8-22 7.8-38.3 0-49-41.8-49-73.1 0-47 18-109.3 61.8-133.4 7-4.1 14.8-6.7 22.6-6.7 18.6 0 20 13.3 20 28.7-.1 14.3-2.7 28.5-5.6 42.4z"],gofore:[400,512,[],"f3a7","M324 319.8h-13.2v34.7c-24.5 23.1-56.3 35.8-89.9 35.8-73.2 0-132.4-60.2-132.4-134.4 0-74.1 59.2-134.4 132.4-134.4 35.3 0 68.6 14 93.6 39.4l62.3-63.3C335 55.3 279.7 32 220.7 32 98 32 0 132.6 0 256c0 122.5 97 224 220.7 224 63.2 0 124.5-26.2 171-82.5-2-27.6-13.4-77.7-67.7-77.7zm-12.1-112.5H205.6v89H324c33.5 0 60.5 15.1 76 41.8v-30.6c0-65.2-40.4-100.2-88.1-100.2z"],goodreads:[448,512,[],"f3a8","M299.9 191.2c5.1 37.3-4.7 79-35.9 100.7-22.3 15.5-52.8 14.1-70.8 5.7-37.1-17.3-49.5-58.6-46.8-97.2 4.3-60.9 40.9-87.9 75.3-87.5 46.9-.2 71.8 31.8 78.2 78.3zM448 88v336c0 30.9-25.1 56-56 56H56c-30.9 0-56-25.1-56-56V88c0-30.9 25.1-56 56-56h336c30.9 0 56 25.1 56 56zM330 313.2s-.1-34-.1-217.3h-29v40.3c-.8.3-1.2-.5-1.6-1.2-9.6-20.7-35.9-46.3-76-46-51.9.4-87.2 31.2-100.6 77.8-4.3 14.9-5.8 30.1-5.5 45.6 1.7 77.9 45.1 117.8 112.4 115.2 28.9-1.1 54.5-17 69-45.2.5-1 1.1-1.9 1.7-2.9.2.1.4.1.6.2.3 3.8.2 30.7.1 34.5-.2 14.8-2 29.5-7.2 43.5-7.8 21-22.3 34.7-44.5 39.5-17.8 3.9-35.6 3.8-53.2-1.2-21.5-6.1-36.5-19-41.1-41.8-.3-1.6-1.3-1.3-2.3-1.3h-26.8c.8 10.6 3.2 20.3 8.5 29.2 24.2 40.5 82.7 48.5 128.2 37.4 49.9-12.3 67.3-54.9 67.4-106.3z"],"goodreads-g":[384,512,[],"f3a9","M42.6 403.3h2.8c12.7 0 25.5 0 38.2.1 1.6 0 3.1-.4 3.6 2.1 7.1 34.9 30 54.6 62.9 63.9 26.9 7.6 54.1 7.8 81.3 1.8 33.8-7.4 56-28.3 68-60.4 8-21.5 10.7-43.8 11-66.5.1-5.8.3-47-.2-52.8l-.9-.3c-.8 1.5-1.7 2.9-2.5 4.4-22.1 43.1-61.3 67.4-105.4 69.1-103 4-169.4-57-172-176.2-.5-23.7 1.8-46.9 8.3-69.7C58.3 47.7 112.3.6 191.6 0c61.3-.4 101.5 38.7 116.2 70.3.5 1.1 1.3 2.3 2.4 1.9V10.6h44.3c0 280.3.1 332.2.1 332.2-.1 78.5-26.7 143.7-103 162.2-69.5 16.9-159 4.8-196-57.2-8-13.5-11.8-28.3-13-44.5zM188.9 36.5c-52.5-.5-108.5 40.7-115 133.8-4.1 59 14.8 122.2 71.5 148.6 27.6 12.9 74.3 15 108.3-8.7 47.6-33.2 62.7-97 54.8-154-9.7-71.1-47.8-120-119.6-119.7z"],google:[488,512,[],"f1a0","M488 261.8C488 403.3 391.1 504 248 504 110.8 504 0 393.2 0 256S110.8 8 248 8c66.8 0 123 24.5 166.3 64.9l-67.5 64.9C258.5 52.6 94.3 116.6 94.3 256c0 86.5 69.1 156.6 153.7 156.6 98.2 0 135-70.4 140.8-106.9H248v-85.3h236.1c2.3 12.7 3.9 24.9 3.9 41.4z"],"google-drive":[512,512,[],"f3aa","M339 314.9L175.4 32h161.2l163.6 282.9H339zm-137.5 23.6L120.9 480h310.5L512 338.5H201.5zM154.1 67.4L0 338.5 80.6 480 237 208.8 154.1 67.4z"],"google-play":[512,512,[],"f3ab","M325.3 234.3L104.6 13l280.8 161.2-60.1 60.1zM47 0C34 6.8 25.3 19.2 25.3 35.3v441.3c0 16.1 8.7 28.5 21.7 35.3l256.6-256L47 0zm425.2 225.6l-58.9-34.1-65.7 64.5 65.7 64.5 60.1-34.1c18-14.3 18-46.5-1.2-60.8zM104.6 499l280.8-161.2-60.1-60.1L104.6 499z"],"google-plus":[496,512,[],"f2b3","M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm-70.7 372c-68.8 0-124-55.5-124-124s55.2-124 124-124c31.3 0 60.1 11 83 32.3l-33.6 32.6c-13.2-12.9-31.3-19.1-49.4-19.1-42.9 0-77.2 35.5-77.2 78.1s34.2 78.1 77.2 78.1c32.6 0 64.9-19.1 70.1-53.3h-70.1v-42.6h116.9c1.3 6.8 1.9 13.6 1.9 20.7 0 70.8-47.5 121.2-118.8 121.2zm230.2-106.2v35.5H372v-35.5h-35.5v-35.5H372v-35.5h35.5v35.5h35.2v35.5h-35.2z"],"google-plus-g":[640,512,[],"f0d5","M386.061 228.496c1.834 9.692 3.143 19.384 3.143 31.956C389.204 370.205 315.599 448 204.8 448c-106.084 0-192-85.915-192-192s85.916-192 192-192c51.864 0 95.083 18.859 128.611 50.292l-52.126 50.03c-14.145-13.621-39.028-29.599-76.485-29.599-65.484 0-118.92 54.221-118.92 121.277 0 67.056 53.436 121.277 118.92 121.277 75.961 0 104.513-54.745 108.965-82.773H204.8v-66.009h181.261zm185.406 6.437V179.2h-56.001v55.733h-55.733v56.001h55.733v55.733h56.001v-55.733H627.2v-56.001h-55.733z"],"google-plus-square":[448,512,[],"f0d4","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM164 356c-55.3 0-100-44.7-100-100s44.7-100 100-100c27 0 49.5 9.8 67 26.2l-27.1 26.1c-7.4-7.1-20.3-15.4-39.8-15.4-34.1 0-61.9 28.2-61.9 63.2 0 34.9 27.8 63.2 61.9 63.2 39.6 0 54.4-28.5 56.8-43.1H164v-34.4h94.4c1 5 1.6 10.1 1.6 16.6 0 57.1-38.3 97.6-96 97.6zm220-81.8h-29v29h-29.2v-29h-29V245h29v-29H355v29h29v29.2z"],"google-wallet":[448,512,[],"f1ee","M156.8 126.8c37.6 60.6 64.2 113.1 84.3 162.5-8.3 33.8-18.8 66.5-31.3 98.3-13.2-52.3-26.5-101.3-56-148.5 6.5-36.4 2.3-73.6 3-112.3zM109.3 200H16.1c-6.5 0-10.5 7.5-6.5 12.7C51.8 267 81.3 330.5 101.3 400h103.5c-16.2-69.7-38.7-133.7-82.5-193.5-3-4-8-6.5-13-6.5zm47.8-88c68.5 108 130 234.5 138.2 368H409c-12-138-68.4-265-143.2-368H157.1zm251.8-68.5c-1.8-6.8-8.2-11.5-15.2-11.5h-88.3c-5.3 0-9 5-7.8 10.3 13.2 46.5 22.3 95.5 26.5 146 48.2 86.2 79.7 178.3 90.6 270.8 15.8-60.5 25.3-133.5 25.3-203 0-73.6-12.1-145.1-31.1-212.6z"],gratipay:[496,512,[],"f184","M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm114.6 226.4l-113 152.7-112.7-152.7c-8.7-11.9-19.1-50.4 13.6-72 28.1-18.1 54.6-4.2 68.5 11.9 15.9 17.9 46.6 16.9 61.7 0 13.9-16.1 40.4-30 68.1-11.9 32.9 21.6 22.6 60 13.8 72z"],grav:[512,512,[],"f2d6","M301.1 212c4.4 4.4 4.4 11.9 0 16.3l-9.7 9.7c-4.4 4.7-11.9 4.7-16.6 0l-10.5-10.5c-4.4-4.7-4.4-11.9 0-16.6l9.7-9.7c4.4-4.4 11.9-4.4 16.6 0l10.5 10.8zm-30.2-19.7c3-3 3-7.8 0-10.5-2.8-3-7.5-3-10.5 0-2.8 2.8-2.8 7.5 0 10.5 3.1 2.8 7.8 2.8 10.5 0zm-26 5.3c-3 2.8-3 7.5 0 10.2 2.8 3 7.5 3 10.5 0 2.8-2.8 2.8-7.5 0-10.2-3-3-7.7-3-10.5 0zm72.5-13.3c-19.9-14.4-33.8-43.2-11.9-68.1 21.6-24.9 40.7-17.2 59.8.8 11.9 11.3 29.3 24.9 17.2 48.2-12.5 23.5-45.1 33.2-65.1 19.1zm47.7-44.5c-8.9-10-23.3 6.9-15.5 16.1 7.4 9 32.1 2.4 15.5-16.1zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-66.2 42.6c2.5-16.1-20.2-16.6-25.2-25.7-13.6-24.1-27.7-36.8-54.5-30.4 11.6-8 23.5-6.1 23.5-6.1.3-6.4 0-13-9.4-24.9 3.9-12.5.3-22.4.3-22.4 15.5-8.6 26.8-24.4 29.1-43.2 3.6-31-18.8-59.2-49.8-62.8-22.1-2.5-43.7 7.7-54.3 25.7-23.2 40.1 1.4 70.9 22.4 81.4-14.4-1.4-34.3-11.9-40.1-34.3-6.6-25.7 2.8-49.8 8.9-61.4 0 0-4.4-5.8-8-8.9 0 0-13.8 0-24.6 5.3 11.9-15.2 25.2-14.4 25.2-14.4 0-6.4-.6-14.9-3.6-21.6-5.4-11-23.8-12.9-31.7 2.8.1-.2.3-.4.4-.5-5 11.9-1.1 55.9 16.9 87.2-2.5 1.4-9.1 6.1-13 10-21.6 9.7-56.2 60.3-56.2 60.3-28.2 10.8-77.2 50.9-70.6 79.7.3 3 1.4 5.5 3 7.5-2.8 2.2-5.5 5-8.3 8.3-11.9 13.8-5.3 35.2 17.7 24.4 15.8-7.2 29.6-20.2 36.3-30.4 0 0-5.5-5-16.3-4.4 27.7-6.6 34.3-9.4 46.2-9.1 8 3.9 8-34.3 8-34.3 0-14.7-2.2-31-11.1-41.5 12.5 12.2 29.1 32.7 28 60.6-.8 18.3-15.2 23-15.2 23-9.1 16.6-43.2 65.9-30.4 106 0 0-9.7-14.9-10.2-22.1-17.4 19.4-46.5 52.3-24.6 64.5 26.6 14.7 108.8-88.6 126.2-142.3 34.6-20.8 55.4-47.3 63.9-65 22 43.5 95.3 94.5 101.1 59z"],gripfire:[384,512,[],"f3ac","M112.5 301.4c0-73.8 105.1-122.5 105.1-203 0-47.1-34-88-39.1-90.4.4 3.3.6 6.7.6 10C179.1 110.1 32 171.9 32 286.6c0 49.8 32.2 79.2 66.5 108.3 65.1 46.7 78.1 71.4 78.1 86.6 0 10.1-4.8 17-4.8 22.3 13.1-16.7 17.4-31.9 17.5-46.4 0-29.6-21.7-56.3-44.2-86.5-16-22.3-32.6-42.6-32.6-69.5zm205.3-39c-12.1-66.8-78-124.4-94.7-130.9l4 7.2c2.4 5.1 3.4 10.9 3.4 17.1 0 44.7-54.2 111.2-56.6 116.7-2.2 5.1-3.2 10.5-3.2 15.8 0 20.1 15.2 42.1 17.9 42.1 2.4 0 56.6-55.4 58.1-87.7 6.4 11.7 9.1 22.6 9.1 33.4 0 41.2-41.8 96.9-41.8 96.9 0 11.6 31.9 53.2 35.5 53.2 1 0 2.2-1.4 3.2-2.4 37.9-39.3 67.3-85 67.3-136.8 0-8-.7-16.2-2.2-24.6z"],grunt:[384,512,[],"f3ad","M61.3 189.3c-1.1 10 5.2 19.1 5.2 19.1.7-7.5 2.2-12.8 4-16.6.4 10.3 3.2 23.5 12.8 34.1 6.9 7.6 35.6 23.3 54.9 6.1 1 2.4 2.1 5.3 3 8.5 2.9 10.3-2.7 25.3-2.7 25.3s15.1-17.1 13.9-32.5c10.8-.5 21.4-8.4 21.1-19.5 0 0-18.9 10.4-35.5-8.8-9.7-11.2-40.9-42-83.1-31.8 4.3 1 8.9 2.4 13.5 4.1h-.1c-4.2 2-6.5 7.1-7 12zm28.3-1.8c19.5 11 37.4 25.7 44.9 37-5.7 3.3-21.7 10.4-38-1.7-10.3-7.6-9.8-26.2-6.9-35.3zm142.1 45.8c-1.2 15.5 13.9 32.5 13.9 32.5s-5.6-15-2.7-25.3c.9-3.2 2-6 3-8.5 19.3 17.3 48 1.5 54.8-6.1 9.6-10.6 12.3-23.8 12.8-34.1 1.8 3.8 3.4 9.1 4 16.6 0 0 6.4-9.1 5.2-19.1-.6-5-2.9-10-7-11.8h-.1c4.6-1.8 9.2-3.2 13.5-4.1-42.3-10.2-73.4 20.6-83.1 31.8-16.7 19.2-35.5 8.8-35.5 8.8-.2 10.9 10.4 18.9 21.2 19.3zm62.7-45.8c3 9.1 3.4 27.7-7 35.4-16.3 12.1-32.2 5-37.9 1.6 7.5-11.4 25.4-26 44.9-37zM160 418.5h-29.4c-5.5 0-8.2 1.6-9.5 2.9-1.9 2-2.2 4.7-.9 8.1 3.5 9.1 11.4 16.5 13.7 18.6 3.1 2.7 7.5 4.3 11.8 4.3 4.4 0 8.3-1.7 11-4.6 7.5-8.2 11.9-17.1 13-19.8.6-1.5 1.3-4.5-.9-6.8-1.8-1.8-4.7-2.7-8.8-2.7zm189.2-101.2c-2.4 17.9-13 33.8-24.6 43.7-3.1-22.7-3.7-55.5-3.7-62.4 0-14.7 9.5-24.5 12.2-26.1 2.5-1.5 5.4-3 8.3-4.6 18-9.6 40.4-21.6 40.4-43.7 0-16.2-9.3-23.2-15.4-27.8-.8-.6-1.5-1.1-2.2-1.7-2.1-1.7-3.7-3-4.3-4.4-4.4-9.8-3.6-34.2-1.7-37.6.6-.6 16.7-20.9 11.8-39.2-2-7.4-6.9-13.3-14.1-17-5.3-2.7-11.9-4.2-19.5-4.5-.1-2-.5-3.9-.9-5.9-.6-2.6-1.1-5.3-.9-8.1.4-4.7.8-9 2.2-11.3 8.4-13.3 28.8-17.6 29-17.6l12.3-2.4-8.1-9.5c-.1-.2-17.3-17.5-46.3-17.5-7.9 0-16 1.3-24.1 3.9-24.2 7.8-42.9 30.5-49.4 39.3-3.1-1-6.3-1.9-9.6-2.7-4.2-15.8 9-38.5 9-38.5s-13.6-3-33.7 15.2c-2.6-6.5-8.1-20.5-1.8-37.2C184.6 10.1 177.2 26 175 40.4c-7.6-5.4-6.7-23.1-7.2-27.6-7.5.9-29.2 21.9-28.2 48.3-2 .5-3.9 1.1-5.9 1.7-6.5-8.8-25.1-31.5-49.4-39.3-7.9-2.2-16-3.5-23.9-3.5-29 0-46.1 17.3-46.3 17.5L6 46.9l12.3 2.4c.2 0 20.6 4.3 29 17.6 1.4 2.2 1.8 6.6 2.2 11.3.2 2.8-.4 5.5-.9 8.1-.4 1.9-.8 3.9-.9 5.9-7.7.3-14.2 1.8-19.5 4.5-7.2 3.7-12.1 9.6-14.1 17-5 18.2 11.2 38.5 11.8 39.2 1.9 3.4 2.7 27.8-1.7 37.6-.6 1.4-2.2 2.7-4.3 4.4-.7.5-1.4 1.1-2.2 1.7-6.1 4.6-15.4 11.7-15.4 27.8 0 22.1 22.4 34.1 40.4 43.7 3 1.6 5.8 3.1 8.3 4.6 2.7 1.6 12.2 11.4 12.2 26.1 0 6.9-.6 39.7-3.7 62.4-11.6-9.9-22.2-25.9-24.6-43.8 0 0-29.2 22.6-20.6 70.8 5.2 29.5 23.2 46.1 47 54.7 8.8 19.1 29.4 45.7 67.3 49.6C143 504.3 163 512 192.2 512h.2c29.1 0 49.1-7.7 63.6-19.5 37.9-3.9 58.5-30.5 67.3-49.6 23.8-8.7 41.7-25.2 47-54.7 8.2-48.4-21.1-70.9-21.1-70.9zM305.7 37.7c5.6-1.8 11.6-2.7 17.7-2.7 11 0 19.9 3 24.7 5-3.1 1.4-6.4 3.2-9.7 5.3-2.4-.4-5.6-.8-9.2-.8-10.5 0-20.5 3.1-28.7 8.9-12.3 8.7-18 16.9-20.7 22.4-2.2-1.3-4.5-2.5-7.1-3.7-1.6-.8-3.1-1.5-4.7-2.2 6.1-9.1 19.9-26.5 37.7-32.2zm21 18.2c-.8 1-1.6 2.1-2.3 3.2-3.3 5.2-3.9 11.6-4.4 17.8-.5 6.4-1.1 12.5-4.4 17-4.2.8-8.1 1.7-11.5 2.7-2.3-3.1-5.6-7-10.5-11.2 1.4-4.8 5.5-16.1 13.5-22.5 5.6-4.3 12.2-6.7 19.6-7zM45.6 45.3c-3.3-2.2-6.6-4-9.7-5.3 4.8-2 13.7-5 24.7-5 6.1 0 12 .9 17.7 2.7 17.8 5.8 31.6 23.2 37.7 32.1-1.6.7-3.2 1.4-4.8 2.2-2.5 1.2-4.9 2.5-7.1 3.7-2.6-5.4-8.3-13.7-20.7-22.4-8.3-5.8-18.2-8.9-28.8-8.9-3.4.1-6.6.5-9 .9zm44.7 40.1c-4.9 4.2-8.3 8-10.5 11.2-3.4-.9-7.3-1.9-11.5-2.7C65 89.5 64.5 83.4 64 77c-.5-6.2-1.1-12.6-4.4-17.8-.7-1.1-1.5-2.2-2.3-3.2 7.4.3 14 2.6 19.5 7 8 6.3 12.1 17.6 13.5 22.4zM58.1 259.9c-2.7-1.6-5.6-3.1-8.4-4.6-14.9-8-30.2-16.3-30.2-30.5 0-11.1 4.3-14.6 8.9-18.2l.5-.4c.7-.6 1.4-1.2 2.2-1.8-.9 7.2-1.9 13.3-2.7 14.9 0 0 12.1-15 15.7-44.3 1.4-11.5-1.1-34.3-5.1-43 .2 4.9 0 9.8-.3 14.4-.4-.8-.8-1.6-1.3-2.2-3.2-4-11.8-17.5-9.4-26.6.9-3.5 3.1-6 6.7-7.8 3.8-1.9 8.8-2.9 15.1-2.9 12.3 0 25.9 3.7 32.9 6 25.1 8 55.4 30.9 64.1 37.7.2.2.4.3.4.3l5.6 3.9-3.5-5.8c-.2-.3-19.1-31.4-53.2-46.5 2-2.9 7.4-8.1 21.6-15.1 21.4-10.5 46.5-15.8 74.3-15.8 27.9 0 52.9 5.3 74.3 15.8 14.2 6.9 19.6 12.2 21.6 15.1-34 15.1-52.9 46.2-53.1 46.5l-3.5 5.8 5.6-3.9s.2-.1.4-.3c8.7-6.8 39-29.8 64.1-37.7 7-2.2 20.6-6 32.9-6 6.3 0 11.3 1 15.1 2.9 3.5 1.8 5.7 4.4 6.7 7.8 2.5 9.1-6.1 22.6-9.4 26.6-.5.6-.9 1.3-1.3 2.2-.3-4.6-.5-9.5-.3-14.4-4 8.8-6.5 31.5-5.1 43 3.6 29.3 15.7 44.3 15.7 44.3-.8-1.6-1.8-7.7-2.7-14.9.7.6 1.5 1.2 2.2 1.8l.5.4c4.6 3.7 8.9 7.1 8.9 18.2 0 14.2-15.4 22.5-30.2 30.5-2.9 1.5-5.7 3.1-8.4 4.6-8.7 5-18 16.7-19.1 34.2-.9 14.6.9 49.9 3.4 75.9-12.4 4.8-26.7 6.4-39.7 6.8-2-4.1-3.9-8.5-5.5-13.1-.7-2-19.6-51.1-26.4-62.2 5.5 39 17.5 73.7 23.5 89.6-3.5-.5-7.3-.7-11.7-.7h-117c-4.4 0-8.3.3-11.7.7 6-15.9 18.1-50.6 23.5-89.6-6.8 11.2-25.7 60.3-26.4 62.2-1.6 4.6-3.5 9-5.5 13.1-13-.4-27.2-2-39.7-6.8 2.5-26 4.3-61.2 3.4-75.9-.9-17.4-10.3-29.2-19-34.2zM34.8 404.6c-12.1-20-8.7-54.1-3.7-59.1 10.9 34.4 47.2 44.3 74.4 45.4-2.7 4.2-5.2 7.6-7 10l-1.4 1.4c-7.2 7.8-8.6 18.5-4.1 31.8-22.7-.1-46.3-9.8-58.2-29.5zm45.7 43.5c6 1.1 12.2 1.9 18.6 2.4 3.5 8 7.4 15.9 12.3 23.1-14.4-5.9-24.4-16-30.9-25.5zM192 498.2c-60.6-.1-78.3-45.8-84.9-64.7-3.7-10.5-3.4-18.2.9-23.1 2.9-3.3 9.5-7.2 24.6-7.2h118.8c15.1 0 21.8 3.9 24.6 7.2 4.2 4.8 4.5 12.6.9 23.1-6.6 18.8-24.3 64.6-84.9 64.7zm80.6-24.6c4.9-7.2 8.8-15.1 12.3-23.1 6.4-.5 12.6-1.3 18.6-2.4-6.5 9.5-16.5 19.6-30.9 25.5zm76.6-69c-12 19.7-35.6 29.3-58.1 29.7 4.5-13.3 3.1-24.1-4.1-31.8-.4-.5-.9-1-1.4-1.5-1.8-2.4-4.3-5.8-7-10 27.2-1.2 63.5-11 74.4-45.4 5 5 8.4 39.1-3.8 59zM191.9 187.7h.2c12.7-.1 27.2-17.8 27.2-17.8-9.9 6-18.8 8.1-27.3 8.3-8.5-.2-17.4-2.3-27.3-8.3 0 0 14.5 17.6 27.2 17.8zm61.7 230.7h-29.4c-4.2 0-7.2.9-8.9 2.7-2.2 2.3-1.5 5.2-.9 6.7 1 2.6 5.5 11.3 13 19.3 2.7 2.9 6.6 4.5 11 4.5s8.7-1.6 11.8-4.2c2.3-2 10.2-9.2 13.7-18.1 1.3-3.3 1-6-.9-7.9-1.3-1.3-4-2.9-9.4-3z"],gulp:[256,512,[],"f3ae","M209.8 391.1l-14.1 24.6-4.6 80.2c0 8.9-28.3 16.1-63.1 16.1s-63.1-7.2-63.1-16.1l-5.8-79.4-14.9-25.4c41.2 17.3 126 16.7 165.6 0zm-196-253.3l13.6 125.5c5.9-20 20.8-47 40-55.2 6.3-2.7 12.7-2.7 18.7.9 5.2 3 9.6 9.3 10.1 11.8 1.2 6.5-2 9.1-4.5 9.1-3 0-5.3-4.6-6.8-7.3-4.1-7.3-10.3-7.6-16.9-2.8-6.9 5-12.9 13.4-17.1 20.7-5.1 8.8-9.4 18.5-12 28.2-1.5 5.6-2.9 14.6-.6 19.9 1 2.2 2.5 3.6 4.9 3.6 5 0 12.3-6.6 15.8-10.1 4.5-4.5 10.3-11.5 12.5-16l5.2-15.5c2.6-6.8 9.9-5.6 9.9 0 0 10.2-3.7 13.6-10 34.7-5.8 19.5-7.6 25.8-7.6 25.8-.7 2.8-3.4 7.5-6.3 7.5-1.2 0-2.1-.4-2.6-1.2-1-1.4-.9-5.3-.8-6.3.2-3.2 6.3-22.2 7.3-25.2-2 2.2-4.1 4.4-6.4 6.6-5.4 5.1-14.1 11.8-21.5 11.8-3.4 0-5.6-.9-7.7-2.4l7.6 79.6c2 5 39.2 17.1 88.2 17.1 49.1 0 86.3-12.2 88.2-17.1l10.9-94.6c-5.7 5.2-12.3 11.6-19.6 14.8-5.4 2.3-17.4 3.8-17.4-5.7 0-5.2 9.1-14.8 14.4-21.5 1.4-1.7 4.7-5.9 4.7-8.1 0-2.9-6-2.2-11.7 2.5-3.2 2.7-6.2 6.3-8.7 9.7-4.3 6-6.6 11.2-8.5 15.5-6.2 14.2-4.1 8.6-9.1 22-5 13.3-4.2 11.8-5.2 14-.9 1.9-2.2 3.5-4 4.5-1.9 1-4.5.9-6.1-.3-.9-.6-1.3-1.9-1.3-3.7 0-.9.1-1.8.3-2.7 1.5-6.1 7.8-18.1 15-34.3 1.6-3.7 1-2.6.8-2.3-6.2 6-10.9 8.9-14.4 10.5-5.8 2.6-13 2.6-14.5-4.1-.1-.4-.1-.8-.2-1.2-11.8 9.2-24.3 11.7-20-8.1-4.6 8.2-12.6 14.9-22.4 14.9-4.1 0-7.1-1.4-8.6-5.1-2.3-5.5 1.3-14.9 4.6-23.8 1.7-4.5 4-9.9 7.1-16.2 1.6-3.4 4.2-5.4 7.6-4.5.6.2 1.1.4 1.6.7 2.6 1.8 1.6 4.5.3 7.2-3.8 7.5-7.1 13-9.3 20.8-.9 3.3-2 9 1.5 9 2.4 0 4.7-.8 6.9-2.4 4.6-3.4 8.3-8.5 11.1-13.5 2-3.6 4.4-8.3 5.6-12.3.5-1.7 1.1-3.3 1.8-4.8 1.1-2.5 2.6-5.1 5.2-5.1 1.3 0 2.4.5 3.2 1.5 1.7 2.2 1.3 4.5.4 6.9-2 5.6-4.7 10.6-6.9 16.7-1.3 3.5-2.7 8-2.7 11.7 0 3.4 3.7 2.6 6.8 1.2 2.4-1.1 4.8-2.8 6.8-4.5 1.2-4.9.9-3.8 26.4-68.2 1.3-3.3 3.7-4.7 6.1-4.7 1.2 0 2.2.4 3.2 1.1 1.7 1.3 1.7 4.1 1 6.2-.7 1.9-.6 1.3-4.5 10.5-5.2 12.1-8.6 20.8-13.2 31.9-1.9 4.6-7.7 18.9-8.7 22.3-.6 2.2-1.3 5.8 1 5.8 5.4 0 19.3-13.1 23.1-17 .2-.3.5-.4.9-.6.6-1.9 1.2-3.7 1.7-5.5 1.4-3.8 2.7-8.2 5.3-11.3.8-1 1.7-1.6 2.7-1.6 2.8 0 4.2 1.2 4.2 4 0 1.1-.7 5.1-1.1 6.2 1.4-1.5 2.9-3 4.5-4.5 15-13.9 25.7-6.8 25.7.2 0 7.4-8.9 17.7-13.8 23.4-1.6 1.9-4.9 5.4-5 6.4 0 1.3.9 1.8 2.2 1.8 2 0 6.4-3.5 8-4.7 5-3.9 11.8-9.9 16.6-14.1l14.8-136.8c-30.5 17.1-197.6 17.2-228.3.2zm229.7-8.5c0 21-231.2 21-231.2 0 0-8.8 51.8-15.9 115.6-15.9 9 0 17.8.1 26.3.4l12.6-48.7L228.1.6c1.4-1.4 5.8-.2 9.9 3.5s6.6 7.9 5.3 9.3l-.1.1L185.9 74l-10 40.7c39.9 2.6 67.6 8.1 67.6 14.6zm-69.4 4.6c0-.8-.9-1.5-2.5-2.1l-.2.8c0 1.3-5 2.4-11.1 2.4s-11.1-1.1-11.1-2.4c0-.1 0-.2.1-.3l.2-.7c-1.8.6-3 1.4-3 2.3 0 2.1 6.2 3.7 13.7 3.7 7.7.1 13.9-1.6 13.9-3.7z"],"hacker-news":[448,512,[],"f1d4","M0 32v448h448V32H0zm21.2 197.2H21c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4zm218 53.9V384h-31.4V281.3L128 128h37.3c52.5 98.3 49.2 101.2 59.3 125.6 12.3-27 5.8-24.4 60.6-125.6H320l-80.8 155.1z"],"hacker-news-square":[448,512,[],"f3af","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM21.2 229.2H21c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4zm218 53.9V384h-31.4V281.3L128 128h37.3c52.5 98.3 49.2 101.2 59.3 125.6 12.3-27 5.8-24.4 60.6-125.6H320l-80.8 155.1z"],hackerrank:[512,512,[],"f5f7","M477.5 128C463 103.05 285.13 0 256.16 0S49.25 102.79 34.84 128s-14.49 230.8 0 256 192.38 128 221.32 128S463 409.08 477.49 384s14.51-231 .01-256zM316.13 414.22c-4 0-40.91-35.77-38-38.69.87-.87 6.26-1.48 17.55-1.83 0-26.23.59-68.59.94-86.32 0-2-.44-3.43-.44-5.85h-79.93c0 7.1-.46 36.2 1.37 72.88.23 4.54-1.58 6-5.74 5.94-10.13 0-20.27-.11-30.41-.08-4.1 0-5.87-1.53-5.74-6.11.92-33.44 3-84-.15-212.67v-3.17c-9.67-.35-16.38-1-17.26-1.84-2.92-2.92 34.54-38.69 38.49-38.69s41.17 35.78 38.27 38.69c-.87.87-7.9 1.49-16.77 1.84v3.16c-2.42 25.75-2 79.59-2.63 105.39h80.26c0-4.55.39-34.74-1.2-83.64-.1-3.39.95-5.17 4.21-5.2 11.07-.08 22.15-.13 33.23-.06 3.46 0 4.57 1.72 4.5 5.38C333 354.64 336 341.29 336 373.69c8.87.35 16.82 1 17.69 1.84 2.88 2.91-33.62 38.69-37.58 38.69z"],hips:[640,512,[],"f452","M251.6 157.6c0-1.9-.9-2.8-2.8-2.8h-40.9c-1.6 0-2.7 1.4-2.7 2.8v201.8c0 1.4 1.1 2.8 2.7 2.8h40.9c1.9 0 2.8-.9 2.8-2.8zM156.5 168c-16.1-11.8-36.3-17.9-60.3-18-18.1-.1-34.6 3.7-49.8 11.4V80.2c0-1.8-.9-2.7-2.8-2.7H2.7c-1.8 0-2.7.9-2.7 2.7v279.2c0 1.9.9 2.8 2.7 2.8h41c1.9 0 2.8-.9 2.8-2.8V223.3c0-.8-2.8-27 45.8-27 48.5 0 45.8 26.1 45.8 27v122.6c0 9 7.3 16.3 16.4 16.3h27.3c1.8 0 2.7-.9 2.7-2.8V223.3c0-23.4-9.3-41.8-28-55.3zm478.4 110.1c-6.8-15.7-18.4-27-34.9-34.1l-57.6-25.3c-8.6-3.6-9.2-11.2-2.6-16.1 7.4-5.5 44.3-13.9 84 6.8 1.7 1 4-.3 4-2.4v-44.7c0-1.3-.6-2.1-1.9-2.6-17.7-6.6-36.1-9.9-55.1-9.9-26.5 0-45.3 5.8-58.5 15.4-.5.4-28.4 20-22.7 53.7 3.4 19.6 15.8 34.2 37.2 43.6l53.6 23.5c11.6 5.1 15.2 13.3 12.2 21.2-3.7 9.1-13.2 13.6-36.5 13.6-24.3 0-44.7-8.9-58.4-19.1-2.1-1.4-4.4.2-4.4 2.3v34.4c0 10.4 4.9 17.3 14.6 20.7 15.6 5.5 31.6 8.2 48.2 8.2 12.7 0 25.8-1.2 36.3-4.3.7-.3 36-8.9 45.6-45.8 3.5-13.5 2.4-26.5-3.1-39.1zM376.2 149.8c-31.7 0-104.2 20.1-104.2 103.5v183.5c0 .8.6 2.7 2.7 2.7h40.9c1.9 0 2.8-.9 2.8-2.7V348c16.5 12.7 35.8 19.1 57.7 19.1 60.5 0 108.7-48.5 108.7-108.7.1-60.3-48.2-108.6-108.6-108.6zm0 170.9c-17.2 0-31.9-6.1-44-18.2-12.2-12.2-18.2-26.8-18.2-44 0-34.5 27.6-62.2 62.2-62.2 34.5 0 62.2 27.6 62.2 62.2.1 34.3-27.3 62.2-62.2 62.2zM228.3 72.5c-15.9 0-28.8 12.9-28.9 28.9 0 15.6 12.7 28.9 28.9 28.9s28.9-13.1 28.9-28.9c0-16.2-13-28.9-28.9-28.9z"],"hire-a-helper":[512,512,[],"f3b0","M443.1 0H71.9C67.9 37.3 37.4 67.8 0 71.7v371.5c37.4 4.9 66 32.4 71.9 68.8h372.2c3-36.4 32.5-65.8 67.9-69.8V71.7c-36.4-5.9-65-35.3-68.9-71.7zm-37 404.9c-36.3 0-18.8-2-55.1-2-35.8 0-21 2-56.1 2-5.9 0-4.9-8.2 0-9.8 22.8-7.6 22.9-10.2 24.6-12.8 10.4-15.6 5.9-83 5.9-113 0-5.3-6.4-12.8-13.8-12.8H200.4c-7.4 0-13.8 7.5-13.8 12.8 0 30-4.5 97.4 5.9 113 1.7 2.5 1.8 5.2 24.6 12.8 4.9 1.6 6 9.8 0 9.8-35.1 0-20.3-2-56.1-2-36.3 0-18.8 2-55.1 2-7.9 0-5.8-10.8 0-10.8 10.2-3.4 13.5-3.5 21.7-13.8 7.7-12.9 7.9-44.4 7.9-127.8V151.3c0-22.2-12.2-28.3-28.6-32.4-8.8-2.2-4-11.8 1-11.8 36.5 0 20.6 2 57.1 2 32.7 0 16.5-2 49.2-2 3.3 0 8.5 8.3 1 10.8-4.9 1.6-27.6 3.7-27.6 39.3 0 45.6-.2 55.8 1 68.8 0 1.3 2.3 12.8 12.8 12.8h109.2c10.5 0 12.8-11.5 12.8-12.8 1.2-13 1-23.2 1-68.8 0-35.6-22.7-37.7-27.6-39.3-7.5-2.5-2.3-10.8 1-10.8 32.7 0 16.5 2 49.2 2 36.5 0 20.6-2 57.1-2 4.9 0 9.9 9.6 1 11.8-16.4 4.1-28.6 10.3-28.6 32.4v101.2c0 83.4.1 114.9 7.9 127.8 8.2 10.2 11.4 10.4 21.7 13.8 5.8 0 7.8 10.8 0 10.8z"],hooli:[640,512,[],"f427","M144.5 352l38.3.8c-13.2-4.6-26-10.2-38.3-16.8zm57.7-5.3v5.3l-19.4.8c36.5 12.5 69.9 14.2 94.7 7.2-19.9.2-45.8-2.6-75.3-13.3zm408.9-115.2c15.9 0 28.9-12.9 28.9-28.9s-12.9-24.5-28.9-24.5c-15.9 0-28.9 8.6-28.9 24.5s12.9 28.9 28.9 28.9zm-29 120.5H640V241.5h-57.9zm-73.7 0h57.9V156.7L508.4 184zm-31-119.4c-18.2-18.2-50.4-17.1-50.4-17.1s-32.3-1.1-50.4 17.1c-18.2 18.2-16.8 33.9-16.8 52.6s-1.4 34.3 16.8 52.5 50.4 17.1 50.4 17.1 32.3 1.1 50.4-17.1c18.2-18.2 16.8-33.8 16.8-52.5-.1-18.8 1.3-34.5-16.8-52.6zm-39.8 71.9c0 3.6-1.8 12.5-10.7 12.5s-10.7-8.9-10.7-12.5v-40.4c0-8.7 7.3-10.9 10.7-10.9s10.7 2.1 10.7 10.9zm-106.2-71.9c-18.2-18.2-50.4-17.1-50.4-17.1s-32.2-1.1-50.4 17.1c-1.9 1.9-3.7 3.9-5.3 6-38.2-29.6-72.5-46.5-102.1-61.1v-20.7l-22.5 10.6c-54.4-22.1-89-18.2-97.3.1 0 0-24.9 32.8 61.8 110.8V352h57.9v-28.6c-6.5-4.2-13-8.7-19.4-13.6-14.8-11.2-27.4-21.6-38.4-31.4v-31c13.1 14.7 30.5 31.4 53.4 50.3l4.5 3.6v-29.8c0-6.9 1.7-18.2 10.8-18.2s10.6 6.9 10.6 15V317c18 12.2 37.3 22.1 57.7 29.6v-93.9c0-18.7-13.4-37.4-40.6-37.4-15.8-.1-30.5 8.2-38.5 21.9v-54.3c41.9 20.9 83.9 46.5 99.9 58.3-10.2 14.6-9.3 28.1-9.3 43.7 0 18.7-1.4 34.3 16.8 52.5s50.4 17.1 50.4 17.1 32.3 1.1 50.4-17.1c18.2-18.2 16.7-33.8 16.7-52.5 0-18.5 1.5-34.2-16.7-52.3zM65.2 184v63.3c-48.7-54.5-38.9-76-35.2-79.1 13.5-11.4 37.5-8 64.4 2.1zm226.5 120.5c0 3.6-1.8 12.5-10.7 12.5s-10.7-8.9-10.7-12.5v-40.4c0-8.7 7.3-10.9 10.7-10.9s10.7 2.1 10.7 10.9z"],hornbill:[512,512,[],"f592","M76.38 370.3a37.8 37.8 0 1 1-32.07-32.42c-78.28-111.35 52-190.53 52-190.53-5.86 43-8.24 91.16-8.24 91.16-67.31 41.49.93 64.06 39.81 72.87a140.38 140.38 0 0 0 131.66 91.94c1.92 0 3.77-.21 5.67-.28l.11 18.86c-99.22 1.39-158.7-29.14-188.94-51.6zm108-327.7A37.57 37.57 0 0 0 181 21.45a37.95 37.95 0 1 0-31.17 54.22c-22.55 29.91-53.83 89.57-52.42 190l21.84-.15c0-.9-.14-1.77-.14-2.68A140.42 140.42 0 0 1 207 132.71c8-37.71 30.7-114.3 73.8-44.29 0 0 48.14 2.38 91.18 8.24 0 0-77.84-128-187.59-54.06zm304.19 134.17a37.94 37.94 0 1 0-53.84-28.7C403 126.13 344.89 99 251.28 100.33l.14 22.5c2.7-.15 5.39-.41 8.14-.41a140.37 140.37 0 0 1 130.49 88.76c39.1 9 105.06 31.58 38.46 72.54 0 0-2.34 48.13-8.21 91.16 0 0 133.45-81.16 49-194.61a37.45 37.45 0 0 0 19.31-3.5zM374.06 436.24c21.43-32.46 46.42-89.69 45.14-179.66l-19.52.14c.08 2.06.3 4.07.3 6.15a140.34 140.34 0 0 1-91.39 131.45c-8.85 38.95-31.44 106.66-72.77 39.49 0 0-48.12-2.34-91.19-8.22 0 0 79.92 131.34 191.9 51a37.5 37.5 0 0 0 3.64 14 37.93 37.93 0 1 0 33.89-54.29z"],hotjar:[448,512,[],"f3b1","M414.9 161.5C340.2 29 121.1 0 121.1 0S222.2 110.4 93 197.7C11.3 252.8-21 324.4 14 402.6c26.8 59.9 83.5 84.3 144.6 93.4-29.2-55.1-6.6-122.4-4.1-129.6 57.1 86.4 165 0 110.8-93.9 71 15.4 81.6 138.6 27.1 215.5 80.5-25.3 134.1-88.9 148.8-145.6 15.5-59.3 3.7-127.9-26.3-180.9z"],houzz:[448,512,[],"f27c","M275.9 330.7H171.3V480H17V32h109.5v104.5l305.1 85.6V480H275.9z"],html5:[384,512,[],"f13b","M0 32l34.9 395.8L191.5 480l157.6-52.2L384 32H0zm308.2 127.9H124.4l4.1 49.4h175.6l-13.6 148.4-97.9 27v.3h-1.1l-98.7-27.3-6-75.8h47.7L138 320l53.5 14.5 53.7-14.5 6-62.2H84.3L71.5 112.2h241.1l-4.4 47.7z"],hubspot:[512,512,[],"f3b2","M267.4 211.6c-25.1 23.7-40.8 57.3-40.8 94.6 0 29.3 9.7 56.3 26 78L203.1 434c-4.4-1.6-9.1-2.5-14-2.5-10.8 0-20.9 4.2-28.5 11.8-7.6 7.6-11.8 17.8-11.8 28.6s4.2 20.9 11.8 28.5c7.6 7.6 17.8 11.6 28.5 11.6 10.8 0 20.9-3.9 28.6-11.6 7.6-7.6 11.8-17.8 11.8-28.5 0-4.2-.6-8.2-1.9-12.1l50-50.2c22 16.9 49.4 26.9 79.3 26.9 71.9 0 130-58.3 130-130.2 0-65.2-47.7-119.2-110.2-128.7V116c17.5-7.4 28.2-23.8 28.2-42.9 0-26.1-20.9-47.9-47-47.9S311.2 47 311.2 73.1c0 19.1 10.7 35.5 28.2 42.9v61.2c-15.2 2.1-29.6 6.7-42.7 13.6-27.6-20.9-117.5-85.7-168.9-124.8 1.2-4.4 2-9 2-13.8C129.8 23.4 106.3 0 77.4 0 48.6 0 25.2 23.4 25.2 52.2c0 28.9 23.4 52.3 52.2 52.3 9.8 0 18.9-2.9 26.8-7.6l163.2 114.7zm89.5 163.6c-38.1 0-69-30.9-69-69s30.9-69 69-69 69 30.9 69 69-30.9 69-69 69z"],ideal:[576,512,[],"f913","M125.61,165.48a49.07,49.07,0,1,0,49.06,49.06A49.08,49.08,0,0,0,125.61,165.48ZM86.15,425.84h78.94V285.32H86.15Zm151.46-211.6c0-20-10-22.53-18.74-22.53H204.82V237.5h14.05C228.62,237.5,237.61,234.69,237.61,214.24Zm201.69,46V168.93h22.75V237.5h33.69C486.5,113.08,388.61,86.19,299.67,86.19H204.84V169h14c25.6,0,41.5,17.35,41.5,45.26,0,28.81-15.52,46-41.5,46h-14V425.88h94.83c144.61,0,194.94-67.16,196.72-165.64Zm-109.75,0H273.3V169h54.43v22.73H296v10.58h30V225H296V237.5h33.51Zm74.66,0-5.16-17.67H369.31l-5.18,17.67H340.47L368,168.92h32.35l27.53,91.34ZM299.65,32H32V480H299.65c161.85,0,251-79.73,251-224.52C550.62,172,518,32,299.65,32Zm0,426.92H53.07V53.07H299.65c142.1,0,229.9,64.61,229.9,202.41C529.55,389.57,448.55,458.92,299.65,458.92Zm83.86-264.85L376,219.88H392.4l-7.52-25.81Z"],imdb:[448,512,[],"f2d8","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM21.3 229.2H21c.1-.1.2-.3.3-.4zM97 319.8H64V192h33zm113.2 0h-28.7v-86.4l-11.6 86.4h-20.6l-12.2-84.5v84.5h-29V192h42.8c3.3 19.8 6 39.9 8.7 59.9l7.6-59.9h43zm11.4 0V192h24.6c17.6 0 44.7-1.6 49 20.9 1.7 7.6 1.4 16.3 1.4 24.4 0 88.5 11.1 82.6-75 82.5zm160.9-29.2c0 15.7-2.4 30.9-22.2 30.9-9 0-15.2-3-20.9-9.8l-1.9 8.1h-29.8V192h31.7v41.7c6-6.5 12-9.2 20.9-9.2 21.4 0 22.2 12.8 22.2 30.1zM265 229.9c0-9.7 1.6-16-10.3-16v83.7c12.2.3 10.3-8.7 10.3-18.4zm85.5 26.1c0-5.4 1.1-12.7-6.2-12.7-6 0-4.9 8.9-4.9 12.7 0 .6-1.1 39.6 1.1 44.7.8 1.6 2.2 2.4 3.8 2.4 7.8 0 6.2-9 6.2-14.4z"],instagram:[448,512,[],"f16d","M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"],"instagram-square":[448,512,[],"f955","M224,202.66A53.34,53.34,0,1,0,277.36,256,53.38,53.38,0,0,0,224,202.66Zm124.71-41a54,54,0,0,0-30.41-30.41c-21-8.29-71-6.43-94.3-6.43s-73.25-1.93-94.31,6.43a54,54,0,0,0-30.41,30.41c-8.28,21-6.43,71.05-6.43,94.33S91,329.26,99.32,350.33a54,54,0,0,0,30.41,30.41c21,8.29,71,6.43,94.31,6.43s73.24,1.93,94.3-6.43a54,54,0,0,0,30.41-30.41c8.35-21,6.43-71.05,6.43-94.33S357.1,182.74,348.75,161.67ZM224,338a82,82,0,1,1,82-82A81.9,81.9,0,0,1,224,338Zm85.38-148.3a19.14,19.14,0,1,1,19.13-19.14A19.1,19.1,0,0,1,309.42,189.74ZM400,32H48A48,48,0,0,0,0,80V432a48,48,0,0,0,48,48H400a48,48,0,0,0,48-48V80A48,48,0,0,0,400,32ZM382.88,322c-1.29,25.63-7.14,48.34-25.85,67s-41.4,24.63-67,25.85c-26.41,1.49-105.59,1.49-132,0-25.63-1.29-48.26-7.15-67-25.85s-24.63-41.42-25.85-67c-1.49-26.42-1.49-105.61,0-132,1.29-25.63,7.07-48.34,25.85-67s41.47-24.56,67-25.78c26.41-1.49,105.59-1.49,132,0,25.63,1.29,48.33,7.15,67,25.85s24.63,41.42,25.85,67.05C384.37,216.44,384.37,295.56,382.88,322Z"],intercom:[448,512,[],"f7af","M392 32H56C25.1 32 0 57.1 0 88v336c0 30.9 25.1 56 56 56h336c30.9 0 56-25.1 56-56V88c0-30.9-25.1-56-56-56zm-108.3 82.1c0-19.8 29.9-19.8 29.9 0v199.5c0 19.8-29.9 19.8-29.9 0V114.1zm-74.6-7.5c0-19.8 29.9-19.8 29.9 0v216.5c0 19.8-29.9 19.8-29.9 0V106.6zm-74.7 7.5c0-19.8 29.9-19.8 29.9 0v199.5c0 19.8-29.9 19.8-29.9 0V114.1zM59.7 144c0-19.8 29.9-19.8 29.9 0v134.3c0 19.8-29.9 19.8-29.9 0V144zm323.4 227.8c-72.8 63-241.7 65.4-318.1 0-15-12.8 4.4-35.5 19.4-22.7 65.9 55.3 216.1 53.9 279.3 0 14.9-12.9 34.3 9.8 19.4 22.7zm5.2-93.5c0 19.8-29.9 19.8-29.9 0V144c0-19.8 29.9-19.8 29.9 0v134.3z"],"internet-explorer":[512,512,[],"f26b","M483.049 159.706c10.855-24.575 21.424-60.438 21.424-87.871 0-72.722-79.641-98.371-209.673-38.577-107.632-7.181-211.221 73.67-237.098 186.457 30.852-34.862 78.271-82.298 121.977-101.158C125.404 166.85 79.128 228.002 43.992 291.725 23.246 329.651 0 390.94 0 436.747c0 98.575 92.854 86.5 180.251 42.006 31.423 15.43 66.559 15.573 101.695 15.573 97.124 0 184.249-54.294 216.814-146.022H377.927c-52.509 88.593-196.819 52.996-196.819-47.436H509.9c6.407-43.581-1.655-95.715-26.851-141.162zM64.559 346.877c17.711 51.15 53.703 95.871 100.266 123.304-88.741 48.94-173.267 29.096-100.266-123.304zm115.977-108.873c2-55.151 50.276-94.871 103.98-94.871 53.418 0 101.981 39.72 103.981 94.871H180.536zm184.536-187.6c21.425-10.287 48.563-22.003 72.558-22.003 31.422 0 54.274 21.717 54.274 53.722 0 20.003-7.427 49.007-14.569 67.867-26.28-42.292-65.986-81.584-112.263-99.586z"],invision:[448,512,[],"f7b0","M407.4 32H40.6C18.2 32 0 50.2 0 72.6v366.8C0 461.8 18.2 480 40.6 480h366.8c22.4 0 40.6-18.2 40.6-40.6V72.6c0-22.4-18.2-40.6-40.6-40.6zM176.1 145.6c.4 23.4-22.4 27.3-26.6 27.4-14.9 0-27.1-12-27.1-27 .1-35.2 53.1-35.5 53.7-.4zM332.8 377c-65.6 0-34.1-74-25-106.6 14.1-46.4-45.2-59-59.9.7l-25.8 103.3H177l8.1-32.5c-31.5 51.8-94.6 44.4-94.6-4.3.1-14.3.9-14 23-104.1H81.7l9.7-35.6h76.4c-33.6 133.7-32.6 126.9-32.9 138.2 0 20.9 40.9 13.5 57.4-23.2l19.8-79.4h-32.3l9.7-35.6h68.8l-8.9 40.5c40.5-75.5 127.9-47.8 101.8 38-14.2 51.1-14.6 50.7-14.9 58.8 0 15.5 17.5 22.6 31.8-16.9L386 325c-10.5 36.7-29.4 52-53.2 52z"],ioxhost:[640,512,[],"f208","M616 160h-67.3C511.2 70.7 422.9 8 320 8 183 8 72 119 72 256c0 16.4 1.6 32.5 4.7 48H24c-13.3 0-24 10.8-24 24 0 13.3 10.7 24 24 24h67.3c37.5 89.3 125.8 152 228.7 152 137 0 248-111 248-248 0-16.4-1.6-32.5-4.7-48H616c13.3 0 24-10.8 24-24 0-13.3-10.7-24-24-24zm-96 96c0 110.5-89.5 200-200 200-75.7 0-141.6-42-175.5-104H424c13.3 0 24-10.8 24-24 0-13.3-10.7-24-24-24H125.8c-3.8-15.4-5.8-31.4-5.8-48 0-110.5 89.5-200 200-200 75.7 0 141.6 42 175.5 104H216c-13.3 0-24 10.8-24 24 0 13.3 10.7 24 24 24h298.2c3.8 15.4 5.8 31.4 5.8 48zm-304-24h208c13.3 0 24 10.7 24 24 0 13.2-10.7 24-24 24H216c-13.3 0-24-10.7-24-24 0-13.2 10.7-24 24-24z"],"itch-io":[512,512,[],"f83a","M71.92 34.77C50.2 47.67 7.4 96.84 7 109.73v21.34c0 27.06 25.29 50.84 48.25 50.84 27.57 0 50.54-22.85 50.54-50 0 27.12 22.18 50 49.76 50s49-22.85 49-50c0 27.12 23.59 50 51.16 50h.5c27.57 0 51.16-22.85 51.16-50 0 27.12 21.47 50 49 50s49.76-22.85 49.76-50c0 27.12 23 50 50.54 50 23 0 48.25-23.78 48.25-50.84v-21.34c-.4-12.9-43.2-62.07-64.92-75C372.56 32.4 325.76 32 256 32S91.14 33.1 71.92 34.77zm132.32 134.39c-22 38.4-77.9 38.71-99.85.25-13.17 23.14-43.17 32.07-56 27.66-3.87 40.15-13.67 237.13 17.73 269.15 80 18.67 302.08 18.12 379.76 0 31.65-32.27 21.32-232 17.75-269.15-12.92 4.44-42.88-4.6-56-27.66-22 38.52-77.85 38.1-99.85-.24-7.1 12.49-23.05 28.94-51.76 28.94a57.54 57.54 0 0 1-51.75-28.94zm-41.58 53.77c16.47 0 31.09 0 49.22 19.78a436.91 436.91 0 0 1 88.18 0C318.22 223 332.85 223 349.31 223c52.33 0 65.22 77.53 83.87 144.45 17.26 62.15-5.52 63.67-33.95 63.73-42.15-1.57-65.49-32.18-65.49-62.79-39.25 6.43-101.93 8.79-155.55 0 0 30.61-23.34 61.22-65.49 62.79-28.42-.06-51.2-1.58-33.94-63.73 18.67-67 31.56-144.45 83.88-144.45zM256 270.79s-44.38 40.77-52.35 55.21l29-1.17v25.32c0 1.55 21.34.16 23.33.16 11.65.54 23.31 1 23.31-.16v-25.28l29 1.17c-8-14.48-52.35-55.24-52.35-55.24z"],itunes:[448,512,[],"f3b4","M223.6 80.3C129 80.3 52.5 157 52.5 251.5S129 422.8 223.6 422.8s171.2-76.7 171.2-171.2c0-94.6-76.7-171.3-171.2-171.3zm79.4 240c-3.2 13.6-13.5 21.2-27.3 23.8-12.1 2.2-22.2 2.8-31.9-5-11.8-10-12-26.4-1.4-36.8 8.4-8 20.3-9.6 38-12.8 3-.5 5.6-1.2 7.7-3.7 3.2-3.6 2.2-2 2.2-80.8 0-5.6-2.7-7.1-8.4-6.1-4 .7-91.9 17.1-91.9 17.1-5 1.1-6.7 2.6-6.7 8.3 0 116.1.5 110.8-1.2 118.5-2.1 9-7.6 15.8-14.9 19.6-8.3 4.6-23.4 6.6-31.4 5.2-21.4-4-28.9-28.7-14.4-42.9 8.4-8 20.3-9.6 38-12.8 3-.5 5.6-1.2 7.7-3.7 5-5.7.9-127 2.6-133.7.4-2.6 1.5-4.8 3.5-6.4 2.1-1.7 5.8-2.7 6.7-2.7 101-19 113.3-21.4 115.1-21.4 5.7-.4 9 3 9 8.7-.1 170.6.4 161.4-1 167.6zM345.2 32H102.8C45.9 32 0 77.9 0 134.8v242.4C0 434.1 45.9 480 102.8 480h242.4c57 0 102.8-45.9 102.8-102.8V134.8C448 77.9 402.1 32 345.2 32zM223.6 444c-106.3 0-192.5-86.2-192.5-192.5S117.3 59 223.6 59s192.5 86.2 192.5 192.5S329.9 444 223.6 444z"],"itunes-note":[384,512,[],"f3b5","M381.9 388.2c-6.4 27.4-27.2 42.8-55.1 48-24.5 4.5-44.9 5.6-64.5-10.2-23.9-20.1-24.2-53.4-2.7-74.4 17-16.2 40.9-19.5 76.8-25.8 6-1.1 11.2-2.5 15.6-7.4 6.4-7.2 4.4-4.1 4.4-163.2 0-11.2-5.5-14.3-17-12.3-8.2 1.4-185.7 34.6-185.7 34.6-10.2 2.2-13.4 5.2-13.4 16.7 0 234.7 1.1 223.9-2.5 239.5-4.2 18.2-15.4 31.9-30.2 39.5-16.8 9.3-47.2 13.4-63.4 10.4-43.2-8.1-58.4-58-29.1-86.6 17-16.2 40.9-19.5 76.8-25.8 6-1.1 11.2-2.5 15.6-7.4 10.1-11.5 1.8-256.6 5.2-270.2.8-5.2 3-9.6 7.1-12.9 4.2-3.5 11.8-5.5 13.4-5.5 204-38.2 228.9-43.1 232.4-43.1 11.5-.8 18.1 6 18.1 17.6.2 344.5 1.1 326-1.8 338.5z"],java:[384,512,[],"f4e4","M277.74 312.9c9.8-6.7 23.4-12.5 23.4-12.5s-38.7 7-77.2 10.2c-47.1 3.9-97.7 4.7-123.1 1.3-60.1-8 33-30.1 33-30.1s-36.1-2.4-80.6 19c-52.5 25.4 130 37 224.5 12.1zm-85.4-32.1c-19-42.7-83.1-80.2 0-145.8C296 53.2 242.84 0 242.84 0c21.5 84.5-75.6 110.1-110.7 162.6-23.9 35.9 11.7 74.4 60.2 118.2zm114.6-176.2c.1 0-175.2 43.8-91.5 140.2 24.7 28.4-6.5 54-6.5 54s62.7-32.4 33.9-72.9c-26.9-37.8-47.5-56.6 64.1-121.3zm-6.1 270.5a12.19 12.19 0 0 1-2 2.6c128.3-33.7 81.1-118.9 19.8-97.3a17.33 17.33 0 0 0-8.2 6.3 70.45 70.45 0 0 1 11-3c31-6.5 75.5 41.5-20.6 91.4zM348 437.4s14.5 11.9-15.9 21.2c-57.9 17.5-240.8 22.8-291.6.7-18.3-7.9 16-19 26.8-21.3 11.2-2.4 17.7-2 17.7-2-20.3-14.3-131.3 28.1-56.4 40.2C232.84 509.4 401 461.3 348 437.4zM124.44 396c-78.7 22 47.9 67.4 148.1 24.5a185.89 185.89 0 0 1-28.2-13.8c-44.7 8.5-65.4 9.1-106 4.5-33.5-3.8-13.9-15.2-13.9-15.2zm179.8 97.2c-78.7 14.8-175.8 13.1-233.3 3.6 0-.1 11.8 9.7 72.4 13.6 92.2 5.9 233.8-3.3 237.1-46.9 0 0-6.4 16.5-76.2 29.7zM260.64 353c-59.2 11.4-93.5 11.1-136.8 6.6-33.5-3.5-11.6-19.7-11.6-19.7-86.8 28.8 48.2 61.4 169.5 25.9a60.37 60.37 0 0 1-21.1-12.8z"],"jedi-order":[448,512,[],"f50e","M398.5 373.6c95.9-122.1 17.2-233.1 17.2-233.1 45.4 85.8-41.4 170.5-41.4 170.5 105-171.5-60.5-271.5-60.5-271.5 96.9 72.7-10.1 190.7-10.1 190.7 85.8 158.4-68.6 230.1-68.6 230.1s-.4-16.9-2.2-85.7c4.3 4.5 34.5 36.2 34.5 36.2l-24.2-47.4 62.6-9.1-62.6-9.1 20.2-55.5-31.4 45.9c-2.2-87.7-7.8-305.1-7.9-306.9v-2.4 1-1 2.4c0 1-5.6 219-7.9 306.9l-31.4-45.9 20.2 55.5-62.6 9.1 62.6 9.1-24.2 47.4 34.5-36.2c-1.8 68.8-2.2 85.7-2.2 85.7s-154.4-71.7-68.6-230.1c0 0-107-118.1-10.1-190.7 0 0-165.5 99.9-60.5 271.5 0 0-86.8-84.8-41.4-170.5 0 0-78.7 111 17.2 233.1 0 0-26.2-16.1-49.4-77.7 0 0 16.9 183.3 222 185.7h4.1c205-2.4 222-185.7 222-185.7-23.6 61.5-49.9 77.7-49.9 77.7z"],jenkins:[512,512,[],"f3b6","M487.1 425c-1.4-11.2-19-23.1-28.2-31.9-5.1-5-29-23.1-30.4-29.9-1.4-6.6 9.7-21.5 13.3-28.9 5.1-10.7 8.8-23.7 11.3-32.6 18.8-66.1 20.7-156.9-6.2-211.2-10.2-20.6-38.6-49-56.4-62.5-42-31.7-119.6-35.3-170.1-16.6-14.1 5.2-27.8 9.8-40.1 17.1-33.1 19.4-68.3 32.5-78.1 71.6-24.2 10.8-31.5 41.8-30.3 77.8.2 7 4.1 15.8 2.7 22.4-.7 3.3-5.2 7.6-6.1 9.8-11.6 27.7-2.3 64 11.1 83.7 8.1 11.9 21.5 22.4 39.2 25.2.7 10.6 3.3 19.7 8.2 30.4 3.1 6.8 14.7 19 10.4 27.7-2.2 4.4-21 13.8-27.3 17.6C89 407.2 73.7 415 54.2 429c-12.6 9-32.3 10.2-29.2 31.1 2.1 14.1 10.1 31.6 14.7 45.8.7 2 1.4 4.1 2.1 6h422c4.9-15.3 9.7-30.9 14.6-47.2 3.4-11.4 10.2-27.8 8.7-39.7zM205.9 33.7c1.8-.5 3.4.7 4.9 2.4-.2 5.2-5.4 5.1-8.9 6.8-5.4 6.7-13.4 9.8-20 17.2-6.8 7.5-14.4 27.7-23.4 30-4.5 1.1-9.7-.8-13.6-.5-10.4.7-17.7 6-28.3 7.5 13.6-29.9 56.1-54 89.3-63.4zm-104.8 93.6c13.5-14.9 32.1-24.1 54.8-25.9 11.7 29.7-8.4 65-.9 97.6 2.3 9.9 10.2 25.4-2.4 25.7.3-28.3-34.8-46.3-61.3-29.6-1.8-21.5-4.9-51.7 9.8-67.8zm36.7 200.2c-1-4.1-2.7-12.9-2.3-15.1 1.6-8.7 17.1-12.5 11-24.7-11.3-.1-13.8 10.2-24.1 11.3-26.7 2.6-45.6-35.4-44.4-58.4 1-19.5 17.6-38.2 40.1-35.8 16 1.8 21.4 19.2 24.5 34.7 9.2.5 22.5-.4 26.9-7.6-.6-17.5-8.8-31.6-8.2-47.7 1-30.3 17.5-57.6 4.8-87.4 13.6-30.9 53.5-55.3 83.1-70 36.6-18.3 94.9-3.7 129.3 15.8 19.7 11.1 34.4 32.7 48.3 50.7-19.5-5.8-36.1 4.2-33.1 20.3 16.3-14.9 44.2-.2 52.5 16.4 7.9 15.8 7.8 39.3 9 62.8 2.9 57-10.4 115.9-39.1 157.1-7.7 11-14.1 23-24.9 30.6-26 18.2-65.4 34.7-99.2 23.4-44.7-15-65-44.8-89.5-78.8.7 18.7 13.8 34.1 26.8 48.4 11.3 12.5 25 26.6 39.7 32.4-12.3-2.9-31.1-3.8-36.2 7.2-28.6-1.9-55.1-4.8-68.7-24.2-10.6-15.4-21.4-41.4-26.3-61.4zm222 124.1c4.1-3 11.1-2.9 17.4-3.6-5.4-2.7-13-3.7-19.3-2.2-.1-4.2-2-6.8-3.2-10.2 10.6-3.8 35.5-28.5 49.6-20.3 6.7 3.9 9.5 26.2 10.1 37 .4 9-.8 18-4.5 22.8-18.8-.6-35.8-2.8-50.7-7 .9-6.1-1-12.1.6-16.5zm-17.2-20c-16.8.8-26-1.2-38.3-10.8.2-.8 1.4-.5 1.5-1.4 18 8 40.8-3.3 59-4.9-7.9 5.1-14.6 11.6-22.2 17.1zm-12.1 33.2c-1.6-9.4-3.5-12-2.8-20.2 25-16.6 29.7 28.6 2.8 20.2zM226 438.6c-11.6-.7-48.1-14-38.5-23.7 9.4 6.5 27.5 4.9 41.3 7.3.8 4.4-2.8 10.2-2.8 16.4zM57.7 497.1c-4.3-12.7-9.2-25.1-14.8-36.9 30.8-23.8 65.3-48.9 102.2-63.5 2.8-1.1 23.2 25.4 26.2 27.6 16.5 11.7 37 21 56.2 30.2 1.2 8.8 3.9 20.2 8.7 35.5.7 2.3 1.4 4.7 2.2 7.2H57.7zm240.6 5.7h-.8c.3-.2.5-.4.8-.5v.5zm7.5-5.7c2.1-1.4 4.3-2.8 6.4-4.3 1.1 1.4 2.2 2.8 3.2 4.3h-9.6zm15.1-24.7c-10.8 7.3-20.6 18.3-33.3 25.2-6 3.3-27 11.7-33.4 10.2-3.6-.8-3.9-5.3-5.4-9.5-3.1-9-10.1-23.4-10.8-37-.8-17.2-2.5-46 16-42.4 14.9 2.9 32.3 9.7 43.9 16.1 7.1 3.9 11.1 8.6 21.9 9.5-.1 1.4-.1 2.8-.2 4.3-5.9 3.9-15.3 3.8-21.8 7.1 9.5.4 17 2.7 23.5 5.9-.1 3.4-.3 7-.4 10.6zm53.4 24.7h-14c-.1-3.2-2.8-5.8-6.1-5.8s-5.9 2.6-6.1 5.8h-17.4c-2.8-4.4-5.7-8.6-8.9-12.5 2.1-2.2 4-4.7 6-6.9 9 3.7 14.8-4.9 21.7-4.2 7.9.8 14.2 11.7 25.4 11l-.6 12.6zm8.7 0c.2-4 .4-7.8.6-11.5 15.6-7.3 29 1.3 35.7 11.5H383zm83.4-37c-2.3 11.2-5.8 24-9.9 37.1-.2-.1-.4-.1-.6-.1H428c.6-1.1 1.2-2.2 1.9-3.3-2.6-6.1-9-8.7-10.9-15.5 12.1-22.7 6.5-93.4-24.2-78.5 4.3-6.3 15.6-11.5 20.8-19.3 13 10.4 20.8 20.3 33.2 31.4 6.8 6 20 13.3 21.4 23.1.8 5.5-2.6 18.9-3.8 25.1zM222.2 130.5c5.4-14.9 27.2-34.7 45-32 7.7 1.2 18 8.2 12.2 17.7-30.2-7-45.2 12.6-54.4 33.1-8.1-2-4.9-13.1-2.8-18.8zm184.1 63.1c8.2-3.6 22.4-.7 29.6-5.3-4.2-11.5-10.3-21.4-9.3-37.7.5 0 1 0 1.4.1 6.8 14.2 12.7 29.2 21.4 41.7-5.7 13.5-43.6 25.4-43.1 1.2zm20.4-43zm-117.2 45.7c-6.8-10.9-19-32.5-14.5-45.3 6.5 11.9 8.6 24.4 17.8 33.3 4.1 4 12.2 9 8.2 20.2-.9 2.7-7.8 8.6-11.7 9.7-14.4 4.3-47.9.9-36.6-17.1 11.9.7 27.9 7.8 36.8-.8zm27.3 70c3.8 6.6 1.4 18.7 12.1 20.6 20.2 3.4 43.6-12.3 58.1-17.8 9-15.2-.8-20.7-8.9-30.5-16.6-20-38.8-44.8-38-74.7 6.7-4.9 7.3 7.4 8.2 9.7 8.7 20.3 30.4 46.2 46.3 63.5 3.9 4.3 10.3 8.4 11 11.2 2.1 8.2-5.4 18-4.5 23.5-21.7 13.9-45.8 29.1-81.4 25.6-7.4-6.7-10.3-21.4-2.9-31.1zm-201.3-9.2c-6.8-3.9-8.4-21-16.4-21.4-11.4-.7-9.3 22.2-9.3 35.5-7.8-7.1-9.2-29.1-3.5-40.3-6.6-3.2-9.5 3.6-13.1 5.9 4.7-34.1 49.8-15.8 42.3 20.3zm299.6 28.8c-10.1 19.2-24.4 40.4-54 41-.6-6.2-1.1-15.6 0-19.4 22.7-2.2 36.6-13.7 54-21.6zm-141.9 12.4c18.9 9.9 53.6 11 79.3 10.2 1.4 5.6 1.3 12.6 1.4 19.4-33 1.8-72-6.4-80.7-29.6zm92.2 46.7c-1.7 4.3-5.3 9.3-9.8 11.1-12.1 4.9-45.6 8.7-62.4-.3-10.7-5.7-17.5-18.5-23.4-26-2.8-3.6-16.9-12.9-.2-12.9 13.1 32.7 58 29 95.8 28.1z"],jira:[496,512,[],"f7b1","M490 241.7C417.1 169 320.6 71.8 248.5 0 83 164.9 6 241.7 6 241.7c-7.9 7.9-7.9 20.7 0 28.7C138.8 402.7 67.8 331.9 248.5 512c379.4-378 15.7-16.7 241.5-241.7 8-7.9 8-20.7 0-28.6zm-241.5 90l-76-75.7 76-75.7 76 75.7-76 75.7z"],joget:[496,512,[],"f3b7","M378.1 45C337.6 19.9 292.6 8 248.2 8 165 8 83.8 49.9 36.9 125.9c-71.9 116.6-35.6 269.3 81 341.2s269.3 35.6 341.2-80.9c71.9-116.6 35.6-269.4-81-341.2zm51.8 323.2c-40.4 65.5-110.4 101.5-182 101.5-6.8 0-13.6-.4-20.4-1-9-13.6-19.9-33.3-23.7-42.4-5.7-13.7-27.2-45.6 31.2-67.1 51.7-19.1 176.7-16.5 208.8-17.6-4 9-8.6 17.9-13.9 26.6zm-200.8-86.3c-55.5-1.4-81.7-20.8-58.5-48.2s51.1-40.7 68.9-51.2c17.9-10.5 27.3-33.7-23.6-29.7C87.3 161.5 48.6 252.1 37.6 293c-8.8-49.7-.1-102.7 28.5-149.1C128 43.4 259.6 12.2 360.1 74.1c74.8 46.1 111.2 130.9 99.3 212.7-24.9-.5-179.3-3.6-230.3-4.9zm183.8-54.8c-22.7-6-57 11.3-86.7 27.2-29.7 15.8-31.1 8.2-31.1 8.2s40.2-28.1 50.7-34.5 31.9-14 13.4-24.6c-3.2-1.8-6.7-2.7-10.4-2.7-17.8 0-41.5 18.7-67.5 35.6-31.5 20.5-65.3 31.3-65.3 31.3l169.5-1.6 46.5-23.4s3.6-9.5-19.1-15.5z"],joomla:[448,512,[],"f1aa","M.6 92.1C.6 58.8 27.4 32 60.4 32c30 0 54.5 21.9 59.2 50.2 32.6-7.6 67.1.6 96.5 30l-44.3 44.3c-20.5-20.5-42.6-16.3-55.4-3.5-14.3 14.3-14.3 37.9 0 52.2l99.5 99.5-44 44.3c-87.7-87.2-49.7-49.7-99.8-99.7-26.8-26.5-35-64.8-24.8-98.9C20.4 144.6.6 120.7.6 92.1zm129.5 116.4l44.3 44.3c10-10 89.7-89.7 99.7-99.8 14.3-14.3 37.6-14.3 51.9 0 12.8 12.8 17 35-3.5 55.4l44 44.3c31.2-31.2 38.5-67.6 28.9-101.2 29.2-4.1 51.9-29.2 51.9-59.5 0-33.2-26.8-60.1-59.8-60.1-30.3 0-55.4 22.5-59.5 51.6-33.8-9.9-71.7-1.5-98.3 25.1-18.3 19.1-71.1 71.5-99.6 99.9zm266.3 152.2c8.2-32.7-.9-68.5-26.3-93.9-11.8-12.2 5 4.7-99.5-99.7l-44.3 44.3 99.7 99.7c14.3 14.3 14.3 37.6 0 51.9-12.8 12.8-35 17-55.4-3.5l-44 44.3c27.6 30.2 68 38.8 102.7 28 5.5 27.4 29.7 48.1 58.9 48.1 33 0 59.8-26.8 59.8-60.1 0-30.2-22.5-55-51.6-59.1zm-84.3-53.1l-44-44.3c-87 86.4-50.4 50.4-99.7 99.8-14.3 14.3-37.6 14.3-51.9 0-13.1-13.4-16.9-35.3 3.2-55.4l-44-44.3c-30.2 30.2-38 65.2-29.5 98.3-26.7 6-46.2 29.9-46.2 58.2C0 453.2 26.8 480 59.8 480c28.6 0 52.5-19.8 58.6-46.7 32.7 8.2 68.5-.6 94.2-26 32.1-32 12.2-12.4 99.5-99.7z"],js:[448,512,[],"f3b8","M0 32v448h448V32H0zm243.8 349.4c0 43.6-25.6 63.5-62.9 63.5-33.7 0-53.2-17.4-63.2-38.5l34.3-20.7c6.6 11.7 12.6 21.6 27.1 21.6 13.8 0 22.6-5.4 22.6-26.5V237.7h42.1v143.7zm99.6 63.5c-39.1 0-64.4-18.6-76.7-43l34.3-19.8c9 14.7 20.8 25.6 41.5 25.6 17.4 0 28.6-8.7 28.6-20.8 0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5 0-31.6 24.1-55.6 61.6-55.6 26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18-12.3 0-20.1 7.8-20.1 18 0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2 0 37.8-29.8 58.6-69.7 58.6z"],"js-square":[448,512,[],"f3b9","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM243.8 381.4c0 43.6-25.6 63.5-62.9 63.5-33.7 0-53.2-17.4-63.2-38.5l34.3-20.7c6.6 11.7 12.6 21.6 27.1 21.6 13.8 0 22.6-5.4 22.6-26.5V237.7h42.1v143.7zm99.6 63.5c-39.1 0-64.4-18.6-76.7-43l34.3-19.8c9 14.7 20.8 25.6 41.5 25.6 17.4 0 28.6-8.7 28.6-20.8 0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5 0-31.6 24.1-55.6 61.6-55.6 26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18-12.3 0-20.1 7.8-20.1 18 0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2 0 37.8-29.8 58.6-69.7 58.6z"],jsfiddle:[576,512,[],"f1cc","M510.634 237.462c-4.727-2.621-5.664-5.748-6.381-10.776-2.352-16.488-3.539-33.619-9.097-49.095-35.895-99.957-153.99-143.386-246.849-91.646-27.37 15.25-48.971 36.369-65.493 63.903-3.184-1.508-5.458-2.71-7.824-3.686-30.102-12.421-59.049-10.121-85.331 9.167-25.531 18.737-36.422 44.548-32.676 76.408.355 3.025-1.967 7.621-4.514 9.545-39.712 29.992-56.031 78.065-41.902 124.615 13.831 45.569 57.514 79.796 105.608 81.433 30.291 1.031 60.637.546 90.959.539 84.041-.021 168.09.531 252.12-.48 52.664-.634 96.108-36.873 108.212-87.293 11.54-48.074-11.144-97.3-56.832-122.634zm21.107 156.88c-18.23 22.432-42.343 35.253-71.28 35.65-56.874.781-113.767.23-170.652.23 0 .7-163.028.159-163.728.154-43.861-.332-76.739-19.766-95.175-59.995-18.902-41.245-4.004-90.848 34.186-116.106 9.182-6.073 12.505-11.566 10.096-23.136-5.49-26.361 4.453-47.956 26.42-62.981 22.987-15.723 47.422-16.146 72.034-3.083 10.269 5.45 14.607 11.564 22.198-2.527 14.222-26.399 34.557-46.727 60.671-61.294 97.46-54.366 228.37 7.568 230.24 132.697.122 8.15 2.412 12.428 9.848 15.894 57.56 26.829 74.456 96.122 35.142 144.497zm-87.789-80.499c-5.848 31.157-34.622 55.096-66.666 55.095-16.953-.001-32.058-6.545-44.079-17.705-27.697-25.713-71.141-74.98-95.937-93.387-20.056-14.888-41.99-12.333-60.272 3.782-49.996 44.071 15.859 121.775 67.063 77.188 4.548-3.96 7.84-9.543 12.744-12.844 8.184-5.509 20.766-.884 13.168 10.622-17.358 26.284-49.33 38.197-78.863 29.301-28.897-8.704-48.84-35.968-48.626-70.179 1.225-22.485 12.364-43.06 35.414-55.965 22.575-12.638 46.369-13.146 66.991 2.474C295.68 280.7 320.467 323.97 352.185 343.47c24.558 15.099 54.254 7.363 68.823-17.506 28.83-49.209-34.592-105.016-78.868-63.46-3.989 3.744-6.917 8.932-11.41 11.72-10.975 6.811-17.333-4.113-12.809-10.353 20.703-28.554 50.464-40.44 83.271-28.214 31.429 11.714 49.108 44.366 42.76 78.186z"],kaggle:[320,512,[],"f5fa","M304.2 501.5L158.4 320.3 298.2 185c2.6-2.7 1.7-10.5-5.3-10.5h-69.2c-3.5 0-7 1.8-10.5 5.3L80.9 313.5V7.5q0-7.5-7.5-7.5H21.5Q14 0 14 7.5v497q0 7.5 7.5 7.5h51.9q7.5 0 7.5-7.5v-109l30.8-29.3 110.5 140.6c3 3.5 6.5 5.3 10.5 5.3h66.9q5.25 0 6-3z"],keybase:[448,512,[],"f4f5","M286.17 419a18 18 0 1 0 18 18 18 18 0 0 0-18-18zm111.92-147.6c-9.5-14.62-39.37-52.45-87.26-73.71q-9.1-4.06-18.38-7.27a78.43 78.43 0 0 0-47.88-104.13c-12.41-4.1-23.33-6-32.41-5.77-.6-2-1.89-11 9.4-35L198.66 32l-5.48 7.56c-8.69 12.06-16.92 23.55-24.34 34.89a51 51 0 0 0-8.29-1.25c-41.53-2.45-39-2.33-41.06-2.33-50.61 0-50.75 52.12-50.75 45.88l-2.36 36.68c-1.61 27 19.75 50.21 47.63 51.85l8.93.54a214 214 0 0 0-46.29 35.54C14 304.66 14 374 14 429.77v33.64l23.32-29.8a148.6 148.6 0 0 0 14.56 37.56c5.78 10.13 14.87 9.45 19.64 7.33 4.21-1.87 10-6.92 3.75-20.11a178.29 178.29 0 0 1-15.76-53.13l46.82-59.83-24.66 74.11c58.23-42.4 157.38-61.76 236.25-38.59 34.2 10.05 67.45.69 84.74-23.84.72-1 1.2-2.16 1.85-3.22a156.09 156.09 0 0 1 2.8 28.43c0 23.3-3.69 52.93-14.88 81.64-2.52 6.46 1.76 14.5 8.6 15.74 7.42 1.57 15.33-3.1 18.37-11.15C429 443 434 414 434 382.32c0-38.58-13-77.46-35.91-110.92zM142.37 128.58l-15.7-.93-1.39 21.79 13.13.78a93 93 0 0 0 .32 19.57l-22.38-1.34a12.28 12.28 0 0 1-11.76-12.79L107 119c1-12.17 13.87-11.27 13.26-11.32l29.11 1.73a144.35 144.35 0 0 0-7 19.17zm148.42 172.18a10.51 10.51 0 0 1-14.35-1.39l-9.68-11.49-34.42 27a8.09 8.09 0 0 1-11.13-1.08l-15.78-18.64a7.38 7.38 0 0 1 1.34-10.34l34.57-27.18-14.14-16.74-17.09 13.45a7.75 7.75 0 0 1-10.59-1s-3.72-4.42-3.8-4.53a7.38 7.38 0 0 1 1.37-10.34L214 225.19s-18.51-22-18.6-22.14a9.56 9.56 0 0 1 1.74-13.42 10.38 10.38 0 0 1 14.3 1.37l81.09 96.32a9.58 9.58 0 0 1-1.74 13.44zM187.44 419a18 18 0 1 0 18 18 18 18 0 0 0-18-18z"],keycdn:[512,512,[],"f3ba","M63.8 409.3l60.5-59c32.1 42.8 71.1 66 126.6 67.4 30.5.7 60.3-7 86.4-22.4 5.1 5.3 18.5 19.5 20.9 22-32.2 20.7-69.6 31.1-108.1 30.2-43.3-1.1-84.6-16.7-117.7-44.4.3-.6-38.2 37.5-38.6 37.9 9.5 29.8-13.1 62.4-46.3 62.4C20.7 503.3 0 481.7 0 454.9c0-34.3 33.1-56.6 63.8-45.6zm354.9-252.4c19.1 31.3 29.6 67.4 28.7 104-1.1 44.8-19 87.5-48.6 121 .3.3 23.8 25.2 24.1 25.5 9.6-1.3 19.2 2 25.9 9.1 11.3 12 10.9 30.9-1.1 42.4-12 11.3-30.9 10.9-42.4-1.1-6.7-7-9.4-16.8-7.6-26.3-24.9-26.6-44.4-47.2-44.4-47.2 42.7-34.1 63.3-79.6 64.4-124.2.7-28.9-7.2-57.2-21.1-82.2l22.1-21zM104 53.1c6.7 7 9.4 16.8 7.6 26.3l45.9 48.1c-4.7 3.8-13.3 10.4-22.8 21.3-25.4 28.5-39.6 64.8-40.7 102.9-.7 28.9 6.1 57.2 20 82.4l-22 21.5C72.7 324 63.1 287.9 64.2 250.9c1-44.6 18.3-87.6 47.5-121.1l-25.3-26.4c-9.6 1.3-19.2-2-25.9-9.1-11.3-12-10.9-30.9 1.1-42.4C73.5 40.7 92.2 41 104 53.1zM464.9 8c26 0 47.1 22.4 47.1 48.3S490.9 104 464.9 104c-6.3.1-14-1.1-15.9-1.8l-62.9 59.7c-32.7-43.6-76.7-65.9-126.9-67.2-30.5-.7-60.3 6.8-86.2 22.4l-21.1-22C184.1 74.3 221.5 64 260 64.9c43.3 1.1 84.6 16.7 117.7 44.6l41.1-38.6c-1.5-4.7-2.2-9.6-2.2-14.5C416.5 29.7 438.9 8 464.9 8zM256.7 113.4c5.5 0 10.9.4 16.4 1.1 78.1 9.8 133.4 81.1 123.8 159.1-9.8 78.1-81.1 133.4-159.1 123.8-78.1-9.8-133.4-81.1-123.8-159.2 9.3-72.4 70.1-124.6 142.7-124.8zm-59 119.4c.6 22.7 12.2 41.8 32.4 52.2l-11 51.7h73.7l-11-51.7c20.1-10.9 32.1-29 32.4-52.2-.4-32.8-25.8-57.5-58.3-58.3-32.1.8-57.3 24.8-58.2 58.3zM256 160"],kickstarter:[448,512,[],"f3bb","M400 480H48c-26.4 0-48-21.6-48-48V80c0-26.4 21.6-48 48-48h352c26.4 0 48 21.6 48 48v352c0 26.4-21.6 48-48 48zM199.6 178.5c0-30.7-17.6-45.1-39.7-45.1-25.8 0-40 19.8-40 44.5v154.8c0 25.8 13.7 45.6 40.5 45.6 21.5 0 39.2-14 39.2-45.6v-41.8l60.6 75.7c12.3 14.9 39 16.8 55.8 0 14.6-15.1 14.8-36.8 4-50.4l-49.1-62.8 40.5-58.7c9.4-13.5 9.5-34.5-5.6-49.1-16.4-15.9-44.6-17.3-61.4 7l-44.8 64.7v-38.8z"],"kickstarter-k":[384,512,[],"f3bc","M147.3 114.4c0-56.2-32.5-82.4-73.4-82.4C26.2 32 0 68.2 0 113.4v283c0 47.3 25.3 83.4 74.9 83.4 39.8 0 72.4-25.6 72.4-83.4v-76.5l112.1 138.3c22.7 27.2 72.1 30.7 103.2 0 27-27.6 27.3-67.4 7.4-92.2l-90.8-114.8 74.9-107.4c17.4-24.7 17.5-63.1-10.4-89.8-30.3-29-82.4-31.6-113.6 12.8L147.3 185v-70.6z"],korvue:[446,512,[],"f42f","M386.5 34h-327C26.8 34 0 60.8 0 93.5v327.1C0 453.2 26.8 480 59.5 480h327.1c33 0 59.5-26.8 59.5-59.5v-327C446 60.8 419.2 34 386.5 34zM87.1 120.8h96v116l61.8-116h110.9l-81.2 132H87.1v-132zm161.8 272.1l-65.7-113.6v113.6h-96V262.1h191.5l88.6 130.8H248.9z"],laravel:[512,512,[],"f3bd","M504.4,115.83a5.72,5.72,0,0,0-.28-.68,8.52,8.52,0,0,0-.53-1.25,6,6,0,0,0-.54-.71,9.36,9.36,0,0,0-.72-.94c-.23-.22-.52-.4-.77-.6a8.84,8.84,0,0,0-.9-.68L404.4,55.55a8,8,0,0,0-8,0L300.12,111h0a8.07,8.07,0,0,0-.88.69,7.68,7.68,0,0,0-.78.6,8.23,8.23,0,0,0-.72.93c-.17.24-.39.45-.54.71a9.7,9.7,0,0,0-.52,1.25c-.08.23-.21.44-.28.68a8.08,8.08,0,0,0-.28,2.08V223.18l-80.22,46.19V63.44a7.8,7.8,0,0,0-.28-2.09c-.06-.24-.2-.45-.28-.68a8.35,8.35,0,0,0-.52-1.24c-.14-.26-.37-.47-.54-.72a9.36,9.36,0,0,0-.72-.94,9.46,9.46,0,0,0-.78-.6,9.8,9.8,0,0,0-.88-.68h0L115.61,1.07a8,8,0,0,0-8,0L11.34,56.49h0a6.52,6.52,0,0,0-.88.69,7.81,7.81,0,0,0-.79.6,8.15,8.15,0,0,0-.71.93c-.18.25-.4.46-.55.72a7.88,7.88,0,0,0-.51,1.24,6.46,6.46,0,0,0-.29.67,8.18,8.18,0,0,0-.28,2.1v329.7a8,8,0,0,0,4,6.95l192.5,110.84a8.83,8.83,0,0,0,1.33.54c.21.08.41.2.63.26a7.92,7.92,0,0,0,4.1,0c.2-.05.37-.16.55-.22a8.6,8.6,0,0,0,1.4-.58L404.4,400.09a8,8,0,0,0,4-6.95V287.88l92.24-53.11a8,8,0,0,0,4-7V117.92A8.63,8.63,0,0,0,504.4,115.83ZM111.6,17.28h0l80.19,46.15-80.2,46.18L31.41,63.44Zm88.25,60V278.6l-46.53,26.79-33.69,19.4V123.5l46.53-26.79Zm0,412.78L23.37,388.5V77.32L57.06,96.7l46.52,26.8V338.68a6.94,6.94,0,0,0,.12.9,8,8,0,0,0,.16,1.18h0a5.92,5.92,0,0,0,.38.9,6.38,6.38,0,0,0,.42,1v0a8.54,8.54,0,0,0,.6.78,7.62,7.62,0,0,0,.66.84l0,0c.23.22.52.38.77.58a8.93,8.93,0,0,0,.86.66l0,0,0,0,92.19,52.18Zm8-106.17-80.06-45.32,84.09-48.41,92.26-53.11,80.13,46.13-58.8,33.56Zm184.52,4.57L215.88,490.11V397.8L346.6,323.2l45.77-26.15Zm0-119.13L358.68,250l-46.53-26.79V131.79l33.69,19.4L392.37,178Zm8-105.28-80.2-46.17,80.2-46.16,80.18,46.15Zm8,105.28V178L455,151.19l33.68-19.4v91.39h0Z"],lastfm:[512,512,[],"f202","M225.8 367.1l-18.8-51s-30.5 34-76.2 34c-40.5 0-69.2-35.2-69.2-91.5 0-72.1 36.4-97.9 72.1-97.9 66.5 0 74.8 53.3 100.9 134.9 18.8 56.9 54 102.6 155.4 102.6 72.7 0 122-22.3 122-80.9 0-72.9-62.7-80.6-115-92.1-25.8-5.9-33.4-16.4-33.4-34 0-19.9 15.8-31.7 41.6-31.7 28.2 0 43.4 10.6 45.7 35.8l58.6-7c-4.7-52.8-41.1-74.5-100.9-74.5-52.8 0-104.4 19.9-104.4 83.9 0 39.9 19.4 65.1 68 76.8 44.9 10.6 79.8 13.8 79.8 45.7 0 21.7-21.1 30.5-61 30.5-59.2 0-83.9-31.1-97.9-73.9-32-96.8-43.6-163-161.3-163C45.7 113.8 0 168.3 0 261c0 89.1 45.7 137.2 127.9 137.2 66.2 0 97.9-31.1 97.9-31.1z"],"lastfm-square":[448,512,[],"f203","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-92.2 312.9c-63.4 0-85.4-28.6-97.1-64.1-16.3-51-21.5-84.3-63-84.3-22.4 0-45.1 16.1-45.1 61.2 0 35.2 18 57.2 43.3 57.2 28.6 0 47.6-21.3 47.6-21.3l11.7 31.9s-19.8 19.4-61.2 19.4c-51.3 0-79.9-30.1-79.9-85.8 0-57.9 28.6-92 82.5-92 73.5 0 80.8 41.4 100.8 101.9 8.8 26.8 24.2 46.2 61.2 46.2 24.9 0 38.1-5.5 38.1-19.1 0-19.9-21.8-22-49.9-28.6-30.4-7.3-42.5-23.1-42.5-48 0-40 32.3-52.4 65.2-52.4 37.4 0 60.1 13.6 63 46.6l-36.7 4.4c-1.5-15.8-11-22.4-28.6-22.4-16.1 0-26 7.3-26 19.8 0 11 4.8 17.6 20.9 21.3 32.7 7.1 71.8 12 71.8 57.5.1 36.7-30.7 50.6-76.1 50.6z"],leanpub:[576,512,[],"f212","M386.539 111.485l15.096 248.955-10.979-.275c-36.232-.824-71.64 8.783-102.657 27.997-31.016-19.214-66.424-27.997-102.657-27.997-45.564 0-82.07 10.705-123.516 27.723L93.117 129.6c28.546-11.803 61.484-18.115 92.226-18.115 41.173 0 73.836 13.175 102.657 42.544 27.723-28.271 59.013-41.721 98.539-42.544zM569.07 448c-25.526 0-47.485-5.215-70.542-15.645-34.31-15.645-69.993-24.978-107.871-24.978-38.977 0-74.934 12.901-102.657 40.623-27.723-27.723-63.68-40.623-102.657-40.623-37.878 0-73.561 9.333-107.871 24.978C55.239 442.236 32.731 448 8.303 448H6.93L49.475 98.859C88.726 76.626 136.486 64 181.775 64 218.83 64 256.984 71.685 288 93.095 319.016 71.685 357.17 64 394.225 64c45.289 0 93.049 12.626 132.3 34.859L569.07 448zm-43.368-44.741l-34.036-280.246c-30.742-13.999-67.248-21.41-101.009-21.41-38.428 0-74.385 12.077-102.657 38.702-28.272-26.625-64.228-38.702-102.657-38.702-33.761 0-70.267 7.411-101.009 21.41L50.298 403.259c47.211-19.487 82.894-33.486 135.045-33.486 37.604 0 70.817 9.606 102.657 29.644 31.84-20.038 65.052-29.644 102.657-29.644 52.151 0 87.834 13.999 135.045 33.486z"],less:[640,512,[],"f41d","M612.7 219c0-20.5 3.2-32.6 3.2-54.6 0-34.2-12.6-45.2-40.5-45.2h-20.5v24.2h6.3c14.2 0 17.3 4.7 17.3 22.1 0 16.3-1.6 32.6-1.6 51.5 0 24.2 7.9 33.6 23.6 37.3v1.6c-15.8 3.7-23.6 13.1-23.6 37.3 0 18.9 1.6 34.2 1.6 51.5 0 17.9-3.7 22.6-17.3 22.6v.5h-6.3V393h20.5c27.8 0 40.5-11 40.5-45.2 0-22.6-3.2-34.2-3.2-54.6 0-11 6.8-22.6 27.3-23.6v-27.3c-20.5-.7-27.3-12.3-27.3-23.3zm-105.6 32c-15.8-6.3-30.5-10-30.5-20.5 0-7.9 6.3-12.6 17.9-12.6s22.1 4.7 33.6 13.1l21-27.8c-13.1-10-31-20.5-55.2-20.5-35.7 0-59.9 20.5-59.9 49.4 0 25.7 22.6 38.9 41.5 46.2 16.3 6.3 32.1 11.6 32.1 22.1 0 7.9-6.3 13.1-20.5 13.1-13.1 0-26.3-5.3-40.5-16.3l-21 30.5c15.8 13.1 39.9 22.1 59.9 22.1 42 0 64.6-22.1 64.6-51s-22.5-41-43-47.8zm-358.9 59.4c-3.7 0-8.4-3.2-8.4-13.1V119.1H65.2c-28.4 0-41 11-41 45.2 0 22.6 3.2 35.2 3.2 54.6 0 11-6.8 22.6-27.3 23.6v27.3c20.5.5 27.3 12.1 27.3 23.1 0 19.4-3.2 31-3.2 53.6 0 34.2 12.6 45.2 40.5 45.2h20.5v-24.2h-6.3c-13.1 0-17.3-5.3-17.3-22.6s1.6-32.1 1.6-51.5c0-24.2-7.9-33.6-23.6-37.3v-1.6c15.8-3.7 23.6-13.1 23.6-37.3 0-18.9-1.6-34.2-1.6-51.5s3.7-22.1 17.3-22.1H93v150.8c0 32.1 11 53.1 43.1 53.1 10 0 17.9-1.6 23.6-3.7l-5.3-34.2c-3.1.8-4.6.8-6.2.8zM379.9 251c-16.3-6.3-31-10-31-20.5 0-7.9 6.3-12.6 17.9-12.6 11.6 0 22.1 4.7 33.6 13.1l21-27.8c-13.1-10-31-20.5-55.2-20.5-35.7 0-59.9 20.5-59.9 49.4 0 25.7 22.6 38.9 41.5 46.2 16.3 6.3 32.1 11.6 32.1 22.1 0 7.9-6.3 13.1-20.5 13.1-13.1 0-26.3-5.3-40.5-16.3l-20.5 30.5c15.8 13.1 39.9 22.1 59.9 22.1 42 0 64.6-22.1 64.6-51 .1-28.9-22.5-41-43-47.8zm-155-68.8c-38.4 0-75.1 32.1-74.1 82.5 0 52 34.2 82.5 79.3 82.5 18.9 0 39.9-6.8 56.2-17.9l-15.8-27.8c-11.6 6.8-22.6 10-34.2 10-21 0-37.3-10-41.5-34.2H290c.5-3.7 1.6-11 1.6-19.4.6-42.6-22.6-75.7-66.7-75.7zm-30 66.2c3.2-21 15.8-31 30.5-31 18.9 0 26.3 13.1 26.3 31h-56.8z"],line:[448,512,[],"f3c0","M272.1 204.2v71.1c0 1.8-1.4 3.2-3.2 3.2h-11.4c-1.1 0-2.1-.6-2.6-1.3l-32.6-44v42.2c0 1.8-1.4 3.2-3.2 3.2h-11.4c-1.8 0-3.2-1.4-3.2-3.2v-71.1c0-1.8 1.4-3.2 3.2-3.2H219c1 0 2.1.5 2.6 1.4l32.6 44v-42.2c0-1.8 1.4-3.2 3.2-3.2h11.4c1.8-.1 3.3 1.4 3.3 3.1zm-82-3.2h-11.4c-1.8 0-3.2 1.4-3.2 3.2v71.1c0 1.8 1.4 3.2 3.2 3.2h11.4c1.8 0 3.2-1.4 3.2-3.2v-71.1c0-1.7-1.4-3.2-3.2-3.2zm-27.5 59.6h-31.1v-56.4c0-1.8-1.4-3.2-3.2-3.2h-11.4c-1.8 0-3.2 1.4-3.2 3.2v71.1c0 .9.3 1.6.9 2.2.6.5 1.3.9 2.2.9h45.7c1.8 0 3.2-1.4 3.2-3.2v-11.4c0-1.7-1.4-3.2-3.1-3.2zM332.1 201h-45.7c-1.7 0-3.2 1.4-3.2 3.2v71.1c0 1.7 1.4 3.2 3.2 3.2h45.7c1.8 0 3.2-1.4 3.2-3.2v-11.4c0-1.8-1.4-3.2-3.2-3.2H301v-12h31.1c1.8 0 3.2-1.4 3.2-3.2V234c0-1.8-1.4-3.2-3.2-3.2H301v-12h31.1c1.8 0 3.2-1.4 3.2-3.2v-11.4c-.1-1.7-1.5-3.2-3.2-3.2zM448 113.7V399c-.1 44.8-36.8 81.1-81.7 81H81c-44.8-.1-81.1-36.9-81-81.7V113c.1-44.8 36.9-81.1 81.7-81H367c44.8.1 81.1 36.8 81 81.7zm-61.6 122.6c0-73-73.2-132.4-163.1-132.4-89.9 0-163.1 59.4-163.1 132.4 0 65.4 58 120.2 136.4 130.6 19.1 4.1 16.9 11.1 12.6 36.8-.7 4.1-3.3 16.1 14.1 8.8 17.4-7.3 93.9-55.3 128.2-94.7 23.6-26 34.9-52.3 34.9-81.5z"],linkedin:[448,512,[],"f08c","M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"],"linkedin-in":[448,512,[],"f0e1","M100.28 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.58 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29 0-55.69 37.7-55.69 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.69-48.3 87.88-48.3 94 0 111.28 61.9 111.28 142.3V448z"],linode:[448,512,[],"f2b8","M437.4 226.3c-.3-.9-.9-1.4-1.4-2l-70-38.6c-.9-.6-2-.6-3.1 0l-58.9 36c-.9.6-1.4 1.7-1.4 2.6l-.9 31.4-24-16c-.9-.6-2.3-.6-3.1 0L240 260.9l-1.4-35.1c0-.9-.6-2-1.4-2.3l-36-24.3 33.7-17.4c1.1-.6 1.7-1.7 1.7-2.9l-5.7-132.3c0-.9-.9-2-1.7-2.6L138.6.3c-.9-.3-1.7-.3-2.3-.3L12.6 38.6c-1.4.6-2.3 2-2 3.7L38 175.4c.9 3.4 34 27.4 38.6 30.9l-26.9 12.9c-1.4.9-2 2.3-1.7 3.4l20.6 100.3c.6 2.9 23.7 23.1 27.1 26.3l-17.4 10.6c-.9.6-1.7 2-1.4 3.1 1.4 7.1 15.4 77.7 16.9 79.1l65.1 69.1c.6.6 1.4.6 2.3.9.6 0 1.1-.3 1.7-.6l83.7-66.9c.9-.6 1.1-1.4 1.1-2.3l-2-46 28 23.7c1.1.9 2.9.9 4 0l66.9-53.4c.9-.6 1.1-1.4 1.1-2.3l2.3-33.4 20.3 14c1.1.9 2.6.9 3.7 0l54.6-43.7c.6-.3 1.1-1.1 1.1-2 .9-6.5 10.3-70.8 9.7-72.8zm-204.8 4.8l4 92.6-90.6 61.2-14-96.6 100.6-57.2zm-7.7-180l5.4 126-106.6 55.4L104 97.7l120.9-46.6zM44 173.1L18 48l79.7 49.4 19.4 132.9L44 173.1zm30.6 147.8L55.7 230l70 58.3 13.7 93.4-64.8-60.8zm24.3 117.7l-13.7-67.1 61.7 60.9 9.7 67.4-57.7-61.2zm64.5 64.5l-10.6-70.9 85.7-61.4 3.1 70-78.2 62.3zm82-115.1c0-3.4.9-22.9-2-25.1l-24.3-20 22.3-14.9c2.3-1.7 1.1-5.7 1.1-8l29.4 22.6.6 68.3-27.1-22.9zm94.3-25.4l-60.9 48.6-.6-68.6 65.7-46.9-4.2 66.9zm27.7-25.7l-19.1-13.4 2-34c.3-.9-.3-2-1.1-2.6L308 259.7l.6-30 64.6 40.6-5.8 66.6zm54.6-39.8l-48.3 38.3 5.7-65.1 51.1-36.6-8.5 63.4z"],linux:[448,512,[],"f17c","M220.8 123.3c1 .5 1.8 1.7 3 1.7 1.1 0 2.8-.4 2.9-1.5.2-1.4-1.9-2.3-3.2-2.9-1.7-.7-3.9-1-5.5-.1-.4.2-.8.7-.6 1.1.3 1.3 2.3 1.1 3.4 1.7zm-21.9 1.7c1.2 0 2-1.2 3-1.7 1.1-.6 3.1-.4 3.5-1.6.2-.4-.2-.9-.6-1.1-1.6-.9-3.8-.6-5.5.1-1.3.6-3.4 1.5-3.2 2.9.1 1 1.8 1.5 2.8 1.4zM420 403.8c-3.6-4-5.3-11.6-7.2-19.7-1.8-8.1-3.9-16.8-10.5-22.4-1.3-1.1-2.6-2.1-4-2.9-1.3-.8-2.7-1.5-4.1-2 9.2-27.3 5.6-54.5-3.7-79.1-11.4-30.1-31.3-56.4-46.5-74.4-17.1-21.5-33.7-41.9-33.4-72C311.1 85.4 315.7.1 234.8 0 132.4-.2 158 103.4 156.9 135.2c-1.7 23.4-6.4 41.8-22.5 64.7-18.9 22.5-45.5 58.8-58.1 96.7-6 17.9-8.8 36.1-6.2 53.3-6.5 5.8-11.4 14.7-16.6 20.2-4.2 4.3-10.3 5.9-17 8.3s-14 6-18.5 14.5c-2.1 3.9-2.8 8.1-2.8 12.4 0 3.9.6 7.9 1.2 11.8 1.2 8.1 2.5 15.7.8 20.8-5.2 14.4-5.9 24.4-2.2 31.7 3.8 7.3 11.4 10.5 20.1 12.3 17.3 3.6 40.8 2.7 59.3 12.5 19.8 10.4 39.9 14.1 55.9 10.4 11.6-2.6 21.1-9.6 25.9-20.2 12.5-.1 26.3-5.4 48.3-6.6 14.9-1.2 33.6 5.3 55.1 4.1.6 2.3 1.4 4.6 2.5 6.7v.1c8.3 16.7 23.8 24.3 40.3 23 16.6-1.3 34.1-11 48.3-27.9 13.6-16.4 36-23.2 50.9-32.2 7.4-4.5 13.4-10.1 13.9-18.3.4-8.2-4.4-17.3-15.5-29.7zM223.7 87.3c9.8-22.2 34.2-21.8 44-.4 6.5 14.2 3.6 30.9-4.3 40.4-1.6-.8-5.9-2.6-12.6-4.9 1.1-1.2 3.1-2.7 3.9-4.6 4.8-11.8-.2-27-9.1-27.3-7.3-.5-13.9 10.8-11.8 23-4.1-2-9.4-3.5-13-4.4-1-6.9-.3-14.6 2.9-21.8zM183 75.8c10.1 0 20.8 14.2 19.1 33.5-3.5 1-7.1 2.5-10.2 4.6 1.2-8.9-3.3-20.1-9.6-19.6-8.4.7-9.8 21.2-1.8 28.1 1 .8 1.9-.2-5.9 5.5-15.6-14.6-10.5-52.1 8.4-52.1zm-13.6 60.7c6.2-4.6 13.6-10 14.1-10.5 4.7-4.4 13.5-14.2 27.9-14.2 7.1 0 15.6 2.3 25.9 8.9 6.3 4.1 11.3 4.4 22.6 9.3 8.4 3.5 13.7 9.7 10.5 18.2-2.6 7.1-11 14.4-22.7 18.1-11.1 3.6-19.8 16-38.2 14.9-3.9-.2-7-1-9.6-2.1-8-3.5-12.2-10.4-20-15-8.6-4.8-13.2-10.4-14.7-15.3-1.4-4.9 0-9 4.2-12.3zm3.3 334c-2.7 35.1-43.9 34.4-75.3 18-29.9-15.8-68.6-6.5-76.5-21.9-2.4-4.7-2.4-12.7 2.6-26.4v-.2c2.4-7.6.6-16-.6-23.9-1.2-7.8-1.8-15 .9-20 3.5-6.7 8.5-9.1 14.8-11.3 10.3-3.7 11.8-3.4 19.6-9.9 5.5-5.7 9.5-12.9 14.3-18 5.1-5.5 10-8.1 17.7-6.9 8.1 1.2 15.1 6.8 21.9 16l19.6 35.6c9.5 19.9 43.1 48.4 41 68.9zm-1.4-25.9c-4.1-6.6-9.6-13.6-14.4-19.6 7.1 0 14.2-2.2 16.7-8.9 2.3-6.2 0-14.9-7.4-24.9-13.5-18.2-38.3-32.5-38.3-32.5-13.5-8.4-21.1-18.7-24.6-29.9s-3-23.3-.3-35.2c5.2-22.9 18.6-45.2 27.2-59.2 2.3-1.7.8 3.2-8.7 20.8-8.5 16.1-24.4 53.3-2.6 82.4.6-20.7 5.5-41.8 13.8-61.5 12-27.4 37.3-74.9 39.3-112.7 1.1.8 4.6 3.2 6.2 4.1 4.6 2.7 8.1 6.7 12.6 10.3 12.4 10 28.5 9.2 42.4 1.2 6.2-3.5 11.2-7.5 15.9-9 9.9-3.1 17.8-8.6 22.3-15 7.7 30.4 25.7 74.3 37.2 95.7 6.1 11.4 18.3 35.5 23.6 64.6 3.3-.1 7 .4 10.9 1.4 13.8-35.7-11.7-74.2-23.3-84.9-4.7-4.6-4.9-6.6-2.6-6.5 12.6 11.2 29.2 33.7 35.2 59 2.8 11.6 3.3 23.7.4 35.7 16.4 6.8 35.9 17.9 30.7 34.8-2.2-.1-3.2 0-4.2 0 3.2-10.1-3.9-17.6-22.8-26.1-19.6-8.6-36-8.6-38.3 12.5-12.1 4.2-18.3 14.7-21.4 27.3-2.8 11.2-3.6 24.7-4.4 39.9-.5 7.7-3.6 18-6.8 29-32.1 22.9-76.7 32.9-114.3 7.2zm257.4-11.5c-.9 16.8-41.2 19.9-63.2 46.5-13.2 15.7-29.4 24.4-43.6 25.5s-26.5-4.8-33.7-19.3c-4.7-11.1-2.4-23.1 1.1-36.3 3.7-14.2 9.2-28.8 9.9-40.6.8-15.2 1.7-28.5 4.2-38.7 2.6-10.3 6.6-17.2 13.7-21.1.3-.2.7-.3 1-.5.8 13.2 7.3 26.6 18.8 29.5 12.6 3.3 30.7-7.5 38.4-16.3 9-.3 15.7-.9 22.6 5.1 9.9 8.5 7.1 30.3 17.1 41.6 10.6 11.6 14 19.5 13.7 24.6zM173.3 148.7c2 1.9 4.7 4.5 8 7.1 6.6 5.2 15.8 10.6 27.3 10.6 11.6 0 22.5-5.9 31.8-10.8 4.9-2.6 10.9-7 14.8-10.4s5.9-6.3 3.1-6.6-2.6 2.6-6 5.1c-4.4 3.2-9.7 7.4-13.9 9.8-7.4 4.2-19.5 10.2-29.9 10.2s-18.7-4.8-24.9-9.7c-3.1-2.5-5.7-5-7.7-6.9-1.5-1.4-1.9-4.6-4.3-4.9-1.4-.1-1.8 3.7 1.7 6.5z"],lyft:[512,512,[],"f3c3","M0 81.1h77.8v208.7c0 33.1 15 52.8 27.2 61-12.7 11.1-51.2 20.9-80.2-2.8C7.8 334 0 310.7 0 289V81.1zm485.9 173.5v-22h23.8v-76.8h-26.1c-10.1-46.3-51.2-80.7-100.3-80.7-56.6 0-102.7 46-102.7 102.7V357c16 2.3 35.4-.3 51.7-14 17.1-14 24.8-37.2 24.8-59v-6.7h38.8v-76.8h-38.8v-23.3c0-34.6 52.2-34.6 52.2 0v77.1c0 56.6 46 102.7 102.7 102.7v-76.5c-14.5 0-26.1-11.7-26.1-25.9zm-294.3-99v113c0 15.4-23.8 15.4-23.8 0v-113H91v132.7c0 23.8 8 54 45 63.9 37 9.8 58.2-10.6 58.2-10.6-2.1 13.4-14.5 23.3-34.9 25.3-15.5 1.6-35.2-3.6-45-7.8v70.3c25.1 7.5 51.5 9.8 77.6 4.7 47.1-9.1 76.8-48.4 76.8-100.8V155.1h-77.1v.5z"],magento:[448,512,[],"f3c4","M445.7 127.9V384l-63.4 36.5V164.7L223.8 73.1 65.2 164.7l.4 255.9L2.3 384V128.1L224.2 0l221.5 127.9zM255.6 420.5L224 438.9l-31.8-18.2v-256l-63.3 36.6.1 255.9 94.9 54.9 95.1-54.9v-256l-63.4-36.6v255.9z"],mailchimp:[448,512,[],"f59e","M330.61 243.52a36.15 36.15 0 0 1 9.3 0c1.66-3.83 1.95-10.43.45-17.61-2.23-10.67-5.25-17.14-11.48-16.13s-6.47 8.74-4.24 19.42c1.26 6 3.49 11.14 6 14.32zM277.05 252c4.47 2 7.2 3.26 8.28 2.13 1.89-1.94-3.48-9.39-12.12-13.09a31.44 31.44 0 0 0-30.61 3.68c-3 2.18-5.81 5.22-5.41 7.06.85 3.74 10-2.71 22.6-3.48 7-.44 12.8 1.75 17.26 3.71zm-9 5.13c-9.07 1.42-15 6.53-13.47 10.1.9.34 1.17.81 5.21-.81a37 37 0 0 1 18.72-1.95c2.92.34 4.31.52 4.94-.49 1.46-2.22-5.71-8-15.39-6.85zm54.17 17.1c3.38-6.87-10.9-13.93-14.3-7s10.92 13.88 14.32 6.97zm15.66-20.47c-7.66-.13-7.95 15.8-.26 15.93s7.98-15.81.28-15.96zm-218.79 78.9c-1.32.31-6 1.45-8.47-2.35-5.2-8 11.11-20.38 3-35.77-9.1-17.47-27.82-13.54-35.05-5.54-8.71 9.6-8.72 23.54-5 24.08 4.27.57 4.08-6.47 7.38-11.63a12.83 12.83 0 0 1 17.85-3.72c11.59 7.59 1.37 17.76 2.28 28.62 1.39 16.68 18.42 16.37 21.58 9a2.08 2.08 0 0 0-.2-2.33c.03.89.68-1.3-3.35-.39zm299.72-17.07c-3.35-11.73-2.57-9.22-6.78-20.52 2.45-3.67 15.29-24-3.07-43.25-10.4-10.92-33.9-16.54-41.1-18.54-1.5-11.39 4.65-58.7-21.52-83 20.79-21.55 33.76-45.29 33.73-65.65-.06-39.16-48.15-51-107.42-26.47l-12.55 5.33c-.06-.05-22.71-22.27-23.05-22.57C169.5-18-41.77 216.81 25.78 273.85l14.76 12.51a72.49 72.49 0 0 0-4.1 33.5c3.36 33.4 36 60.42 67.53 60.38 57.73 133.06 267.9 133.28 322.29 3 1.74-4.47 9.11-24.61 9.11-42.38s-10.09-25.27-16.53-25.27zm-316 48.16c-22.82-.61-47.46-21.15-49.91-45.51-6.17-61.31 74.26-75.27 84-12.33 4.54 29.64-4.67 58.49-34.12 57.81zM84.3 249.55C69.14 252.5 55.78 261.09 47.6 273c-4.88-4.07-14-12-15.59-15-13.01-24.85 14.24-73 33.3-100.21C112.42 90.56 186.19 39.68 220.36 48.91c5.55 1.57 23.94 22.89 23.94 22.89s-34.15 18.94-65.8 45.35c-42.66 32.85-74.89 80.59-94.2 132.4zM323.18 350.7s-35.74 5.3-69.51-7.07c6.21-20.16 27 6.1 96.4-13.81 15.29-4.38 35.37-13 51-25.35a102.85 102.85 0 0 1 7.12 24.28c3.66-.66 14.25-.52 11.44 18.1-3.29 19.87-11.73 36-25.93 50.84A106.86 106.86 0 0 1 362.55 421a132.45 132.45 0 0 1-20.34 8.58c-53.51 17.48-108.3-1.74-126-43a66.33 66.33 0 0 1-3.55-9.74c-7.53-27.2-1.14-59.83 18.84-80.37 1.23-1.31 2.48-2.85 2.48-4.79a8.45 8.45 0 0 0-1.92-4.54c-7-10.13-31.19-27.4-26.33-60.83 3.5-24 24.49-40.91 44.07-39.91l5 .29c8.48.5 15.89 1.59 22.88 1.88 11.69.5 22.2-1.19 34.64-11.56 4.2-3.5 7.57-6.54 13.26-7.51a17.45 17.45 0 0 1 13.6 2.24c10 6.64 11.4 22.73 11.92 34.49.29 6.72 1.1 23 1.38 27.63.63 10.67 3.43 12.17 9.11 14 3.19 1.05 6.15 1.83 10.51 3.06 13.21 3.71 21 7.48 26 12.31a16.38 16.38 0 0 1 4.74 9.29c1.56 11.37-8.82 25.4-36.31 38.16-46.71 21.68-93.68 14.45-100.48 13.68-20.15-2.71-31.63 23.32-19.55 41.15 22.64 33.41 122.4 20 151.37-21.35.69-1 .12-1.59-.73-1-41.77 28.58-97.06 38.21-128.46 26-4.77-1.85-14.73-6.44-15.94-16.67 43.6 13.49 71 .74 71 .74s2.03-2.79-.56-2.53zm-68.47-5.7zm-83.4-187.5c16.74-19.35 37.36-36.18 55.83-45.63a.73.73 0 0 1 1 1c-1.46 2.66-4.29 8.34-5.19 12.65a.75.75 0 0 0 1.16.79c11.49-7.83 31.48-16.22 49-17.3a.77.77 0 0 1 .52 1.38 41.86 41.86 0 0 0-7.71 7.74.75.75 0 0 0 .59 1.19c12.31.09 29.66 4.4 41 10.74.76.43.22 1.91-.64 1.72-69.55-15.94-123.08 18.53-134.5 26.83a.76.76 0 0 1-1-1.12z"],mandalorian:[448,512,[],"f50f","M232.27 511.89c-1-3.26-1.69-15.83-1.39-24.58.55-15.89 1-24.72 1.4-28.76.64-6.2 2.87-20.72 3.28-21.38.6-1 .4-27.87-.24-33.13-.31-2.58-.63-11.9-.69-20.73-.13-16.47-.53-20.12-2.73-24.76-1.1-2.32-1.23-3.84-1-11.43a92.38 92.38 0 0 0-.34-12.71c-2-13-3.46-27.7-3.25-33.9s.43-7.15 2.06-9.67c3.05-4.71 6.51-14 8.62-23.27 2.26-9.86 3.88-17.18 4.59-20.74a109.54 109.54 0 0 1 4.42-15.05c2.27-6.25 2.49-15.39.37-15.39-.3 0-1.38 1.22-2.41 2.71s-4.76 4.8-8.29 7.36c-8.37 6.08-11.7 9.39-12.66 12.58s-1 7.23-.16 7.76c.34.21 1.29 2.4 2.11 4.88a28.83 28.83 0 0 1 .72 15.36c-.39 1.77-1 5.47-1.46 8.23s-1 6.46-1.25 8.22a9.85 9.85 0 0 1-1.55 4.26c-1 1-1.14.91-2.05-.53a14.87 14.87 0 0 1-1.44-4.75c-.25-1.74-1.63-7.11-3.08-11.93-3.28-10.9-3.52-16.15-1-21a14.24 14.24 0 0 0 1.67-4.61c0-2.39-2.2-5.32-7.41-9.89-7-6.18-8.63-7.92-10.23-11.3-1.71-3.6-3.06-4.06-4.54-1.54-1.78 3-2.6 9.11-3 22l-.34 12.19 2 2.25c3.21 3.7 12.07 16.45 13.78 19.83 3.41 6.74 4.34 11.69 4.41 23.56s.95 22.75 2 24.71c.36.66.51 1.35.34 1.52s.41 2.09 1.29 4.27a38.14 38.14 0 0 1 2.06 9 91 91 0 0 0 1.71 10.37c2.23 9.56 2.77 14.08 2.39 20.14-.2 3.27-.53 11.07-.73 17.32-1.31 41.76-1.85 58-2 61.21-.12 2-.39 11.51-.6 21.07-.36 16.3-1.3 27.37-2.42 28.65-.64.73-8.07-4.91-12.52-9.49-3.75-3.87-4-4.79-2.83-9.95.7-3 2.26-18.29 3.33-32.62.36-4.78.81-10.5 1-12.71.83-9.37 1.66-20.35 2.61-34.78.56-8.46 1.33-16.44 1.72-17.73s.89-9.89 1.13-19.11l.43-16.77-2.26-4.3c-1.72-3.28-4.87-6.94-13.22-15.34-6-6.07-11.84-12.3-12.91-13.85l-1.95-2.81.75-10.9c1.09-15.71 1.1-48.57 0-59.06l-.89-8.7-3.28-4.52c-5.86-8.08-5.8-7.75-6.22-33.27-.1-6.07-.38-11.5-.63-12.06-.83-1.87-3.05-2.66-8.54-3.05-8.86-.62-11-1.9-23.85-14.55-6.15-6-12.34-12-13.75-13.19-2.81-2.42-2.79-2-.56-9.63l1.35-4.65-1.69-3a32.22 32.22 0 0 0-2.59-4.07c-1.33-1.51-5.5-10.89-6-13.49a4.24 4.24 0 0 1 .87-3.9c2.23-2.86 3.4-5.68 4.45-10.73 2.33-11.19 7.74-26.09 10.6-29.22 3.18-3.47 7.7-1 9.41 5 1.34 4.79 1.37 9.79.1 18.55a101.2 101.2 0 0 0-1 11.11c0 4 .19 4.69 2.25 7.39 3.33 4.37 7.73 7.41 15.2 10.52a18.67 18.67 0 0 1 4.72 2.85c11.17 10.72 18.62 16.18 22.95 16.85 5.18.8 8 4.54 10 13.39 1.31 5.65 4 11.14 5.46 11.14a9.38 9.38 0 0 0 3.33-1.39c2-1.22 2.25-1.73 2.25-4.18a132.88 132.88 0 0 0-2-17.84c-.37-1.66-.78-4.06-.93-5.35s-.61-3.85-1-5.69c-2.55-11.16-3.65-15.46-4.1-16-1.55-2-4.08-10.2-4.93-15.92-1.64-11.11-4-14.23-12.91-17.39A43.15 43.15 0 0 1 165.24 78c-1.15-1-4-3.22-6.35-5.06s-4.41-3.53-4.6-3.76a22.7 22.7 0 0 0-2.69-2c-6.24-4.22-8.84-7-11.26-12l-2.44-5-.22-13-.22-13 6.91-6.55c3.95-3.75 8.48-7.35 10.59-8.43 3.31-1.69 4.45-1.89 11.37-2 8.53-.19 10.12 0 11.66 1.56s1.36 6.4-.29 8.5a6.66 6.66 0 0 0-1.34 2.32c0 .58-2.61 4.91-5.42 9a30.39 30.39 0 0 0-2.37 6.82c20.44 13.39 21.55 3.77 14.07 29L194 66.92c3.11-8.66 6.47-17.26 8.61-26.22.29-7.63-12-4.19-15.4-8.68-2.33-5.93 3.13-14.18 6.06-19.2 1.6-2.34 6.62-4.7 8.82-4.15.88.22 4.16-.35 7.37-1.28a45.3 45.3 0 0 1 7.55-1.68 29.57 29.57 0 0 0 6-1.29c3.65-1.11 4.5-1.17 6.35-.4a29.54 29.54 0 0 0 5.82 1.36 18.18 18.18 0 0 1 6 1.91 22.67 22.67 0 0 0 5 2.17c2.51.68 3 .57 7.05-1.67l4.35-2.4L268.32 5c10.44-.4 10.81-.47 15.26-2.68L288.16 0l2.46 1.43c1.76 1 3.14 2.73 4.85 6 2.36 4.51 2.38 4.58 1.37 7.37-.88 2.44-.89 3.3-.1 6.39a35.76 35.76 0 0 0 2.1 5.91 13.55 13.55 0 0 1 1.31 4c.31 4.33 0 5.3-2.41 6.92-2.17 1.47-7 7.91-7 9.34a14.77 14.77 0 0 1-1.07 3c-5 11.51-6.76 13.56-14.26 17-9.2 4.2-12.3 5.19-16.21 5.19-3.1 0-4 .25-4.54 1.26a18.33 18.33 0 0 1-4.09 3.71 13.62 13.62 0 0 0-4.38 4.78 5.89 5.89 0 0 1-2.49 2.91 6.88 6.88 0 0 0-2.45 1.71 67.62 67.62 0 0 1-7 5.38c-3.33 2.34-6.87 5-7.87 6A7.27 7.27 0 0 1 224 100a5.76 5.76 0 0 0-2.13 1.65c-1.31 1.39-1.49 2.11-1.14 4.6a36.45 36.45 0 0 0 1.42 5.88c1.32 3.8 1.31 7.86 0 10.57s-.89 6.65 1.35 9.59c2 2.63 2.16 4.56.71 8.84a33.45 33.45 0 0 0-1.06 8.91c0 4.88.22 6.28 1.46 8.38s1.82 2.48 3.24 2.32c2-.23 2.3-1.05 4.71-12.12 2.18-10 3.71-11.92 13.76-17.08 2.94-1.51 7.46-4 10-5.44s6.79-3.69 9.37-4.91a40.09 40.09 0 0 0 15.22-11.67c7.11-8.79 10-16.22 12.85-33.3a18.37 18.37 0 0 1 2.86-7.73 20.39 20.39 0 0 0 2.89-7.31c1-5.3 2.85-9.08 5.58-11.51 4.7-4.18 6-1.09 4.59 10.87-.46 3.86-1.1 10.33-1.44 14.38l-.61 7.36 4.45 4.09 4.45 4.09.11 8.42c.06 4.63.47 9.53.92 10.89l.82 2.47-6.43 6.28c-8.54 8.33-12.88 13.93-16.76 21.61-1.77 3.49-3.74 7.11-4.38 8-2.18 3.11-6.46 13-8.76 20.26l-2.29 7.22-7 6.49c-3.83 3.57-8 7.25-9.17 8.17-3.05 2.32-4.26 5.15-4.26 10a14.62 14.62 0 0 0 1.59 7.26 42 42 0 0 1 2.09 4.83 9.28 9.28 0 0 0 1.57 2.89c1.4 1.59 1.92 16.12.83 23.22-.68 4.48-3.63 12-4.7 12-1.79 0-4.06 9.27-5.07 20.74-.18 2-.62 5.94-1 8.7s-1 10-1.35 16.05c-.77 12.22-.19 18.77 2 23.15 3.41 6.69.52 12.69-11 22.84l-4 3.49.07 5.19a40.81 40.81 0 0 0 1.14 8.87c4.61 16 4.73 16.92 4.38 37.13-.46 26.4-.26 40.27.63 44.15a61.31 61.31 0 0 1 1.08 7c.17 2 .66 5.33 1.08 7.36.47 2.26.78 11 .79 22.74v19.06l-1.81 2.63c-2.71 3.91-15.11 13.54-15.49 12.29zm29.53-45.11c-.18-.3-.33-6.87-.33-14.59 0-14.06-.89-27.54-2.26-34.45-.4-2-.81-9.7-.9-17.06-.15-11.93-1.4-24.37-2.64-26.38-.66-1.07-3-17.66-3-21.3 0-4.23 1-6 5.28-9.13s4.86-3.14 5.48-.72c.28 1.1 1.45 5.62 2.6 10 3.93 15.12 4.14 16.27 4.05 21.74-.1 5.78-.13 6.13-1.74 17.73-1 7.07-1.17 12.39-1 28.43.17 19.4-.64 35.73-2 41.27-.71 2.78-2.8 5.48-3.43 4.43zm-71-37.58a101 101 0 0 1-1.73-10.79 100.5 100.5 0 0 0-1.73-10.79 37.53 37.53 0 0 1-1-6.49c-.31-3.19-.91-7.46-1.33-9.48-1-4.79-3.35-19.35-3.42-21.07 0-.74-.34-4.05-.7-7.36-.67-6.21-.84-27.67-.22-28.29 1-1 6.63 2.76 11.33 7.43l5.28 5.25-.45 6.47c-.25 3.56-.6 10.23-.78 14.83s-.49 9.87-.67 11.71-.61 9.36-.94 16.72c-.79 17.41-1.94 31.29-2.65 32a.62.62 0 0 1-1-.14zm-87.18-266.59c21.07 12.79 17.84 14.15 28.49 17.66 13 4.29 18.87 7.13 23.15 16.87C111.6 233.28 86.25 255 78.55 268c-31 52-6 101.59 62.75 87.21-14.18 29.23-78 28.63-98.68-4.9-24.68-39.95-22.09-118.3 61-187.66zm210.79 179c56.66 6.88 82.32-37.74 46.54-89.23 0 0-26.87-29.34-64.28-68 3-15.45 9.49-32.12 30.57-53.82 89.2 63.51 92 141.61 92.46 149.36 4.3 70.64-78.7 91.18-105.29 61.71z"],markdown:[640,512,[],"f60f","M593.8 59.1H46.2C20.7 59.1 0 79.8 0 105.2v301.5c0 25.5 20.7 46.2 46.2 46.2h547.7c25.5 0 46.2-20.7 46.1-46.1V105.2c0-25.4-20.7-46.1-46.2-46.1zM338.5 360.6H277v-120l-61.5 76.9-61.5-76.9v120H92.3V151.4h61.5l61.5 76.9 61.5-76.9h61.5v209.2zm135.3 3.1L381.5 256H443V151.4h61.5V256H566z"],mastodon:[448,512,[],"f4f6","M433 179.11c0-97.2-63.71-125.7-63.71-125.7-62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.54 102.54 0 0 1-.9-13.9c85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175z"],maxcdn:[512,512,[],"f136","M461.1 442.7h-97.4L415.6 200c2.3-10.2.9-19.5-4.4-25.7-5-6.1-13.7-9.6-24.2-9.6h-49.3l-59.5 278h-97.4l59.5-278h-83.4l-59.5 278H0l59.5-278-44.6-95.4H387c39.4 0 75.3 16.3 98.3 44.9 23.3 28.6 31.8 67.4 23.6 105.9l-47.8 222.6z"],mdb:[576,512,[],"f8ca","M17.37 160.41L7 352h43.91l5.59-79.83L84.43 352h44.71l25.54-77.43 4.79 77.43H205l-12.79-191.59H146.7L106 277.74 63.67 160.41zm281 0h-47.9V352h47.9s95 .8 94.2-95.79c-.78-94.21-94.18-95.78-94.18-95.78zm-1.2 146.46V204.78s46 4.27 46.8 50.57-46.78 51.54-46.78 51.54zm238.29-74.24a56.16 56.16 0 0 0 8-38.31c-5.34-35.76-55.08-34.32-55.08-34.32h-51.9v191.58H482s87 4.79 87-63.85c0-43.14-33.52-55.08-33.52-55.08zm-51.9-31.94s13.57-1.59 16 9.59c1.43 6.66-4 12-4 12h-12v-21.57zm-.1 109.46l.1-24.92V267h.08s41.58-4.73 41.19 22.43c-.33 25.65-41.35 20.74-41.35 20.74z"],medapps:[320,512,[],"f3c6","M118.3 238.4c3.5-12.5 6.9-33.6 13.2-33.6 8.3 1.8 9.6 23.4 18.6 36.6 4.6-23.5 5.3-85.1 14.1-86.7 9-.7 19.7 66.5 22 77.5 9.9 4.1 48.9 6.6 48.9 6.6 1.9 7.3-24 7.6-40 7.8-4.6 14.8-5.4 27.7-11.4 28-4.7.2-8.2-28.8-17.5-49.6l-9.4 65.5c-4.4 13-15.5-22.5-21.9-39.3-3.3-.1-62.4-1.6-47.6-7.8l31-5zM228 448c21.2 0 21.2-32 0-32H92c-21.2 0-21.2 32 0 32h136zm-24 64c21.2 0 21.2-32 0-32h-88c-21.2 0-21.2 32 0 32h88zm34.2-141.5c3.2-18.9 5.2-36.4 11.9-48.8 7.9-14.7 16.1-28.1 24-41 24.6-40.4 45.9-75.2 45.9-125.5C320 69.6 248.2 0 160 0S0 69.6 0 155.2c0 50.2 21.3 85.1 45.9 125.5 7.9 12.9 16 26.3 24 41 6.7 12.5 8.7 29.8 11.9 48.9 3.5 21 36.1 15.7 32.6-5.1-3.6-21.7-5.6-40.7-15.3-58.6C66.5 246.5 33 211.3 33 155.2 33 87.3 90 32 160 32s127 55.3 127 123.2c0 56.1-33.5 91.3-66.1 151.6-9.7 18-11.7 37.4-15.3 58.6-3.4 20.6 29 26.4 32.6 5.1z"],medium:[448,512,[],"f23a","M0 32v448h448V32H0zm372.2 106.1l-24 23c-2.1 1.6-3.1 4.2-2.7 6.7v169.3c-.4 2.6.6 5.2 2.7 6.7l23.5 23v5.1h-118V367l24.3-23.6c2.4-2.4 2.4-3.1 2.4-6.7V199.8l-67.6 171.6h-9.1L125 199.8v115c-.7 4.8 1 9.7 4.4 13.2l31.6 38.3v5.1H71.2v-5.1l31.6-38.3c3.4-3.5 4.9-8.4 4.1-13.2v-133c.4-3.7-1-7.3-3.8-9.8L75 138.1V133h87.3l67.4 148L289 133.1h83.2v5z"],"medium-m":[512,512,[],"f3c7","M71.5 142.3c.6-5.9-1.7-11.8-6.1-15.8L20.3 72.1V64h140.2l108.4 237.7L364.2 64h133.7v8.1l-38.6 37c-3.3 2.5-5 6.7-4.3 10.8v272c-.7 4.1 1 8.3 4.3 10.8l37.7 37v8.1H307.3v-8.1l39.1-37.9c3.8-3.8 3.8-5 3.8-10.8V171.2L241.5 447.1h-14.7L100.4 171.2v184.9c-1.1 7.8 1.5 15.6 7 21.2l50.8 61.6v8.1h-144v-8L65 377.3c5.4-5.6 7.9-13.5 6.5-21.2V142.3z"],medrt:[544,512,[],"f3c8","M113.7 256c0 121.8 83.9 222.8 193.5 241.1-18.7 4.5-38.2 6.9-58.2 6.9C111.4 504 0 393 0 256S111.4 8 248.9 8c20.1 0 39.6 2.4 58.2 6.9C197.5 33.2 113.7 134.2 113.7 256m297.4 100.3c-77.7 55.4-179.6 47.5-240.4-14.6 5.5 14.1 12.7 27.7 21.7 40.5 61.6 88.2 182.4 109.3 269.7 47 87.3-62.3 108.1-184.3 46.5-272.6-9-12.9-19.3-24.3-30.5-34.2 37.4 78.8 10.7 178.5-67 233.9m-218.8-244c-1.4 1-2.7 2.1-4 3.1 64.3-17.8 135.9 4 178.9 60.5 35.7 47 42.9 106.6 24.4 158 56.7-56.2 67.6-142.1 22.3-201.8-50-65.5-149.1-74.4-221.6-19.8M296 224c-4.4 0-8-3.6-8-8v-40c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v40c0 4.4-3.6 8-8 8h-40c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h40c4.4 0 8 3.6 8 8v40c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-40c0-4.4 3.6-8 8-8h40c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-40z"],meetup:[512,512,[],"f2e0","M99 414.3c1.1 5.7-2.3 11.1-8 12.3-5.4 1.1-10.9-2.3-12-8-1.1-5.4 2.3-11.1 7.7-12.3 5.4-1.2 11.1 2.3 12.3 8zm143.1 71.4c-6.3 4.6-8 13.4-3.7 20 4.6 6.6 13.4 8.3 20 3.7 6.3-4.6 8-13.4 3.4-20-4.2-6.5-13.1-8.3-19.7-3.7zm-86-462.3c6.3-1.4 10.3-7.7 8.9-14-1.1-6.6-7.4-10.6-13.7-9.1-6.3 1.4-10.3 7.7-9.1 14 1.4 6.6 7.6 10.6 13.9 9.1zM34.4 226.3c-10-6.9-23.7-4.3-30.6 6-6.9 10-4.3 24 5.7 30.9 10 7.1 23.7 4.6 30.6-5.7 6.9-10.4 4.3-24.1-5.7-31.2zm272-170.9c10.6-6.3 13.7-20 7.7-30.3-6.3-10.6-19.7-14-30-7.7s-13.7 20-7.4 30.6c6 10.3 19.4 13.7 29.7 7.4zm-191.1 58c7.7-5.4 9.4-16 4.3-23.7s-15.7-9.4-23.1-4.3c-7.7 5.4-9.4 16-4.3 23.7 5.1 7.8 15.6 9.5 23.1 4.3zm372.3 156c-7.4 1.7-12.3 9.1-10.6 16.9 1.4 7.4 8.9 12.3 16.3 10.6 7.4-1.4 12.3-8.9 10.6-16.6-1.5-7.4-8.9-12.3-16.3-10.9zm39.7-56.8c-1.1-5.7-6.6-9.1-12-8-5.7 1.1-9.1 6.9-8 12.6 1.1 5.4 6.6 9.1 12.3 8 5.4-1.5 9.1-6.9 7.7-12.6zM447 138.9c-8.6 6-10.6 17.7-4.9 26.3 5.7 8.6 17.4 10.6 26 4.9 8.3-6 10.3-17.7 4.6-26.3-5.7-8.7-17.4-10.9-25.7-4.9zm-6.3 139.4c26.3 43.1 15.1 100-26.3 129.1-17.4 12.3-37.1 17.7-56.9 17.1-12 47.1-69.4 64.6-105.1 32.6-1.1.9-2.6 1.7-3.7 2.9-39.1 27.1-92.3 17.4-119.4-22.3-9.7-14.3-14.6-30.6-15.1-46.9-65.4-10.9-90-94-41.1-139.7-28.3-46.9.6-107.4 53.4-114.9C151.6 70 234.1 38.6 290.1 82c67.4-22.3 136.3 29.4 130.9 101.1 41.1 12.6 52.8 66.9 19.7 95.2zm-70 74.3c-3.1-20.6-40.9-4.6-43.1-27.1-3.1-32 43.7-101.1 40-128-3.4-24-19.4-29.1-33.4-29.4-13.4-.3-16.9 2-21.4 4.6-2.9 1.7-6.6 4.9-11.7-.3-6.3-6-11.1-11.7-19.4-12.9-12.3-2-17.7 2-26.6 9.7-3.4 2.9-12 12.9-20 9.1-3.4-1.7-15.4-7.7-24-11.4-16.3-7.1-40 4.6-48.6 20-12.9 22.9-38 113.1-41.7 125.1-8.6 26.6 10.9 48.6 36.9 47.1 11.1-.6 18.3-4.6 25.4-17.4 4-7.4 41.7-107.7 44.6-112.6 2-3.4 8.9-8 14.6-5.1 5.7 3.1 6.9 9.4 6 15.1-1.1 9.7-28 70.9-28.9 77.7-3.4 22.9 26.9 26.6 38.6 4 3.7-7.1 45.7-92.6 49.4-98.3 4.3-6.3 7.4-8.3 11.7-8 3.1 0 8.3.9 7.1 10.9-1.4 9.4-35.1 72.3-38.9 87.7-4.6 20.6 6.6 41.4 24.9 50.6 11.4 5.7 62.5 15.7 58.5-11.1zm5.7 92.3c-10.3 7.4-12.9 22-5.7 32.6 7.1 10.6 21.4 13.1 32 6 10.6-7.4 13.1-22 6-32.6-7.4-10.6-21.7-13.5-32.3-6z"],megaport:[496,512,[],"f5a3","M214.5 209.6v66.2l33.5 33.5 33.3-33.3v-66.4l-33.4-33.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm145.1 414.4L367 441.6l-26-19.2v-65.5l-33.4-33.4-33.4 33.4v65.5L248 441.6l-26.1-19.2v-65.5l-33.4-33.4-33.5 33.4v65.5l-26.1 19.2-26.1-19.2v-87l59.5-59.5V188l59.5-59.5V52.9l26.1-19.2L274 52.9v75.6l59.5 59.5v87.6l59.7 59.7v87.1z"],mendeley:[640,512,[],"f7b3","M624.6 325.2c-12.3-12.4-29.7-19.2-48.4-17.2-43.3-1-49.7-34.9-37.5-98.8 22.8-57.5-14.9-131.5-87.4-130.8-77.4.7-81.7 82-130.9 82-48.1 0-54-81.3-130.9-82-72.9-.8-110.1 73.3-87.4 130.8 12.2 63.9 5.8 97.8-37.5 98.8-21.2-2.3-37 6.5-53 22.5-19.9 19.7-19.3 94.8 42.6 102.6 47.1 5.9 81.6-42.9 61.2-87.8-47.3-103.7 185.9-106.1 146.5-8.2-.1.1-.2.2-.3.4-26.8 42.8 6.8 97.4 58.8 95.2 52.1 2.1 85.4-52.6 58.8-95.2-.1-.2-.2-.3-.3-.4-39.4-97.9 193.8-95.5 146.5 8.2-4.6 10-6.7 21.3-5.7 33 4.9 53.4 68.7 74.1 104.9 35.2 17.8-14.8 23.1-65.6 0-88.3zm-303.9-19.1h-.6c-43.4 0-62.8-37.5-62.8-62.8 0-34.7 28.2-62.8 62.8-62.8h.6c34.7 0 62.8 28.1 62.8 62.8 0 25-19.2 62.8-62.8 62.8z"],microblog:[448,512,[],"f91a","M399.36,362.23c29.49-34.69,47.1-78.34,47.1-125.79C446.46,123.49,346.86,32,224,32S1.54,123.49,1.54,236.44,101.14,440.87,224,440.87a239.28,239.28,0,0,0,79.44-13.44,7.18,7.18,0,0,1,8.12,2.56c18.58,25.09,47.61,42.74,79.89,49.92a4.42,4.42,0,0,0,5.22-3.43,4.37,4.37,0,0,0-.85-3.62,87,87,0,0,1,3.69-110.69ZM329.52,212.4l-57.3,43.49L293,324.75a6.5,6.5,0,0,1-9.94,7.22L224,290.92,164.94,332a6.51,6.51,0,0,1-9.95-7.22l20.79-68.86-57.3-43.49a6.5,6.5,0,0,1,3.8-11.68l71.88-1.51,23.66-67.92a6.5,6.5,0,0,1,12.28,0l23.66,67.92,71.88,1.51a6.5,6.5,0,0,1,3.88,11.68Z"],microsoft:[448,512,[],"f3ca","M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z"],mix:[448,512,[],"f3cb","M0 64v348.9c0 56.2 88 58.1 88 0V174.3c7.9-52.9 88-50.4 88 6.5v175.3c0 57.9 96 58 96 0V240c5.3-54.7 88-52.5 88 4.3v23.8c0 59.9 88 56.6 88 0V64H0z"],mixcloud:[640,512,[],"f289","M424.43 219.729C416.124 134.727 344.135 68 256.919 68c-72.266 0-136.224 46.516-159.205 114.074-54.545 8.029-96.63 54.822-96.63 111.582 0 62.298 50.668 112.966 113.243 112.966h289.614c52.329 0 94.969-42.362 94.969-94.693 0-45.131-32.118-83.063-74.48-92.2zm-20.489 144.53H114.327c-39.04 0-70.881-31.564-70.881-70.604s31.841-70.604 70.881-70.604c18.827 0 36.548 7.475 49.838 20.766 19.963 19.963 50.133-10.227 30.18-30.18-14.675-14.398-32.672-24.365-52.053-29.349 19.935-44.3 64.79-73.926 114.628-73.926 69.496 0 125.979 56.483 125.979 125.702 0 13.568-2.215 26.857-6.369 39.594-8.943 27.517 32.133 38.939 40.147 13.29 2.769-8.306 4.984-16.889 6.369-25.472 19.381 7.476 33.502 26.303 33.502 48.453 0 28.795-23.535 52.33-52.607 52.33zm235.069-52.33c0 44.024-12.737 86.386-37.102 122.657-4.153 6.092-10.798 9.414-17.72 9.414-16.317 0-27.127-18.826-17.443-32.949 19.381-29.349 29.903-63.682 29.903-99.122s-10.521-69.773-29.903-98.845c-15.655-22.831 19.361-47.24 35.163-23.534 24.366 35.993 37.102 78.356 37.102 122.379zm-70.88 0c0 31.565-9.137 62.021-26.857 88.325-4.153 6.091-10.798 9.136-17.72 9.136-17.201 0-27.022-18.979-17.443-32.948 13.013-19.104 19.658-41.255 19.658-64.513 0-22.981-6.645-45.408-19.658-64.512-15.761-22.986 19.008-47.095 35.163-23.535 17.719 26.026 26.857 56.483 26.857 88.047z"],mixer:[512,512,[],"f956","M114.57,76.07a45.71,45.71,0,0,0-67.51-6.41c-17.58,16.18-19,43.52-4.75,62.77l91.78,123L41.76,379.58c-14.23,19.25-13.11,46.59,4.74,62.77A45.71,45.71,0,0,0,114,435.94L242.89,262.7a12.14,12.14,0,0,0,0-14.23ZM470.24,379.58,377.91,255.45l91.78-123c14.22-19.25,12.83-46.59-4.75-62.77a45.71,45.71,0,0,0-67.51,6.41l-128,172.12a12.14,12.14,0,0,0,0,14.23L398,435.94a45.71,45.71,0,0,0,67.51,6.41C483.35,426.17,484.47,398.83,470.24,379.58Z"],mizuni:[496,512,[],"f3cc","M248 8C111 8 0 119.1 0 256c0 137 111 248 248 248s248-111 248-248C496 119.1 385 8 248 8zm-80 351.9c-31.4 10.6-58.8 27.3-80 48.2V136c0-22.1 17.9-40 40-40s40 17.9 40 40v223.9zm120-9.9c-12.9-2-26.2-3.1-39.8-3.1-13.8 0-27.2 1.1-40.2 3.1V136c0-22.1 17.9-40 40-40s40 17.9 40 40v214zm120 57.7c-21.2-20.8-48.6-37.4-80-48V136c0-22.1 17.9-40 40-40s40 17.9 40 40v271.7z"],modx:[448,512,[],"f285","M356 241.8l36.7 23.7V480l-133-83.8L356 241.8zM440 75H226.3l-23 37.8 153.5 96.5L440 75zm-89 142.8L55.2 32v214.5l46 29L351 217.8zM97 294.2L8 437h213.7l125-200.5L97 294.2z"],monero:[496,512,[],"f3d0","M352 384h108.4C417 455.9 338.1 504 248 504S79 455.9 35.6 384H144V256.2L248 361l104-105v128zM88 336V128l159.4 159.4L408 128v208h74.8c8.5-25.1 13.2-52 13.2-80C496 119 385 8 248 8S0 119 0 256c0 28 4.6 54.9 13.2 80H88z"],napster:[496,512,[],"f3d2","M298.3 373.6c-14.2 13.6-31.3 24.1-50.4 30.5-19-6.4-36.2-16.9-50.3-30.5h100.7zm44-199.6c20-16.9 43.6-29.2 69.6-36.2V299c0 219.4-328 217.6-328 .3V137.7c25.9 6.9 49.6 19.6 69.5 36.4 56.8-40 132.5-39.9 188.9-.1zm-208.8-58.5c64.4-60 164.3-60.1 228.9-.2-7.1 3.5-13.9 7.3-20.6 11.5-58.7-30.5-129.2-30.4-187.9.1-6.3-4-13.9-8.2-20.4-11.4zM43.8 93.2v69.3c-58.4 36.5-58.4 121.1.1 158.3 26.4 245.1 381.7 240.3 407.6 1.5l.3-1.7c58.7-36.3 58.9-121.7.2-158.2V93.2c-17.3.5-34 3-50.1 7.4-82-91.5-225.5-91.5-307.5.1-16.3-4.4-33.1-7-50.6-7.5zM259.2 352s36-.3 61.3-1.5c10.2-.5 21.1-4 25.5-6.5 26.3-15.1 25.4-39.2 26.2-47.4-79.5-.6-99.9-3.9-113 55.4zm-135.5-55.3c.8 8.2-.1 32.3 26.2 47.4 4.4 2.5 15.2 6 25.5 6.5 25.3 1.1 61.3 1.5 61.3 1.5-13.2-59.4-33.7-56.1-113-55.4zm169.1 123.4c-3.2-5.3-6.9-7.3-6.9-7.3-24.8 7.3-52.2 6.9-75.9 0 0 0-2.9 1.5-6.4 6.6-2.8 4.1-3.7 9.6-3.7 9.6 29.1 17.6 67.1 17.6 96.2 0-.1-.1-.3-4-3.3-8.9z"],neos:[512,512,[],"f612","M415.44 512h-95.11L212.12 357.46v91.1L125.69 512H28V29.82L68.47 0h108.05l123.74 176.13V63.45L386.69 0h97.69v461.5zM38.77 35.27V496l72-52.88V194l215.5 307.64h84.79l52.35-38.17h-78.27L69 13zm82.54 466.61l80-58.78v-101l-79.76-114.4v220.94L49 501.89h72.34zM80.63 10.77l310.6 442.57h82.37V10.77h-79.75v317.56L170.91 10.77zM311 191.65l72 102.81V15.93l-72 53v122.72z"],nimblr:[384,512,[],"f5a8","M246.6 299.29c15.57 0 27.15 11.46 27.15 27s-11.62 27-27.15 27c-15.7 0-27.15-11.57-27.15-27s11.55-27 27.15-27zM113 326.25c0-15.61 11.68-27 27.15-27s27.15 11.46 27.15 27-11.47 27-27.15 27c-15.44 0-27.15-11.31-27.15-27M191.76 159C157 159 89.45 178.77 59.25 227L14 0v335.48C14 433.13 93.61 512 191.76 512s177.76-78.95 177.76-176.52S290.13 159 191.76 159zm0 308.12c-73.27 0-132.51-58.9-132.51-131.59s59.24-131.59 132.51-131.59 132.51 58.86 132.51 131.54S265 467.07 191.76 467.07z"],node:[640,512,[],"f419","M316.3 452c-2.1 0-4.2-.6-6.1-1.6L291 439c-2.9-1.6-1.5-2.2-.5-2.5 3.8-1.3 4.6-1.6 8.7-4 .4-.2 1-.1 1.4.1l14.8 8.8c.5.3 1.3.3 1.8 0L375 408c.5-.3.9-.9.9-1.6v-66.7c0-.7-.3-1.3-.9-1.6l-57.8-33.3c-.5-.3-1.2-.3-1.8 0l-57.8 33.3c-.6.3-.9 1-.9 1.6v66.7c0 .6.4 1.2.9 1.5l15.8 9.1c8.6 4.3 13.9-.8 13.9-5.8v-65.9c0-.9.7-1.7 1.7-1.7h7.3c.9 0 1.7.7 1.7 1.7v65.9c0 11.5-6.2 18-17.1 18-3.3 0-6 0-13.3-3.6l-15.2-8.7c-3.7-2.2-6.1-6.2-6.1-10.5v-66.7c0-4.3 2.3-8.4 6.1-10.5l57.8-33.4c3.7-2.1 8.5-2.1 12.1 0l57.8 33.4c3.7 2.2 6.1 6.2 6.1 10.5v66.7c0 4.3-2.3 8.4-6.1 10.5l-57.8 33.4c-1.7 1.1-3.8 1.7-6 1.7zm46.7-65.8c0-12.5-8.4-15.8-26.2-18.2-18-2.4-19.8-3.6-19.8-7.8 0-3.5 1.5-8.1 14.8-8.1 11.9 0 16.3 2.6 18.1 10.6.2.8.8 1.3 1.6 1.3h7.5c.5 0 .9-.2 1.2-.5.3-.4.5-.8.4-1.3-1.2-13.8-10.3-20.2-28.8-20.2-16.5 0-26.3 7-26.3 18.6 0 12.7 9.8 16.1 25.6 17.7 18.9 1.9 20.4 4.6 20.4 8.3 0 6.5-5.2 9.2-17.4 9.2-15.3 0-18.7-3.8-19.8-11.4-.1-.8-.8-1.4-1.7-1.4h-7.5c-.9 0-1.7.7-1.7 1.7 0 9.7 5.3 21.3 30.6 21.3 18.5 0 29-7.2 29-19.8zm54.5-50.1c0 6.1-5 11.1-11.1 11.1s-11.1-5-11.1-11.1c0-6.3 5.2-11.1 11.1-11.1 6-.1 11.1 4.8 11.1 11.1zm-1.8 0c0-5.2-4.2-9.3-9.4-9.3-5.1 0-9.3 4.1-9.3 9.3 0 5.2 4.2 9.4 9.3 9.4 5.2-.1 9.4-4.3 9.4-9.4zm-4.5 6.2h-2.6c-.1-.6-.5-3.8-.5-3.9-.2-.7-.4-1.1-1.3-1.1h-2.2v5h-2.4v-12.5h4.3c1.5 0 4.4 0 4.4 3.3 0 2.3-1.5 2.8-2.4 3.1 1.7.1 1.8 1.2 2.1 2.8.1 1 .3 2.7.6 3.3zm-2.8-8.8c0-1.7-1.2-1.7-1.8-1.7h-2v3.5h1.9c1.6 0 1.9-1.1 1.9-1.8zM137.3 191c0-2.7-1.4-5.1-3.7-6.4l-61.3-35.3c-1-.6-2.2-.9-3.4-1h-.6c-1.2 0-2.3.4-3.4 1L3.7 184.6C1.4 185.9 0 188.4 0 191l.1 95c0 1.3.7 2.5 1.8 3.2 1.1.7 2.5.7 3.7 0L42 268.3c2.3-1.4 3.7-3.8 3.7-6.4v-44.4c0-2.6 1.4-5.1 3.7-6.4l15.5-8.9c1.2-.7 2.4-1 3.7-1 1.3 0 2.6.3 3.7 1l15.5 8.9c2.3 1.3 3.7 3.8 3.7 6.4v44.4c0 2.6 1.4 5.1 3.7 6.4l36.4 20.9c1.1.7 2.6.7 3.7 0 1.1-.6 1.8-1.9 1.8-3.2l.2-95zM472.5 87.3v176.4c0 2.6-1.4 5.1-3.7 6.4l-61.3 35.4c-2.3 1.3-5.1 1.3-7.4 0l-61.3-35.4c-2.3-1.3-3.7-3.8-3.7-6.4v-70.8c0-2.6 1.4-5.1 3.7-6.4l61.3-35.4c2.3-1.3 5.1-1.3 7.4 0l15.3 8.8c1.7 1 3.9-.3 3.9-2.2v-94c0-2.8 3-4.6 5.5-3.2l36.5 20.4c2.3 1.2 3.8 3.7 3.8 6.4zm-46 128.9c0-.7-.4-1.3-.9-1.6l-21-12.2c-.6-.3-1.3-.3-1.9 0l-21 12.2c-.6.3-.9.9-.9 1.6v24.3c0 .7.4 1.3.9 1.6l21 12.1c.6.3 1.3.3 1.8 0l21-12.1c.6-.3.9-.9.9-1.6v-24.3zm209.8-.7c2.3-1.3 3.7-3.8 3.7-6.4V192c0-2.6-1.4-5.1-3.7-6.4l-60.9-35.4c-2.3-1.3-5.1-1.3-7.4 0l-61.3 35.4c-2.3 1.3-3.7 3.8-3.7 6.4v70.8c0 2.7 1.4 5.1 3.7 6.4l60.9 34.7c2.2 1.3 5 1.3 7.3 0l36.8-20.5c2.5-1.4 2.5-5 0-6.4L550 241.6c-1.2-.7-1.9-1.9-1.9-3.2v-22.2c0-1.3.7-2.5 1.9-3.2l19.2-11.1c1.1-.7 2.6-.7 3.7 0l19.2 11.1c1.1.7 1.9 1.9 1.9 3.2v17.4c0 2.8 3.1 4.6 5.6 3.2l36.7-21.3zM559 219c-.4.3-.7.7-.7 1.2v13.6c0 .5.3 1 .7 1.2l11.8 6.8c.4.3 1 .3 1.4 0L584 235c.4-.3.7-.7.7-1.2v-13.6c0-.5-.3-1-.7-1.2l-11.8-6.8c-.4-.3-1-.3-1.4 0L559 219zm-254.2 43.5v-70.4c0-2.6-1.6-5.1-3.9-6.4l-61.1-35.2c-2.1-1.2-5-1.4-7.4 0l-61.1 35.2c-2.3 1.3-3.9 3.7-3.9 6.4v70.4c0 2.8 1.9 5.2 4 6.4l61.2 35.2c2.4 1.4 5.2 1.3 7.4 0l61-35.2c1.8-1 3.1-2.7 3.6-4.7.1-.5.2-1.1.2-1.7zm-74.3-124.9l-.8.5h1.1l-.3-.5zm76.2 130.2l-.4-.7v.9l.4-.2z"],"node-js":[448,512,[],"f3d3","M224 508c-6.7 0-13.5-1.8-19.4-5.2l-61.7-36.5c-9.2-5.2-4.7-7-1.7-8 12.3-4.3 14.8-5.2 27.9-12.7 1.4-.8 3.2-.5 4.6.4l47.4 28.1c1.7 1 4.1 1 5.7 0l184.7-106.6c1.7-1 2.8-3 2.8-5V149.3c0-2.1-1.1-4-2.9-5.1L226.8 37.7c-1.7-1-4-1-5.7 0L36.6 144.3c-1.8 1-2.9 3-2.9 5.1v213.1c0 2 1.1 4 2.9 4.9l50.6 29.2c27.5 13.7 44.3-2.4 44.3-18.7V167.5c0-3 2.4-5.3 5.4-5.3h23.4c2.9 0 5.4 2.3 5.4 5.3V378c0 36.6-20 57.6-54.7 57.6-10.7 0-19.1 0-42.5-11.6l-48.4-27.9C8.1 389.2.7 376.3.7 362.4V149.3c0-13.8 7.4-26.8 19.4-33.7L204.6 9c11.7-6.6 27.2-6.6 38.8 0l184.7 106.7c12 6.9 19.4 19.8 19.4 33.7v213.1c0 13.8-7.4 26.7-19.4 33.7L243.4 502.8c-5.9 3.4-12.6 5.2-19.4 5.2zm149.1-210.1c0-39.9-27-50.5-83.7-58-57.4-7.6-63.2-11.5-63.2-24.9 0-11.1 4.9-25.9 47.4-25.9 37.9 0 51.9 8.2 57.7 33.8.5 2.4 2.7 4.2 5.2 4.2h24c1.5 0 2.9-.6 3.9-1.7s1.5-2.6 1.4-4.1c-3.7-44.1-33-64.6-92.2-64.6-52.7 0-84.1 22.2-84.1 59.5 0 40.4 31.3 51.6 81.8 56.6 60.5 5.9 65.2 14.8 65.2 26.7 0 20.6-16.6 29.4-55.5 29.4-48.9 0-59.6-12.3-63.2-36.6-.4-2.6-2.6-4.5-5.3-4.5h-23.9c-3 0-5.3 2.4-5.3 5.3 0 31.1 16.9 68.2 97.8 68.2 58.4-.1 92-23.2 92-63.4z"],npm:[576,512,[],"f3d4","M288 288h-32v-64h32v64zm288-128v192H288v32H160v-32H0V160h576zm-416 32H32v128h64v-96h32v96h32V192zm160 0H192v160h64v-32h64V192zm224 0H352v128h64v-96h32v96h32v-96h32v96h32V192z"],ns8:[640,512,[],"f3d5","M187.1 159.9l-34.2 113.7-54.5-113.7H49L0 320h44.9L76 213.5 126.6 320h56.9L232 159.9h-44.9zm452.5-.9c-2.9-18-23.9-28.1-42.1-31.3-44.6-7.8-101.9 16.3-88.5 58.8v.1c-43.8 8.7-74.3 26.8-94.2 48.2-3-9.8-13.6-16.6-34-16.6h-87.6c-9.3 0-12.9-2.3-11.5-7.4 1.6-5.5 1.9-6.8 3.7-12.2 2.1-6.4 7.8-7.1 13.3-7.1h133.5l9.7-31.5c-139.7 0-144.5-.5-160.1 1.2-12.3 1.3-23.5 4.8-30.6 15-6.8 9.9-14.4 35.6-17.6 47.1-5.4 19.4-.6 28.6 32.8 28.6h87.3c7.8 0 8.8 2.7 7.7 6.6-1.1 4.4-2.8 10-4.5 14.6-1.6 4.2-4.7 7.4-13.8 7.4H216.3L204.7 320c139.9 0 145.3-.6 160.9-2.3 6.6-.7 13-2.1 18.5-4.9.2 3.7.5 7.3 1.2 10.8 5.4 30.5 27.4 52.3 56.8 59.5 48.6 11.9 108.7-16.8 135.1-68 18.7-36.2 14.1-76.2-3.4-105.5h.1c29.6-5.9 70.3-22 65.7-50.6zM530.7 263.7c-5.9 29.5-36.6 47.8-61.6 43.9-30.9-4.8-38.5-39.5-14.1-64.8 16.2-16.8 45.2-24 68.5-26.9 6.7 14.1 10.3 32 7.2 47.8zm21.8-83.1c-4.2-6-9.8-18.5-2.5-26.3 6.7-7.2 20.9-10.1 31.8-7.7 15.3 3.4 19.7 15.9 4.9 24.4-10.7 6.1-23.6 8.1-34.2 9.6z"],nutritionix:[400,512,[],"f3d6","M88 8.1S221.4-.1 209 112.5c0 0 19.1-74.9 103-40.6 0 0-17.7 74-88 56 0 0 14.6-54.6 66.1-56.6 0 0-39.9-10.3-82.1 48.8 0 0-19.8-94.5-93.6-99.7 0 0 75.2 19.4 77.6 107.5 0 .1-106.4 7-104-119.8zm312 315.6c0 48.5-9.7 95.3-32 132.3-42.2 30.9-105 48-168 48-62.9 0-125.8-17.1-168-48C9.7 419 0 372.2 0 323.7 0 275.3 17.7 229 40 192c42.2-30.9 97.1-48.6 160-48.6 63 0 117.8 17.6 160 48.6 22.3 37 40 83.3 40 131.7zM120 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM192 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM264 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM336 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm24-39.6c-4.8-22.3-7.4-36.9-16-56-38.8-19.9-90.5-32-144-32S94.8 180.1 56 200c-8.8 19.5-11.2 33.9-16 56 42.2-7.9 98.7-14.8 160-14.8s117.8 6.9 160 14.8z"],odnoklassniki:[320,512,[],"f263","M275.1 334c-27.4 17.4-65.1 24.3-90 26.9l20.9 20.6 76.3 76.3c27.9 28.6-17.5 73.3-45.7 45.7-19.1-19.4-47.1-47.4-76.3-76.6L84 503.4c-28.2 27.5-73.6-17.6-45.4-45.7 19.4-19.4 47.1-47.4 76.3-76.3l20.6-20.6c-24.6-2.6-62.9-9.1-90.6-26.9-32.6-21-46.9-33.3-34.3-59 7.4-14.6 27.7-26.9 54.6-5.7 0 0 36.3 28.9 94.9 28.9s94.9-28.9 94.9-28.9c26.9-21.1 47.1-8.9 54.6 5.7 12.4 25.7-1.9 38-34.5 59.1zM30.3 129.7C30.3 58 88.6 0 160 0s129.7 58 129.7 129.7c0 71.4-58.3 129.4-129.7 129.4s-129.7-58-129.7-129.4zm66 0c0 35.1 28.6 63.7 63.7 63.7s63.7-28.6 63.7-63.7c0-35.4-28.6-64-63.7-64s-63.7 28.6-63.7 64z"],"odnoklassniki-square":[448,512,[],"f264","M184.2 177.1c0-22.1 17.9-40 39.8-40s39.8 17.9 39.8 40c0 22-17.9 39.8-39.8 39.8s-39.8-17.9-39.8-39.8zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-305.1 97.1c0 44.6 36.4 80.9 81.1 80.9s81.1-36.2 81.1-80.9c0-44.8-36.4-81.1-81.1-81.1s-81.1 36.2-81.1 81.1zm174.5 90.7c-4.6-9.1-17.3-16.8-34.1-3.6 0 0-22.7 18-59.3 18s-59.3-18-59.3-18c-16.8-13.2-29.5-5.5-34.1 3.6-7.9 16.1 1.1 23.7 21.4 37 17.3 11.1 41.2 15.2 56.6 16.8l-12.9 12.9c-18.2 18-35.5 35.5-47.7 47.7-17.6 17.6 10.7 45.8 28.4 28.6l47.7-47.9c18.2 18.2 35.7 35.7 47.7 47.9 17.6 17.2 46-10.7 28.6-28.6l-47.7-47.7-13-12.9c15.5-1.6 39.1-5.9 56.2-16.8 20.4-13.3 29.3-21 21.5-37z"],"old-republic":[496,512,[],"f510","M235.76 10.23c7.5-.31 15-.28 22.5-.09 3.61.14 7.2.4 10.79.73 4.92.27 9.79 1.03 14.67 1.62 2.93.43 5.83.98 8.75 1.46 7.9 1.33 15.67 3.28 23.39 5.4 12.24 3.47 24.19 7.92 35.76 13.21 26.56 12.24 50.94 29.21 71.63 49.88 20.03 20.09 36.72 43.55 48.89 69.19 1.13 2.59 2.44 5.1 3.47 7.74 2.81 6.43 5.39 12.97 7.58 19.63 4.14 12.33 7.34 24.99 9.42 37.83.57 3.14 1.04 6.3 1.4 9.47.55 3.83.94 7.69 1.18 11.56.83 8.34.84 16.73.77 25.1-.07 4.97-.26 9.94-.75 14.89-.24 3.38-.51 6.76-.98 10.12-.39 2.72-.63 5.46-1.11 8.17-.9 5.15-1.7 10.31-2.87 15.41-4.1 18.5-10.3 36.55-18.51 53.63-15.77 32.83-38.83 62.17-67.12 85.12a246.503 246.503 0 0 1-56.91 34.86c-6.21 2.68-12.46 5.25-18.87 7.41-3.51 1.16-7.01 2.38-10.57 3.39-6.62 1.88-13.29 3.64-20.04 5-4.66.91-9.34 1.73-14.03 2.48-5.25.66-10.5 1.44-15.79 1.74-6.69.66-13.41.84-20.12.81-6.82.03-13.65-.12-20.45-.79-3.29-.23-6.57-.5-9.83-.95-2.72-.39-5.46-.63-8.17-1.11-4.12-.72-8.25-1.37-12.35-2.22-4.25-.94-8.49-1.89-12.69-3.02-8.63-2.17-17.08-5.01-25.41-8.13-10.49-4.12-20.79-8.75-30.64-14.25-2.14-1.15-4.28-2.29-6.35-3.57-11.22-6.58-21.86-14.1-31.92-22.34-34.68-28.41-61.41-66.43-76.35-108.7-3.09-8.74-5.71-17.65-7.8-26.68-1.48-6.16-2.52-12.42-3.58-18.66-.4-2.35-.61-4.73-.95-7.09-.6-3.96-.75-7.96-1.17-11.94-.8-9.47-.71-18.99-.51-28.49.14-3.51.34-7.01.7-10.51.31-3.17.46-6.37.92-9.52.41-2.81.65-5.65 1.16-8.44.7-3.94 1.3-7.9 2.12-11.82 3.43-16.52 8.47-32.73 15.26-48.18 1.15-2.92 2.59-5.72 3.86-8.59 8.05-16.71 17.9-32.56 29.49-47.06 20-25.38 45.1-46.68 73.27-62.47 7.5-4.15 15.16-8.05 23.07-11.37 15.82-6.88 32.41-11.95 49.31-15.38 3.51-.67 7.04-1.24 10.56-1.85 2.62-.47 5.28-.7 7.91-1.08 3.53-.53 7.1-.68 10.65-1.04 2.46-.24 4.91-.36 7.36-.51m8.64 24.41c-9.23.1-18.43.99-27.57 2.23-7.3 1.08-14.53 2.6-21.71 4.3-13.91 3.5-27.48 8.34-40.46 14.42-10.46 4.99-20.59 10.7-30.18 17.22-4.18 2.92-8.4 5.8-12.34 9.03-5.08 3.97-9.98 8.17-14.68 12.59-2.51 2.24-4.81 4.7-7.22 7.06-28.22 28.79-48.44 65.39-57.5 104.69-2.04 8.44-3.54 17.02-4.44 25.65-1.1 8.89-1.44 17.85-1.41 26.8.11 7.14.38 14.28 1.22 21.37.62 7.12 1.87 14.16 3.2 21.18 1.07 4.65 2.03 9.32 3.33 13.91 6.29 23.38 16.5 45.7 30.07 65.75 8.64 12.98 18.78 24.93 29.98 35.77 16.28 15.82 35.05 29.04 55.34 39.22 7.28 3.52 14.66 6.87 22.27 9.63 5.04 1.76 10.06 3.57 15.22 4.98 11.26 3.23 22.77 5.6 34.39 7.06 2.91.29 5.81.61 8.72.9 13.82 1.08 27.74 1 41.54-.43 4.45-.6 8.92-.99 13.35-1.78 3.63-.67 7.28-1.25 10.87-2.1 4.13-.98 8.28-1.91 12.36-3.07 26.5-7.34 51.58-19.71 73.58-36.2 15.78-11.82 29.96-25.76 42.12-41.28 3.26-4.02 6.17-8.31 9.13-12.55 3.39-5.06 6.58-10.25 9.6-15.54 2.4-4.44 4.74-8.91 6.95-13.45 5.69-12.05 10.28-24.62 13.75-37.49 2.59-10.01 4.75-20.16 5.9-30.45 1.77-13.47 1.94-27.1 1.29-40.65-.29-3.89-.67-7.77-1-11.66-2.23-19.08-6.79-37.91-13.82-55.8-5.95-15.13-13.53-29.63-22.61-43.13-12.69-18.8-28.24-35.68-45.97-49.83-25.05-20-54.47-34.55-85.65-42.08-7.78-1.93-15.69-3.34-23.63-4.45-3.91-.59-7.85-.82-11.77-1.24-7.39-.57-14.81-.72-22.22-.58zM139.26 83.53c13.3-8.89 28.08-15.38 43.3-20.18-3.17 1.77-6.44 3.38-9.53 5.29-11.21 6.68-21.52 14.9-30.38 24.49-6.8 7.43-12.76 15.73-17.01 24.89-3.29 6.86-5.64 14.19-6.86 21.71-.93 4.85-1.3 9.81-1.17 14.75.13 13.66 4.44 27.08 11.29 38.82 5.92 10.22 13.63 19.33 22.36 27.26 4.85 4.36 10.24 8.09 14.95 12.6 2.26 2.19 4.49 4.42 6.43 6.91 2.62 3.31 4.89 6.99 5.99 11.1.9 3.02.66 6.2.69 9.31.02 4.1-.04 8.2.03 12.3.14 3.54-.02 7.09.11 10.63.08 2.38.02 4.76.05 7.14.16 5.77.06 11.53.15 17.3.11 2.91.02 5.82.13 8.74.03 1.63.13 3.28-.03 4.91-.91.12-1.82.18-2.73.16-10.99 0-21.88-2.63-31.95-6.93-6-2.7-11.81-5.89-17.09-9.83-5.75-4.19-11.09-8.96-15.79-14.31-6.53-7.24-11.98-15.39-16.62-23.95-1.07-2.03-2.24-4.02-3.18-6.12-1.16-2.64-2.62-5.14-3.67-7.82-4.05-9.68-6.57-19.94-8.08-30.31-.49-4.44-1.09-8.88-1.2-13.35-.7-15.73.84-31.55 4.67-46.82 2.12-8.15 4.77-16.18 8.31-23.83 6.32-14.2 15.34-27.18 26.3-38.19 6.28-6.2 13.13-11.84 20.53-16.67zm175.37-20.12c2.74.74 5.41 1.74 8.09 2.68 6.36 2.33 12.68 4.84 18.71 7.96 13.11 6.44 25.31 14.81 35.82 24.97 10.2 9.95 18.74 21.6 25.14 34.34 1.28 2.75 2.64 5.46 3.81 8.26 6.31 15.1 10 31.26 11.23 47.57.41 4.54.44 9.09.45 13.64.07 11.64-1.49 23.25-4.3 34.53-1.97 7.27-4.35 14.49-7.86 21.18-3.18 6.64-6.68 13.16-10.84 19.24-6.94 10.47-15.6 19.87-25.82 27.22-10.48 7.64-22.64 13.02-35.4 15.38-3.51.69-7.08 1.08-10.66 1.21-1.85.06-3.72.16-5.56-.1-.28-2.15 0-4.31-.01-6.46-.03-3.73.14-7.45.1-11.17.19-7.02.02-14.05.21-21.07.03-2.38-.03-4.76.03-7.14.17-5.07-.04-10.14.14-15.21.1-2.99-.24-6.04.51-8.96.66-2.5 1.78-4.86 3.09-7.08 4.46-7.31 11.06-12.96 17.68-18.26 5.38-4.18 10.47-8.77 15.02-13.84 7.68-8.37 14.17-17.88 18.78-28.27 2.5-5.93 4.52-12.1 5.55-18.46.86-4.37 1.06-8.83 1.01-13.27-.02-7.85-1.4-15.65-3.64-23.17-1.75-5.73-4.27-11.18-7.09-16.45-3.87-6.93-8.65-13.31-13.96-19.2-9.94-10.85-21.75-19.94-34.6-27.1-1.85-1.02-3.84-1.82-5.63-2.97zm-100.8 58.45c.98-1.18 1.99-2.33 3.12-3.38-.61.93-1.27 1.81-1.95 2.68-3.1 3.88-5.54 8.31-7.03 13.06-.87 3.27-1.68 6.6-1.73 10-.07 2.52-.08 5.07.32 7.57 1.13 7.63 4.33 14.85 8.77 21.12 2 2.7 4.25 5.27 6.92 7.33 1.62 1.27 3.53 2.09 5.34 3.05 3.11 1.68 6.32 3.23 9.07 5.48 2.67 2.09 4.55 5.33 4.4 8.79-.01 73.67 0 147.34-.01 221.02 0 1.35-.08 2.7.04 4.04.13 1.48.82 2.83 1.47 4.15.86 1.66 1.78 3.34 3.18 4.62.85.77 1.97 1.4 3.15 1.24 1.5-.2 2.66-1.35 3.45-2.57.96-1.51 1.68-3.16 2.28-4.85.76-2.13.44-4.42.54-6.63.14-4.03-.02-8.06.14-12.09.03-5.89.03-11.77.06-17.66.14-3.62.03-7.24.11-10.86.15-4.03-.02-8.06.14-12.09.03-5.99.03-11.98.07-17.97.14-3.62.02-7.24.11-10.86.14-3.93-.02-7.86.14-11.78.03-5.99.03-11.98.06-17.97.16-3.94-.01-7.88.19-11.82.29 1.44.13 2.92.22 4.38.19 3.61.42 7.23.76 10.84.32 3.44.44 6.89.86 10.32.37 3.1.51 6.22.95 9.31.57 4.09.87 8.21 1.54 12.29 1.46 9.04 2.83 18.11 5.09 26.99 1.13 4.82 2.4 9.61 4 14.3 2.54 7.9 5.72 15.67 10.31 22.62 1.73 2.64 3.87 4.98 6.1 7.21.27.25.55.51.88.71.6.25 1.31-.07 1.7-.57.71-.88 1.17-1.94 1.7-2.93 4.05-7.8 8.18-15.56 12.34-23.31.7-1.31 1.44-2.62 2.56-3.61 1.75-1.57 3.84-2.69 5.98-3.63 2.88-1.22 5.9-2.19 9.03-2.42 6.58-.62 13.11.75 19.56 1.85 3.69.58 7.4 1.17 11.13 1.41 3.74.1 7.48.05 11.21-.28 8.55-.92 16.99-2.96 24.94-6.25 5.3-2.24 10.46-4.83 15.31-7.93 11.46-7.21 21.46-16.57 30.04-27.01 1.17-1.42 2.25-2.9 3.46-4.28-1.2 3.24-2.67 6.37-4.16 9.48-1.25 2.9-2.84 5.61-4.27 8.42-5.16 9.63-11.02 18.91-17.75 27.52-4.03 5.21-8.53 10.05-13.33 14.57-6.64 6.05-14.07 11.37-22.43 14.76-8.21 3.37-17.31 4.63-26.09 3.29-3.56-.58-7.01-1.69-10.41-2.88-2.79-.97-5.39-2.38-8.03-3.69-3.43-1.71-6.64-3.81-9.71-6.08 2.71 3.06 5.69 5.86 8.7 8.61 4.27 3.76 8.74 7.31 13.63 10.23 3.98 2.45 8.29 4.4 12.84 5.51 1.46.37 2.96.46 4.45.6-1.25 1.1-2.63 2.04-3.99 2.98-9.61 6.54-20.01 11.86-30.69 16.43-20.86 8.7-43.17 13.97-65.74 15.34-4.66.24-9.32.36-13.98.36-4.98-.11-9.97-.13-14.92-.65-11.2-.76-22.29-2.73-33.17-5.43-10.35-2.71-20.55-6.12-30.3-10.55-8.71-3.86-17.12-8.42-24.99-13.79-1.83-1.31-3.74-2.53-5.37-4.08 6.6-1.19 13.03-3.39 18.99-6.48 5.74-2.86 10.99-6.66 15.63-11.07 2.24-2.19 4.29-4.59 6.19-7.09-3.43 2.13-6.93 4.15-10.62 5.78-4.41 2.16-9.07 3.77-13.81 5.02-5.73 1.52-11.74 1.73-17.61 1.14-8.13-.95-15.86-4.27-22.51-8.98-4.32-2.94-8.22-6.43-11.96-10.06-9.93-10.16-18.2-21.81-25.66-33.86-3.94-6.27-7.53-12.75-11.12-19.22-1.05-2.04-2.15-4.05-3.18-6.1 2.85 2.92 5.57 5.97 8.43 8.88 8.99 8.97 18.56 17.44 29.16 24.48 7.55 4.9 15.67 9.23 24.56 11.03 3.11.73 6.32.47 9.47.81 2.77.28 5.56.2 8.34.3 5.05.06 10.11.04 15.16-.16 3.65-.16 7.27-.66 10.89-1.09 2.07-.25 4.11-.71 6.14-1.2 3.88-.95 8.11-.96 11.83.61 4.76 1.85 8.44 5.64 11.38 9.71 2.16 3.02 4.06 6.22 5.66 9.58 1.16 2.43 2.46 4.79 3.55 7.26 1 2.24 2.15 4.42 3.42 6.52.67 1.02 1.4 2.15 2.62 2.55 1.06-.75 1.71-1.91 2.28-3.03 2.1-4.16 3.42-8.65 4.89-13.05 2.02-6.59 3.78-13.27 5.19-20.02 2.21-9.25 3.25-18.72 4.54-28.13.56-3.98.83-7.99 1.31-11.97.87-10.64 1.9-21.27 2.24-31.94.08-1.86.24-3.71.25-5.57.01-4.35.25-8.69.22-13.03-.01-2.38-.01-4.76 0-7.13.05-5.07-.2-10.14-.22-15.21-.2-6.61-.71-13.2-1.29-19.78-.73-5.88-1.55-11.78-3.12-17.51-2.05-7.75-5.59-15.03-9.8-21.82-3.16-5.07-6.79-9.88-11.09-14.03-3.88-3.86-8.58-7.08-13.94-8.45-1.5-.41-3.06-.45-4.59-.64.07-2.99.7-5.93 1.26-8.85 1.59-7.71 3.8-15.3 6.76-22.6 1.52-4.03 3.41-7.9 5.39-11.72 3.45-6.56 7.62-12.79 12.46-18.46zm31.27 1.7c.35-.06.71-.12 1.07-.19.19 1.79.09 3.58.1 5.37v38.13c-.01 1.74.13 3.49-.15 5.22-.36-.03-.71-.05-1.06-.05-.95-3.75-1.72-7.55-2.62-11.31-.38-1.53-.58-3.09-1.07-4.59-1.7-.24-3.43-.17-5.15-.2-5.06-.01-10.13 0-15.19-.01-1.66-.01-3.32.09-4.98-.03-.03-.39-.26-.91.16-1.18 1.28-.65 2.72-.88 4.06-1.35 3.43-1.14 6.88-2.16 10.31-3.31 1.39-.48 2.9-.72 4.16-1.54.04-.56.02-1.13-.05-1.68-1.23-.55-2.53-.87-3.81-1.28-3.13-1.03-6.29-1.96-9.41-3.02-1.79-.62-3.67-1-5.41-1.79-.03-.37-.07-.73-.11-1.09 5.09-.19 10.2.06 15.3-.12 3.36-.13 6.73.08 10.09-.07.12-.39.26-.77.37-1.16 1.08-4.94 2.33-9.83 3.39-14.75zm5.97-.2c.36.05.72.12 1.08.2.98 3.85 1.73 7.76 2.71 11.61.36 1.42.56 2.88 1.03 4.27 2.53.18 5.07-.01 7.61.05 5.16.12 10.33.12 15.49.07.76-.01 1.52.03 2.28.08-.04.36-.07.72-.1 1.08-1.82.83-3.78 1.25-5.67 1.89-3.73 1.23-7.48 2.39-11.22 3.57-.57.17-1.12.42-1.67.64-.15.55-.18 1.12-.12 1.69.87.48 1.82.81 2.77 1.09 4.88 1.52 9.73 3.14 14.63 4.6.38.13.78.27 1.13.49.4.27.23.79.15 1.18-1.66.13-3.31.03-4.97.04-5.17.01-10.33-.01-15.5.01-1.61.03-3.22-.02-4.82.21-.52 1.67-.72 3.42-1.17 5.11-.94 3.57-1.52 7.24-2.54 10.78-.36.01-.71.02-1.06.06-.29-1.73-.15-3.48-.15-5.22v-38.13c.02-1.78-.08-3.58.11-5.37zM65.05 168.33c1.12-2.15 2.08-4.4 3.37-6.46-1.82 7.56-2.91 15.27-3.62 23-.8 7.71-.85 15.49-.54 23.23 1.05 19.94 5.54 39.83 14.23 57.88 2.99 5.99 6.35 11.83 10.5 17.11 6.12 7.47 12.53 14.76 19.84 21.09 4.8 4.1 9.99 7.78 15.54 10.8 3.27 1.65 6.51 3.39 9.94 4.68 5.01 2.03 10.19 3.61 15.42 4.94 3.83.96 7.78 1.41 11.52 2.71 5 1.57 9.47 4.61 13.03 8.43 4.93 5.23 8.09 11.87 10.2 18.67.99 2.9 1.59 5.91 2.17 8.92.15.75.22 1.52.16 2.29-6.5 2.78-13.26 5.06-20.26 6.18-4.11.78-8.29.99-12.46 1.08-10.25.24-20.47-1.76-30.12-5.12-3.74-1.42-7.49-2.85-11.03-4.72-8.06-3.84-15.64-8.7-22.46-14.46-2.92-2.55-5.83-5.13-8.4-8.03-9.16-9.83-16.3-21.41-21.79-33.65-2.39-5.55-4.61-11.18-6.37-16.96-1.17-3.94-2.36-7.89-3.26-11.91-.75-2.94-1.22-5.95-1.87-8.92-.46-2.14-.69-4.32-1.03-6.48-.85-5.43-1.28-10.93-1.33-16.43.11-6.18.25-12.37 1.07-18.5.4-2.86.67-5.74 1.15-8.6.98-5.7 2.14-11.37 3.71-16.93 3.09-11.65 7.48-22.95 12.69-33.84zm363.73-6.44c1.1 1.66 1.91 3.48 2.78 5.26 2.1 4.45 4.24 8.9 6.02 13.49 7.61 18.76 12.3 38.79 13.04 59.05.02 1.76.07 3.52.11 5.29.13 9.57-1.27 19.09-3.18 28.45-.73 3.59-1.54 7.17-2.58 10.69-4.04 14.72-10 29-18.41 41.78-8.21 12.57-19.01 23.55-31.84 31.41-5.73 3.59-11.79 6.64-18.05 9.19-5.78 2.19-11.71 4.03-17.8 5.11-6.4 1.05-12.91 1.52-19.4 1.23-7.92-.48-15.78-2.07-23.21-4.85-1.94-.8-3.94-1.46-5.84-2.33-.21-1.51.25-2.99.53-4.46 1.16-5.74 3.03-11.36 5.7-16.58 2.37-4.51 5.52-8.65 9.46-11.9 2.43-2.05 5.24-3.61 8.16-4.83 3.58-1.5 7.47-1.97 11.24-2.83 7.23-1.71 14.37-3.93 21.15-7 10.35-4.65 19.71-11.38 27.65-19.46 1.59-1.61 3.23-3.18 4.74-4.87 3.37-3.76 6.71-7.57 9.85-11.53 7.48-10.07 12.82-21.59 16.71-33.48 1.58-5.3 3.21-10.6 4.21-16.05.63-2.87 1.04-5.78 1.52-8.68.87-6.09 1.59-12.22 1.68-18.38.12-6.65.14-13.32-.53-19.94-.73-7.99-1.87-15.96-3.71-23.78z"],opencart:[640,512,[],"f23d","M423.3 440.7c0 25.3-20.3 45.6-45.6 45.6s-45.8-20.3-45.8-45.6 20.6-45.8 45.8-45.8c25.4 0 45.6 20.5 45.6 45.8zm-253.9-45.8c-25.3 0-45.6 20.6-45.6 45.8s20.3 45.6 45.6 45.6 45.8-20.3 45.8-45.6-20.5-45.8-45.8-45.8zm291.7-270C158.9 124.9 81.9 112.1 0 25.7c34.4 51.7 53.3 148.9 373.1 144.2 333.3-5 130 86.1 70.8 188.9 186.7-166.7 319.4-233.9 17.2-233.9z"],openid:[448,512,[],"f19b","M271.5 432l-68 32C88.5 453.7 0 392.5 0 318.2c0-71.5 82.5-131 191.7-144.3v43c-71.5 12.5-124 53-124 101.3 0 51 58.5 93.3 135.7 103v-340l68-33.2v384zM448 291l-131.3-28.5 36.8-20.7c-19.5-11.5-43.5-20-70-24.8v-43c46.2 5.5 87.7 19.5 120.3 39.3l35-19.8L448 291z"],opera:[496,512,[],"f26a","M313.9 32.7c-170.2 0-252.6 223.8-147.5 355.1 36.5 45.4 88.6 75.6 147.5 75.6 36.3 0 70.3-11.1 99.4-30.4-43.8 39.2-101.9 63-165.3 63-3.9 0-8 0-11.9-.3C104.6 489.6 0 381.1 0 248 0 111 111 0 248 0h.8c63.1.3 120.7 24.1 164.4 63.1-29-19.4-63.1-30.4-99.3-30.4zm101.8 397.7c-40.9 24.7-90.7 23.6-132-5.8 56.2-20.5 97.7-91.6 97.7-176.6 0-84.7-41.2-155.8-97.4-176.6 41.8-29.2 91.2-30.3 132.9-5 105.9 98.7 105.5 265.7-1.2 364z"],"optin-monster":[576,512,[],"f23c","M572.6 421.4c5.6-9.5 4.7-15.2-5.4-11.6-3-4.9-7-9.5-11.1-13.8 2.9-9.7-.7-14.2-10.8-9.2-4.6-3.2-10.3-6.5-15.9-9.2 0-15.1-11.6-11.6-17.6-5.7-10.4-1.5-18.7-.3-26.8 5.7.3-6.5.3-13 .3-19.7 12.6 0 40.2-11 45.9-36.2 1.4-6.8 1.6-13.8-.3-21.9-3-13.5-14.3-21.3-25.1-25.7-.8-5.9-7.6-14.3-14.9-15.9s-12.4 4.9-14.1 10.3c-8.5 0-19.2 2.8-21.1 8.4-5.4-.5-11.1-1.4-16.8-1.9 2.7-1.9 5.4-3.5 8.4-4.6 5.4-9.2 14.6-11.4 25.7-11.6V256c19.5-.5 43-5.9 53.8-18.1 12.7-13.8 14.6-37.3 12.4-55.1-2.4-17.3-9.7-37.6-24.6-48.1-8.4-5.9-21.6-.8-22.7 9.5-2.2 19.6 1.2 30-38.6 25.1-10.3-23.8-24.6-44.6-42.7-60C341 49.6 242.9 55.5 166.4 71.7c19.7 4.6 41.1 8.6 59.7 16.5-26.2 2.4-52.7 11.3-76.2 23.2-32.8 17-44 29.9-56.7 42.4 14.9-2.2 28.9-5.1 43.8-3.8-9.7 5.4-18.4 12.2-26.5 20-25.8.9-23.8-5.3-26.2-25.9-1.1-10.5-14.3-15.4-22.7-9.7-28.1 19.9-33.5 79.9-12.2 103.5 10.8 12.2 35.1 17.3 54.9 17.8-.3 1.1-.3 1.9-.3 2.7 10.8.5 19.5 2.7 24.6 11.6 3 1.1 5.7 2.7 8.1 4.6-5.4.5-11.1 1.4-16.5 1.9-3.3-6.6-13.7-8.1-21.1-8.1-1.6-5.7-6.5-12.2-14.1-10.3-6.8 1.9-14.1 10-14.9 15.9-22.5 9.5-30.1 26.8-25.1 47.6 5.3 24.8 33 36.2 45.9 36.2v19.7c-6.6-5-14.3-7.5-26.8-5.7-5.5-5.5-17.3-10.1-17.3 5.7-5.9 2.7-11.4 5.9-15.9 9.2-9.8-4.9-13.6-1.7-11.1 9.2-4.1 4.3-7.8 8.6-11.1 13.8-10.2-3.7-11 2.2-5.4 11.6-1.1 3.5-1.6 7-1.9 10.8-.5 31.6 44.6 64 73.5 65.1 17.3.5 34.6-8.4 43-23.5 113.2 4.9 226.7 4.1 340.2 0 8.1 15.1 25.4 24.3 42.7 23.5 29.2-1.1 74.3-33.5 73.5-65.1.2-3.7-.7-7.2-1.7-10.7zm-73.8-254c1.1-3 2.4-8.4 2.4-14.6 0-5.9 6.8-8.1 14.1-.8 11.1 11.6 14.9 40.5 13.8 51.1-4.1-13.6-13-29-30.3-35.7zm-4.6 6.7c19.5 6.2 28.6 27.6 29.7 48.9-1.1 2.7-3 5.4-4.9 7.6-5.7 5.9-15.4 10-26.2 12.2 4.3-21.3.3-47.3-12.7-63 4.9-.8 10.9-2.4 14.1-5.7zm-24.1 6.8c13.8 11.9 20 39.2 14.1 63.5-4.1.5-8.1.8-11.6.8-1.9-21.9-6.8-44-14.3-64.6 3.7.3 8.1.3 11.8.3zM47.5 203c-1.1-10.5 2.4-39.5 13.8-51.1 7-7.3 14.1-5.1 14.1.8 0 6.2 1.4 11.6 2.4 14.6-17.3 6.8-26.2 22.2-30.3 35.7zm9.7 27.6c-1.9-2.2-3.5-4.9-4.9-7.6 1.4-21.3 10.3-42.7 29.7-48.9 3.2 3.2 9.2 4.9 14.1 5.7-13 15.7-17 41.6-12.7 63-10.8-2.2-20.5-6-26.2-12.2zm47.9 14.6c-4.1 0-8.1-.3-12.7-.8-4.6-18.6-1.9-38.9 5.4-53v.3l12.2-5.1c4.9-1.9 9.7-3.8 14.9-4.9-10.7 19.7-17.4 41.3-19.8 63.5zm184-162.7c41.9 0 76.2 34 76.2 75.9 0 42.2-34.3 76.2-76.2 76.2s-76.2-34-76.2-76.2c0-41.8 34.3-75.9 76.2-75.9zm115.6 174.3c-.3 17.8-7 48.9-23 57-13.2 6.6-6.5-7.5-16.5-58.1 13.3.3 26.6.3 39.5 1.1zm-54-1.6c.8 4.9 3.8 40.3-1.6 41.9-11.6 3.5-40 4.3-51.1-1.1-4.1-3-4.6-35.9-4.3-41.1v.3c18.9-.3 38.1-.3 57 0zM278.3 309c-13 3.5-41.6 4.1-54.6-1.6-6.5-2.7-3.8-42.4-1.9-51.6 19.2-.5 38.4-.5 57.8-.8v.3c1.1 8.3 3.3 51.2-1.3 53.7zm-106.5-51.1c12.2-.8 24.6-1.4 36.8-1.6-2.4 15.4-3 43.5-4.9 52.2-1.1 6.8-4.3 6.8-9.7 4.3-21.9-9.8-27.6-35.2-22.2-54.9zm-35.4 31.3c7.8-1.1 15.7-1.9 23.5-2.7 1.6 6.2 3.8 11.9 7 17.6 10 17 44 35.7 45.1 7 6.2 14.9 40.8 12.2 54.9 10.8 15.7-1.4 23.8-1.4 26.8-14.3 12.4 4.3 30.8 4.1 44 3 11.3-.8 20.8-.5 24.6-8.9 1.1 5.1 1.9 11.6 4.6 16.8 10.8 21.3 37.3 1.4 46.8-31.6 8.6.8 17.6 1.9 26.5 2.7-.4 1.3-3.8 7.3 7.3 11.6-47.6 47-95.7 87.8-163.2 107-63.2-20.8-112.1-59.5-155.9-106.5 9.6-3.4 10.4-8.8 8-12.5zm-21.6 172.5c-3.8 17.8-21.9 29.7-39.7 28.9-19.2-.8-46.5-17-59.2-36.5-2.7-31.1 43.8-61.3 66.2-54.6 14.9 4.3 27.8 30.8 33.5 54 0 3-.3 5.7-.8 8.2zm-8.7-66c-.5-13.5-.5-27-.3-40.5h.3c2.7-1.6 5.7-3.8 7.8-6.5 6.5-1.6 13-5.1 15.1-9.2 3.3-7.1-7-7.5-5.4-12.4 2.7-1.1 5.7-2.2 7.8-3.5 29.2 29.2 58.6 56.5 97.3 77-36.8 11.3-72.4 27.6-105.9 47-1.2-18.6-7.7-35.9-16.7-51.9zm337.6 64.6c-103 3.5-206.2 4.1-309.4 0 0 .3 0 .3-.3.3v-.3h.3c35.1-21.6 72.2-39.2 112.4-50.8 11.6 5.1 23 9.5 34.9 13.2 2.2.8 2.2.8 4.3 0 14.3-4.1 28.4-9.2 42.2-15.4 41.5 11.7 78.8 31.7 115.6 53zm10.5-12.4c-35.9-19.5-73-35.9-111.9-47.6 38.1-20 71.9-47.3 103.5-76.7 2.2 1.4 4.6 2.4 7.6 3.2 0 .8.3 1.9.5 2.4-4.6 2.7-7.8 6.2-5.9 10.3 2.2 3.8 8.6 7.6 15.1 8.9 2.4 2.7 5.1 5.1 8.1 6.8 0 13.8-.3 27.6-.8 41.3l.3-.3c-9.3 15.9-15.5 37-16.5 51.7zm105.9 6.2c-12.7 19.5-40 35.7-59.2 36.5-19.3.9-40.5-13.2-40.5-37 5.7-23.2 18.9-49.7 33.5-54 22.7-6.9 69.2 23.4 66.2 54.5zM372.9 75.2c-3.8-72.1-100.8-79.7-126-23.5 44.6-24.3 90.3-15.7 126 23.5zM74.8 407.1c-15.7 1.6-49.5 25.4-49.5 43.2 0 11.6 15.7 19.5 32.2 14.9 12.2-3.2 31.1-17.6 35.9-27.3 6-11.6-3.7-32.7-18.6-30.8zm215.9-176.2c28.6 0 51.9-21.6 51.9-48.4 0-36.1-40.5-58.1-72.2-44.3 9.5 3 16.5 11.6 16.5 21.6 0 23.3-33.3 32-46.5 11.3-7.3 34.1 19.4 59.8 50.3 59.8zM68 474.1c.5 6.5 12.2 12.7 21.6 9.5 6.8-2.7 14.6-10.5 17.3-16.2 3-7-1.1-20-9.7-18.4-8.9 1.6-29.7 16.7-29.2 25.1zm433.2-67c-14.9-1.9-24.6 19.2-18.9 30.8 4.9 9.7 24.1 24.1 36.2 27.3 16.5 4.6 32.2-3.2 32.2-14.9 0-17.8-33.8-41.6-49.5-43.2zM478.8 449c-8.4-1.6-12.4 11.3-9.5 18.4 2.4 5.7 10.3 13.5 17.3 16.2 9.2 3.2 21.1-3 21.3-9.5.9-8.4-20.2-23.5-29.1-25.1z"],orcid:[512,512,[],"f8d2","M294.75 188.19h-45.92V342h47.47c67.62 0 83.12-51.34 83.12-76.91 0-41.64-26.54-76.9-84.67-76.9zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm-80.79 360.76h-29.84v-207.5h29.84zm-14.92-231.14a19.57 19.57 0 1 1 19.57-19.57 19.64 19.64 0 0 1-19.57 19.57zM300 369h-81V161.26h80.6c76.73 0 110.44 54.83 110.44 103.85C410 318.39 368.38 369 300 369z"],osi:[512,512,[],"f41a","M8 266.44C10.3 130.64 105.4 34 221.8 18.34c138.8-18.6 255.6 75.8 278 201.1 21.3 118.8-44 230-151.6 274-9.3 3.8-14.4 1.7-18-7.7q-26.7-69.45-53.4-139c-3.1-8.1-1-13.2 7-16.8 24.2-11 39.3-29.4 43.3-55.8a71.47 71.47 0 0 0-64.5-82.2c-39-3.4-71.8 23.7-77.5 59.7-5.2 33 11.1 63.7 41.9 77.7 9.6 4.4 11.5 8.6 7.8 18.4q-26.85 69.9-53.7 139.9c-2.6 6.9-8.3 9.3-15.5 6.5-52.6-20.3-101.4-61-130.8-119-24.9-49.2-25.2-87.7-26.8-108.7zm20.9-1.9c.4 6.6.6 14.3 1.3 22.1 6.3 71.9 49.6 143.5 131 183.1 3.2 1.5 4.4.8 5.6-2.3q22.35-58.65 45-117.3c1.3-3.3.6-4.8-2.4-6.7-31.6-19.9-47.3-48.5-45.6-86 1-21.6 9.3-40.5 23.8-56.3 30-32.7 77-39.8 115.5-17.6a91.64 91.64 0 0 1 45.2 90.4c-3.6 30.6-19.3 53.9-45.7 69.8-2.7 1.6-3.5 2.9-2.3 6q22.8 58.8 45.2 117.7c1.2 3.1 2.4 3.8 5.6 2.3 35.5-16.6 65.2-40.3 88.1-72 34.8-48.2 49.1-101.9 42.3-161-13.7-117.5-119.4-214.8-255.5-198-106.1 13-195.3 102.5-197.1 225.8z"],page4:[496,512,[],"f3d7","M248 504C111 504 0 393 0 256S111 8 248 8c20.9 0 41.3 2.6 60.7 7.5L42.3 392H248v112zm0-143.6V146.8L98.6 360.4H248zm96 31.6v92.7c45.7-19.2 84.5-51.7 111.4-92.7H344zm57.4-138.2l-21.2 8.4 21.2 8.3v-16.7zm-20.3 54.5c-6.7 0-8 6.3-8 12.9v7.7h16.2v-10c0-5.9-2.3-10.6-8.2-10.6zM496 256c0 37.3-8.2 72.7-23 104.4H344V27.3C433.3 64.8 496 153.1 496 256zM360.4 143.6h68.2V96h-13.9v32.6h-13.9V99h-13.9v29.6h-12.7V96h-13.9v47.6zm68.1 185.3H402v-11c0-15.4-5.6-25.2-20.9-25.2-15.4 0-20.7 10.6-20.7 25.9v25.3h68.2v-15zm0-103l-68.2 29.7V268l68.2 29.5v-16.6l-14.4-5.7v-26.5l14.4-5.9v-16.9zm-4.8-68.5h-35.6V184H402v-12.2h11c8.6 15.8 1.3 35.3-18.6 35.3-22.5 0-28.3-25.3-15.5-37.7l-11.6-10.6c-16.2 17.5-12.2 63.9 27.1 63.9 34 0 44.7-35.9 29.3-65.3z"],pagelines:[384,512,[],"f18c","M384 312.7c-55.1 136.7-187.1 54-187.1 54-40.5 81.8-107.4 134.4-184.6 134.7-16.1 0-16.6-24.4 0-24.4 64.4-.3 120.5-42.7 157.2-110.1-41.1 15.9-118.6 27.9-161.6-82.2 109-44.9 159.1 11.2 178.3 45.5 9.9-24.4 17-50.9 21.6-79.7 0 0-139.7 21.9-149.5-98.1 119.1-47.9 152.6 76.7 152.6 76.7 1.6-16.7 3.3-52.6 3.3-53.4 0 0-106.3-73.7-38.1-165.2 124.6 43 61.4 162.4 61.4 162.4.5 1.6.5 23.8 0 33.4 0 0 45.2-89 136.4-57.5-4.2 134-141.9 106.4-141.9 106.4-4.4 27.4-11.2 53.4-20 77.5 0 0 83-91.8 172-20z"],palfed:[576,512,[],"f3d8","M384.9 193.9c0-47.4-55.2-44.2-95.4-29.8-1.3 39.4-2.5 80.7-3 119.8.7 2.8 2.6 6.2 15.1 6.2 36.8 0 83.4-42.8 83.3-96.2zm-194.5 72.2c.2 0 6.5-2.7 11.2-2.7 26.6 0 20.7 44.1-14.4 44.1-21.5 0-37.1-18.1-37.1-43 0-42 42.9-95.6 100.7-126.5 1-12.4 3-22 10.5-28.2 11.2-9 26.6-3.5 29.5 11.1 72.2-22.2 135.2 1 135.2 72 0 77.9-79.3 152.6-140.1 138.2-.1 39.4.9 74.4 2.7 100v.2c.2 3.4.6 12.5-5.3 19.1-9.6 10.6-33.4 10-36.4-22.3-4.1-44.4.2-206.1 1.4-242.5-21.5 15-58.5 50.3-58.5 75.9.2 2.5.4 4 .6 4.6zM8 181.1s-.1 37.4 38.4 37.4h30l22.4 217.2s0 44.3 44.7 44.3h288.9s44.7-.4 44.7-44.3l22.4-217.2h30s38.4 1.2 38.4-37.4c0 0 .1-37.4-38.4-37.4h-30.1c-7.3-25.6-30.2-74.3-119.4-74.3h-28V50.3s-2.7-18.4-21.1-18.4h-85.8s-21.1 0-21.1 18.4v19.1h-28.1s-105 4.2-120.5 74.3h-29S8 142.5 8 181.1z"],patreon:[512,512,[],"f3d9","M512 194.8c0 101.3-82.4 183.8-183.8 183.8-101.7 0-184.4-82.4-184.4-183.8 0-101.6 82.7-184.3 184.4-184.3C429.6 10.5 512 93.2 512 194.8zM0 501.5h90v-491H0v491z"],paypal:[384,512,[],"f1ed","M111.4 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.3c-7.6 0-13.1-6.6-12.1-13.9L58.8 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2zM357.1 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6z"],"penny-arcade":[640,512,[],"f704","M421.91 164.27c-4.49 19.45-1.4 6.06-15.1 65.29l39.73-10.61c-22.34-49.61-17.29-38.41-24.63-54.68zm-206.09 51.11c-20.19 5.4-11.31 3.03-39.63 10.58l4.46 46.19c28.17-7.59 20.62-5.57 34.82-9.34 42.3-9.79 32.85-56.42.35-47.43zm326.16-26.19l-45.47-99.2c-5.69-12.37-19.46-18.84-32.62-15.33-70.27 18.75-38.72 10.32-135.59 36.23a27.618 27.618 0 0 0-18.89 17.41C144.26 113.27 0 153.75 0 226.67c0 33.5 30.67 67.11 80.9 95.37l1.74 17.88a27.891 27.891 0 0 0-17.77 28.67l4.3 44.48c1.39 14.31 13.43 25.21 27.8 25.2 5.18-.01-3.01 1.78 122.53-31.76 12.57-3.37 21.12-15.02 20.58-28.02 216.59 45.5 401.99-5.98 399.89-84.83.01-28.15-22.19-66.56-97.99-104.47zM255.14 298.3l-21.91 5.88-48.44 12.91 2.46 23.55 20.53-5.51 4.51 44.51-115.31 30.78-4.3-44.52 20.02-5.35-11.11-114.64-20.12 5.39-4.35-44.5c178.15-47.54 170.18-46.42 186.22-46.65 56.66-1.13 64.15 71.84 42.55 104.43a86.7 86.7 0 0 1-50.75 33.72zm199.18 16.62l-3.89-39.49 14.9-3.98-6.61-14.68-57.76 15.42-4.1 17.54 19.2-5.12 4.05 39.54-112.85 30.07-4.46-44.43 20.99-5.59 33.08-126.47-17.15 4.56-4.2-44.48c93.36-24.99 65.01-17.41 135.59-36.24l66.67 145.47 20.79-5.56 4.3 44.48-108.55 28.96z"],periscope:[448,512,[],"f3da","M370 63.6C331.4 22.6 280.5 0 226.6 0 111.9 0 18.5 96.2 18.5 214.4c0 75.1 57.8 159.8 82.7 192.7C137.8 455.5 192.6 512 226.6 512c41.6 0 112.9-94.2 120.9-105 24.6-33.1 82-118.3 82-192.6 0-56.5-21.1-110.1-59.5-150.8zM226.6 493.9c-42.5 0-190-167.3-190-279.4 0-107.4 83.9-196.3 190-196.3 100.8 0 184.7 89 184.7 196.3.1 112.1-147.4 279.4-184.7 279.4zM338 206.8c0 59.1-51.1 109.7-110.8 109.7-100.6 0-150.7-108.2-92.9-181.8v.4c0 24.5 20.1 44.4 44.8 44.4 24.7 0 44.8-19.9 44.8-44.4 0-18.2-11.1-33.8-26.9-40.7 76.6-19.2 141 39.3 141 112.4z"],phabricator:[496,512,[],"f3db","M323 262.1l-.1-13s21.7-19.8 21.1-21.2l-9.5-20c-.6-1.4-29.5-.5-29.5-.5l-9.4-9.3s.2-28.5-1.2-29.1l-20.1-9.2c-1.4-.6-20.7 21-20.7 21l-13.1-.2s-20.5-21.4-21.9-20.8l-20 8.3c-1.4.5.2 28.9.2 28.9l-9.1 9.1s-29.2-.9-29.7.4l-8.1 19.8c-.6 1.4 21 21 21 21l.1 12.9s-21.7 19.8-21.1 21.2l9.5 20c.6 1.4 29.5.5 29.5.5l9.4 9.3s-.2 31.8 1.2 32.3l20.1 8.3c1.4.6 20.7-23.5 20.7-23.5l13.1.2s20.5 23.8 21.8 23.3l20-7.5c1.4-.6-.2-32.1-.2-32.1l9.1-9.1s29.2.9 29.7-.5l8.1-19.8c.7-1.1-20.9-20.7-20.9-20.7zm-44.9-8.7c.7 17.1-12.8 31.6-30.1 32.4-17.3.8-32.1-12.5-32.8-29.6-.7-17.1 12.8-31.6 30.1-32.3 17.3-.8 32.1 12.5 32.8 29.5zm201.2-37.9l-97-97-.1.1c-75.1-73.3-195.4-72.8-269.8 1.6-50.9 51-27.8 27.9-95.7 95.3-22.3 22.3-22.3 58.7 0 81 69.9 69.4 46.4 46 97.4 97l.1-.1c75.1 73.3 195.4 72.9 269.8-1.6 51-50.9 27.9-27.9 95.3-95.3 22.3-22.3 22.3-58.7 0-81zM140.4 363.8c-59.6-59.5-59.6-156 0-215.5 59.5-59.6 156-59.5 215.6 0 59.5 59.5 59.6 156 0 215.6-59.6 59.5-156 59.4-215.6-.1z"],"phoenix-framework":[640,512,[],"f3dc","M212.9 344.3c3.8-.1 22.8-1.4 25.6-2.2-2.4-2.6-43.6-1-68-49.6-4.3-8.6-7.5-17.6-6.4-27.6 2.9-25.5 32.9-30 52-18.5 36 21.6 63.3 91.3 113.7 97.5 37 4.5 84.6-17 108.2-45.4-.6-.1-.8-.2-1-.1-.4.1-.8.2-1.1.3-33.3 12.1-94.3 9.7-134.7-14.8-37.6-22.8-53.1-58.7-51.8-74.6 1.8-21.3 22.9-23.2 35.9-19.6 14.4 3.9 24.4 17.6 38.9 27.4 15.6 10.4 32.9 13.7 51.3 10.3 14.9-2.7 34.4-12.3 36.5-14.5-1.1-.1-1.8-.1-2.5-.2-6.2-.6-12.4-.8-18.5-1.7C279.8 194.5 262.1 47.4 138.5 37.9 94.2 34.5 39.1 46 2.2 72.9c-.8.6-1.5 1.2-2.2 1.8.1.2.1.3.2.5.8 0 1.6-.1 2.4-.2 6.3-1 12.5-.8 18.7.3 23.8 4.3 47.7 23.1 55.9 76.5 5.3 34.3-.7 50.8 8 86.1 19 77.1 91 107.6 127.7 106.4zM75.3 64.9c-.9-1-.9-1.2-1.3-2 12.1-2.6 24.2-4.1 36.6-4.8-1.1 14.7-22.2 21.3-35.3 6.8zm196.9 350.5c-42.8 1.2-92-26.7-123.5-61.4-4.6-5-16.8-20.2-18.6-23.4l.4-.4c6.6 4.1 25.7 18.6 54.8 27 24.2 7 48.1 6.3 71.6-3.3 22.7-9.3 41-.5 43.1 2.9-18.5 3.8-20.1 4.4-24 7.9-5.1 4.4-4.6 11.7 7 17.2 26.2 12.4 63-2.8 97.2 25.4 2.4 2 8.1 7.8 10.1 10.7-.1.2-.3.3-.4.5-4.8-1.5-16.4-7.5-40.2-9.3-24.7-2-46.3 5.3-77.5 6.2zm174.8-252c16.4-5.2 41.3-13.4 66.5-3.3 16.1 6.5 26.2 18.7 32.1 34.6 3.5 9.4 5.1 19.7 5.1 28.7-.2 0-.4 0-.6.1-.2-.4-.4-.9-.5-1.3-5-22-29.9-43.8-67.6-29.9-50.2 18.6-130.4 9.7-176.9-48-.7-.9-2.4-1.7-1.3-3.2.1-.2 2.1.6 3 1.3 18.1 13.4 38.3 21.9 60.3 26.2 30.5 6.1 54.6 2.9 79.9-5.2zm102.7 117.5c-32.4.2-33.8 50.1-103.6 64.4-18.2 3.7-38.7 4.6-44.9 4.2v-.4c2.8-1.5 14.7-2.6 29.7-16.6 7.9-7.3 15.3-15.1 22.8-22.9 19.5-20.2 41.4-42.2 81.9-39 23.1 1.8 29.3 8.2 36.1 12.7.3.2.4.5.7.9-.5 0-.7.1-.9 0-7-2.7-14.3-3.3-21.8-3.3zm-12.3-24.1c-.1.2-.1.4-.2.6-28.9-4.4-48-7.9-68.5 4-17 9.9-31.4 20.5-62 24.4-27.1 3.4-45.1 2.4-66.1-8-.3-.2-.6-.4-1-.6 0-.2.1-.3.1-.5 24.9 3.8 36.4 5.1 55.5-5.8 22.3-12.9 40.1-26.6 71.3-31 29.6-4.1 51.3 2.5 70.9 16.9zM268.6 97.3c-.6-.6-1.1-1.2-2.1-2.3 7.6 0 29.7-1.2 53.4 8.4 19.7 8 32.2 21 50.2 32.9 11.1 7.3 23.4 9.3 36.4 8.1 4.3-.4 8.5-1.2 12.8-1.7.4-.1.9 0 1.5.3-.6.4-1.2.9-1.8 1.2-8.1 4-16.7 6.3-25.6 7.1-26.1 2.6-50.3-3.7-73.4-15.4-19.3-9.9-36.4-22.9-51.4-38.6zM640 335.7c-3.5 3.1-22.7 11.6-42.7 5.3-12.3-3.9-19.5-14.9-31.6-24.1-10-7.6-20.9-7.9-28.1-8.4.6-.8.9-1.2 1.2-1.4 14.8-9.2 30.5-12.2 47.3-6.5 12.5 4.2 19.2 13.5 30.4 24.2 10.8 10.4 21 9.9 23.1 10.5.1-.1.2 0 .4.4zm-212.5 137c2.2 1.2 1.6 1.5 1.5 2-18.5-1.4-33.9-7.6-46.8-22.2-21.8-24.7-41.7-27.9-48.6-29.7.5-.2.8-.4 1.1-.4 13.1.1 26.1.7 38.9 3.9 25.3 6.4 35 25.4 41.6 35.3 3.2 4.8 7.3 8.3 12.3 11.1z"],"phoenix-squadron":[512,512,[],"f511","M96 63.38C142.49 27.25 201.55 7.31 260.51 8.81c29.58-.38 59.11 5.37 86.91 15.33-24.13-4.63-49-6.34-73.38-2.45C231.17 27 191 48.84 162.21 80.87c5.67-1 10.78-3.67 16-5.86 18.14-7.87 37.49-13.26 57.23-14.83 19.74-2.13 39.64-.43 59.28 1.92-14.42 2.79-29.12 4.57-43 9.59-34.43 11.07-65.27 33.16-86.3 62.63-13.8 19.71-23.63 42.86-24.67 67.13-.35 16.49 5.22 34.81 19.83 44a53.27 53.27 0 0 0 37.52 6.74c15.45-2.46 30.07-8.64 43.6-16.33 11.52-6.82 22.67-14.55 32-24.25 3.79-3.22 2.53-8.45 2.62-12.79-2.12-.34-4.38-1.11-6.3.3a203 203 0 0 1-35.82 15.37c-20 6.17-42.16 8.46-62.1.78 12.79 1.73 26.06.31 37.74-5.44 20.23-9.72 36.81-25.2 54.44-38.77a526.57 526.57 0 0 1 88.9-55.31c25.71-12 52.94-22.78 81.57-24.12-15.63 13.72-32.15 26.52-46.78 41.38-14.51 14-27.46 29.5-40.11 45.18-3.52 4.6-8.95 6.94-13.58 10.16a150.7 150.7 0 0 0-51.89 60.1c-9.33 19.68-14.5 41.85-11.77 63.65 1.94 13.69 8.71 27.59 20.9 34.91 12.9 8 29.05 8.07 43.48 5.1 32.8-7.45 61.43-28.89 81-55.84 20.44-27.52 30.52-62.2 29.16-96.35-.52-7.5-1.57-15-1.66-22.49 8 19.48 14.82 39.71 16.65 60.83 2 14.28.75 28.76-1.62 42.9-1.91 11-5.67 21.51-7.78 32.43a165 165 0 0 0 39.34-81.07 183.64 183.64 0 0 0-14.21-104.64c20.78 32 32.34 69.58 35.71 107.48.49 12.73.49 25.51 0 38.23A243.21 243.21 0 0 1 482 371.34c-26.12 47.34-68 85.63-117.19 108-78.29 36.23-174.68 31.32-248-14.68A248.34 248.34 0 0 1 25.36 366 238.34 238.34 0 0 1 0 273.08v-31.34C3.93 172 40.87 105.82 96 63.38m222 80.33a79.13 79.13 0 0 0 16-4.48c5-1.77 9.24-5.94 10.32-11.22-8.96 4.99-17.98 9.92-26.32 15.7z"],php:[640,512,[],"f457","M320 104.5c171.4 0 303.2 72.2 303.2 151.5S491.3 407.5 320 407.5c-171.4 0-303.2-72.2-303.2-151.5S148.7 104.5 320 104.5m0-16.8C143.3 87.7 0 163 0 256s143.3 168.3 320 168.3S640 349 640 256 496.7 87.7 320 87.7zM218.2 242.5c-7.9 40.5-35.8 36.3-70.1 36.3l13.7-70.6c38 0 63.8-4.1 56.4 34.3zM97.4 350.3h36.7l8.7-44.8c41.1 0 66.6 3 90.2-19.1 26.1-24 32.9-66.7 14.3-88.1-9.7-11.2-25.3-16.7-46.5-16.7h-70.7L97.4 350.3zm185.7-213.6h36.5l-8.7 44.8c31.5 0 60.7-2.3 74.8 10.7 14.8 13.6 7.7 31-8.3 113.1h-37c15.4-79.4 18.3-86 12.7-92-5.4-5.8-17.7-4.6-47.4-4.6l-18.8 96.6h-36.5l32.7-168.6zM505 242.5c-8 41.1-36.7 36.3-70.1 36.3l13.7-70.6c38.2 0 63.8-4.1 56.4 34.3zM384.2 350.3H421l8.7-44.8c43.2 0 67.1 2.5 90.2-19.1 26.1-24 32.9-66.7 14.3-88.1-9.7-11.2-25.3-16.7-46.5-16.7H417l-32.8 168.7z"],"pied-piper":[480,512,[],"f2ae","M455.93,23.2C429.23,30,387.79,51.69,341.35,90.66A206,206,0,0,0,240,64C125.13,64,32,157.12,32,272s93.13,208,208,208,208-93.13,208-208a207.25,207.25,0,0,0-58.75-144.81,155.35,155.35,0,0,0-17,27.4A176.16,176.16,0,0,1,417.1,272c0,97.66-79.44,177.11-177.09,177.11a175.81,175.81,0,0,1-87.63-23.4c82.94-107.33,150.79-37.77,184.31-226.65,5.79-32.62,28-94.26,126.23-160.18C471,33.45,465.35,20.8,455.93,23.2ZM125,406.4A176.66,176.66,0,0,1,62.9,272C62.9,174.34,142.35,94.9,240,94.9a174,174,0,0,1,76.63,17.75C250.64,174.76,189.77,265.52,125,406.4Z"],"pied-piper-alt":[576,512,[],"f1a8","M244 246c-3.2-2-6.3-2.9-10.1-2.9-6.6 0-12.6 3.2-19.3 3.7l1.7 4.9zm135.9 197.9c-19 0-64.1 9.5-79.9 19.8l6.9 45.1c35.7 6.1 70.1 3.6 106-9.8-4.8-10-23.5-55.1-33-55.1zM340.8 177c6.6 2.8 11.5 9.2 22.7 22.1 2-1.4 7.5-5.2 7.5-8.6 0-4.9-11.8-13.2-13.2-23 11.2-5.7 25.2-6 37.6-8.9 68.1-16.4 116.3-52.9 146.8-116.7C548.3 29.3 554 16.1 554.6 2l-2 2.6c-28.4 50-33 63.2-81.3 100-31.9 24.4-69.2 40.2-106.6 54.6l-6.3-.3v-21.8c-19.6 1.6-19.7-14.6-31.6-23-18.7 20.6-31.6 40.8-58.9 51.1-12.7 4.8-19.6 10-25.9 21.8 34.9-16.4 91.2-13.5 98.8-10zM555.5 0l-.6 1.1-.3.9.6-.6zm-59.2 382.1c-33.9-56.9-75.3-118.4-150-115.5l-.3-6c-1.1-13.5 32.8 3.2 35.1-31l-14.4 7.2c-19.8-45.7-8.6-54.3-65.5-54.3-14.7 0-26.7 1.7-41.4 4.6 2.9 18.6 2.2 36.7-10.9 50.3l19.5 5.5c-1.7 3.2-2.9 6.3-2.9 9.8 0 21 42.8 2.9 42.8 33.6 0 18.4-36.8 60.1-54.9 60.1-8 0-53.7-50-53.4-60.1l.3-4.6 52.3-11.5c13-2.6 12.3-22.7-2.9-22.7-3.7 0-43.1 9.2-49.4 10.6-2-5.2-7.5-14.1-13.8-14.1-3.2 0-6.3 3.2-9.5 4-9.2 2.6-31 2.9-21.5 20.1L15.9 298.5c-5.5 1.1-8.9 6.3-8.9 11.8 0 6 5.5 10.9 11.5 10.9 8 0 131.3-28.4 147.4-32.2 2.6 3.2 4.6 6.3 7.8 8.6 20.1 14.4 59.8 85.9 76.4 85.9 24.1 0 58-22.4 71.3-41.9 3.2-4.3 6.9-7.5 12.4-6.9.6 13.8-31.6 34.2-33 43.7-1.4 10.2-1 35.2-.3 41.1 26.7 8.1 52-3.6 77.9-2.9 4.3-21 10.6-41.9 9.8-63.5l-.3-9.5c-1.4-34.2-10.9-38.5-34.8-58.6-1.1-1.1-2.6-2.6-3.7-4 2.2-1.4 1.1-1 4.6-1.7 88.5 0 56.3 183.6 111.5 229.9 33.1-15 72.5-27.9 103.5-47.2-29-25.6-52.6-45.7-72.7-79.9zm-196.2 46.1v27.2l11.8-3.4-2.9-23.8zm-68.7-150.4l24.1 61.2 21-13.8-31.3-50.9zm84.4 154.9l2 12.4c9-1.5 58.4-6.6 58.4-14.1 0-1.4-.6-3.2-.9-4.6-26.8 0-36.9 3.8-59.5 6.3z"],"pied-piper-hat":[640,512,[],"f4e5","M640 24.9c-80.8 53.6-89.4 92.5-96.4 104.4-6.7 12.2-11.7 60.3-23.3 83.6-11.7 23.6-54.2 42.2-66.1 50-11.7 7.8-28.3 38.1-41.9 64.2-108.1-4.4-167.4 38.8-259.2 93.6 29.4-9.7 43.3-16.7 43.3-16.7 94.2-36 139.3-68.3 281.1-49.2 1.1 0 1.9.6 2.8.8 3.9 2.2 5.3 6.9 3.1 10.8l-53.9 95.8c-2.5 4.7-7.8 7.2-13.1 6.1-126.8-23.8-226.9 17.3-318.9 18.6C24.1 488 0 453.4 0 451.8c0-1.1.6-1.7 1.7-1.7 0 0 38.3 0 103.1-15.3C178.4 294.5 244 245.4 315.4 245.4c0 0 71.7 0 90.6 61.9 22.8-39.7 28.3-49.2 28.3-49.2 5.3-9.4 35-77.2 86.4-141.4 51.5-64 90.4-79.9 119.3-91.8z"],"pied-piper-pp":[448,512,[],"f1a7","M205.3 174.6c0 21.1-14.2 38.1-31.7 38.1-7.1 0-12.8-1.2-17.2-3.7v-68c4.4-2.7 10.1-4.2 17.2-4.2 17.5 0 31.7 16.9 31.7 37.8zm52.6 67c-7.1 0-12.8 1.5-17.2 4.2v68c4.4 2.5 10.1 3.7 17.2 3.7 17.4 0 31.7-16.9 31.7-37.8 0-21.1-14.3-38.1-31.7-38.1zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM185 255.1c41 0 74.2-35.6 74.2-79.6 0-44-33.2-79.6-74.2-79.6-12 0-24.1 3.2-34.6 8.8h-45.7V311l51.8-10.1v-50.6c8.6 3.1 18.1 4.8 28.5 4.8zm158.4 25.3c0-44-33.2-79.6-73.9-79.6-3.2 0-6.4.2-9.6.7-3.7 12.5-10.1 23.8-19.2 33.4-13.8 15-32.2 23.8-51.8 24.8V416l51.8-10.1v-50.6c8.6 3.2 18.2 4.7 28.7 4.7 40.8 0 74-35.6 74-79.6z"],"pied-piper-square":[448,512,[],"f91e","M32 419L0 479.2l.8-328C.8 85.3 54 32 120 32h327.2c-93 28.9-189.9 94.2-253.9 168.6C122.7 282 82.6 338 32 419M448 32S305.2 98.8 261.6 199.1c-23.2 53.6-28.9 118.1-71 158.6-28.9 27.8-69.8 38.2-105.3 56.3-23.2 12-66.4 40.5-84.9 66h328.4c66 0 119.3-53.3 119.3-119.2-.1 0-.1-328.8-.1-328.8z"],pinterest:[496,512,[],"f0d2","M496 256c0 137-111 248-248 248-25.6 0-50.2-3.9-73.4-11.1 10.1-16.5 25.2-43.5 30.8-65 3-11.6 15.4-59 15.4-59 8.1 15.4 31.7 28.5 56.8 28.5 74.8 0 128.7-68.8 128.7-154.3 0-81.9-66.9-143.2-152.9-143.2-107 0-163.9 71.8-163.9 150.1 0 36.4 19.4 81.7 50.3 96.1 4.7 2.2 7.2 1.2 8.3-3.3.8-3.4 5-20.3 6.9-28.1.6-2.5.3-4.7-1.7-7.1-10.1-12.5-18.3-35.3-18.3-56.6 0-54.7 41.4-107.6 112-107.6 60.9 0 103.6 41.5 103.6 100.9 0 67.1-33.9 113.6-78 113.6-24.3 0-42.6-20.1-36.7-44.8 7-29.5 20.5-61.3 20.5-82.6 0-19-10.2-34.9-31.4-34.9-24.9 0-44.9 25.7-44.9 60.2 0 22 7.4 36.8 7.4 36.8s-24.5 103.8-29 123.2c-5 21.4-3 51.6-.9 71.2C65.4 450.9 0 361.1 0 256 0 119 111 8 248 8s248 111 248 248z"],"pinterest-p":[384,512,[],"f231","M204 6.5C101.4 6.5 0 74.9 0 185.6 0 256 39.6 296 63.6 296c9.9 0 15.6-27.6 15.6-35.4 0-9.3-23.7-29.1-23.7-67.8 0-80.4 61.2-137.4 140.4-137.4 68.1 0 118.5 38.7 118.5 109.8 0 53.1-21.3 152.7-90.3 152.7-24.9 0-46.2-18-46.2-43.8 0-37.8 26.4-74.4 26.4-113.4 0-66.2-93.9-54.2-93.9 25.8 0 16.8 2.1 35.4 9.6 50.7-13.8 59.4-42 147.9-42 209.1 0 18.9 2.7 37.5 4.5 56.4 3.4 3.8 1.7 3.4 6.9 1.5 50.4-69 48.6-82.5 71.4-172.8 12.3 23.4 44.1 36 69.3 36 106.2 0 153.9-103.5 153.9-196.8C384 71.3 298.2 6.5 204 6.5z"],"pinterest-square":[448,512,[],"f0d3","M448 80v352c0 26.5-21.5 48-48 48H154.4c9.8-16.4 22.4-40 27.4-59.3 3-11.5 15.3-58.4 15.3-58.4 8 15.3 31.4 28.2 56.3 28.2 74.1 0 127.4-68.1 127.4-152.7 0-81.1-66.2-141.8-151.4-141.8-106 0-162.2 71.1-162.2 148.6 0 36 19.2 80.8 49.8 95.1 4.7 2.2 7.1 1.2 8.2-3.3.8-3.4 5-20.1 6.8-27.8.6-2.5.3-4.6-1.7-7-10.1-12.3-18.3-34.9-18.3-56 0-54.2 41-106.6 110.9-106.6 60.3 0 102.6 41.1 102.6 99.9 0 66.4-33.5 112.4-77.2 112.4-24.1 0-42.1-19.9-36.4-44.4 6.9-29.2 20.3-60.7 20.3-81.8 0-53-75.5-45.7-75.5 25 0 21.7 7.3 36.5 7.3 36.5-31.4 132.8-36.1 134.5-29.6 192.6l2.2.8H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48z"],playstation:[576,512,[],"f3df","M570.9 372.3c-11.3 14.2-38.8 24.3-38.8 24.3L327 470.2v-54.3l150.9-53.8c17.1-6.1 19.8-14.8 5.8-19.4-13.9-4.6-39.1-3.3-56.2 2.9L327 381.1v-56.4c23.2-7.8 47.1-13.6 75.7-16.8 40.9-4.5 90.9.6 130.2 15.5 44.2 14 49.2 34.7 38 48.9zm-224.4-92.5v-139c0-16.3-3-31.3-18.3-35.6-11.7-3.8-19 7.1-19 23.4v347.9l-93.8-29.8V32c39.9 7.4 98 24.9 129.2 35.4C424.1 94.7 451 128.7 451 205.2c0 74.5-46 102.8-104.5 74.6zM43.2 410.2c-45.4-12.8-53-39.5-32.3-54.8 19.1-14.2 51.7-24.9 51.7-24.9l134.5-47.8v54.5l-96.8 34.6c-17.1 6.1-19.7 14.8-5.8 19.4 13.9 4.6 39.1 3.3 56.2-2.9l46.4-16.9v48.8c-51.6 9.3-101.4 7.3-153.9-10z"],"product-hunt":[512,512,[],"f288","M326.3 218.8c0 20.5-16.7 37.2-37.2 37.2h-70.3v-74.4h70.3c20.5 0 37.2 16.7 37.2 37.2zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-128.1-37.2c0-47.9-38.9-86.8-86.8-86.8H169.2v248h49.6v-74.4h70.3c47.9 0 86.8-38.9 86.8-86.8z"],pushed:[432,512,[],"f3e1","M407 111.9l-98.5-9 14-33.4c10.4-23.5-10.8-40.4-28.7-37L22.5 76.9c-15.1 2.7-26 18.3-21.4 36.6l105.1 348.3c6.5 21.3 36.7 24.2 47.7 7l35.3-80.8 235.2-231.3c16.4-16.8 4.3-42.9-17.4-44.8zM297.6 53.6c5.1-.7 7.5 2.5 5.2 7.4L286 100.9 108.6 84.6l189-31zM22.7 107.9c-3.1-5.1 1-10 6.1-9.1l248.7 22.7-96.9 230.7L22.7 107.9zM136 456.4c-2.6 4-7.9 3.1-9.4-1.2L43.5 179.7l127.7 197.6c-7 15-35.2 79.1-35.2 79.1zm272.8-314.5L210.1 337.3l89.7-213.7 106.4 9.7c4 1.1 5.7 5.3 2.6 8.6z"],python:[448,512,[],"f3e2","M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3zM167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4zm-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3z"],qq:[448,512,[],"f1d6","M433.754 420.445c-11.526 1.393-44.86-52.741-44.86-52.741 0 31.345-16.136 72.247-51.051 101.786 16.842 5.192 54.843 19.167 45.803 34.421-7.316 12.343-125.51 7.881-159.632 4.037-34.122 3.844-152.316 8.306-159.632-4.037-9.045-15.25 28.918-29.214 45.783-34.415-34.92-29.539-51.059-70.445-51.059-101.792 0 0-33.334 54.134-44.859 52.741-5.37-.65-12.424-29.644 9.347-99.704 10.261-33.024 21.995-60.478 40.144-105.779C60.683 98.063 108.982.006 224 0c113.737.006 163.156 96.133 160.264 214.963 18.118 45.223 29.912 72.85 40.144 105.778 21.768 70.06 14.716 99.053 9.346 99.704z"],quinscape:[512,512,[],"f459","M313.6 474.6h-1a158.1 158.1 0 0 1 0-316.2c94.9 0 168.2 83.1 157 176.6 4 5.1 8.2 9.6 11.2 15.3 13.4-30.3 20.3-62.4 20.3-97.7C501.1 117.5 391.6 8 256.5 8S12 117.5 12 252.6s109.5 244.6 244.5 244.6a237.36 237.36 0 0 0 70.4-10.1c-5.2-3.5-8.9-8.1-13.3-12.5zm-.1-.1l.4.1zm78.4-168.9a99.2 99.2 0 1 0 99.2 99.2 99.18 99.18 0 0 0-99.2-99.2z"],quora:[448,512,[],"f2c4","M440.5 386.7h-29.3c-1.5 13.5-10.5 30.8-33 30.8-20.5 0-35.3-14.2-49.5-35.8 44.2-34.2 74.7-87.5 74.7-153C403.5 111.2 306.8 32 205 32 105.3 32 7.3 111.7 7.3 228.7c0 134.1 131.3 221.6 249 189C276 451.3 302 480 351.5 480c81.8 0 90.8-75.3 89-93.3zM297 329.2C277.5 300 253.3 277 205.5 277c-30.5 0-54.3 10-69 22.8l12.2 24.3c6.2-3 13-4 19.8-4 35.5 0 53.7 30.8 69.2 61.3-10 3-20.7 4.2-32.7 4.2-75 0-107.5-53-107.5-156.7C97.5 124.5 130 71 205 71c76.2 0 108.7 53.5 108.7 157.7.1 41.8-5.4 75.6-16.7 100.5z"],"r-project":[581,512,[],"f4f7","M581 226.6C581 119.1 450.9 32 290.5 32S0 119.1 0 226.6C0 322.4 103.3 402 239.4 418.1V480h99.1v-61.5c24.3-2.7 47.6-7.4 69.4-13.9L448 480h112l-67.4-113.7c54.5-35.4 88.4-84.9 88.4-139.7zm-466.8 14.5c0-73.5 98.9-133 220.8-133s211.9 40.7 211.9 133c0 50.1-26.5 85-70.3 106.4-2.4-1.6-4.7-2.9-6.4-3.7-10.2-5.2-27.8-10.5-27.8-10.5s86.6-6.4 86.6-92.7-90.6-87.9-90.6-87.9h-199V361c-74.1-21.5-125.2-67.1-125.2-119.9zm225.1 38.3v-55.6c57.8 0 87.8-6.8 87.8 27.3 0 36.5-38.2 28.3-87.8 28.3zm-.9 72.5H365c10.8 0 18.9 11.7 24 19.2-16.1 1.9-33 2.8-50.6 2.9v-22.1z"],"raspberry-pi":[407,512,[],"f7bb","M372 232.5l-3.7-6.5c.1-46.4-21.4-65.3-46.5-79.7 7.6-2 15.4-3.6 17.6-13.2 13.1-3.3 15.8-9.4 17.1-15.8 3.4-2.3 14.8-8.7 13.6-19.7 6.4-4.4 10-10.1 8.1-18.1 6.9-7.5 8.7-13.7 5.8-19.4 8.3-10.3 4.6-15.6 1.1-20.9 6.2-11.2.7-23.2-16.6-21.2-6.9-10.1-21.9-7.8-24.2-7.8-2.6-3.2-6-6-16.5-4.7-6.8-6.1-14.4-5-22.3-2.1-9.3-7.3-15.5-1.4-22.6.8C271.6.6 269 5.5 263.5 7.6c-12.3-2.6-16.1 3-22 8.9l-6.9-.1c-18.6 10.8-27.8 32.8-31.1 44.1-3.3-11.3-12.5-33.3-31.1-44.1l-6.9.1c-5.9-5.9-9.7-11.5-22-8.9-5.6-2-8.1-7-19.4-3.4-4.6-1.4-8.9-4.4-13.9-4.3-2.6.1-5.5 1-8.7 3.5-7.9-3-15.5-4-22.3 2.1-10.5-1.3-14 1.4-16.5 4.7-2.3 0-17.3-2.3-24.2 7.8C21.2 16 15.8 28 22 39.2c-3.5 5.4-7.2 10.7 1.1 20.9-2.9 5.7-1.1 11.9 5.8 19.4-1.8 8 1.8 13.7 8.1 18.1-1.2 11 10.2 17.4 13.6 19.7 1.3 6.4 4 12.4 17.1 15.8 2.2 9.5 10 11.2 17.6 13.2-25.1 14.4-46.6 33.3-46.5 79.7l-3.7 6.5c-28.8 17.2-54.7 72.7-14.2 117.7 2.6 14.1 7.1 24.2 11 35.4 5.9 45.2 44.5 66.3 54.6 68.8 14.9 11.2 30.8 21.8 52.2 29.2C159 504.2 181 512 203 512h1c22.1 0 44-7.8 64.2-28.4 21.5-7.4 37.3-18 52.2-29.2 10.2-2.5 48.7-23.6 54.6-68.8 3.9-11.2 8.4-21.3 11-35.4 40.6-45.1 14.7-100.5-14-117.7zm-22.2-8c-1.5 18.7-98.9-65.1-82.1-67.9 45.7-7.5 83.6 19.2 82.1 67.9zm-43 93.1c-24.5 15.8-59.8 5.6-78.8-22.8s-14.6-64.2 9.9-80c24.5-15.8 59.8-5.6 78.8 22.8s14.6 64.2-9.9 80zM238.9 29.3c.8 4.2 1.8 6.8 2.9 7.6 5.4-5.8 9.8-11.7 16.8-17.3 0 3.3-1.7 6.8 2.5 9.4 3.7-5 8.8-9.5 15.5-13.3-3.2 5.6-.6 7.3 1.2 9.6 5.1-4.4 10-8.8 19.4-12.3-2.6 3.1-6.2 6.2-2.4 9.8 5.3-3.3 10.6-6.6 23.1-8.9-2.8 3.1-8.7 6.3-5.1 9.4 6.6-2.5 14-4.4 22.1-5.4-3.9 3.2-7.1 6.3-3.9 8.8 7.1-2.2 16.9-5.1 26.4-2.6l-6 6.1c-.7.8 14.1.6 23.9.8-3.6 5-7.2 9.7-9.3 18.2 1 1 5.8.4 10.4 0-4.7 9.9-12.8 12.3-14.7 16.6 2.9 2.2 6.8 1.6 11.2.1-3.4 6.9-10.4 11.7-16 17.3 1.4 1 3.9 1.6 9.7.9-5.2 5.5-11.4 10.5-18.8 15 1.3 1.5 5.8 1.5 10 1.6-6.7 6.5-15.3 9.9-23.4 14.2 4 2.7 6.9 2.1 10 2.1-5.7 4.7-15.4 7.1-24.4 10 1.7 2.7 3.4 3.4 7.1 4.1-9.5 5.3-23.2 2.9-27 5.6.9 2.7 3.6 4.4 6.7 5.8-15.4.9-57.3-.6-65.4-32.3 15.7-17.3 44.4-37.5 93.7-62.6-38.4 12.8-73 30-102 53.5-34.3-15.9-10.8-55.9 5.8-71.8zm-34.4 114.6c24.2-.3 54.1 17.8 54 34.7-.1 15-21 27.1-53.8 26.9-32.1-.4-53.7-15.2-53.6-29.8 0-11.9 26.2-32.5 53.4-31.8zm-123-12.8c3.7-.7 5.4-1.5 7.1-4.1-9-2.8-18.7-5.3-24.4-10 3.1 0 6 .7 10-2.1-8.1-4.3-16.7-7.7-23.4-14.2 4.2-.1 8.7 0 10-1.6-7.4-4.5-13.6-9.5-18.8-15 5.8.7 8.3.1 9.7-.9-5.6-5.6-12.7-10.4-16-17.3 4.3 1.5 8.3 2 11.2-.1-1.9-4.2-10-6.7-14.7-16.6 4.6.4 9.4 1 10.4 0-2.1-8.5-5.8-13.3-9.3-18.2 9.8-.1 24.6 0 23.9-.8l-6-6.1c9.5-2.5 19.3.4 26.4 2.6 3.2-2.5-.1-5.6-3.9-8.8 8.1 1.1 15.4 2.9 22.1 5.4 3.5-3.1-2.3-6.3-5.1-9.4 12.5 2.3 17.8 5.6 23.1 8.9 3.8-3.6.2-6.7-2.4-9.8 9.4 3.4 14.3 7.9 19.4 12.3 1.7-2.3 4.4-4 1.2-9.6 6.7 3.8 11.8 8.3 15.5 13.3 4.1-2.6 2.5-6.2 2.5-9.4 7 5.6 11.4 11.5 16.8 17.3 1.1-.8 2-3.4 2.9-7.6 16.6 15.9 40.1 55.9 6 71.8-29-23.5-63.6-40.7-102-53.5 49.3 25 78 45.3 93.7 62.6-8 31.8-50 33.2-65.4 32.3 3.1-1.4 5.8-3.2 6.7-5.8-4-2.8-17.6-.4-27.2-5.6zm60.1 24.1c16.8 2.8-80.6 86.5-82.1 67.9-1.5-48.7 36.5-75.5 82.1-67.9zM38.2 342c-23.7-18.8-31.3-73.7 12.6-98.3 26.5-7 9 107.8-12.6 98.3zm91 98.2c-13.3 7.9-45.8 4.7-68.8-27.9-15.5-27.4-13.5-55.2-2.6-63.4 16.3-9.8 41.5 3.4 60.9 25.6 16.9 20 24.6 55.3 10.5 65.7zm-26.4-119.7c-24.5-15.8-28.9-51.6-9.9-80s54.3-38.6 78.8-22.8 28.9 51.6 9.9 80c-19.1 28.4-54.4 38.6-78.8 22.8zM205 496c-29.4 1.2-58.2-23.7-57.8-32.3-.4-12.7 35.8-22.6 59.3-22 23.7-1 55.6 7.5 55.7 18.9.5 11-28.8 35.9-57.2 35.4zm58.9-124.9c.2 29.7-26.2 53.8-58.8 54-32.6.2-59.2-23.8-59.4-53.4v-.6c-.2-29.7 26.2-53.8 58.8-54 32.6-.2 59.2 23.8 59.4 53.4v.6zm82.2 42.7c-25.3 34.6-59.6 35.9-72.3 26.3-13.3-12.4-3.2-50.9 15.1-72 20.9-23.3 43.3-38.5 58.9-26.6 10.5 10.3 16.7 49.1-1.7 72.3zm22.9-73.2c-21.5 9.4-39-105.3-12.6-98.3 43.9 24.7 36.3 79.6 12.6 98.3z"],ravelry:[512,512,[],"f2d9","M407.4 61.5C331.6 22.1 257.8 31 182.9 66c-11.3 5.2-15.5 10.6-19.9 19-10.3 19.2-16.2 37.4-19.9 52.7-21.2 25.6-36.4 56.1-43.3 89.9-10.6 18-20.9 41.4-23.1 71.4 0 0-.7 7.6-.5 7.9-35.3-4.6-76.2-27-76.2-27 9.1 14.5 61.3 32.3 76.3 37.9 0 0 1.7 98 64.5 131.2-11.3-17.2-13.3-20.2-13.3-20.2S94.8 369 100.4 324.7c.7 0 1.5.2 2.2.2 23.9 87.4 103.2 151.4 196.9 151.4 6.2 0 12.1-.2 18-.7 14 1.5 27.6.5 40.1-3.9 6.9-2.2 13.8-6.4 20.2-10.8 70.2-39.1 100.9-82 123.1-147.7 5.4-16 8.1-35.5 9.8-52.2 8.7-82.3-30.6-161.6-103.3-199.5zM138.8 163.2s-1.2 12.3-.7 19.7c-3.4 2.5-10.1 8.1-18.2 16.7 5.2-12.8 11.3-25.1 18.9-36.4zm-31.2 121.9c4.4-17.2 13.3-39.1 29.8-55.1 0 0 1.7 48 15.8 90.1l-41.4-6.9c-2.2-9.2-3.5-18.5-4.2-28.1zm7.9 42.8c14.8 3.2 34 7.6 43.1 9.1 27.3 76.8 108.3 124.3 108.3 124.3 1 .5 1.7.7 2.7 1-73.1-11.6-132.7-64.7-154.1-134.4zM386 444.1c-14.5 4.7-36.2 8.4-64.7 3.7 0 0-91.1-23.1-127.5-107.8 38.2.7 52.4-.2 78-3.9 39.4-5.7 79-16.2 115-33 11.8-5.4 11.1-19.4 9.6-29.8-2-12.8-11.1-12.1-21.4-4.7 0 0-82 58.6-189.8 53.7-18.7-32-26.8-110.8-26.8-110.8 41.4-35.2 83.2-59.6 168.4-52.4.2-6.4 3-27.1-20.4-28.1 0 0-93.5-11.1-146 33.5 2.5-16.5 5.9-29.3 11.1-39.4 34.2-30.8 79-49.5 128.3-49.5 106.4 0 193 87.1 193 194.5-.2 76-43.8 142-106.8 174z"],react:[512,512,[],"f41b","M418.2 177.2c-5.4-1.8-10.8-3.5-16.2-5.1.9-3.7 1.7-7.4 2.5-11.1 12.3-59.6 4.2-107.5-23.1-123.3-26.3-15.1-69.2.6-112.6 38.4-4.3 3.7-8.5 7.6-12.5 11.5-2.7-2.6-5.5-5.2-8.3-7.7-45.5-40.4-91.1-57.4-118.4-41.5-26.2 15.2-34 60.3-23 116.7 1.1 5.6 2.3 11.1 3.7 16.7-6.4 1.8-12.7 3.8-18.6 5.9C38.3 196.2 0 225.4 0 255.6c0 31.2 40.8 62.5 96.3 81.5 4.5 1.5 9 3 13.6 4.3-1.5 6-2.8 11.9-4 18-10.5 55.5-2.3 99.5 23.9 114.6 27 15.6 72.4-.4 116.6-39.1 3.5-3.1 7-6.3 10.5-9.7 4.4 4.3 9 8.4 13.6 12.4 42.8 36.8 85.1 51.7 111.2 36.6 27-15.6 35.8-62.9 24.4-120.5-.9-4.4-1.9-8.9-3-13.5 3.2-.9 6.3-1.9 9.4-2.9 57.7-19.1 99.5-50 99.5-81.7 0-30.3-39.4-59.7-93.8-78.4zM282.9 92.3c37.2-32.4 71.9-45.1 87.7-36 16.9 9.7 23.4 48.9 12.8 100.4-.7 3.4-1.4 6.7-2.3 10-22.2-5-44.7-8.6-67.3-10.6-13-18.6-27.2-36.4-42.6-53.1 3.9-3.7 7.7-7.2 11.7-10.7zM167.2 307.5c5.1 8.7 10.3 17.4 15.8 25.9-15.6-1.7-31.1-4.2-46.4-7.5 4.4-14.4 9.9-29.3 16.3-44.5 4.6 8.8 9.3 17.5 14.3 26.1zm-30.3-120.3c14.4-3.2 29.7-5.8 45.6-7.8-5.3 8.3-10.5 16.8-15.4 25.4-4.9 8.5-9.7 17.2-14.2 26-6.3-14.9-11.6-29.5-16-43.6zm27.4 68.9c6.6-13.8 13.8-27.3 21.4-40.6s15.8-26.2 24.4-38.9c15-1.1 30.3-1.7 45.9-1.7s31 .6 45.9 1.7c8.5 12.6 16.6 25.5 24.3 38.7s14.9 26.7 21.7 40.4c-6.7 13.8-13.9 27.4-21.6 40.8-7.6 13.3-15.7 26.2-24.2 39-14.9 1.1-30.4 1.6-46.1 1.6s-30.9-.5-45.6-1.4c-8.7-12.7-16.9-25.7-24.6-39s-14.8-26.8-21.5-40.6zm180.6 51.2c5.1-8.8 9.9-17.7 14.6-26.7 6.4 14.5 12 29.2 16.9 44.3-15.5 3.5-31.2 6.2-47 8 5.4-8.4 10.5-17 15.5-25.6zm14.4-76.5c-4.7-8.8-9.5-17.6-14.5-26.2-4.9-8.5-10-16.9-15.3-25.2 16.1 2 31.5 4.7 45.9 8-4.6 14.8-10 29.2-16.1 43.4zM256.2 118.3c10.5 11.4 20.4 23.4 29.6 35.8-19.8-.9-39.7-.9-59.5 0 9.8-12.9 19.9-24.9 29.9-35.8zM140.2 57c16.8-9.8 54.1 4.2 93.4 39 2.5 2.2 5 4.6 7.6 7-15.5 16.7-29.8 34.5-42.9 53.1-22.6 2-45 5.5-67.2 10.4-1.3-5.1-2.4-10.3-3.5-15.5-9.4-48.4-3.2-84.9 12.6-94zm-24.5 263.6c-4.2-1.2-8.3-2.5-12.4-3.9-21.3-6.7-45.5-17.3-63-31.2-10.1-7-16.9-17.8-18.8-29.9 0-18.3 31.6-41.7 77.2-57.6 5.7-2 11.5-3.8 17.3-5.5 6.8 21.7 15 43 24.5 63.6-9.6 20.9-17.9 42.5-24.8 64.5zm116.6 98c-16.5 15.1-35.6 27.1-56.4 35.3-11.1 5.3-23.9 5.8-35.3 1.3-15.9-9.2-22.5-44.5-13.5-92 1.1-5.6 2.3-11.2 3.7-16.7 22.4 4.8 45 8.1 67.9 9.8 13.2 18.7 27.7 36.6 43.2 53.4-3.2 3.1-6.4 6.1-9.6 8.9zm24.5-24.3c-10.2-11-20.4-23.2-30.3-36.3 9.6.4 19.5.6 29.5.6 10.3 0 20.4-.2 30.4-.7-9.2 12.7-19.1 24.8-29.6 36.4zm130.7 30c-.9 12.2-6.9 23.6-16.5 31.3-15.9 9.2-49.8-2.8-86.4-34.2-4.2-3.6-8.4-7.5-12.7-11.5 15.3-16.9 29.4-34.8 42.2-53.6 22.9-1.9 45.7-5.4 68.2-10.5 1 4.1 1.9 8.2 2.7 12.2 4.9 21.6 5.7 44.1 2.5 66.3zm18.2-107.5c-2.8.9-5.6 1.8-8.5 2.6-7-21.8-15.6-43.1-25.5-63.8 9.6-20.4 17.7-41.4 24.5-62.9 5.2 1.5 10.2 3.1 15 4.7 46.6 16 79.3 39.8 79.3 58 0 19.6-34.9 44.9-84.8 61.4zm-149.7-15c25.3 0 45.8-20.5 45.8-45.8s-20.5-45.8-45.8-45.8c-25.3 0-45.8 20.5-45.8 45.8s20.5 45.8 45.8 45.8z"],reacteurope:[576,512,[],"f75d","M250.6 211.74l5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.1-.1-2.3-6.8-2.3 6.8-7.2.1 5.7 4.3zm63.7 0l5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.2-.1-2.3-6.8-2.3 6.8-7.2.1 5.7 4.3zm-91.3 50.5h-3.4c-4.8 0-3.8 4-3.8 12.1 0 4.7-2.3 6.1-5.8 6.1s-5.8-1.4-5.8-6.1v-36.6c0-4.7 2.3-6.1 5.8-6.1s5.8 1.4 5.8 6.1c0 7.2-.7 10.5 3.8 10.5h3.4c4.7-.1 3.8-3.9 3.8-12.3 0-9.9-6.7-14.1-16.8-14.1h-.2c-10.1 0-16.8 4.2-16.8 14.1V276c0 10.4 6.7 14.1 16.8 14.1h.2c10.1 0 16.8-3.8 16.8-14.1 0-9.86 1.1-13.76-3.8-13.76zm-80.7 17.4h-14.7v-19.3H139c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-11.4v-18.3H142c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-21.7c-2.4-.1-3.7 1.3-3.7 3.8v59.1c0 2.5 1.3 3.8 3.8 3.8h21.9c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8zm-42-18.5c4.6-2 7.3-6 7.3-12.4v-11.9c0-10.1-6.7-14.1-16.8-14.1H77.4c-2.5 0-3.8 1.3-3.8 3.8v59.1c0 2.5 1.3 3.8 3.8 3.8h3.4c2.5 0 3.8-1.3 3.8-3.8v-22.9h5.6l7.4 23.5a4.1 4.1 0 0 0 4.3 3.2h3.3c2.8 0 4-1.8 3.2-4.4zm-3.8-14c0 4.8-2.5 6.1-6.1 6.1h-5.8v-20.9h5.8c3.6 0 6.1 1.3 6.1 6.1zM176 226a3.82 3.82 0 0 0-4.2-3.4h-6.9a3.68 3.68 0 0 0-4 3.4l-11 59.2c-.5 2.7.9 4.1 3.4 4.1h3a3.74 3.74 0 0 0 4.1-3.5l1.8-11.3h12.2l1.8 11.3a3.74 3.74 0 0 0 4.1 3.5h3.5c2.6 0 3.9-1.4 3.4-4.1zm-12.3 39.3l4.7-29.7 4.7 29.7zm89.3 20.2v-53.2h7.5c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-25.8c-2.5 0-3.8 1.3-3.8 3.8v2.1c0 2.5 1.3 3.8 3.8 3.8h7.3v53.2c0 2.5 1.3 3.8 3.8 3.8h3.4c2.5.04 3.8-1.3 3.8-3.76zm248-.8h-19.4V258h16.1a1.89 1.89 0 0 0 2-2v-.8a1.89 1.89 0 0 0-2-2h-16.1v-25.8h19.1a1.89 1.89 0 0 0 2-2v-.8a1.77 1.77 0 0 0-2-1.9h-22.2a1.62 1.62 0 0 0-2 1.8v63a1.81 1.81 0 0 0 2 1.9H501a1.81 1.81 0 0 0 2-1.9v-.8a1.84 1.84 0 0 0-2-1.96zm-93.1-62.9h-.8c-10.1 0-15.3 4.7-15.3 14.1V276c0 9.3 5.2 14.1 15.3 14.1h.8c10.1 0 15.3-4.8 15.3-14.1v-40.1c0-9.36-5.2-14.06-15.3-14.06zm10.2 52.4c-.1 8-3 11.1-10.5 11.1s-10.5-3.1-10.5-11.1v-36.6c0-7.9 3-11.1 10.5-11.1s10.5 3.2 10.5 11.1zm-46.5-14.5c6.1-1.6 9.2-6.1 9.2-13.3v-9.7c0-9.4-5.2-14.1-15.3-14.1h-13.7a1.81 1.81 0 0 0-2 1.9v63a1.81 1.81 0 0 0 2 1.9h1.2a1.74 1.74 0 0 0 1.9-1.9v-26.9h11.6l10.4 27.2a2.32 2.32 0 0 0 2.3 1.5h1.5c1.4 0 2-1 1.5-2.3zm-6.4-3.9H355v-28.5h10.2c7.5 0 10.5 3.1 10.5 11.1v6.4c0 7.84-3 11.04-10.5 11.04zm85.9-33.1h-13.7a1.62 1.62 0 0 0-2 1.8v63a1.81 1.81 0 0 0 2 1.9h1.2a1.74 1.74 0 0 0 1.9-1.9v-26.1h10.6c10.1 0 15.3-4.8 15.3-14.1v-10.5c0-9.4-5.2-14.1-15.3-14.1zm10.2 22.8c0 7.9-3 11.1-10.5 11.1h-10.2v-29.2h10.2c7.5-.1 10.5 3.1 10.5 11zM259.5 308l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm227.6-136.1a364.42 364.42 0 0 0-35.6-11.3c19.6-78 11.6-134.7-22.3-153.9C394.7-12.66 343.3 11 291 61.94q5.1 4.95 10.2 10.2c82.5-80 119.6-53.5 120.9-52.8 22.4 12.7 36 55.8 15.5 137.8a587.83 587.83 0 0 0-84.6-13C281.1 43.64 212.4 2 170.8 2 140 2 127 23 123.2 29.74c-18.1 32-13.3 84.2.1 133.8-70.5 20.3-120.7 54.1-120.3 95 .5 59.6 103.2 87.8 122.1 92.8-20.5 81.9-10.1 135.6 22.3 153.9 28 15.8 75.1 6 138.2-55.2q-5.1-4.95-10.2-10.2c-82.5 80-119.7 53.5-120.9 52.8-22.3-12.6-36-55.6-15.5-137.9 12.4 2.9 41.8 9.5 84.6 13 71.9 100.4 140.6 142 182.1 142 30.8 0 43.8-21 47.6-27.7 18-31.9 13.3-84.1-.1-133.8 152.3-43.8 156.2-130.2 33.9-176.3zM135.9 36.84c2.9-5.1 11.9-20.3 34.9-20.3 36.8 0 98.8 39.6 163.3 126.2a714 714 0 0 0-93.9.9 547.76 547.76 0 0 1 42.2-52.4Q277.3 86 272.2 81a598.25 598.25 0 0 0-50.7 64.2 569.69 569.69 0 0 0-84.4 14.6c-.2-1.4-24.3-82.2-1.2-123zm304.8 438.3c-2.9 5.1-11.8 20.3-34.9 20.3-36.7 0-98.7-39.4-163.3-126.2a695.38 695.38 0 0 0 93.9-.9 547.76 547.76 0 0 1-42.2 52.4q5.1 5.25 10.2 10.2a588.47 588.47 0 0 0 50.7-64.2c47.3-4.7 80.3-13.5 84.4-14.6 22.7 84.4 4.5 117 1.2 123zm9.1-138.6c-3.6-11.9-7.7-24.1-12.4-36.4a12.67 12.67 0 0 1-10.7-5.7l-.1.1a19.61 19.61 0 0 1-5.4 3.6c5.7 14.3 10.6 28.4 14.7 42.2a535.3 535.3 0 0 1-72 13c3.5-5.3 17.2-26.2 32.2-54.2a24.6 24.6 0 0 1-6-3.2c-1.1 1.2-3.6 4.2-10.9 4.2-6.2 11.2-17.4 30.9-33.9 55.2a711.91 711.91 0 0 1-112.4 1c-7.9-11.2-21.5-31.1-36.8-57.8a21 21 0 0 1-3-1.5c-1.9 1.6-3.9 3.2-12.6 3.2 6.3 11.2 17.5 30.7 33.8 54.6a548.81 548.81 0 0 1-72.2-11.7q5.85-21 14.1-42.9c-3.2 0-5.4.2-8.4-1a17.58 17.58 0 0 1-6.9 1c-4.9 13.4-9.1 26.5-12.7 39.4C-31.7 297-12.1 216 126.7 175.64c3.6 11.9 7.7 24.1 12.4 36.4 10.4 0 12.9 3.4 14.4 5.3a12 12 0 0 1 2.3-2.2c-5.8-14.7-10.9-29.2-15.2-43.3 7-1.8 32.4-8.4 72-13-15.9 24.3-26.7 43.9-32.8 55.3a14.22 14.22 0 0 1 6.4 8 23.42 23.42 0 0 1 10.2-8.4c6.5-11.7 17.9-31.9 34.8-56.9a711.72 711.72 0 0 1 112.4-1c31.5 44.6 28.9 48.1 42.5 64.5a21.42 21.42 0 0 1 10.4-7.4c-6.4-11.4-17.6-31-34.3-55.5 40.4 4.1 65 10 72.2 11.7-4 14.4-8.9 29.2-14.6 44.2a20.74 20.74 0 0 1 6.8 4.3l.1.1a12.72 12.72 0 0 1 8.9-5.6c4.9-13.4 9.2-26.6 12.8-39.5a359.71 359.71 0 0 1 34.5 11c106.1 39.9 74 87.9 72.6 90.4-19.8 35.1-80.1 55.2-105.7 62.5zm-114.4-114h-1.2a1.74 1.74 0 0 0-1.9 1.9v49.8c0 7.9-2.6 11.1-10.1 11.1s-10.1-3.1-10.1-11.1v-49.8a1.69 1.69 0 0 0-1.9-1.9H309a1.81 1.81 0 0 0-2 1.9v51.5c0 9.6 5 14.1 15.1 14.1h.4c10.1 0 15.1-4.6 15.1-14.1v-51.5a2 2 0 0 0-2.2-1.9zM321.7 308l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm-31.1 7.4l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm5.1-30.8h-19.4v-26.7h16.1a1.89 1.89 0 0 0 2-2v-.8a1.89 1.89 0 0 0-2-2h-16.1v-25.8h19.1a1.89 1.89 0 0 0 2-2v-.8a1.77 1.77 0 0 0-2-1.9h-22.2a1.81 1.81 0 0 0-2 1.9v63a1.81 1.81 0 0 0 2 1.9h22.5a1.77 1.77 0 0 0 2-1.9v-.8a1.83 1.83 0 0 0-2-2.06zm-7.4-99.4L286 192l-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.1-.1z"],readme:[576,512,[],"f4d5","M528.3 46.5H388.5c-48.1 0-89.9 33.3-100.4 80.3-10.6-47-52.3-80.3-100.4-80.3H48c-26.5 0-48 21.5-48 48v245.8c0 26.5 21.5 48 48 48h89.7c102.2 0 132.7 24.4 147.3 75 .7 2.8 5.2 2.8 6 0 14.7-50.6 45.2-75 147.3-75H528c26.5 0 48-21.5 48-48V94.6c0-26.4-21.3-47.9-47.7-48.1zM242 311.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5V289c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5V251zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm259.3 121.7c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5V228c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5v-22.8c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5V190z"],rebel:[512,512,[],"f1d0","M256.5 504C117.2 504 9 387.8 13.2 249.9 16 170.7 56.4 97.7 129.7 49.5c.3 0 1.9-.6 1.1.8-5.8 5.5-111.3 129.8-14.1 226.4 49.8 49.5 90 2.5 90 2.5 38.5-50.1-.6-125.9-.6-125.9-10-24.9-45.7-40.1-45.7-40.1l28.8-31.8c24.4 10.5 43.2 38.7 43.2 38.7.8-29.6-21.9-61.4-21.9-61.4L255.1 8l44.3 50.1c-20.5 28.8-21.9 62.6-21.9 62.6 13.8-23 43.5-39.3 43.5-39.3l28.5 31.8c-27.4 8.9-45.4 39.9-45.4 39.9-15.8 28.5-27.1 89.4.6 127.3 32.4 44.6 87.7-2.8 87.7-2.8 102.7-91.9-10.5-225-10.5-225-6.1-5.5.8-2.8.8-2.8 50.1 36.5 114.6 84.4 116.2 204.8C500.9 400.2 399 504 256.5 504z"],"red-river":[448,512,[],"f3e3","M353.2 32H94.8C42.4 32 0 74.4 0 126.8v258.4C0 437.6 42.4 480 94.8 480h258.4c52.4 0 94.8-42.4 94.8-94.8V126.8c0-52.4-42.4-94.8-94.8-94.8zM144.9 200.9v56.3c0 27-21.9 48.9-48.9 48.9V151.9c0-13.2 10.7-23.9 23.9-23.9h154.2c0 27-21.9 48.9-48.9 48.9h-56.3c-12.3-.6-24.6 11.6-24 24zm176.3 72h-56.3c-12.3-.6-24.6 11.6-24 24v56.3c0 27-21.9 48.9-48.9 48.9V247.9c0-13.2 10.7-23.9 23.9-23.9h154.2c0 27-21.9 48.9-48.9 48.9z"],reddit:[512,512,[],"f1a1","M201.5 305.5c-13.8 0-24.9-11.1-24.9-24.6 0-13.8 11.1-24.9 24.9-24.9 13.6 0 24.6 11.1 24.6 24.9 0 13.6-11.1 24.6-24.6 24.6zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-132.3-41.2c-9.4 0-17.7 3.9-23.8 10-22.4-15.5-52.6-25.5-86.1-26.6l17.4-78.3 55.4 12.5c0 13.6 11.1 24.6 24.6 24.6 13.8 0 24.9-11.3 24.9-24.9s-11.1-24.9-24.9-24.9c-9.7 0-18 5.8-22.1 13.8l-61.2-13.6c-3-.8-6.1 1.4-6.9 4.4l-19.1 86.4c-33.2 1.4-63.1 11.3-85.5 26.8-6.1-6.4-14.7-10.2-24.1-10.2-34.9 0-46.3 46.9-14.4 62.8-1.1 5-1.7 10.2-1.7 15.5 0 52.6 59.2 95.2 132 95.2 73.1 0 132.3-42.6 132.3-95.2 0-5.3-.6-10.8-1.9-15.8 31.3-16 19.8-62.5-14.9-62.5zM302.8 331c-18.2 18.2-76.1 17.9-93.6 0-2.2-2.2-6.1-2.2-8.3 0-2.5 2.5-2.5 6.4 0 8.6 22.8 22.8 87.3 22.8 110.2 0 2.5-2.2 2.5-6.1 0-8.6-2.2-2.2-6.1-2.2-8.3 0zm7.7-75c-13.6 0-24.6 11.1-24.6 24.9 0 13.6 11.1 24.6 24.6 24.6 13.8 0 24.9-11.1 24.9-24.6 0-13.8-11-24.9-24.9-24.9z"],"reddit-alien":[512,512,[],"f281","M440.3 203.5c-15 0-28.2 6.2-37.9 15.9-35.7-24.7-83.8-40.6-137.1-42.3L293 52.3l88.2 19.8c0 21.6 17.6 39.2 39.2 39.2 22 0 39.7-18.1 39.7-39.7s-17.6-39.7-39.7-39.7c-15.4 0-28.7 9.3-35.3 22l-97.4-21.6c-4.9-1.3-9.7 2.2-11 7.1L246.3 177c-52.9 2.2-100.5 18.1-136.3 42.8-9.7-10.1-23.4-16.3-38.4-16.3-55.6 0-73.8 74.6-22.9 100.1-1.8 7.9-2.6 16.3-2.6 24.7 0 83.8 94.4 151.7 210.3 151.7 116.4 0 210.8-67.9 210.8-151.7 0-8.4-.9-17.2-3.1-25.1 49.9-25.6 31.5-99.7-23.8-99.7zM129.4 308.9c0-22 17.6-39.7 39.7-39.7 21.6 0 39.2 17.6 39.2 39.7 0 21.6-17.6 39.2-39.2 39.2-22 .1-39.7-17.6-39.7-39.2zm214.3 93.5c-36.4 36.4-139.1 36.4-175.5 0-4-3.5-4-9.7 0-13.7 3.5-3.5 9.7-3.5 13.2 0 27.8 28.5 120 29 149 0 3.5-3.5 9.7-3.5 13.2 0 4.1 4 4.1 10.2.1 13.7zm-.8-54.2c-21.6 0-39.2-17.6-39.2-39.2 0-22 17.6-39.7 39.2-39.7 22 0 39.7 17.6 39.7 39.7-.1 21.5-17.7 39.2-39.7 39.2z"],"reddit-square":[448,512,[],"f1a2","M283.2 345.5c2.7 2.7 2.7 6.8 0 9.2-24.5 24.5-93.8 24.6-118.4 0-2.7-2.4-2.7-6.5 0-9.2 2.4-2.4 6.5-2.4 8.9 0 18.7 19.2 81 19.6 100.5 0 2.4-2.3 6.6-2.3 9 0zm-91.3-53.8c0-14.9-11.9-26.8-26.5-26.8-14.9 0-26.8 11.9-26.8 26.8 0 14.6 11.9 26.5 26.8 26.5 14.6 0 26.5-11.9 26.5-26.5zm90.7-26.8c-14.6 0-26.5 11.9-26.5 26.8 0 14.6 11.9 26.5 26.5 26.5 14.9 0 26.8-11.9 26.8-26.5 0-14.9-11.9-26.8-26.8-26.8zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-99.7 140.6c-10.1 0-19 4.2-25.6 10.7-24.1-16.7-56.5-27.4-92.5-28.6l18.7-84.2 59.5 13.4c0 14.6 11.9 26.5 26.5 26.5 14.9 0 26.8-12.2 26.8-26.8 0-14.6-11.9-26.8-26.8-26.8-10.4 0-19.3 6.2-23.8 14.9l-65.7-14.6c-3.3-.9-6.5 1.5-7.4 4.8l-20.5 92.8c-35.7 1.5-67.8 12.2-91.9 28.9-6.5-6.8-15.8-11-25.9-11-37.5 0-49.8 50.4-15.5 67.5-1.2 5.4-1.8 11-1.8 16.7 0 56.5 63.7 102.3 141.9 102.3 78.5 0 142.2-45.8 142.2-102.3 0-5.7-.6-11.6-2.1-17 33.6-17.2 21.2-67.2-16.1-67.2z"],redhat:[512,512,[],"f7bc","M341.52 285.56c33.65 0 82.34-6.94 82.34-47 .22-6.74.86-1.82-20.88-96.24-4.62-19.15-8.68-27.84-42.31-44.65-26.09-13.34-82.92-35.37-99.73-35.37-15.66 0-20.2 20.17-38.87 20.17-18 0-31.31-15.06-48.12-15.06-16.14 0-26.66 11-34.78 33.62-27.5 77.55-26.28 74.27-26.12 78.27 0 24.8 97.64 106.11 228.47 106.11M429 254.84c4.65 22 4.65 24.35 4.65 27.25 0 37.66-42.33 58.56-98 58.56-125.74.08-235.91-73.65-235.91-122.33a49.55 49.55 0 0 1 4.06-19.72C58.56 200.86 0 208.93 0 260.63c0 84.67 200.63 189 359.49 189 121.79 0 152.51-55.08 152.51-98.58 0-34.21-29.59-73.05-82.93-96.24"],renren:[512,512,[],"f18b","M214 169.1c0 110.4-61 205.4-147.6 247.4C30 373.2 8 317.7 8 256.6 8 133.9 97.1 32.2 214 12.5v156.6zM255 504c-42.9 0-83.3-11-118.5-30.4C193.7 437.5 239.9 382.9 255 319c15.5 63.9 61.7 118.5 118.8 154.7C338.7 493 298.3 504 255 504zm190.6-87.5C359 374.5 298 279.6 298 169.1V12.5c116.9 19.7 206 121.4 206 244.1 0 61.1-22 116.6-58.4 159.9z"],replyd:[448,512,[],"f3e6","M320 480H128C57.6 480 0 422.4 0 352V160C0 89.6 57.6 32 128 32h192c70.4 0 128 57.6 128 128v192c0 70.4-57.6 128-128 128zM193.4 273.2c-6.1-2-11.6-3.1-16.4-3.1-7.2 0-13.5 1.9-18.9 5.6-5.4 3.7-9.6 9-12.8 15.8h-1.1l-4.2-18.3h-28v138.9h36.1v-89.7c1.5-5.4 4.4-9.8 8.7-13.2 4.3-3.4 9.8-5.1 16.2-5.1 4.6 0 9.8 1 15.6 3.1l4.8-34zm115.2 103.4c-3.2 2.4-7.7 4.8-13.7 7.1-6 2.3-12.8 3.5-20.4 3.5-12.2 0-21.1-3-26.5-8.9-5.5-5.9-8.5-14.7-9-26.4h83.3c.9-4.8 1.6-9.4 2.1-13.9.5-4.4.7-8.6.7-12.5 0-10.7-1.6-19.7-4.7-26.9-3.2-7.2-7.3-13-12.5-17.2-5.2-4.3-11.1-7.3-17.8-9.2-6.7-1.8-13.5-2.8-20.6-2.8-21.1 0-37.5 6.1-49.2 18.3s-17.5 30.5-17.5 55c0 22.8 5.2 40.7 15.6 53.7 10.4 13.1 26.8 19.6 49.2 19.6 10.7 0 20.9-1.5 30.4-4.6 9.5-3.1 17.1-6.8 22.6-11.2l-12-23.6zm-21.8-70.3c3.8 5.4 5.3 13.1 4.6 23.1h-51.7c.9-9.4 3.7-17 8.2-22.6 4.5-5.6 11.5-8.5 21-8.5 8.2-.1 14.1 2.6 17.9 8zm79.9 2.5c4.1 3.9 9.4 5.8 16.1 5.8 7 0 12.6-1.9 16.7-5.8s6.1-9.1 6.1-15.6-2-11.6-6.1-15.4c-4.1-3.8-9.6-5.7-16.7-5.7-6.7 0-12 1.9-16.1 5.7-4.1 3.8-6.1 8.9-6.1 15.4s2 11.7 6.1 15.6zm0 100.5c4.1 3.9 9.4 5.8 16.1 5.8 7 0 12.6-1.9 16.7-5.8s6.1-9.1 6.1-15.6-2-11.6-6.1-15.4c-4.1-3.8-9.6-5.7-16.7-5.7-6.7 0-12 1.9-16.1 5.7-4.1 3.8-6.1 8.9-6.1 15.4 0 6.6 2 11.7 6.1 15.6z"],researchgate:[448,512,[],"f4f8","M0 32v448h448V32H0zm262.2 334.4c-6.6 3-33.2 6-50-14.2-9.2-10.6-25.3-33.3-42.2-63.6-8.9 0-14.7 0-21.4-.6v46.4c0 23.5 6 21.2 25.8 23.9v8.1c-6.9-.3-23.1-.8-35.6-.8-13.1 0-26.1.6-33.6.8v-8.1c15.5-2.9 22-1.3 22-23.9V225c0-22.6-6.4-21-22-23.9V193c25.8 1 53.1-.6 70.9-.6 31.7 0 55.9 14.4 55.9 45.6 0 21.1-16.7 42.2-39.2 47.5 13.6 24.2 30 45.6 42.2 58.9 7.2 7.8 17.2 14.7 27.2 14.7v7.3zm22.9-135c-23.3 0-32.2-15.7-32.2-32.2V167c0-12.2 8.8-30.4 34-30.4s30.4 17.9 30.4 17.9l-10.7 7.2s-5.5-12.5-19.7-12.5c-7.9 0-19.7 7.3-19.7 19.7v26.8c0 13.4 6.6 23.3 17.9 23.3 14.1 0 21.5-10.9 21.5-26.8h-17.9v-10.7h30.4c0 20.5 4.7 49.9-34 49.9zm-116.5 44.7c-9.4 0-13.6-.3-20-.8v-69.7c6.4-.6 15-.6 22.5-.6 23.3 0 37.2 12.2 37.2 34.5 0 21.9-15 36.6-39.7 36.6z"],resolving:[496,512,[],"f3e7","M281.2 278.2c46-13.3 49.6-23.5 44-43.4L314 195.5c-6.1-20.9-18.4-28.1-71.1-12.8L54.7 236.8l28.6 98.6 197.9-57.2zM248.5 8C131.4 8 33.2 88.7 7.2 197.5l221.9-63.9c34.8-10.2 54.2-11.7 79.3-8.2 36.3 6.1 52.7 25 61.4 55.2l10.7 37.8c8.2 28.1 1 50.6-23.5 73.6-19.4 17.4-31.2 24.5-61.4 33.2L203 351.8l220.4 27.1 9.7 34.2-48.1 13.3-286.8-37.3 23 80.2c36.8 22 80.3 34.7 126.3 34.7 137 0 248.5-111.4 248.5-248.3C497 119.4 385.5 8 248.5 8zM38.3 388.6L0 256.8c0 48.5 14.3 93.4 38.3 131.8z"],rev:[448,512,[],"f5b2","M289.67 274.89a65.57 65.57 0 1 1-65.56-65.56 65.64 65.64 0 0 1 65.56 65.56zm139.55-5.05h-.13a204.69 204.69 0 0 0-74.32-153l-45.38 26.2a157.07 157.07 0 0 1 71.81 131.84C381.2 361.5 310.73 432 224.11 432S67 361.5 67 274.88c0-81.88 63-149.27 143-156.43v39.12l108.77-62.79L210 32v38.32c-106.7 7.25-191 96-191 204.57 0 111.59 89.12 202.29 200.06 205v.11h210.16V269.84z"],rocketchat:[576,512,[],"f3e8","M486.41 107.57c-76.93-50.83-179.18-62.4-264.12-47.07C127.26-31.16 20.77 11 0 23.12c0 0 73.08 62.1 61.21 116.49-86.52 88.2-45.39 186.4 0 232.77C73.08 426.77 0 488.87 0 488.87c20.57 12.16 126.77 54.19 222.29-37 84.75 15.23 187 3.76 264.12-47.16 119.26-76.14 119.65-220.61 0-297.15zM294.18 404.22a339.53 339.53 0 0 1-88.11-11.37l-19.77 19.09a179.74 179.74 0 0 1-36.59 27.39A143.14 143.14 0 0 1 98 454.06c1-1.78 1.88-3.56 2.77-5.24q29.67-55 16-98.69c-32.53-25.61-52-58.34-52-94.13 0-82 102.74-148.43 229.41-148.43S523.59 174 523.59 256 420.85 404.22 294.18 404.22zM184.12 291.3a34.32 34.32 0 0 1-34.8-33.72c-.7-45.39 67.83-46.38 68.52-1.09v.51a34 34 0 0 1-33.72 34.32zm73.77-33.72c-.79-45.39 67.74-46.48 68.53-1.19v.61c.39 45.08-67.74 45.57-68.53.58zm143.38 33.72a34.33 34.33 0 0 1-34.81-33.72c-.69-45.39 67.84-46.38 68.53-1.09v.51a33.89 33.89 0 0 1-33.72 34.32z"],rockrms:[496,512,[],"f3e9","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm157.4 419.5h-90l-112-131.3c-17.9-20.4-3.9-56.1 26.6-56.1h75.3l-84.6-99.3-84.3 98.9h-90L193.5 67.2c14.4-18.4 41.3-17.3 54.5 0l157.7 185.1c19 22.8 2 57.2-27.6 56.1-.6 0-74.2.2-74.2.2l101.5 118.9z"],safari:[512,512,[],"f267","M274.69,274.69l-37.38-37.38L166,346ZM256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8ZM411.85,182.79l14.78-6.13A8,8,0,0,1,437.08,181h0a8,8,0,0,1-4.33,10.46L418,197.57a8,8,0,0,1-10.45-4.33h0A8,8,0,0,1,411.85,182.79ZM314.43,94l6.12-14.78A8,8,0,0,1,331,74.92h0a8,8,0,0,1,4.33,10.45l-6.13,14.78a8,8,0,0,1-10.45,4.33h0A8,8,0,0,1,314.43,94ZM256,60h0a8,8,0,0,1,8,8V84a8,8,0,0,1-8,8h0a8,8,0,0,1-8-8V68A8,8,0,0,1,256,60ZM181,74.92a8,8,0,0,1,10.46,4.33L197.57,94a8,8,0,1,1-14.78,6.12l-6.13-14.78A8,8,0,0,1,181,74.92Zm-63.58,42.49h0a8,8,0,0,1,11.31,0L140,128.72A8,8,0,0,1,140,140h0a8,8,0,0,1-11.31,0l-11.31-11.31A8,8,0,0,1,117.41,117.41ZM60,256h0a8,8,0,0,1,8-8H84a8,8,0,0,1,8,8h0a8,8,0,0,1-8,8H68A8,8,0,0,1,60,256Zm40.15,73.21-14.78,6.13A8,8,0,0,1,74.92,331h0a8,8,0,0,1,4.33-10.46L94,314.43a8,8,0,0,1,10.45,4.33h0A8,8,0,0,1,100.15,329.21Zm4.33-136h0A8,8,0,0,1,94,197.57l-14.78-6.12A8,8,0,0,1,74.92,181h0a8,8,0,0,1,10.45-4.33l14.78,6.13A8,8,0,0,1,104.48,193.24ZM197.57,418l-6.12,14.78a8,8,0,0,1-14.79-6.12l6.13-14.78A8,8,0,1,1,197.57,418ZM264,444a8,8,0,0,1-8,8h0a8,8,0,0,1-8-8V428a8,8,0,0,1,8-8h0a8,8,0,0,1,8,8Zm67-6.92h0a8,8,0,0,1-10.46-4.33L314.43,418a8,8,0,0,1,4.33-10.45h0a8,8,0,0,1,10.45,4.33l6.13,14.78A8,8,0,0,1,331,437.08Zm63.58-42.49h0a8,8,0,0,1-11.31,0L372,383.28A8,8,0,0,1,372,372h0a8,8,0,0,1,11.31,0l11.31,11.31A8,8,0,0,1,394.59,394.59ZM286.25,286.25,110.34,401.66,225.75,225.75,401.66,110.34ZM437.08,331h0a8,8,0,0,1-10.45,4.33l-14.78-6.13a8,8,0,0,1-4.33-10.45h0A8,8,0,0,1,418,314.43l14.78,6.12A8,8,0,0,1,437.08,331ZM444,264H428a8,8,0,0,1-8-8h0a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8h0A8,8,0,0,1,444,264Z"],salesforce:[640,512,[],"f83b","M248.89 245.64h-26.35c.69-5.16 3.32-14.12 13.64-14.12 6.75 0 11.97 3.82 12.71 14.12zm136.66-13.88c-.47 0-14.11-1.77-14.11 20s13.63 20 14.11 20c13 0 14.11-13.54 14.11-20 0-21.76-13.66-20-14.11-20zm-243.22 23.76a8.63 8.63 0 0 0-3.29 7.29c0 4.78 2.08 6.05 3.29 7.05 4.7 3.7 15.07 2.12 20.93.95v-16.94c-5.32-1.07-16.73-1.96-20.93 1.65zM640 232c0 87.58-80 154.39-165.36 136.43-18.37 33-70.73 70.75-132.2 41.63-41.16 96.05-177.89 92.18-213.81-5.17C8.91 428.78-50.19 266.52 53.36 205.61 18.61 126.18 76 32 167.67 32a124.24 124.24 0 0 1 98.56 48.7c20.7-21.4 49.4-34.81 81.15-34.81 42.34 0 79 23.52 98.8 58.57C539 63.78 640 132.69 640 232zm-519.55 31.8c0-11.76-11.69-15.17-17.87-17.17-5.27-2.11-13.41-3.51-13.41-8.94 0-9.46 17-6.66 25.17-2.12 0 0 1.17.71 1.64-.47.24-.7 2.36-6.58 2.59-7.29a1.13 1.13 0 0 0-.7-1.41c-12.33-7.63-40.7-8.51-40.7 12.7 0 12.46 11.49 15.44 17.88 17.17 4.72 1.58 13.17 3 13.17 8.7 0 4-3.53 7.06-9.17 7.06a31.76 31.76 0 0 1-19-6.35c-.47-.23-1.42-.71-1.65.71l-2.4 7.47c-.47.94.23 1.18.23 1.41 1.75 1.4 10.3 6.59 22.82 6.59 13.17 0 21.4-7.06 21.4-18.11zm32-42.58c-10.13 0-18.66 3.17-21.4 5.18a1 1 0 0 0-.24 1.41l2.59 7.06a1 1 0 0 0 1.18.7c.65 0 6.8-4 16.93-4 4 0 7.06.71 9.18 2.36 3.6 2.8 3.06 8.29 3.06 10.58-4.79-.3-19.11-3.44-29.41 3.76a16.92 16.92 0 0 0-7.34 14.54c0 5.9 1.51 10.4 6.59 14.35 12.24 8.16 36.28 2 38.1 1.41 1.58-.32 3.53-.66 3.53-1.88v-33.88c.04-4.61.32-21.64-22.78-21.64zM199 200.24a1.11 1.11 0 0 0-1.18-1.18H188a1.11 1.11 0 0 0-1.17 1.18v79a1.11 1.11 0 0 0 1.17 1.18h9.88a1.11 1.11 0 0 0 1.18-1.18zm55.75 28.93c-2.1-2.31-6.79-7.53-17.65-7.53-3.51 0-14.16.23-20.7 8.94-6.35 7.63-6.58 18.11-6.58 21.41 0 3.12.15 14.26 7.06 21.17 2.64 2.91 9.06 8.23 22.81 8.23 10.82 0 16.47-2.35 18.58-3.76.47-.24.71-.71.24-1.88l-2.35-6.83a1.26 1.26 0 0 0-1.41-.7c-2.59.94-6.35 2.82-15.29 2.82-17.42 0-16.85-14.74-16.94-16.7h37.17a1.23 1.23 0 0 0 1.17-.94c-.29 0 2.07-14.7-6.09-24.23zm36.69 52.69c13.17 0 21.41-7.06 21.41-18.11 0-11.76-11.7-15.17-17.88-17.17-4.14-1.66-13.41-3.38-13.41-8.94 0-3.76 3.29-6.35 8.47-6.35a38.11 38.11 0 0 1 16.7 4.23s1.18.71 1.65-.47c.23-.7 2.35-6.58 2.58-7.29a1.13 1.13 0 0 0-.7-1.41c-7.91-4.9-16.74-4.94-20.23-4.94-12 0-20.46 7.29-20.46 17.64 0 12.46 11.48 15.44 17.87 17.17 6.11 2 13.17 3.26 13.17 8.7 0 4-3.52 7.06-9.17 7.06a31.8 31.8 0 0 1-19-6.35 1 1 0 0 0-1.65.71l-2.35 7.52c-.47.94.23 1.18.23 1.41 1.72 1.4 10.33 6.59 22.79 6.59zM357.09 224c0-.71-.24-1.18-1.18-1.18h-11.76c0-.14.94-8.94 4.47-12.47 4.16-4.15 11.76-1.64 12-1.64 1.17.47 1.41 0 1.64-.47l2.83-7.77c.7-.94 0-1.17-.24-1.41-5.09-2-17.35-2.87-24.46 4.24-5.48 5.48-7 13.92-8 19.52h-8.47a1.28 1.28 0 0 0-1.17 1.18l-1.42 7.76c0 .7.24 1.17 1.18 1.17h8.23c-8.51 47.9-8.75 50.21-10.35 55.52-1.08 3.62-3.29 6.9-5.88 7.76-.09 0-3.88 1.68-9.64-.24 0 0-.94-.47-1.41.71-.24.71-2.59 6.82-2.83 7.53s0 1.41.47 1.41c5.11 2 13 1.77 17.88 0 6.28-2.28 9.72-7.89 11.53-12.94 2.75-7.71 2.81-9.79 11.76-59.74h12.23a1.29 1.29 0 0 0 1.18-1.18zm53.39 16c-.56-1.68-5.1-18.11-25.17-18.11-15.25 0-23 10-25.16 18.11-1 3-3.18 14 0 23.52.09.3 4.41 18.12 25.16 18.12 14.95 0 22.9-9.61 25.17-18.12 3.21-9.61 1.01-20.52 0-23.52zm45.4-16.7c-5-1.65-16.62-1.9-22.11 5.41v-4.47a1.11 1.11 0 0 0-1.18-1.17h-9.4a1.11 1.11 0 0 0-1.18 1.17v55.28a1.12 1.12 0 0 0 1.18 1.18h9.64a1.12 1.12 0 0 0 1.18-1.18v-27.77c0-2.91.05-11.37 4.46-15.05 4.9-4.9 12-3.36 13.41-3.06a1.57 1.57 0 0 0 1.41-.94 74 74 0 0 0 3.06-8 1.16 1.16 0 0 0-.47-1.41zm46.81 54.1l-2.12-7.29c-.47-1.18-1.41-.71-1.41-.71-4.23 1.82-10.15 1.89-11.29 1.89-4.64 0-17.17-1.13-17.17-19.76 0-6.23 1.85-19.76 16.47-19.76a34.85 34.85 0 0 1 11.52 1.65s.94.47 1.18-.71c.94-2.59 1.64-4.47 2.59-7.53.23-.94-.47-1.17-.71-1.17-11.59-3.87-22.34-2.53-27.76 0-1.59.74-16.23 6.49-16.23 27.52 0 2.9-.58 30.11 28.94 30.11a44.45 44.45 0 0 0 15.52-2.83 1.3 1.3 0 0 0 .47-1.42zm53.87-39.52c-.8-3-5.37-16.23-22.35-16.23-16 0-23.52 10.11-25.64 18.59a38.58 38.58 0 0 0-1.65 11.76c0 25.87 18.84 29.4 29.88 29.4 10.82 0 16.46-2.35 18.58-3.76.47-.24.71-.71.24-1.88l-2.36-6.83a1.26 1.26 0 0 0-1.41-.7c-2.59.94-6.35 2.82-15.29 2.82-17.42 0-16.85-14.74-16.93-16.7h37.16a1.25 1.25 0 0 0 1.18-.94c-.24-.01.94-7.07-1.41-15.54zm-23.29-6.35c-10.33 0-13 9-13.64 14.12H546c-.88-11.92-7.62-14.13-12.73-14.13z"],sass:[640,512,[],"f41e","M301.84 378.92c-.3.6-.6 1.08 0 0zm249.13-87a131.16 131.16 0 0 0-58 13.5c-5.9-11.9-12-22.3-13-30.1-1.2-9.1-2.5-14.5-1.1-25.3s7.7-26.1 7.6-27.2-1.4-6.6-14.3-6.7-24 2.5-25.29 5.9a122.83 122.83 0 0 0-5.3 19.1c-2.3 11.7-25.79 53.5-39.09 75.3-4.4-8.5-8.1-16-8.9-22-1.2-9.1-2.5-14.5-1.1-25.3s7.7-26.1 7.6-27.2-1.4-6.6-14.29-6.7-24 2.5-25.3 5.9-2.7 11.4-5.3 19.1-33.89 77.3-42.08 95.4c-4.2 9.2-7.8 16.6-10.4 21.6-.4.8-.7 1.3-.9 1.7.3-.5.5-1 .5-.8-2.2 4.3-3.5 6.7-3.5 6.7v.1c-1.7 3.2-3.6 6.1-4.5 6.1-.6 0-1.9-8.4.3-19.9 4.7-24.2 15.8-61.8 15.7-63.1-.1-.7 2.1-7.2-7.3-10.7-9.1-3.3-12.4 2.2-13.2 2.2s-1.4 2-1.4 2 10.1-42.4-19.39-42.4c-18.4 0-44 20.2-56.58 38.5-7.9 4.3-25 13.6-43 23.5-6.9 3.8-14 7.7-20.7 11.4-.5-.5-.9-1-1.4-1.5-35.79-38.2-101.87-65.2-99.07-116.5 1-18.7 7.5-67.8 127.07-127.4 98-48.8 176.35-35.4 189.84-5.6 19.4 42.5-41.89 121.6-143.66 133-38.79 4.3-59.18-10.7-64.28-16.3-5.3-5.9-6.1-6.2-8.1-5.1-3.3 1.8-1.2 7 0 10.1 3 7.9 15.5 21.9 36.79 28.9 18.7 6.1 64.18 9.5 119.17-11.8 61.78-23.8 109.87-90.1 95.77-145.6C386.52 18.32 293-.18 204.57 31.22c-52.69 18.7-109.67 48.1-150.66 86.4-48.69 45.6-56.48 85.3-53.28 101.9 11.39 58.9 92.57 97.3 125.06 125.7-1.6.9-3.1 1.7-4.5 2.5-16.29 8.1-78.18 40.5-93.67 74.7-17.5 38.8 2.9 66.6 16.29 70.4 41.79 11.6 84.58-9.3 107.57-43.6s20.2-79.1 9.6-99.5c-.1-.3-.3-.5-.4-.8 4.2-2.5 8.5-5 12.8-7.5 8.29-4.9 16.39-9.4 23.49-13.3-4 10.8-6.9 23.8-8.4 42.6-1.8 22 7.3 50.5 19.1 61.7 5.2 4.9 11.49 5 15.39 5 13.8 0 20-11.4 26.89-25 8.5-16.6 16-35.9 16-35.9s-9.4 52.2 16.3 52.2c9.39 0 18.79-12.1 23-18.3v.1s.2-.4.7-1.2c1-1.5 1.5-2.4 1.5-2.4v-.3c3.8-6.5 12.1-21.4 24.59-46 16.2-31.8 31.69-71.5 31.69-71.5a201.24 201.24 0 0 0 6.2 25.8c2.8 9.5 8.7 19.9 13.4 30-3.8 5.2-6.1 8.2-6.1 8.2a.31.31 0 0 0 .1.2c-3 4-6.4 8.3-9.9 12.5-12.79 15.2-28 32.6-30 37.6-2.4 5.9-1.8 10.3 2.8 13.7 3.4 2.6 9.4 3 15.69 2.5 11.5-.8 19.6-3.6 23.5-5.4a82.2 82.2 0 0 0 20.19-10.6c12.5-9.2 20.1-22.4 19.4-39.8-.4-9.6-3.5-19.2-7.3-28.2 1.1-1.6 2.3-3.3 3.4-5C434.8 301.72 450.1 270 450.1 270a201.24 201.24 0 0 0 6.2 25.8c2.4 8.1 7.09 17 11.39 25.7-18.59 15.1-30.09 32.6-34.09 44.1-7.4 21.3-1.6 30.9 9.3 33.1 4.9 1 11.9-1.3 17.1-3.5a79.46 79.46 0 0 0 21.59-11.1c12.5-9.2 24.59-22.1 23.79-39.6-.3-7.9-2.5-15.8-5.4-23.4 15.7-6.6 36.09-10.2 62.09-7.2 55.68 6.5 66.58 41.3 64.48 55.8s-13.8 22.6-17.7 25-5.1 3.3-4.8 5.1c.5 2.6 2.3 2.5 5.6 1.9 4.6-.8 29.19-11.8 30.29-38.7 1.6-34-31.09-71.4-89-71.1zm-429.18 144.7c-18.39 20.1-44.19 27.7-55.28 21.3C54.61 451 59.31 421.42 82 400c13.8-13 31.59-25 43.39-32.4 2.7-1.6 6.6-4 11.4-6.9.8-.5 1.2-.7 1.2-.7.9-.6 1.9-1.1 2.9-1.7 8.29 30.4.3 57.2-19.1 78.3zm134.36-91.4c-6.4 15.7-19.89 55.7-28.09 53.6-7-1.8-11.3-32.3-1.4-62.3 5-15.1 15.6-33.1 21.9-40.1 10.09-11.3 21.19-14.9 23.79-10.4 3.5 5.9-12.2 49.4-16.2 59.2zm111 53c-2.7 1.4-5.2 2.3-6.4 1.6-.9-.5 1.1-2.4 1.1-2.4s13.9-14.9 19.4-21.7c3.2-4 6.9-8.7 10.89-13.9 0 .5.1 1 .1 1.6-.13 17.9-17.32 30-25.12 34.8zm85.58-19.5c-2-1.4-1.7-6.1 5-20.7 2.6-5.7 8.59-15.3 19-24.5a36.18 36.18 0 0 1 1.9 10.8c-.1 22.5-16.2 30.9-25.89 34.4z"],schlix:[448,512,[],"f3ea","M350.5 157.7l-54.2-46.1 73.4-39 78.3 44.2-97.5 40.9zM192 122.1l45.7-28.2 34.7 34.6-55.4 29-25-35.4zm-65.1 6.6l31.9-22.1L176 135l-36.7 22.5-12.4-28.8zm-23.3 88.2l-8.8-34.8 29.6-18.3 13.1 35.3-33.9 17.8zm-21.2-83.7l23.9-18.1 8.9 24-26.7 18.3-6.1-24.2zM59 206.5l-3.6-28.4 22.3-15.5 6.1 28.7L59 206.5zm-30.6 16.6l20.8-12.8 3.3 33.4-22.9 12-1.2-32.6zM1.4 268l19.2-10.2.4 38.2-21 8.8L1.4 268zm59.1 59.3l-28.3 8.3-1.6-46.8 25.1-10.7 4.8 49.2zM99 263.2l-31.1 13-5.2-40.8L90.1 221l8.9 42.2zM123.2 377l-41.6 5.9-8.1-63.5 35.2-10.8 14.5 68.4zm28.5-139.9l21.2 57.1-46.2 13.6-13.7-54.1 38.7-16.6zm85.7 230.5l-70.9-3.3-24.3-95.8 55.2-8.6 40 107.7zm-84.9-279.7l42.2-22.4 28 45.9-50.8 21.3-19.4-44.8zm41 94.9l61.3-18.7 52.8 86.6-79.8 11.3-34.3-79.2zm51.4-85.6l67.3-28.8 65.5 65.4-88.6 26.2-44.2-62.8z"],scribd:[384,512,[],"f28a","M42.3 252.7c-16.1-19-24.7-45.9-24.8-79.9 0-100.4 75.2-153.1 167.2-153.1 98.6-1.6 156.8 49 184.3 70.6l-50.5 72.1-37.3-24.6 26.9-38.6c-36.5-24-79.4-36.5-123-35.8-50.7-.8-111.7 27.2-111.7 76.2 0 18.7 11.2 20.7 28.6 15.6 23.3-5.3 41.9.6 55.8 14 26.4 24.3 23.2 67.6-.7 91.9-29.2 29.5-85.2 27.3-114.8-8.4zm317.7 5.9c-15.5-18.8-38.9-29.4-63.2-28.6-38.1-2-71.1 28-70.5 67.2-.7 16.8 6 33 18.4 44.3 14.1 13.9 33 19.7 56.3 14.4 17.4-5.1 28.6-3.1 28.6 15.6 0 4.3-.5 8.5-1.4 12.7-16.7 40.9-59.5 64.4-121.4 64.4-51.9.2-102.4-16.4-144.1-47.3l33.7-39.4-35.6-27.4L0 406.3l15.4 13.8c52.5 46.8 120.4 72.5 190.7 72.2 51.4 0 94.4-10.5 133.6-44.1 57.1-51.4 54.2-149.2 20.3-189.6z"],searchengin:[460,512,[],"f3eb","M220.6 130.3l-67.2 28.2V43.2L98.7 233.5l54.7-24.2v130.3l67.2-209.3zm-83.2-96.7l-1.3 4.7-15.2 52.9C80.6 106.7 52 145.8 52 191.5c0 52.3 34.3 95.9 83.4 105.5v53.6C57.5 340.1 0 272.4 0 191.6c0-80.5 59.8-147.2 137.4-158zm311.4 447.2c-11.2 11.2-23.1 12.3-28.6 10.5-5.4-1.8-27.1-19.9-60.4-44.4-33.3-24.6-33.6-35.7-43-56.7-9.4-20.9-30.4-42.6-57.5-52.4l-9.7-14.7c-24.7 16.9-53 26.9-81.3 28.7l2.1-6.6 15.9-49.5c46.5-11.9 80.9-54 80.9-104.2 0-54.5-38.4-102.1-96-107.1V32.3C254.4 37.4 320 106.8 320 191.6c0 33.6-11.2 64.7-29 90.4l14.6 9.6c9.8 27.1 31.5 48 52.4 57.4s32.2 9.7 56.8 43c24.6 33.2 42.7 54.9 44.5 60.3s.7 17.3-10.5 28.5zm-9.9-17.9c0-4.4-3.6-8-8-8s-8 3.6-8 8 3.6 8 8 8 8-3.6 8-8z"],sellcast:[448,512,[],"f2da","M353.4 32H94.7C42.6 32 0 74.6 0 126.6v258.7C0 437.4 42.6 480 94.7 480h258.7c52.1 0 94.7-42.6 94.7-94.6V126.6c0-52-42.6-94.6-94.7-94.6zm-50 316.4c-27.9 48.2-89.9 64.9-138.2 37.2-22.9 39.8-54.9 8.6-42.3-13.2l15.7-27.2c5.9-10.3 19.2-13.9 29.5-7.9 18.6 10.8-.1-.1 18.5 10.7 27.6 15.9 63.4 6.3 79.4-21.3 15.9-27.6 6.3-63.4-21.3-79.4-17.8-10.2-.6-.4-18.6-10.6-24.6-14.2-3.4-51.9 21.6-37.5 18.6 10.8-.1-.1 18.5 10.7 48.4 28 65.1 90.3 37.2 138.5zm21.8-208.8c-17 29.5-16.3 28.8-19 31.5-6.5 6.5-16.3 8.7-26.5 3.6-18.6-10.8.1.1-18.5-10.7-27.6-15.9-63.4-6.3-79.4 21.3s-6.3 63.4 21.3 79.4c0 0 18.5 10.6 18.6 10.6 24.6 14.2 3.4 51.9-21.6 37.5-18.6-10.8.1.1-18.5-10.7-48.2-27.8-64.9-90.1-37.1-138.4 27.9-48.2 89.9-64.9 138.2-37.2l4.8-8.4c14.3-24.9 52-3.3 37.7 21.5z"],sellsy:[640,512,[],"f213","M539.71 237.308c3.064-12.257 4.29-24.821 4.29-37.384C544 107.382 468.618 32 376.076 32c-77.22 0-144.634 53.012-163.02 127.781-15.322-13.176-34.934-20.53-55.157-20.53-46.271 0-83.962 37.69-83.962 83.961 0 7.354.92 15.015 3.065 22.369-42.9 20.225-70.785 63.738-70.785 111.234C6.216 424.843 61.68 480 129.401 480h381.198c67.72 0 123.184-55.157 123.184-123.184.001-56.384-38.916-106.025-94.073-119.508zM199.88 401.554c0 8.274-7.048 15.321-15.321 15.321H153.61c-8.274 0-15.321-7.048-15.321-15.321V290.626c0-8.273 7.048-15.321 15.321-15.321h30.949c8.274 0 15.321 7.048 15.321 15.321v110.928zm89.477 0c0 8.274-7.048 15.321-15.322 15.321h-30.949c-8.274 0-15.321-7.048-15.321-15.321V270.096c0-8.274 7.048-15.321 15.321-15.321h30.949c8.274 0 15.322 7.048 15.322 15.321v131.458zm89.477 0c0 8.274-7.047 15.321-15.321 15.321h-30.949c-8.274 0-15.322-7.048-15.322-15.321V238.84c0-8.274 7.048-15.321 15.322-15.321h30.949c8.274 0 15.321 7.048 15.321 15.321v162.714zm87.027 0c0 8.274-7.048 15.321-15.322 15.321h-28.497c-8.274 0-15.321-7.048-15.321-15.321V176.941c0-8.579 7.047-15.628 15.321-15.628h28.497c8.274 0 15.322 7.048 15.322 15.628v224.613z"],servicestack:[496,512,[],"f3ec","M88 216c81.7 10.2 273.7 102.3 304 232H0c99.5-8.1 184.5-137 88-232zm32-152c32.3 35.6 47.7 83.9 46.4 133.6C249.3 231.3 373.7 321.3 400 448h96C455.3 231.9 222.8 79.5 120 64z"],shirtsinbulk:[448,512,[],"f214","M100 410.3l30.6 13.4 4.4-9.9-30.6-13.4zm39.4 17.5l30.6 13.4 4.4-9.9-30.6-13.4zm172.1-14l4.4 9.9 30.6-13.4-4.4-9.9zM179.1 445l30.3 13.7 4.4-9.9-30.3-13.4zM60.4 392.8L91 406.2l4.4-9.6-30.6-13.7zm211.4 38.5l4.4 9.9 30.6-13.4-4.4-9.9zm-39.3 17.5l4.4 9.9 30.6-13.7-4.4-9.6zm118.4-52.2l4.4 9.6 30.6-13.4-4.4-9.9zM170 46.6h-33.5v10.5H170zm-47.2 0H89.2v10.5h33.5zm-47.3 0H42.3v10.5h33.3zm141.5 0h-33.2v10.5H217zm94.5 0H278v10.5h33.5zm47.3 0h-33.5v10.5h33.5zm-94.6 0H231v10.5h33.2zm141.5 0h-33.3v10.5h33.3zM52.8 351.1H42v33.5h10.8zm70-215.9H89.2v10.5h33.5zm-70 10.6h22.8v-10.5H42v33.5h10.8zm168.9 228.6c50.5 0 91.3-40.8 91.3-91.3 0-50.2-40.8-91.3-91.3-91.3-50.2 0-91.3 41.1-91.3 91.3 0 50.5 41.1 91.3 91.3 91.3zm-48.2-111.1c0-25.4 29.5-31.8 49.6-31.8 16.9 0 29.2 5.8 44.3 12l-8.8 16.9h-.9c-6.4-9.9-24.8-13.1-35.6-13.1-9 0-29.8 1.8-29.8 14.9 0 21.6 78.5-10.2 78.5 37.9 0 25.4-31.5 31.2-51 31.2-18.1 0-32.4-2.9-47.2-12.2l9-18.4h.9c6.1 12.2 23.6 14.9 35.9 14.9 8.7 0 32.7-1.2 32.7-14.3 0-26.1-77.6 6.3-77.6-38zM52.8 178.4H42V212h10.8zm342.4 206.2H406v-33.5h-10.8zM52.8 307.9H42v33.5h10.8zM0 3.7v406l221.7 98.6L448 409.7V3.7zm418.8 387.1L222 476.5 29.2 390.8V120.7h389.7v270.1zm0-299.3H29.2V32.9h389.7v58.6zm-366 130.1H42v33.5h10.8zm0 43.2H42v33.5h10.8zM170 135.2h-33.5v10.5H170zm225.2 163.1H406v-33.5h-10.8zm0-43.2H406v-33.5h-10.8zM217 135.2h-33.2v10.5H217zM395.2 212H406v-33.5h-10.8zm0 129.5H406V308h-10.8zm-131-206.3H231v10.5h33.2zm47.3 0H278v10.5h33.5zm83.7 33.6H406v-33.5h-33.5v10.5h22.8zm-36.4-33.6h-33.5v10.5h33.5z"],shopify:[448,512,[],"f957","M388.32,104.1a4.66,4.66,0,0,0-4.4-4c-2,0-37.23-.8-37.23-.8s-21.61-20.82-29.62-28.83V503.2L442.76,472S388.72,106.5,388.32,104.1ZM288.65,70.47a116.67,116.67,0,0,0-7.21-17.61C271,32.85,255.42,22,237,22a15,15,0,0,0-4,.4c-.4-.8-1.2-1.2-1.6-2C223.4,11.63,213,7.63,200.58,8c-24,.8-48,18-67.25,48.83-13.61,21.62-24,48.84-26.82,70.06-27.62,8.4-46.83,14.41-47.23,14.81-14,4.4-14.41,4.8-16,18-1.2,10-38,291.82-38,291.82L307.86,504V65.67a41.66,41.66,0,0,0-4.4.4S297.86,67.67,288.65,70.47ZM233.41,87.69c-16,4.8-33.63,10.4-50.84,15.61,4.8-18.82,14.41-37.63,25.62-50,4.4-4.4,10.41-9.61,17.21-12.81C232.21,54.86,233.81,74.48,233.41,87.69ZM200.58,24.44A27.49,27.49,0,0,1,215,28c-6.4,3.2-12.81,8.41-18.81,14.41-15.21,16.42-26.82,42-31.62,66.45-14.42,4.41-28.83,8.81-42,12.81C131.33,83.28,163.75,25.24,200.58,24.44ZM154.15,244.61c1.6,25.61,69.25,31.22,73.25,91.66,2.8,47.64-25.22,80.06-65.65,82.47-48.83,3.2-75.65-25.62-75.65-25.62l10.4-44s26.82,20.42,48.44,18.82c14-.8,19.22-12.41,18.81-20.42-2-33.62-57.24-31.62-60.84-86.86-3.2-46.44,27.22-93.27,94.47-97.68,26-1.6,39.23,4.81,39.23,4.81L221.4,225.39s-17.21-8-37.63-6.4C154.15,221,153.75,239.8,154.15,244.61ZM249.42,82.88c0-12-1.6-29.22-7.21-43.63,18.42,3.6,27.22,24,31.23,36.43Q262.63,78.68,249.42,82.88Z"],shopware:[512,512,[],"f5b5","M403.5 455.41A246.17 246.17 0 0 1 256 504C118.81 504 8 393 8 256 8 118.81 119 8 256 8a247.39 247.39 0 0 1 165.7 63.5 3.57 3.57 0 0 1-2.86 6.18A418.62 418.62 0 0 0 362.13 74c-129.36 0-222.4 53.47-222.4 155.35 0 109 92.13 145.88 176.83 178.73 33.64 13 65.4 25.36 87 41.59a3.58 3.58 0 0 1 0 5.72zM503 233.09a3.64 3.64 0 0 0-1.27-2.44c-51.76-43-93.62-60.48-144.48-60.48-84.13 0-80.25 52.17-80.25 53.63 0 42.6 52.06 62 112.34 84.49 31.07 11.59 63.19 23.57 92.68 39.93a3.57 3.57 0 0 0 5-1.82A249 249 0 0 0 503 233.09z"],simplybuilt:[512,512,[],"f215","M481.2 64h-106c-14.5 0-26.6 11.8-26.6 26.3v39.6H163.3V90.3c0-14.5-12-26.3-26.6-26.3h-106C16.1 64 4.3 75.8 4.3 90.3v331.4c0 14.5 11.8 26.3 26.6 26.3h450.4c14.8 0 26.6-11.8 26.6-26.3V90.3c-.2-14.5-12-26.3-26.7-26.3zM149.8 355.8c-36.6 0-66.4-29.7-66.4-66.4 0-36.9 29.7-66.6 66.4-66.6 36.9 0 66.6 29.7 66.6 66.6 0 36.7-29.7 66.4-66.6 66.4zm212.4 0c-36.9 0-66.6-29.7-66.6-66.6 0-36.6 29.7-66.4 66.6-66.4 36.6 0 66.4 29.7 66.4 66.4 0 36.9-29.8 66.6-66.4 66.6z"],sistrix:[448,512,[],"f3ee","M448 449L301.2 300.2c20-27.9 31.9-62.2 31.9-99.2 0-93.1-74.7-168.9-166.5-168.9C74.7 32 0 107.8 0 200.9s74.7 168.9 166.5 168.9c39.8 0 76.3-14.2 105-37.9l146 148.1 30.5-31zM166.5 330.8c-70.6 0-128.1-58.3-128.1-129.9S95.9 71 166.5 71s128.1 58.3 128.1 129.9-57.4 129.9-128.1 129.9z"],sith:[448,512,[],"f512","M0 32l69.71 118.75-58.86-11.52 69.84 91.03a146.741 146.741 0 0 0 0 51.45l-69.84 91.03 58.86-11.52L0 480l118.75-69.71-11.52 58.86 91.03-69.84c17.02 3.04 34.47 3.04 51.48 0l91.03 69.84-11.52-58.86L448 480l-69.71-118.78 58.86 11.52-69.84-91.03c3.03-17.01 3.04-34.44 0-51.45l69.84-91.03-58.86 11.52L448 32l-118.75 69.71 11.52-58.9-91.06 69.87c-8.5-1.52-17.1-2.29-25.71-2.29s-17.21.78-25.71 2.29l-91.06-69.87 11.52 58.9L0 32zm224 99.78c31.8 0 63.6 12.12 87.85 36.37 48.5 48.5 48.49 127.21 0 175.7s-127.2 48.46-175.7-.03c-48.5-48.5-48.49-127.21 0-175.7 24.24-24.25 56.05-36.34 87.85-36.34zm0 36.66c-22.42 0-44.83 8.52-61.92 25.61-34.18 34.18-34.19 89.68 0 123.87s89.65 34.18 123.84 0c34.18-34.18 34.19-89.68 0-123.87-17.09-17.09-39.5-25.61-61.92-25.61z"],sketch:[512,512,[],"f7c6","M27.5 162.2L9 187.1h90.5l6.9-130.7-78.9 105.8zM396.3 45.7L267.7 32l135.7 147.2-7.1-133.5zM112.2 218.3l-11.2-22H9.9L234.8 458zm2-31.2h284l-81.5-88.5L256.3 33zm297.3 9.1L277.6 458l224.8-261.7h-90.9zM415.4 69L406 56.4l.9 17.3 6.1 113.4h90.3zM113.5 93.5l-4.6 85.6L244.7 32 116.1 45.7zm287.7 102.7h-290l42.4 82.9L256.3 480l144.9-283.8z"],skyatlas:[640,512,[],"f216","M640 329.3c0 65.9-52.5 114.4-117.5 114.4-165.9 0-196.6-249.7-359.7-249.7-146.9 0-147.1 212.2 5.6 212.2 42.5 0 90.9-17.8 125.3-42.5 5.6-4.1 16.9-16.3 22.8-16.3s10.9 5 10.9 10.9c0 7.8-13.1 19.1-18.7 24.1-40.9 35.6-100.3 61.2-154.7 61.2-83.4.1-154-59-154-144.9s67.5-149.1 152.8-149.1c185.3 0 222.5 245.9 361.9 245.9 99.9 0 94.8-139.7 3.4-139.7-17.5 0-35 11.6-46.9 11.6-8.4 0-15.9-7.2-15.9-15.6 0-11.6 5.3-23.7 5.3-36.3 0-66.6-50.9-114.7-116.9-114.7-53.1 0-80 36.9-88.8 36.9-6.2 0-11.2-5-11.2-11.2 0-5.6 4.1-10.3 7.8-14.4 25.3-28.8 64.7-43.7 102.8-43.7 79.4 0 139.1 58.4 139.1 137.8 0 6.9-.3 13.7-1.2 20.6 11.9-3.1 24.1-4.7 35.9-4.7 60.7 0 111.9 45.3 111.9 107.2z"],skype:[448,512,[],"f17e","M424.7 299.8c2.9-14 4.7-28.9 4.7-43.8 0-113.5-91.9-205.3-205.3-205.3-14.9 0-29.7 1.7-43.8 4.7C161.3 40.7 137.7 32 112 32 50.2 32 0 82.2 0 144c0 25.7 8.7 49.3 23.3 68.2-2.9 14-4.7 28.9-4.7 43.8 0 113.5 91.9 205.3 205.3 205.3 14.9 0 29.7-1.7 43.8-4.7 19 14.6 42.6 23.3 68.2 23.3 61.8 0 112-50.2 112-112 .1-25.6-8.6-49.2-23.2-68.1zm-194.6 91.5c-65.6 0-120.5-29.2-120.5-65 0-16 9-30.6 29.5-30.6 31.2 0 34.1 44.9 88.1 44.9 25.7 0 42.3-11.4 42.3-26.3 0-18.7-16-21.6-42-28-62.5-15.4-117.8-22-117.8-87.2 0-59.2 58.6-81.1 109.1-81.1 55.1 0 110.8 21.9 110.8 55.4 0 16.9-11.4 31.8-30.3 31.8-28.3 0-29.2-33.5-75-33.5-25.7 0-42 7-42 22.5 0 19.8 20.8 21.8 69.1 33 41.4 9.3 90.7 26.8 90.7 77.6 0 59.1-57.1 86.5-112 86.5z"],slack:[448,512,[],"f198","M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z"],"slack-hash":[448,512,[],"f3ef","M446.2 270.4c-6.2-19-26.9-29.1-46-22.9l-45.4 15.1-30.3-90 45.4-15.1c19.1-6.2 29.1-26.8 23-45.9-6.2-19-26.9-29.1-46-22.9l-45.4 15.1-15.7-47c-6.2-19-26.9-29.1-46-22.9-19.1 6.2-29.1 26.8-23 45.9l15.7 47-93.4 31.2-15.7-47c-6.2-19-26.9-29.1-46-22.9-19.1 6.2-29.1 26.8-23 45.9l15.7 47-45.3 15c-19.1 6.2-29.1 26.8-23 45.9 5 14.5 19.1 24 33.6 24.6 6.8 1 12-1.6 57.7-16.8l30.3 90L78 354.8c-19 6.2-29.1 26.9-23 45.9 5 14.5 19.1 24 33.6 24.6 6.8 1 12-1.6 57.7-16.8l15.7 47c5.9 16.9 24.7 29 46 22.9 19.1-6.2 29.1-26.8 23-45.9l-15.7-47 93.6-31.3 15.7 47c5.9 16.9 24.7 29 46 22.9 19.1-6.2 29.1-26.8 23-45.9l-15.7-47 45.4-15.1c19-6 29.1-26.7 22.9-45.7zm-254.1 47.2l-30.3-90.2 93.5-31.3 30.3 90.2-93.5 31.3z"],slideshare:[512,512,[],"f1e7","M187.7 153.7c-34 0-61.7 25.7-61.7 57.7 0 31.7 27.7 57.7 61.7 57.7s61.7-26 61.7-57.7c0-32-27.7-57.7-61.7-57.7zm143.4 0c-34 0-61.7 25.7-61.7 57.7 0 31.7 27.7 57.7 61.7 57.7 34.3 0 61.7-26 61.7-57.7.1-32-27.4-57.7-61.7-57.7zm156.6 90l-6 4.3V49.7c0-27.4-20.6-49.7-46-49.7H76.6c-25.4 0-46 22.3-46 49.7V248c-2-1.4-4.3-2.9-6.3-4.3-15.1-10.6-25.1 4-16 17.7 18.3 22.6 53.1 50.3 106.3 72C58.3 525.1 252 555.7 248.9 457.5c0-.7.3-56.6.3-96.6 5.1 1.1 9.4 2.3 13.7 3.1 0 39.7.3 92.8.3 93.5-3.1 98.3 190.6 67.7 134.3-124 53.1-21.7 88-49.4 106.3-72 9.1-13.8-.9-28.3-16.1-17.8zm-30.5 19.2c-68.9 37.4-128.3 31.1-160.6 29.7-23.7-.9-32.6 9.1-33.7 24.9-10.3-7.7-18.6-15.5-20.3-17.1-5.1-5.4-13.7-8-27.1-7.7-31.7 1.1-89.7 7.4-157.4-28V72.3c0-34.9 8.9-45.7 40.6-45.7h317.7c30.3 0 40.9 12.9 40.9 45.7v190.6z"],snapchat:[496,512,[],"f2ab","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm169.5 338.9c-3.5 8.1-18.1 14-44.8 18.2-1.4 1.9-2.5 9.8-4.3 15.9-1.1 3.7-3.7 5.9-8.1 5.9h-.2c-6.2 0-12.8-2.9-25.8-2.9-17.6 0-23.7 4-37.4 13.7-14.5 10.3-28.4 19.1-49.2 18.2-21 1.6-38.6-11.2-48.5-18.2-13.8-9.7-19.8-13.7-37.4-13.7-12.5 0-20.4 3.1-25.8 3.1-5.4 0-7.5-3.3-8.3-6-1.8-6.1-2.9-14.1-4.3-16-13.8-2.1-44.8-7.5-45.5-21.4-.2-3.6 2.3-6.8 5.9-7.4 46.3-7.6 67.1-55.1 68-57.1 0-.1.1-.2.2-.3 2.5-5 3-9.2 1.6-12.5-3.4-7.9-17.9-10.7-24-13.2-15.8-6.2-18-13.4-17-18.3 1.6-8.5 14.4-13.8 21.9-10.3 5.9 2.8 11.2 4.2 15.7 4.2 3.3 0 5.5-.8 6.6-1.4-1.4-23.9-4.7-58 3.8-77.1C183.1 100 230.7 96 244.7 96c.6 0 6.1-.1 6.7-.1 34.7 0 68 17.8 84.3 54.3 8.5 19.1 5.2 53.1 3.8 77.1 1.1.6 2.9 1.3 5.7 1.4 4.3-.2 9.2-1.6 14.7-4.2 4-1.9 9.6-1.6 13.6 0 6.3 2.3 10.3 6.8 10.4 11.9.1 6.5-5.7 12.1-17.2 16.6-1.4.6-3.1 1.1-4.9 1.7-6.5 2.1-16.4 5.2-19 11.5-1.4 3.3-.8 7.5 1.6 12.5.1.1.1.2.2.3.9 2 21.7 49.5 68 57.1 4 1 7.1 5.5 4.9 10.8z"],"snapchat-ghost":[512,512,[],"f2ac","M510.846 392.673c-5.211 12.157-27.239 21.089-67.36 27.318-2.064 2.786-3.775 14.686-6.507 23.956-1.625 5.566-5.623 8.869-12.128 8.869l-.297-.005c-9.395 0-19.203-4.323-38.852-4.323-26.521 0-35.662 6.043-56.254 20.588-21.832 15.438-42.771 28.764-74.027 27.399-31.646 2.334-58.025-16.908-72.871-27.404-20.714-14.643-29.828-20.582-56.241-20.582-18.864 0-30.736 4.72-38.852 4.72-8.073 0-11.213-4.922-12.422-9.04-2.703-9.189-4.404-21.263-6.523-24.13-20.679-3.209-67.31-11.344-68.498-32.15a10.627 10.627 0 0 1 8.877-11.069c69.583-11.455 100.924-82.901 102.227-85.934.074-.176.155-.344.237-.515 3.713-7.537 4.544-13.849 2.463-18.753-5.05-11.896-26.872-16.164-36.053-19.796-23.715-9.366-27.015-20.128-25.612-27.504 2.437-12.836 21.725-20.735 33.002-15.453 8.919 4.181 16.843 6.297 23.547 6.297 5.022 0 8.212-1.204 9.96-2.171-2.043-35.936-7.101-87.29 5.687-115.969C158.122 21.304 229.705 15.42 250.826 15.42c.944 0 9.141-.089 10.11-.089 52.148 0 102.254 26.78 126.723 81.643 12.777 28.65 7.749 79.792 5.695 116.009 1.582.872 4.357 1.942 8.599 2.139 6.397-.286 13.815-2.389 22.069-6.257 6.085-2.846 14.406-2.461 20.48.058l.029.01c9.476 3.385 15.439 10.215 15.589 17.87.184 9.747-8.522 18.165-25.878 25.018-2.118.835-4.694 1.655-7.434 2.525-9.797 3.106-24.6 7.805-28.616 17.271-2.079 4.904-1.256 11.211 2.46 18.748.087.168.166.342.239.515 1.301 3.03 32.615 74.46 102.23 85.934 6.427 1.058 11.163 7.877 7.725 15.859z"],"snapchat-square":[448,512,[],"f2ad","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-6.5 314.9c-3.5 8.1-18.1 14-44.8 18.2-1.4 1.9-2.5 9.8-4.3 15.9-1.1 3.7-3.7 5.9-8.1 5.9h-.2c-6.2 0-12.8-2.9-25.8-2.9-17.6 0-23.7 4-37.4 13.7-14.5 10.3-28.4 19.1-49.2 18.2-21 1.6-38.6-11.2-48.5-18.2-13.8-9.7-19.8-13.7-37.4-13.7-12.5 0-20.4 3.1-25.8 3.1-5.4 0-7.5-3.3-8.3-6-1.8-6.1-2.9-14.1-4.3-16-13.8-2.1-44.8-7.5-45.5-21.4-.2-3.6 2.3-6.8 5.9-7.4 46.3-7.6 67.1-55.1 68-57.1 0-.1.1-.2.2-.3 2.5-5 3-9.2 1.6-12.5-3.4-7.9-17.9-10.7-24-13.2-15.8-6.2-18-13.4-17-18.3 1.6-8.5 14.4-13.8 21.9-10.3 5.9 2.8 11.2 4.2 15.7 4.2 3.3 0 5.5-.8 6.6-1.4-1.4-23.9-4.7-58 3.8-77.1C159.1 100 206.7 96 220.7 96c.6 0 6.1-.1 6.7-.1 34.7 0 68 17.8 84.3 54.3 8.5 19.1 5.2 53.1 3.8 77.1 1.1.6 2.9 1.3 5.7 1.4 4.3-.2 9.2-1.6 14.7-4.2 4-1.9 9.6-1.6 13.6 0 6.3 2.3 10.3 6.8 10.4 11.9.1 6.5-5.7 12.1-17.2 16.6-1.4.6-3.1 1.1-4.9 1.7-6.5 2.1-16.4 5.2-19 11.5-1.4 3.3-.8 7.5 1.6 12.5.1.1.1.2.2.3.9 2 21.7 49.5 68 57.1 4 1 7.1 5.5 4.9 10.8z"],soundcloud:[640,512,[],"f1be","M111.4 256.3l5.8 65-5.8 68.3c-.3 2.5-2.2 4.4-4.4 4.4s-4.2-1.9-4.2-4.4l-5.6-68.3 5.6-65c0-2.2 1.9-4.2 4.2-4.2 2.2 0 4.1 2 4.4 4.2zm21.4-45.6c-2.8 0-4.7 2.2-5 5l-5 105.6 5 68.3c.3 2.8 2.2 5 5 5 2.5 0 4.7-2.2 4.7-5l5.8-68.3-5.8-105.6c0-2.8-2.2-5-4.7-5zm25.5-24.1c-3.1 0-5.3 2.2-5.6 5.3l-4.4 130 4.4 67.8c.3 3.1 2.5 5.3 5.6 5.3 2.8 0 5.3-2.2 5.3-5.3l5.3-67.8-5.3-130c0-3.1-2.5-5.3-5.3-5.3zM7.2 283.2c-1.4 0-2.2 1.1-2.5 2.5L0 321.3l4.7 35c.3 1.4 1.1 2.5 2.5 2.5s2.2-1.1 2.5-2.5l5.6-35-5.6-35.6c-.3-1.4-1.1-2.5-2.5-2.5zm23.6-21.9c-1.4 0-2.5 1.1-2.5 2.5l-6.4 57.5 6.4 56.1c0 1.7 1.1 2.8 2.5 2.8s2.5-1.1 2.8-2.5l7.2-56.4-7.2-57.5c-.3-1.4-1.4-2.5-2.8-2.5zm25.3-11.4c-1.7 0-3.1 1.4-3.3 3.3L47 321.3l5.8 65.8c.3 1.7 1.7 3.1 3.3 3.1 1.7 0 3.1-1.4 3.1-3.1l6.9-65.8-6.9-68.1c0-1.9-1.4-3.3-3.1-3.3zm25.3-2.2c-1.9 0-3.6 1.4-3.6 3.6l-5.8 70 5.8 67.8c0 2.2 1.7 3.6 3.6 3.6s3.6-1.4 3.9-3.6l6.4-67.8-6.4-70c-.3-2.2-2-3.6-3.9-3.6zm241.4-110.9c-1.1-.8-2.8-1.4-4.2-1.4-2.2 0-4.2.8-5.6 1.9-1.9 1.7-3.1 4.2-3.3 6.7v.8l-3.3 176.7 1.7 32.5 1.7 31.7c.3 4.7 4.2 8.6 8.9 8.6s8.6-3.9 8.6-8.6l3.9-64.2-3.9-177.5c-.4-3-2-5.8-4.5-7.2zm-26.7 15.3c-1.4-.8-2.8-1.4-4.4-1.4s-3.1.6-4.4 1.4c-2.2 1.4-3.6 3.9-3.6 6.7l-.3 1.7-2.8 160.8s0 .3 3.1 65.6v.3c0 1.7.6 3.3 1.7 4.7 1.7 1.9 3.9 3.1 6.4 3.1 2.2 0 4.2-1.1 5.6-2.5 1.7-1.4 2.5-3.3 2.5-5.6l.3-6.7 3.1-58.6-3.3-162.8c-.3-2.8-1.7-5.3-3.9-6.7zm-111.4 22.5c-3.1 0-5.8 2.8-5.8 6.1l-4.4 140.6 4.4 67.2c.3 3.3 2.8 5.8 5.8 5.8 3.3 0 5.8-2.5 6.1-5.8l5-67.2-5-140.6c-.2-3.3-2.7-6.1-6.1-6.1zm376.7 62.8c-10.8 0-21.1 2.2-30.6 6.1-6.4-70.8-65.8-126.4-138.3-126.4-17.8 0-35 3.3-50.3 9.4-6.1 2.2-7.8 4.4-7.8 9.2v249.7c0 5 3.9 8.6 8.6 9.2h218.3c43.3 0 78.6-35 78.6-78.3.1-43.6-35.2-78.9-78.5-78.9zm-296.7-60.3c-4.2 0-7.5 3.3-7.8 7.8l-3.3 136.7 3.3 65.6c.3 4.2 3.6 7.5 7.8 7.5 4.2 0 7.5-3.3 7.5-7.5l3.9-65.6-3.9-136.7c-.3-4.5-3.3-7.8-7.5-7.8zm-53.6-7.8c-3.3 0-6.4 3.1-6.4 6.7l-3.9 145.3 3.9 66.9c.3 3.6 3.1 6.4 6.4 6.4 3.6 0 6.4-2.8 6.7-6.4l4.4-66.9-4.4-145.3c-.3-3.6-3.1-6.7-6.7-6.7zm26.7 3.4c-3.9 0-6.9 3.1-6.9 6.9L227 321.3l3.9 66.4c.3 3.9 3.1 6.9 6.9 6.9s6.9-3.1 6.9-6.9l4.2-66.4-4.2-141.7c0-3.9-3-6.9-6.9-6.9z"],sourcetree:[448,512,[],"f7d3","M427.2 203c0-112.1-90.9-203-203-203C112.1-.2 21.2 90.6 21 202.6A202.86 202.86 0 0 0 161.5 396v101.7a14.3 14.3 0 0 0 14.3 14.3h96.4a14.3 14.3 0 0 0 14.3-14.3V396.1A203.18 203.18 0 0 0 427.2 203zm-271.6 0c0-90.8 137.3-90.8 137.3 0-.1 89.9-137.3 91-137.3 0z"],speakap:[448,512,[],"f3f3","M64 391.78C-15.41 303.59-8 167.42 80.64 87.64s224.8-73 304.21 15.24 72 224.36-16.64 304.14c-18.74 16.87 64 43.09 42 52.26-82.06 34.21-253.91 35-346.23-67.5zm213.31-211.6l38.5-40.86c-9.61-8.89-32-26.83-76.17-27.6-52.33-.91-95.86 28.3-96.77 80-.2 11.33.29 36.72 29.42 54.83 34.46 21.42 86.52 21.51 86 52.26-.37 21.28-26.42 25.81-38.59 25.6-3-.05-30.23-.46-47.61-24.62l-40 42.61c28.16 27 59 32.62 83.49 33.05 10.23.18 96.42.33 97.84-81 .28-15.81-2.07-39.72-28.86-56.59-34.36-21.64-85-19.45-84.43-49.75.41-23.25 31-25.37 37.53-25.26.43 0 26.62.26 39.62 17.37z"],"speaker-deck":[512,512,[],"f83c","M213.86 296H100a100 100 0 0 1 0-200h132.84a40 40 0 0 1 0 80H98c-26.47 0-26.45 40 0 40h113.82a100 100 0 0 1 0 200H40a40 40 0 0 1 0-80h173.86c26.48 0 26.46-40 0-40zM298 416a120.21 120.21 0 0 0 51.11-80h64.55a19.83 19.83 0 0 0 19.66-20V196a19.83 19.83 0 0 0-19.66-20H296.42a60.77 60.77 0 0 0 0-80h136.93c43.44 0 78.65 35.82 78.65 80v160c0 44.18-35.21 80-78.65 80z"],spotify:[496,512,[],"f1bc","M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm100.7 364.9c-4.2 0-6.8-1.3-10.7-3.6-62.4-37.6-135-39.2-206.7-24.5-3.9 1-9 2.6-11.9 2.6-9.7 0-15.8-7.7-15.8-15.8 0-10.3 6.1-15.2 13.6-16.8 81.9-18.1 165.6-16.5 237 26.2 6.1 3.9 9.7 7.4 9.7 16.5s-7.1 15.4-15.2 15.4zm26.9-65.6c-5.2 0-8.7-2.3-12.3-4.2-62.5-37-155.7-51.9-238.6-29.4-4.8 1.3-7.4 2.6-11.9 2.6-10.7 0-19.4-8.7-19.4-19.4s5.2-17.8 15.5-20.7c27.8-7.8 56.2-13.6 97.8-13.6 64.9 0 127.6 16.1 177 45.5 8.1 4.8 11.3 11 11.3 19.7-.1 10.8-8.5 19.5-19.4 19.5zm31-76.2c-5.2 0-8.4-1.3-12.9-3.9-71.2-42.5-198.5-52.7-280.9-29.7-3.6 1-8.1 2.6-12.9 2.6-13.2 0-23.3-10.3-23.3-23.6 0-13.6 8.4-21.3 17.4-23.9 35.2-10.3 74.6-15.2 117.5-15.2 73 0 149.5 15.2 205.4 47.8 7.8 4.5 12.9 10.7 12.9 22.6 0 13.6-11 23.3-23.2 23.3z"],squarespace:[512,512,[],"f5be","M186.12 343.34c-9.65 9.65-9.65 25.29 0 34.94 9.65 9.65 25.29 9.65 34.94 0L378.24 221.1c19.29-19.29 50.57-19.29 69.86 0s19.29 50.57 0 69.86L293.95 445.1c19.27 19.29 50.53 19.31 69.82.04l.04-.04 119.25-119.24c38.59-38.59 38.59-101.14 0-139.72-38.59-38.59-101.15-38.59-139.72 0l-157.22 157.2zm244.53-104.8c-9.65-9.65-25.29-9.65-34.93 0l-157.2 157.18c-19.27 19.29-50.53 19.31-69.82.05l-.05-.05c-9.64-9.64-25.27-9.65-34.92-.01l-.01.01c-9.65 9.64-9.66 25.28-.02 34.93l.02.02c38.58 38.57 101.14 38.57 139.72 0l157.2-157.2c9.65-9.65 9.65-25.29.01-34.93zm-261.99 87.33l157.18-157.18c9.64-9.65 9.64-25.29 0-34.94-9.64-9.64-25.27-9.64-34.91 0L133.72 290.93c-19.28 19.29-50.56 19.3-69.85.01l-.01-.01c-19.29-19.28-19.31-50.54-.03-69.84l.03-.03L218.03 66.89c-19.28-19.29-50.55-19.3-69.85-.02l-.02.02L28.93 186.14c-38.58 38.59-38.58 101.14 0 139.72 38.6 38.59 101.13 38.59 139.73.01zm-87.33-52.4c9.64 9.64 25.27 9.64 34.91 0l157.21-157.19c19.28-19.29 50.55-19.3 69.84-.02l.02.02c9.65 9.65 25.29 9.65 34.93 0 9.65-9.65 9.65-25.29 0-34.93-38.59-38.59-101.13-38.59-139.72 0L81.33 238.54c-9.65 9.64-9.65 25.28-.01 34.93h.01z"],"stack-exchange":[448,512,[],"f18d","M17.7 332.3h412.7v22c0 37.7-29.3 68-65.3 68h-19L259.3 512v-89.7H83c-36 0-65.3-30.3-65.3-68v-22zm0-23.6h412.7v-85H17.7v85zm0-109.4h412.7v-85H17.7v85zM365 0H83C47 0 17.7 30.3 17.7 67.7V90h412.7V67.7C430.3 30.3 401 0 365 0z"],"stack-overflow":[384,512,[],"f16c","M290.7 311L95 269.7 86.8 309l195.7 41zm51-87L188.2 95.7l-25.5 30.8 153.5 128.3zm-31.2 39.7L129.2 179l-16.7 36.5L293.7 300zM262 32l-32 24 119.3 160.3 32-24zm20.5 328h-200v39.7h200zm39.7 80H42.7V320h-40v160h359.5V320h-40z"],stackpath:[448,512,[],"f842","M244.6 232.4c0 8.5-4.26 20.49-21.34 20.49h-19.61v-41.47h19.61c17.13 0 21.34 12.36 21.34 20.98zM448 32v448H0V32zM151.3 287.84c0-21.24-12.12-34.54-46.72-44.85-20.57-7.41-26-10.91-26-18.63s7-14.61 20.41-14.61c14.09 0 20.79 8.45 20.79 18.35h30.7l.19-.57c.5-19.57-15.06-41.65-51.12-41.65-23.37 0-52.55 10.75-52.55 38.29 0 19.4 9.25 31.29 50.74 44.37 17.26 6.15 21.91 10.4 21.91 19.48 0 15.2-19.13 14.23-19.47 14.23-20.4 0-25.65-9.1-25.65-21.9h-30.8l-.18.56c-.68 31.32 28.38 45.22 56.63 45.22 29.98 0 51.12-13.55 51.12-38.29zm125.38-55.63c0-25.3-18.43-45.46-53.42-45.46h-51.78v138.18h32.17v-47.36h19.61c30.25 0 53.42-15.95 53.42-45.36zM297.94 325L347 186.78h-31.09L268 325zm106.52-138.22h-31.09L325.46 325h29.94z"],staylinked:[440,512,[],"f3f5","M382.7 292.5l2.7 2.7-170-167.3c-3.5-3.5-9.7-3.7-13.8-.5L144.3 171c-4.2 3.2-4.6 8.7-1.1 12.2l68.1 64.3c3.6 3.5 9.9 3.7 14 .5l.1-.1c4.1-3.2 10.4-3 14 .5l84 81.3c3.6 3.5 3.2 9-.9 12.2l-93.2 74c-4.2 3.3-10.5 3.1-14.2-.4L63.2 268c-3.5-3.5-9.7-3.7-13.9-.5L3.5 302.4c-4.2 3.2-4.7 8.7-1.2 12.2L211 510.7s7.4 6.8 17.3-.8l198-163.9c4-3.2 4.4-8.7.7-12.2zm54.5-83.4L226.7 2.5c-1.5-1.2-8-5.5-16.3 1.1L3.6 165.7c-4.2 3.2-4.8 8.7-1.2 12.2l42.3 41.7 171.7 165.1c3.7 3.5 10.1 3.7 14.3.4l50.2-38.8-.3-.3 7.7-6c4.2-3.2 4.6-8.7.9-12.2l-57.1-54.4c-3.6-3.5-10-3.7-14.2-.5l-.1.1c-4.2 3.2-10.5 3.1-14.2-.4L109 180.8c-3.6-3.5-3.1-8.9 1.1-12.2l92.2-71.5c4.1-3.2 10.3-3 13.9.5l160.4 159c3.7 3.5 10 3.7 14.1.5l45.8-35.8c4.1-3.2 4.4-8.7.7-12.2z"],steam:[496,512,[],"f1b6","M496 256c0 137-111.2 248-248.4 248-113.8 0-209.6-76.3-239-180.4l95.2 39.3c6.4 32.1 34.9 56.4 68.9 56.4 39.2 0 71.9-32.4 70.2-73.5l84.5-60.2c52.1 1.3 95.8-40.9 95.8-93.5 0-51.6-42-93.5-93.7-93.5s-93.7 42-93.7 93.5v1.2L176.6 279c-15.5-.9-30.7 3.4-43.5 12.1L0 236.1C10.2 108.4 117.1 8 247.6 8 384.8 8 496 119 496 256zM155.7 384.3l-30.5-12.6a52.79 52.79 0 0 0 27.2 25.8c26.9 11.2 57.8-1.6 69-28.4 5.4-13 5.5-27.3.1-40.3-5.4-13-15.5-23.2-28.5-28.6-12.9-5.4-26.7-5.2-38.9-.6l31.5 13c19.8 8.2 29.2 30.9 20.9 50.7-8.3 19.9-31 29.2-50.8 21zm173.8-129.9c-34.4 0-62.4-28-62.4-62.3s28-62.3 62.4-62.3 62.4 28 62.4 62.3-27.9 62.3-62.4 62.3zm.1-15.6c25.9 0 46.9-21 46.9-46.8 0-25.9-21-46.8-46.9-46.8s-46.9 21-46.9 46.8c.1 25.8 21.1 46.8 46.9 46.8z"],"steam-square":[448,512,[],"f1b7","M185.2 356.5c7.7-18.5-1-39.7-19.6-47.4l-29.5-12.2c11.4-4.3 24.3-4.5 36.4.5 12.2 5.1 21.6 14.6 26.7 26.7 5 12.2 5 25.6-.1 37.7-10.5 25.1-39.4 37-64.6 26.5-11.6-4.8-20.4-13.6-25.4-24.2l28.5 11.8c18.6 7.8 39.9-.9 47.6-19.4zM400 32H48C21.5 32 0 53.5 0 80v160.7l116.6 48.1c12-8.2 26.2-12.1 40.7-11.3l55.4-80.2v-1.1c0-48.2 39.3-87.5 87.6-87.5s87.6 39.3 87.6 87.5c0 49.2-40.9 88.7-89.6 87.5l-79 56.3c1.6 38.5-29.1 68.8-65.7 68.8-31.8 0-58.5-22.7-64.5-52.7L0 319.2V432c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-99.7 222.5c-32.2 0-58.4-26.1-58.4-58.3s26.2-58.3 58.4-58.3 58.4 26.2 58.4 58.3-26.2 58.3-58.4 58.3zm.1-14.6c24.2 0 43.9-19.6 43.9-43.8 0-24.2-19.6-43.8-43.9-43.8-24.2 0-43.9 19.6-43.9 43.8 0 24.2 19.7 43.8 43.9 43.8z"],"steam-symbol":[448,512,[],"f3f6","M395.5 177.5c0 33.8-27.5 61-61 61-33.8 0-61-27.3-61-61s27.3-61 61-61c33.5 0 61 27.2 61 61zm52.5.2c0 63-51 113.8-113.7 113.8L225 371.3c-4 43-40.5 76.8-84.5 76.8-40.5 0-74.7-28.8-83-67L0 358V250.7L97.2 290c15.1-9.2 32.2-13.3 52-11.5l71-101.7c.5-62.3 51.5-112.8 114-112.8C397 64 448 115 448 177.7zM203 363c0-34.7-27.8-62.5-62.5-62.5-4.5 0-9 .5-13.5 1.5l26 10.5c25.5 10.2 38 39 27.7 64.5-10.2 25.5-39.2 38-64.7 27.5-10.2-4-20.5-8.3-30.7-12.2 10.5 19.7 31.2 33.2 55.2 33.2 34.7 0 62.5-27.8 62.5-62.5zm207.5-185.3c0-42-34.3-76.2-76.2-76.2-42.3 0-76.5 34.2-76.5 76.2 0 42.2 34.3 76.2 76.5 76.2 41.9.1 76.2-33.9 76.2-76.2z"],"sticker-mule":[576,512,[],"f3f7","M561.7 199.6c-1.3.3.3 0 0 0zm-6.2-77.4c-7.7-22.3-5.1-7.2-13.4-36.9-1.6-6.5-3.6-14.5-6.2-20-4.4-8.7-4.6-7.5-4.6-9.5 0-5.3 30.7-45.3 19-46.9-5.7-.6-12.2 11.6-20.6 17-8.6 4.2-8 5-10.3 5-2.6 0-5.7-3-6.2-5-2-5.7 1.9-25.9-3.6-25.9-3.6 0-12.3 24.8-17 25.8-5.2 1.3-27.9-11.4-75.1 18-25.3 13.2-86.9 65.2-87 65.3-6.7 4.7-20 4.7-35.5 16-44.4 30.1-109.6 9.4-110.7 9-110.6-26.8-128-15.2-159 11.5-20.8 17.9-23.7 36.5-24.2 38.9-4.2 20.4 5.2 48.3 6.7 64.3 1.8 19.3-2.7 17.7 7.7 98.3.5 1 4.1 0 5.1 1.5 0 8.4-3.8 12.1-4.1 13-1.5 4.5-1.5 10.5 0 16 2.3 8.2 8.2 37.2 8.2 46.9 0 41.8.4 44 2.6 49.4 3.9 10 12.5 9.1 17 12 3.1 3.5-.5 8.5 1 12.5.5 2 3.6 4 6.2 5 9.2 3.6 27 .3 29.9-2.5 1.6-1.5.5-4.5 3.1-5 5.1 0 10.8-.5 14.4-2.5 5.1-2.5 4.1-6 1.5-10.5-.4-.8-7-13.3-9.8-16-2.1-2-5.1-3-7.2-4.5-5.8-4.9-10.3-19.4-10.3-19.5-4.6-19.4-10.3-46.3-4.1-66.8 4.6-17.2 39.5-87.7 39.6-87.8 4.1-6.5 17-11.5 27.3-7 6 1.9 19.3 22 65.4 30.9 47.9 8.7 97.4-2 112.2-2 2.8 2-1.9 13-.5 38.9 0 26.4-.4 13.7-4.1 29.9-2.2 9.7 3.4 23.2-1.5 46.9-1.4 9.8-9.9 32.7-8.2 43.4.5 1 1 2 1.5 3.5.5 4.5 1.5 8.5 4.6 10 7.3 3.6 12-3.5 9.8 11.5-.7 3.1-2.6 12 1.5 15 4.4 3.7 30.6 3.4 36.5.5 2.6-1.5 1.6-4.5 6.4-7.4 1.9-.9 11.3-.4 11.3-6.5.3-1.8-9.2-19.9-9.3-20-2.6-3.5-9.2-4.5-11.3-8-6.9-10.1-1.7-52.6.5-59.4 3-11 5.6-22.4 8.7-32.4 11-42.5 10.3-50.6 16.5-68.3.8-1.8 6.4-23.1 10.3-29.9 9.3-17 21.7-32.4 33.5-47.4 18-22.9 34-46.9 52-69.8 6.1-7 8.2-13.7 18-8 10.8 5.7 21.6 7 31.9 17 14.6 12.8 10.2 18.2 11.8 22.9 1.5 5 7.7 10.5 14.9 9.5 10.4-2 13-2.5 13.4-2.5 2.6-.5 5.7-5 7.2-8 3.1-5.5 7.2-9 7.2-16.5 0-7.7-.4-2.8-20.6-52.9z"],strava:[384,512,[],"f428","M158.4 0L7 292h89.2l62.2-116.1L220.1 292h88.5zm150.2 292l-43.9 88.2-44.6-88.2h-67.6l112.2 220 111.5-220z"],stripe:[640,512,[],"f429","M165 144.7l-43.3 9.2-.2 142.4c0 26.3 19.8 43.3 46.1 43.3 14.6 0 25.3-2.7 31.2-5.9v-33.8c-5.7 2.3-33.7 10.5-33.7-15.7V221h33.7v-37.8h-33.7zm89.1 51.6l-2.7-13.1H213v153.2h44.3V233.3c10.5-13.8 28.2-11.1 33.9-9.3v-40.8c-6-2.1-26.7-6-37.1 13.1zm92.3-72.3l-44.6 9.5v36.2l44.6-9.5zM44.9 228.3c0-6.9 5.8-9.6 15.1-9.7 13.5 0 30.7 4.1 44.2 11.4v-41.8c-14.7-5.8-29.4-8.1-44.1-8.1-36 0-60 18.8-60 50.2 0 49.2 67.5 41.2 67.5 62.4 0 8.2-7.1 10.9-17 10.9-14.7 0-33.7-6.1-48.6-14.2v40c16.5 7.1 33.2 10.1 48.5 10.1 36.9 0 62.3-15.8 62.3-47.8 0-52.9-67.9-43.4-67.9-63.4zM640 261.6c0-45.5-22-81.4-64.2-81.4s-67.9 35.9-67.9 81.1c0 53.5 30.3 78.2 73.5 78.2 21.2 0 37.1-4.8 49.2-11.5v-33.4c-12.1 6.1-26 9.8-43.6 9.8-17.3 0-32.5-6.1-34.5-26.9h86.9c.2-2.3.6-11.6.6-15.9zm-87.9-16.8c0-20 12.3-28.4 23.4-28.4 10.9 0 22.5 8.4 22.5 28.4zm-112.9-64.6c-17.4 0-28.6 8.2-34.8 13.9l-2.3-11H363v204.8l44.4-9.4.1-50.2c6.4 4.7 15.9 11.2 31.4 11.2 31.8 0 60.8-23.2 60.8-79.6.1-51.6-29.3-79.7-60.5-79.7zm-10.6 122.5c-10.4 0-16.6-3.8-20.9-8.4l-.3-66c4.6-5.1 11-8.8 21.2-8.8 16.2 0 27.4 18.2 27.4 41.4.1 23.9-10.9 41.8-27.4 41.8zm-126.7 33.7h44.6V183.2h-44.6z"],"stripe-s":[384,512,[],"f42a","M155.3 154.6c0-22.3 18.6-30.9 48.4-30.9 43.4 0 98.5 13.3 141.9 36.7V26.1C298.3 7.2 251.1 0 203.8 0 88.1 0 11 60.4 11 161.4c0 157.9 216.8 132.3 216.8 200.4 0 26.4-22.9 34.9-54.7 34.9-47.2 0-108.2-19.5-156.1-45.5v128.5a396.09 396.09 0 0 0 156 32.4c118.6 0 200.3-51 200.3-153.6 0-170.2-218-139.7-218-203.9z"],studiovinari:[512,512,[],"f3f8","M480.3 187.7l4.2 28v28l-25.1 44.1-39.8 78.4-56.1 67.5-79.1 37.8-17.7 24.5-7.7 12-9.6 4s17.3-63.6 19.4-63.6c2.1 0 20.3.7 20.3.7l66.7-38.6-92.5 26.1-55.9 36.8-22.8 28-6.6 1.4 20.8-73.6 6.9-5.5 20.7 12.9 88.3-45.2 56.8-51.5 14.8-68.4-125.4 23.3 15.2-18.2-173.4-53.3 81.9-10.5-166-122.9L133.5 108 32.2 0l252.9 126.6-31.5-38L378 163 234.7 64l18.7 38.4-49.6-18.1L158.3 0l194.6 122L310 66.2l108 96.4 12-8.9-21-16.4 4.2-37.8L451 89.1l29.2 24.7 11.5 4.2-7 6.2 8.5 12-13.1 7.4-10.3 20.2 10.5 23.9z"],stumbleupon:[512,512,[],"f1a4","M502.9 266v69.7c0 62.1-50.3 112.4-112.4 112.4-61.8 0-112.4-49.8-112.4-111.3v-70.2l34.3 16 51.1-15.2V338c0 14.7 12 26.5 26.7 26.5S417 352.7 417 338v-72h85.9zm-224.7-58.2l34.3 16 51.1-15.2V173c0-60.5-51.1-109-112.1-109-60.8 0-112.1 48.2-112.1 108.2v162.4c0 14.9-12 26.7-26.7 26.7S86 349.5 86 334.6V266H0v69.7C0 397.7 50.3 448 112.4 448c61.6 0 112.4-49.5 112.4-110.8V176.9c0-14.7 12-26.7 26.7-26.7s26.7 12 26.7 26.7v30.9z"],"stumbleupon-circle":[496,512,[],"f1a3","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 177.5c-9.8 0-17.8 8-17.8 17.8v106.9c0 40.9-33.9 73.9-74.9 73.9-41.4 0-74.9-33.5-74.9-74.9v-46.5h57.3v45.8c0 10 8 17.8 17.8 17.8s17.8-7.9 17.8-17.8V200.1c0-40 34.2-72.1 74.7-72.1 40.7 0 74.7 32.3 74.7 72.6v23.7l-34.1 10.1-22.9-10.7v-20.6c.1-9.6-7.9-17.6-17.7-17.6zm167.6 123.6c0 41.4-33.5 74.9-74.9 74.9-41.2 0-74.9-33.2-74.9-74.2V263l22.9 10.7 34.1-10.1v47.1c0 9.8 8 17.6 17.8 17.6s17.8-7.9 17.8-17.6v-48h57.3c-.1 45.9-.1 46.4-.1 46.4z"],superpowers:[448,512,[],"f2dd","M448 32c-83.3 11-166.8 22-250 33-92 12.5-163.3 86.7-169 180-3.3 55.5 18 109.5 57.8 148.2L0 480c83.3-11 166.5-22 249.8-33 91.8-12.5 163.3-86.8 168.7-179.8 3.5-55.5-18-109.5-57.7-148.2L448 32zm-79.7 232.3c-4.2 79.5-74 139.2-152.8 134.5-79.5-4.7-140.7-71-136.3-151 4.5-79.2 74.3-139.3 153-134.5 79.3 4.7 140.5 71 136.1 151z"],supple:[640,512,[],"f3f9","M640 262.5c0 64.1-109 116.1-243.5 116.1-24.8 0-48.6-1.8-71.1-5 7.7.4 15.5.6 23.4.6 134.5 0 243.5-56.9 243.5-127.1 0-29.4-19.1-56.4-51.2-78 60 21.1 98.9 55.1 98.9 93.4zM47.7 227.9c-.1-70.2 108.8-127.3 243.3-127.6 7.9 0 15.6.2 23.3.5-22.5-3.2-46.3-4.9-71-4.9C108.8 96.3-.1 148.5 0 212.6c.1 38.3 39.1 72.3 99.3 93.3-32.3-21.5-51.5-48.6-51.6-78zm60.2 39.9s10.5 13.2 29.3 13.2c17.9 0 28.4-11.5 28.4-25.1 0-28-40.2-25.1-40.2-39.7 0-5.4 5.3-9.1 12.5-9.1 5.7 0 11.3 2.6 11.3 6.6v3.9h14.2v-7.9c0-12.1-15.4-16.8-25.4-16.8-16.5 0-28.5 10.2-28.5 24.1 0 26.6 40.2 25.4 40.2 39.9 0 6.6-5.8 10.1-12.3 10.1-11.9 0-20.7-10.1-20.7-10.1l-8.8 10.9zm120.8-73.6v54.4c0 11.3-7.1 17.8-17.8 17.8-10.7 0-17.8-6.5-17.8-17.7v-54.5h-15.8v55c0 18.9 13.4 31.9 33.7 31.9 20.1 0 33.4-13 33.4-31.9v-55h-15.7zm34.4 85.4h15.8v-29.5h15.5c16 0 27.2-11.5 27.2-28.1s-11.2-27.8-27.2-27.8h-39.1v13.4h7.8v72zm15.8-43v-29.1h12.9c8.7 0 13.7 5.7 13.7 14.4 0 8.9-5.1 14.7-14 14.7h-12.6zm57 43h15.8v-29.5h15.5c16 0 27.2-11.5 27.2-28.1s-11.2-27.8-27.2-27.8h-39.1v13.4h7.8v72zm15.7-43v-29.1h12.9c8.7 0 13.7 5.7 13.7 14.4 0 8.9-5 14.7-14 14.7h-12.6zm57.1 34.8c0 5.8 2.4 8.2 8.2 8.2h37.6c5.8 0 8.2-2.4 8.2-8.2v-13h-14.3v5.2c0 1.7-1 2.6-2.6 2.6h-18.6c-1.7 0-2.6-1-2.6-2.6v-61.2c0-5.7-2.4-8.2-8.2-8.2H401v13.4h5.2c1.7 0 2.6 1 2.6 2.6v61.2zm63.4 0c0 5.8 2.4 8.2 8.2 8.2H519c5.7 0 8.2-2.4 8.2-8.2v-13h-14.3v5.2c0 1.7-1 2.6-2.6 2.6h-19.7c-1.7 0-2.6-1-2.6-2.6v-20.3h27.7v-13.4H488v-22.4h19.2c1.7 0 2.6 1 2.6 2.6v5.2H524v-13c0-5.7-2.5-8.2-8.2-8.2h-51.6v13.4h7.8v63.9zm58.9-76v5.9h1.6v-5.9h2.7v-1.2h-7v1.2h2.7zm5.7-1.2v7.1h1.5v-5.7l2.3 5.7h1.3l2.3-5.7v5.7h1.5v-7.1h-2.3l-2.1 5.1-2.1-5.1h-2.4z"],suse:[640,512,[],"f7d6","M471.08 102.66s-.3 18.3-.3 20.3c-9.1-3-74.4-24.1-135.7-26.3-51.9-1.8-122.8-4.3-223 57.3-19.4 12.4-73.9 46.1-99.6 109.7C7 277-.12 307 7 335.06a111 111 0 0 0 16.5 35.7c17.4 25 46.6 41.6 78.1 44.4 44.4 3.9 78.1-16 90-53.3 8.2-25.8 0-63.6-31.5-82.9-25.6-15.7-53.3-12.1-69.2-1.6-13.9 9.2-21.8 23.5-21.6 39.2.3 27.8 24.3 42.6 41.5 42.6a49 49 0 0 0 15.8-2.7c6.5-1.8 13.3-6.5 13.3-14.9 0-12.1-11.6-14.8-16.8-13.9-2.9.5-4.5 2-11.8 2.4-2-.2-12-3.1-12-14V316c.2-12.3 13.2-18 25.5-16.9 32.3 2.8 47.7 40.7 28.5 65.7-18.3 23.7-76.6 23.2-99.7-20.4-26-49.2 12.7-111.2 87-98.4 33.2 5.7 83.6 35.5 102.4 104.3h45.9c-5.7-17.6-8.9-68.3 42.7-68.3 56.7 0 63.9 39.9 79.8 68.3H460c-12.8-18.3-21.7-38.7-18.9-55.8 5.6-33.8 39.7-18.4 82.4-17.4 66.5.4 102.1-27 103.1-28 3.7-3.1 6.5-15.8 7-17.7 1.3-5.1-3.2-2.4-3.2-2.4-8.7 5.2-30.5 15.2-50.9 15.6-25.3.5-76.2-25.4-81.6-28.2-.3-.4.1 1.2-11-25.5 88.4 58.3 118.3 40.5 145.2 21.7.8-.6 4.3-2.9 3.6-5.7-13.8-48.1-22.4-62.7-34.5-69.6-37-21.6-125-34.7-129.2-35.3.1-.1-.9-.3-.9.7zm60.4 72.8a37.54 37.54 0 0 1 38.9-36.3c33.4 1.2 48.8 42.3 24.4 65.2-24.2 22.7-64.4 4.6-63.3-28.9zm38.6-25.3a26.27 26.27 0 1 0 25.4 27.2 26.19 26.19 0 0 0-25.4-27.2zm4.3 28.8c-15.4 0-15.4-15.6 0-15.6s15.4 15.64 0 15.64z"],swift:[448,512,[],"f8e1","M448 156.09c0-4.51-.08-9-.2-13.52a196.31 196.31 0 0 0-2.58-29.42 99.62 99.62 0 0 0-9.22-28A94.08 94.08 0 0 0 394.84 44a99.17 99.17 0 0 0-28-9.22 195 195 0 0 0-29.43-2.59c-4.51-.12-9-.17-13.52-.2H124.14c-4.51 0-9 .08-13.52.2-2.45.07-4.91.15-7.37.27a171.68 171.68 0 0 0-22.06 2.32 103.06 103.06 0 0 0-21.21 6.1q-3.46 1.45-6.81 3.12a94.66 94.66 0 0 0-18.39 12.32c-1.88 1.61-3.69 3.28-5.43 5A93.86 93.86 0 0 0 12 85.17a99.45 99.45 0 0 0-9.22 28 196.31 196.31 0 0 0-2.54 29.4c-.13 4.51-.18 9-.21 13.52v199.83c0 4.51.08 9 .21 13.51a196.08 196.08 0 0 0 2.58 29.42 99.3 99.3 0 0 0 9.22 28A94.31 94.31 0 0 0 53.17 468a99.47 99.47 0 0 0 28 9.21 195 195 0 0 0 29.43 2.59c4.5.12 9 .17 13.52.2H323.91c4.51 0 9-.08 13.52-.2a196.59 196.59 0 0 0 29.44-2.59 99.57 99.57 0 0 0 28-9.21A94.22 94.22 0 0 0 436 426.84a99.3 99.3 0 0 0 9.22-28 194.79 194.79 0 0 0 2.59-29.42c.12-4.5.17-9 .2-13.51V172.14c-.01-5.35-.01-10.7-.01-16.05zm-69.88 241c-20-38.93-57.23-29.27-76.31-19.47-1.72 1-3.48 2-5.25 3l-.42.25c-39.5 21-92.53 22.54-145.85-.38A234.64 234.64 0 0 1 45 290.12a230.63 230.63 0 0 0 39.17 23.37c56.36 26.4 113 24.49 153 0-57-43.85-104.6-101-141.09-147.22a197.09 197.09 0 0 1-18.78-25.9c43.7 40 112.7 90.22 137.48 104.12-52.57-55.49-98.89-123.94-96.72-121.74 82.79 83.42 159.18 130.59 159.18 130.59 2.88 1.58 5 2.85 6.73 4a127.44 127.44 0 0 0 4.16-12.47c13.22-48.33-1.66-103.58-35.31-149.2C329.61 141.75 375 229.34 356.4 303.42c-.44 1.73-.95 3.4-1.44 5.09 38.52 47.4 28.04 98.17 23.13 88.59z"],symfony:[512,512,[],"f83d","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm133.74 143.54c-11.47.41-19.4-6.45-19.77-16.87-.27-9.18 6.68-13.44 6.53-18.85-.23-6.55-10.16-6.82-12.87-6.67-39.78 1.29-48.59 57-58.89 113.85 21.43 3.15 36.65-.72 45.14-6.22 12-7.75-3.34-15.72-1.42-24.56 4-18.16 32.55-19 32 5.3-.36 17.86-25.92 41.81-77.6 35.7-10.76 59.52-18.35 115-58.2 161.72-29 34.46-58.4 39.82-71.58 40.26-24.65.85-41-12.31-41.58-29.84-.56-17 14.45-26.26 24.31-26.59 21.89-.75 30.12 25.67 14.88 34-12.09 9.71.11 12.61 2.05 12.55 10.42-.36 17.34-5.51 22.18-9 24-20 33.24-54.86 45.35-118.35 8.19-49.66 17-78 18.23-82-16.93-12.75-27.08-28.55-49.85-34.72-15.61-4.23-25.12-.63-31.81 7.83-7.92 10-5.29 23 2.37 30.7l12.63 14c15.51 17.93 24 31.87 20.8 50.62-5.06 29.93-40.72 52.9-82.88 39.94-36-11.11-42.7-36.56-38.38-50.62 7.51-24.15 42.36-11.72 34.62 13.6-2.79 8.6-4.92 8.68-6.28 13.07-4.56 14.77 41.85 28.4 51-1.39 4.47-14.52-5.3-21.71-22.25-39.85-28.47-31.75-16-65.49 2.95-79.67C204.23 140.13 251.94 197 262 205.29c37.17-109 100.53-105.46 102.43-105.53 25.16-.81 44.19 10.59 44.83 28.65.25 7.69-4.17 22.59-19.52 23.13z"],teamspeak:[512,512,[],"f4f9","M244.2 346.79c2.4-12.3-12-30-32.4-48.7-20.9-19.2-48.2-39.1-63.4-46.6-21.7-12-41.7-1.8-46.3 22.7-5 26.2 0 51.4 14.5 73.9 10.2 15.5 25.4 22.7 43.4 24 11.6.6 52.5 2.2 61.7-1 11.9-4.3 20.1-11.8 22.5-24.3zm205 20.8a5.22 5.22 0 0 0-8.3 2.4c-8 25.4-44.7 112.5-172.1 121.5-149.7 10.5 80.3 43.6 145.4-6.4 22.7-17.4 47.6-35 46.6-85.4-.4-10.1-4.9-26.69-11.6-32.1zm62-122.4c-.3-18.9-8.6-33.4-26-42.2-2.9-1.3-5-2.7-5.9-6.4A222.64 222.64 0 0 0 438.9 103c-1.1-1.5-3.5-3.2-2.2-5 8.5-11.5-.3-18-7-24.4Q321.4-31.11 177.4 13.09c-40.1 12.3-73.9 35.6-102 67.4-4 4.3-6.7 9.1-3 14.5 3 4 1.3 6.2-1 9.3C51.6 132 38.2 162.59 32.1 196c-.7 4.3-2.9 6-6.4 7.8-14.2 7-22.5 18.5-24.9 34L0 264.29v20.9c0 30.8 21 50.4 51.8 49 7.7-.3 11.7-4.3 12-11.5 2-77.5-2.4-95.4 3.7-125.8C92.1 72.39 234.3 5 345.3 65.39 411.4 102 445.7 159 447.6 234.79c.8 28.2 0 56.5 0 84.6 0 7 2.2 12.5 9.4 14.2 24.1 5 49.2-12 53.2-36.7 2.9-17.1 1-34.5 1-51.7zm-159.6 131.5c36.5 2.8 59.3-28.5 58.4-60.5-2.1-45.2-66.2-16.5-87.8-8-73.2 28.1-45 54.9-22.2 60.8z"],telegram:[496,512,[],"f2c6","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm121.8 169.9l-40.7 191.8c-3 13.6-11.1 16.9-22.4 10.5l-62-45.7-29.9 28.8c-3.3 3.3-6.1 6.1-12.5 6.1l4.4-63.1 114.9-103.8c5-4.4-1.1-6.9-7.7-2.5l-142 89.4-61.2-19.1c-13.3-4.2-13.6-13.3 2.8-19.7l239.1-92.2c11.1-4 20.8 2.7 17.2 19.5z"],"telegram-plane":[448,512,[],"f3fe","M446.7 98.6l-67.6 318.8c-5.1 22.5-18.4 28.1-37.3 17.5l-103-75.9-49.7 47.8c-5.5 5.5-10.1 10.1-20.7 10.1l7.4-104.9 190.9-172.5c8.3-7.4-1.8-11.5-12.9-4.1L117.8 284 16.2 252.2c-22.1-6.9-22.5-22.1 4.6-32.7L418.2 66.4c18.4-6.9 34.5 4.1 28.5 32.2z"],"tencent-weibo":[384,512,[],"f1d5","M72.3 495.8c1.4 19.9-27.6 22.2-29.7 2.9C31 368.8 73.7 259.2 144 185.5c-15.6-34 9.2-77.1 50.6-77.1 30.3 0 55.1 24.6 55.1 55.1 0 44-49.5 70.8-86.9 45.1-65.7 71.3-101.4 169.8-90.5 287.2zM192 .1C66.1.1-12.3 134.3 43.7 242.4 52.4 259.8 79 246.9 70 229 23.7 136.4 91 29.8 192 29.8c75.4 0 136.9 61.4 136.9 136.9 0 90.8-86.9 153.9-167.7 133.1-19.1-4.1-25.6 24.4-6.6 29.1 110.7 23.2 204-60 204-162.3C358.6 74.7 284 .1 192 .1z"],"the-red-yeti":[512,512,[],"f69d","M488.23 241.7l20.7 7.1c-9.6-23.9-23.9-37-31.7-44.8l7.1-18.2c.2 0 12.3-27.8-2.5-30.7-.6-11.3-6.6-27-18.4-27-7.6-10.6-17.7-12.3-30.7-5.9a122.2 122.2 0 0 0-25.3 16.5c-5.3-6.4-3 .4-3-29.8-37.1-24.3-45.4-11.7-74.8 3l.5.5a239.36 239.36 0 0 0-68.4-13.3c-5.5-8.7-18.6-19.1-25.1-25.1l24.8 7.1c-5.5-5.5-26.8-12.9-34.2-15.2 18.2-4.1 29.8-20.8 42.5-33-34.9-10.1-67.9-5.9-97.9 11.8l12-44.2L182 0c-31.6 24.2-33 41.9-33.7 45.5-.9-2.4-6.3-19.6-15.2-27a35.12 35.12 0 0 0-.5 25.3c3 8.4 5.9 14.8 8.4 18.9-16-3.3-28.3-4.9-49.2 0h-3.7l33 14.3a194.26 194.26 0 0 0-46.7 67.4l-1.7 8.4 1.7 1.7 7.6-4.7c-3.3 11.6-5.3 19.4-6.6 25.8a200.18 200.18 0 0 0-27.8 40.3c-15 1-31.8 10.8-40.3 14.3l3 3.4 28.8 1c-.5 1-.7 2.2-1.2 3.2-7.3 6.4-39.8 37.7-33 80.7l20.2-22.4c.5 1.7.7 3.4 1.2 5.2 0 25.5.4 89.6 64.9 150.5 43.6 40 96 60.2 157.5 60.2 121.7 0 223-87.3 223-211.5 6.8-9.7-1.2 3 16.7-25.1l13 14.3 2.5-.5A181.84 181.84 0 0 0 495 255a44.74 44.74 0 0 0-6.8-13.3zM398 111.2l-.5 21.9c5.5 18.1 16.9 17.2 22.4 17.2l-3.4-4.7 22.4-5.4a242.44 242.44 0 0 1-27 0c12.8-2.1 33.3-29 43-11.3 3.4 7.6 6.4 17.2 9.3 27.8l1.7-5.9a56.38 56.38 0 0 1-1.7-15.2c5.4.5 8.8 3.4 9.3 10.1.5 6.4 1.7 14.8 3.4 25.3l4.7-11.3c4.6 0 4.5-3.6-2.5 20.7-20.9-8.7-35.1-8.4-46.5-8.4l18.2-16c-25.3 8.2-33 10.8-54.8 20.9-1.1-5.4-5-13.5-16-19.9-3.2 3.8-2.8.9-.7 14.8h-2.5a62.32 62.32 0 0 0-8.4-23.1l4.2-3.4c8.4-7.1 11.8-14.3 10.6-21.9-.5-6.4-5.4-13.5-13.5-20.7 5.6-3.4 15.2-.4 28.3 8.5zm-39.6-10.1c2.7 1.9 11.4 5.4 18.9 17.2 4.2 8.4 4 9.8 3.4 11.1-.5 2.4-.5 4.3-3 7.1-1.7 2.5-5.4 4.7-11.8 7.6-7.6-13-16.5-23.6-27.8-31.2zM91 143.1l1.2-1.7c1.2-2.9 4.2-7.6 9.3-15.2l2.5-3.4-13 12.3 5.4-4.7-10.1 9.3-4.2 1.2c12.3-24.1 23.1-41.3 32.5-50.2 9.3-9.3 16-16 20.2-19.4l-6.4 1.2c-11.3-4.2-19.4-7.1-24.8-8.4 2.5-.5 3.7-.5 3.2-.5 10.3 0 17.5.5 20.9 1.2a52.35 52.35 0 0 0 16 2.5l.5-1.7-8.4-35.8 13.5 29a42.89 42.89 0 0 0 5.9-14.3c1.7-6.4 5.4-13 10.1-19.4s7.6-10.6 9.3-11.3a234.68 234.68 0 0 0-6.4 25.3l-1.7 7.1-.5 4.7 2.5 2.5C190.4 39.9 214 34 239.8 34.5l21.1.5c-11.8 13.5-27.8 21.9-48.5 24.8a201.26 201.26 0 0 1-23.4 2.9l-.2-.5-2.5-1.2a20.75 20.75 0 0 0-14 2c-2.5-.2-4.9-.5-7.1-.7l-2.5 1.7.5 1.2c2 .2 3.9.5 6.2.7l-2 3.4 3.4-.5-10.6 11.3c-4.2 3-5.4 6.4-4.2 9.3l5.4-3.4h1.2a39.4 39.4 0 0 1 25.3-15.2v-3c6.4.5 13 1 19.4 1.2 6.4 0 8.4.5 5.4 1.2a189.6 189.6 0 0 1 20.7 13.5c13.5 10.1 23.6 21.9 30 35.4 8.8 18.2 13.5 37.1 13.5 56.6a141.13 141.13 0 0 1-3 28.3 209.91 209.91 0 0 1-16 46l2.5.5c18.2-19.7 41.9-16 49.2-16l-6.4 5.9 22.4 17.7-1.7 30.7c-5.4-12.3-16.5-21.1-33-27.8 16.5 14.8 23.6 21.1 21.9 20.2-4.8-2.8-3.5-1.9-10.8-3.7 4.1 4.1 17.5 18.8 18.2 20.7l.2.2-.2.2c0 1.8 1.6-1.2-14 22.9-75.2-15.3-106.27-42.7-141.2-63.2l11.8 1.2c-11.8-18.5-15.6-17.7-38.4-26.1L149 225c-8.8-3-18.2-3-28.3.5l7.6-10.6-1.2-1.7c-14.9 4.3-19.8 9.2-22.6 11.3-1.1-5.5-2.8-12.4-12.3-28.8l-1.2 27-13.2-5c1.5-25.2 5.4-50.5 13.2-74.6zm276.5 330c-49.9 25-56.1 22.4-59 23.9-29.8-11.8-50.9-31.7-63.5-58.8l30 16.5c-9.8-9.3-18.3-16.5-38.4-44.3l11.8 23.1-17.7-7.6c14.2 21.1 23.5 51.7 66.6 73.5-120.8 24.2-199-72.1-200.9-74.3a262.57 262.57 0 0 0 35.4 24.8c3.4 1.7 7.1 2.5 10.1 1.2l-16-20.7c9.2 4.2 9.5 4.5 69.1 29-42.5-20.7-73.8-40.8-93.2-60.2-.5 6.4-1.2 10.1-1.2 10.1a80.25 80.25 0 0 1 20.7 26.6c-39-18.9-57.6-47.6-71.3-82.6 49.9 55.1 118.9 37.5 120.5 37.1 34.8 16.4 69.9 23.6 113.9 10.6 3.3 0 20.3 17 25.3 39.1l4.2-3-2.5-23.6c9 9 24.9 22.6 34.4 13-15.6-5.3-23.5-9.5-29.5-31.7 4.6 4.2 7.6 9 27.8 15l1.2-1.2-10.5-14.2c11.7-4.8-3.5 1 32-10.8 4.3 34.3 9 49.2.7 89.5zm115.3-214.4l-2.5.5 3 9.3c-3.5 5.9-23.7 44.3-71.6 79.7-39.5 29.8-76.6 39.1-80.9 40.3l-7.6-7.1-1.2 3 14.3 16-7.1-4.7 3.4 4.2h-1.2l-21.9-13.5 9.3 26.6-19-27.9-1.2 2.5 7.6 29c-6.1-8.2-21-32.6-56.8-39.6l32.5 21.2a214.82 214.82 0 0 1-93.2-6.4c-4.2-1.2-8.9-2.5-13.5-4.2l1.2-3-44.8-22.4 26.1 22.4c-57.7 9.1-113-25.4-126.4-83.4l-2.5-16.4-22.27 22.3c19.5-57.5 25.6-57.9 51.4-70.1-9.1-5.3-1.6-3.3-38.4-9.3 15.8-5.8 33-15.4 73 5.2a18.5 18.5 0 0 1 3.7-1.7c.6-3.2.4-.8 1-11.8 3.9 10 3.6 8.7 3 9.3l1.7.5c12.7-6.5 8.9-4.5 17-8.9l-5.4 13.5 22.3-5.8-8.4 8.4 2.5 2.5c4.5-1.8 30.3 3.4 40.8 16l-23.6-2.5c39.4 23 51.5 54 55.8 69.6l1.7-1.2c-2.8-22.3-12.4-33.9-16-40.1 4.2 5 39.2 34.6 110.4 46-11.3-.5-23.1 5.4-34.9 18.9l46.7-20.2-9.3 21.9c7.6-10.1 14.8-23.6 21.2-39.6v-.5l1.2-3-1.2 16c13.5-41.8 25.3-78.5 35.4-109.7l13.5-27.8v-2l-5.4-4.2h10.1l5.9 4.2 2.5-1.2-3.4-16 12.3 18.9 41.8-20.2-14.8 13 .5 2.9 17.7-.5a184 184 0 0 1 33 4.2l-23.6 2.5-1.2 3 26.6 23.1a254.21 254.21 0 0 1 27 32c-11.2-3.3-10.3-3.4-21.2-3.4l12.3 32.5zm-6.1-71.3l-3.9 13-14.3-11.8zm-254.8 7.1c1.7 10.6 4.7 17.7 8.8 21.9-9.3 6.6-27.5 13.9-46.5 16l.5 1.2a50.22 50.22 0 0 0 24.8-2.5l-7.1 13c4.2-1.7 10.1-7.1 17.7-14.8 11.9-5.5 12.7-5.1 20.2-16-12.7-6.4-15.7-13.7-18.4-18.8zm3.7-102.3c-6.4-3.4-10.6 3-12.3 18.9s2.5 29.5 11.8 39.6 18.2 10.6 26.1 3 3.4-23.6-11.3-47.7a39.57 39.57 0 0 0-14.27-13.8zm-4.7 46.3c5.4 2.2 10.5 1.9 12.3-10.6v-4.7l-1.2.5c-4.3-3.1-2.5-4.5-1.7-6.2l.5-.5c-.9-1.2-5-8.1-12.5 4.7-.5-13.5.5-21.9 3-24.8 1.2-2.5 4.7-1.2 11.3 4.2 6.4 5.4 11.3 16 15.2 32.5 6.5 28-19.8 26.2-26.9 4.9zm-45-5.5c1.6.3 9.3-1.1 9.3-14.8h-.5c-5.4-1.1-2.2-5.5-.7-5.9-1.7-3-3.4-4.2-5.4-4.7-8.1 0-11.6 12.7-8.1 21.2a7.51 7.51 0 0 0 5.43 4.2zM216 82.9l-2.5.5.5 3a48.94 48.94 0 0 1 26.1 5.9c-2.5-5.5-10-14.3-28.3-14.3l.5 2.5zm-71.8 49.4c21.7 16.8 16.5 21.4 46.5 23.6l-2.9-4.7a42.67 42.67 0 0 0 14.8-28.3c1.7-16-1.2-29.5-8.8-41.3l13-7.6a2.26 2.26 0 0 0-.5-1.7 14.21 14.21 0 0 0-13.5 1.7c-12.7 6.7-28 20.9-29 22.4-1.7 1.7-3.4 5.9-5.4 13.5a99.61 99.61 0 0 0-2.9 23.6c-4.7-8-10.5-6.4-19.9-5.9l7.1 7.6c-16.5 0-23.3 15.4-23.6 16 6.8 0 4.6-7.6 30-12.3-4.3-6.3-3.3-5-4.9-6.6zm18.7-18.7c1.2-7.6 3.4-13 6.4-17.2 5.4-6.4 10.6-10.1 16-11.8 4.2-1.7 7.1 1.2 10.1 9.3a72.14 72.14 0 0 1 3 25.3c-.5 9.3-3.4 17.2-8.4 23.1-2.9 3.4-5.4 5.9-6.4 7.6a39.21 39.21 0 0 1-11.3-.5l-7.1-3.4-5.4-6.4c.8-10 1.3-18.8 3.1-26zm42 56.1c-34.8 14.4-34.7 14-36.1 14.3-20.8 4.7-19-24.4-18.9-24.8l5.9-1.2-.5-2.5c-20.2-2.6-31 4.2-32.5 4.9.5.5 3 3.4 5.9 9.3 4.2-6.4 8.8-10.1 15.2-10.6a83.47 83.47 0 0 0 1.7 33.7c.1.5 2.6 17.4 27.5 24.1 11.3 3 27 1.2 48.9-5.4l-9.2.5c-4.2-14.8-6.4-24.8-5.9-29.5 11.3-8.8 21.9-11.3 30.7-7.6h2.5l-11.8-7.6-7.1.5c-5.9 1.2-12.3 4.2-19.4 8.4z"],themeco:[448,512,[],"f5c6","M202.9 8.43c9.9-5.73 26-5.82 35.95-.21L430 115.85c10 5.6 18 19.44 18 30.86V364c0 11.44-8.06 25.29-18 31L238.81 503.74c-9.93 5.66-26 5.57-35.85-.21L17.86 395.12C8 389.34 0 375.38 0 364V146.71c0-11.44 8-25.36 17.91-31.08zm-77.4 199.83c-15.94 0-31.89.14-47.83.14v101.45H96.8V280h28.7c49.71 0 49.56-71.74 0-71.74zm140.14 100.29l-30.73-34.64c37-7.51 34.8-65.23-10.87-65.51-16.09 0-32.17-.14-48.26-.14v101.59h19.13v-33.91h18.41l29.56 33.91h22.76zm-41.59-82.32c23.34 0 23.26 32.46 0 32.46h-29.13v-32.46zm-95.56-1.6c21.18 0 21.11 38.85 0 38.85H96.18v-38.84zm192.65-18.25c-68.46 0-71 105.8 0 105.8 69.48-.01 69.41-105.8 0-105.8zm0 17.39c44.12 0 44.8 70.86 0 70.86s-44.43-70.86 0-70.86z"],themeisle:[512,512,[],"f2b2","M208 88.286c0-10 6.286-21.714 17.715-21.714 11.142 0 17.714 11.714 17.714 21.714 0 10.285-6.572 21.714-17.714 21.714C214.286 110 208 98.571 208 88.286zm304 160c0 36.001-11.429 102.286-36.286 129.714-22.858 24.858-87.428 61.143-120.857 70.572l-1.143.286v32.571c0 16.286-12.572 30.571-29.143 30.571-10 0-19.429-5.714-24.572-14.286-5.427 8.572-14.856 14.286-24.856 14.286-10 0-19.429-5.714-24.858-14.286-5.142 8.572-14.571 14.286-24.57 14.286-10.286 0-19.429-5.714-24.858-14.286-5.143 8.572-14.571 14.286-24.571 14.286-18.857 0-29.429-15.714-29.429-32.857-16.286 12.285-35.715 19.428-56.571 19.428-22 0-43.429-8.285-60.286-22.857 10.285-.286 20.571-2.286 30.285-5.714-20.857-5.714-39.428-18.857-52-36.286 21.37 4.645 46.209 1.673 67.143-11.143-22-22-56.571-58.857-68.572-87.428C1.143 321.714 0 303.714 0 289.429c0-49.714 20.286-160 86.286-160 10.571 0 18.857 4.858 23.143 14.857a158.792 158.792 0 0 1 12-15.428c2-2.572 5.714-5.429 7.143-8.286 7.999-12.571 11.714-21.142 21.714-34C182.571 45.428 232 17.143 285.143 17.143c6 0 12 .285 17.714 1.143C313.714 6.571 328.857 0 344.572 0c14.571 0 29.714 6 40 16.286.857.858 1.428 2.286 1.428 3.428 0 3.714-10.285 13.429-12.857 16.286 4.286 1.429 15.714 6.858 15.714 12 0 2.857-2.857 5.143-4.571 7.143 31.429 27.714 49.429 67.143 56.286 108 4.286-5.143 10.285-8.572 17.143-8.572 10.571 0 20.857 7.144 28.571 14.001C507.143 187.143 512 221.714 512 248.286zM188 89.428c0 18.286 12.571 37.143 32.286 37.143 19.714 0 32.285-18.857 32.285-37.143 0-18-12.571-36.857-32.285-36.857-19.715 0-32.286 18.858-32.286 36.857zM237.714 194c0-19.714 3.714-39.143 8.571-58.286-52.039 79.534-13.531 184.571 68.858 184.571 21.428 0 42.571-7.714 60-20 2-7.429 3.714-14.857 3.714-22.572 0-14.286-6.286-21.428-20.572-21.428-4.571 0-9.143.857-13.429 1.714-63.343 12.668-107.142 3.669-107.142-63.999zm-41.142 254.858c0-11.143-8.858-20.857-20.286-20.857-11.429 0-20 9.715-20 20.857v32.571c0 11.143 8.571 21.142 20 21.142 11.428 0 20.286-9.715 20.286-21.142v-32.571zm49.143 0c0-11.143-8.572-20.857-20-20.857-11.429 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.857 21.142 20.286 21.142 11.428 0 20-10 20-21.142v-32.571zm49.713 0c0-11.143-8.857-20.857-20.285-20.857-11.429 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.857 21.142 20.286 21.142 11.428 0 20.285-9.715 20.285-21.142v-32.571zm49.715 0c0-11.143-8.857-20.857-20.286-20.857-11.428 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.858 21.142 20.286 21.142 11.429 0 20.286-10 20.286-21.142v-32.571zM421.714 286c-30.857 59.142-90.285 102.572-158.571 102.572-96.571 0-160.571-84.572-160.571-176.572 0-16.857 2-33.429 6-49.714-20 33.715-29.714 72.572-29.714 111.429 0 60.286 24.857 121.715 71.429 160.857 5.143-9.714 14.857-16.286 26-16.286 10 0 19.428 5.714 24.571 14.286 5.429-8.571 14.571-14.286 24.858-14.286 10 0 19.428 5.714 24.571 14.286 5.429-8.571 14.857-14.286 24.858-14.286 10 0 19.428 5.714 24.857 14.286 5.143-8.571 14.571-14.286 24.572-14.286 10.857 0 20.857 6.572 25.714 16 43.427-36.286 68.569-92 71.426-148.286zm10.572-99.714c0-53.714-34.571-105.714-92.572-105.714-30.285 0-58.571 15.143-78.857 36.857C240.862 183.812 233.41 254 302.286 254c28.805 0 97.357-28.538 84.286 36.857 28.857-26 45.714-65.714 45.714-104.571z"],"think-peaks":[576,512,[],"f731","M465.4 409.4l87.1-150.2-32-.3-55.1 95L259.2 0 23 407.4l32 .3L259.2 55.6zm-355.3-44.1h32.1l117.4-202.5L463 511.9l32.5.1-235.8-404.6z"],"trade-federation":[496,512,[],"f513","M248 8.8c-137 0-248 111-248 248s111 248 248 248 248-111 248-248-111-248-248-248zm0 482.8c-129.7 0-234.8-105.1-234.8-234.8S118.3 22 248 22s234.8 105.1 234.8 234.8S377.7 491.6 248 491.6zm155.1-328.5v-46.8H209.3V198H54.2l36.7 46h117.7v196.8h48.8V245h83.3v-47h-83.3v-34.8h145.7zm-73.3 45.1v23.9h-82.9v197.4h-26.8V232.1H96.3l-20.1-23.9h143.9v-80.6h171.8V152h-145v56.2zm-161.3-69l-12.4-20.7 2.1 23.8-23.5 5.4 23.3 5.4-2.1 24 12.3-20.5 22.2 9.5-15.7-18.1 15.8-18.1zm-29.6-19.7l9.3-11.5-12.7 5.9-8-12.4 1.7 13.9-14.3 3.8 13.7 2.7-.8 14.7 6.8-12.2 13.8 5.3zm165.4 145.2l-13.1 5.6-7.3-12.2 1.3 14.2-13.9 3.2 13.9 3.2-1.2 14.2 7.3-12.2 13.1 5.5-9.4-10.7zm106.9-77.2l-20.9 9.1-12-19.6 2.2 22.7-22.3 5.4 22.2 4.9-1.8 22.9 11.5-19.6 21.2 8.8-15.1-17zM248 29.9c-125.3 0-226.9 101.6-226.9 226.9S122.7 483.7 248 483.7s226.9-101.6 226.9-226.9S373.3 29.9 248 29.9zM342.6 196v51h-83.3v195.7h-52.7V245.9H89.9l-40-49.9h157.4v-81.6h197.8v50.7H259.4V196zM248 43.2c60.3 0 114.8 25 153.6 65.2H202.5V190H45.1C73.1 104.8 153.4 43.2 248 43.2zm0 427.1c-117.9 0-213.6-95.6-213.6-213.5 0-21.2 3.1-41.8 8.9-61.1L87.1 252h114.7v196.8h64.6V253h83.3v-62.7h-83.2v-19.2h145.6v-50.8c30.8 37 49.3 84.6 49.3 136.5.1 117.9-95.5 213.5-213.4 213.5zM178.8 275l-11-21.4 1.7 24.5-23.7 3.9 23.8 5.9-3.7 23.8 13-20.9 21.5 10.8-15.8-18.8 16.9-17.1z"],trello:[448,512,[],"f181","M392.3 32H56.1C25.1 32 0 57.1 0 88c-.1 0 0-4 0 336 0 30.9 25.1 56 56 56h336.2c30.8-.2 55.7-25.2 55.7-56V88c.1-30.8-24.8-55.8-55.6-56zM197 371.3c-.2 14.7-12.1 26.6-26.9 26.6H87.4c-14.8.1-26.9-11.8-27-26.6V117.1c0-14.8 12-26.9 26.9-26.9h82.9c14.8 0 26.9 12 26.9 26.9v254.2zm193.1-112c0 14.8-12 26.9-26.9 26.9h-81c-14.8 0-26.9-12-26.9-26.9V117.2c0-14.8 12-26.9 26.8-26.9h81.1c14.8 0 26.9 12 26.9 26.9v142.1z"],tripadvisor:[576,512,[],"f262","M166.4 280.521c0 13.236-10.73 23.966-23.966 23.966s-23.966-10.73-23.966-23.966 10.73-23.966 23.966-23.966 23.966 10.729 23.966 23.966zm264.962-23.956c-13.23 0-23.956 10.725-23.956 23.956 0 13.23 10.725 23.956 23.956 23.956 13.23 0 23.956-10.725 23.956-23.956-.001-13.231-10.726-23.956-23.956-23.956zm89.388 139.49c-62.667 49.104-153.276 38.109-202.379-24.559l-30.979 46.325-30.683-45.939c-48.277 60.39-135.622 71.891-197.885 26.055-64.058-47.158-77.759-137.316-30.601-201.374A186.762 186.762 0 0 0 0 139.416l90.286-.05a358.48 358.48 0 0 1 197.065-54.03 350.382 350.382 0 0 1 192.181 53.349l96.218.074a185.713 185.713 0 0 0-28.352 57.649c46.793 62.747 34.964 151.37-26.648 199.647zM259.366 281.761c-.007-63.557-51.535-115.075-115.092-115.068C80.717 166.7 29.2 218.228 29.206 281.785c.007 63.557 51.535 115.075 115.092 115.068 63.513-.075 114.984-51.539 115.068-115.052v-.04zm28.591-10.455c5.433-73.44 65.51-130.884 139.12-133.022a339.146 339.146 0 0 0-139.727-27.812 356.31 356.31 0 0 0-140.164 27.253c74.344 1.582 135.299 59.424 140.771 133.581zm251.706-28.767c-21.992-59.634-88.162-90.148-147.795-68.157-59.634 21.992-90.148 88.162-68.157 147.795v.032c22.038 59.607 88.198 90.091 147.827 68.113 59.615-22.004 90.113-88.162 68.125-147.783zm-326.039 37.975v.115c-.057 39.328-31.986 71.163-71.314 71.106-39.328-.057-71.163-31.986-71.106-71.314.057-39.328 31.986-71.163 71.314-71.106 39.259.116 71.042 31.94 71.106 71.199zm-24.512 0v-.084c-.051-25.784-20.994-46.645-46.778-46.594-25.784.051-46.645 20.994-46.594 46.777.051 25.784 20.994 46.645 46.777 46.594 25.726-.113 46.537-20.968 46.595-46.693zm313.423 0v.048c-.02 39.328-31.918 71.194-71.247 71.173s-71.194-31.918-71.173-71.247c.02-39.328 31.918-71.194 71.247-71.173 39.29.066 71.121 31.909 71.173 71.199zm-24.504-.008c-.009-25.784-20.918-46.679-46.702-46.67-25.784.009-46.679 20.918-46.67 46.702.009 25.784 20.918 46.678 46.702 46.67 25.765-.046 46.636-20.928 46.67-46.693v-.009z"],tumblr:[320,512,[],"f173","M309.8 480.3c-13.6 14.5-50 31.7-97.4 31.7-120.8 0-147-88.8-147-140.6v-144H17.9c-5.5 0-10-4.5-10-10v-68c0-7.2 4.5-13.6 11.3-16 62-21.8 81.5-76 84.3-117.1.8-11 6.5-16.3 16.1-16.3h70.9c5.5 0 10 4.5 10 10v115.2h83c5.5 0 10 4.4 10 9.9v81.7c0 5.5-4.5 10-10 10h-83.4V360c0 34.2 23.7 53.6 68 35.8 4.8-1.9 9-3.2 12.7-2.2 3.5.9 5.8 3.4 7.4 7.9l22 64.3c1.8 5 3.3 10.6-.4 14.5z"],"tumblr-square":[448,512,[],"f174","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-82.3 364.2c-8.5 9.1-31.2 19.8-60.9 19.8-75.5 0-91.9-55.5-91.9-87.9v-90h-29.7c-3.4 0-6.2-2.8-6.2-6.2v-42.5c0-4.5 2.8-8.5 7.1-10 38.8-13.7 50.9-47.5 52.7-73.2.5-6.9 4.1-10.2 10-10.2h44.3c3.4 0 6.2 2.8 6.2 6.2v72h51.9c3.4 0 6.2 2.8 6.2 6.2v51.1c0 3.4-2.8 6.2-6.2 6.2h-52.1V321c0 21.4 14.8 33.5 42.5 22.4 3-1.2 5.6-2 8-1.4 2.2.5 3.6 2.1 4.6 4.9l13.8 40.2c1 3.2 2 6.7-.3 9.1z"],twitch:[512,512,[],"f1e8","M391.17,103.47H352.54v109.7h38.63ZM285,103H246.37V212.75H285ZM120.83,0,24.31,91.42V420.58H140.14V512l96.53-91.42h77.25L487.69,256V0ZM449.07,237.75l-77.22,73.12H294.61l-67.6,64v-64H140.14V36.58H449.07Z"],twitter:[512,512,[],"f099","M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"],"twitter-square":[448,512,[],"f081","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-48.9 158.8c.2 2.8.2 5.7.2 8.5 0 86.7-66 186.6-186.6 186.6-37.2 0-71.7-10.8-100.7-29.4 5.3.6 10.4.8 15.8.8 30.7 0 58.9-10.4 81.4-28-28.8-.6-53-19.5-61.3-45.5 10.1 1.5 19.2 1.5 29.6-1.2-30-6.1-52.5-32.5-52.5-64.4v-.8c8.7 4.9 18.9 7.9 29.6 8.3a65.447 65.447 0 0 1-29.2-54.6c0-12.2 3.2-23.4 8.9-33.1 32.3 39.8 80.8 65.8 135.2 68.6-9.3-44.5 24-80.6 64-80.6 18.9 0 35.9 7.9 47.9 20.7 14.8-2.8 29-8.3 41.6-15.8-4.9 15.2-15.2 28-28.8 36.1 13.2-1.4 26-5.1 37.8-10.2-8.9 13.1-20.1 24.7-32.9 34z"],typo3:[448,512,[],"f42b","M178.7 78.4c0-24.7 5.4-32.4 13.9-39.4-69.5 8.5-149.3 34-176.3 66.4-5.4 7.7-9.3 20.8-9.3 37.1C7 246 113.8 480 191.1 480c36.3 0 97.3-59.5 146.7-139-7 2.3-11.6 2.3-18.5 2.3-57.2 0-140.6-198.5-140.6-264.9zM301.5 32c-30.1 0-41.7 5.4-41.7 36.3 0 66.4 53.8 198.5 101.7 198.5 26.3 0 78.8-99.7 78.8-182.3 0-40.9-67-52.5-138.8-52.5z"],uber:[448,512,[],"f402","M414.1 32H33.9C15.2 32 0 47.2 0 65.9V446c0 18.8 15.2 34 33.9 34H414c18.7 0 33.9-15.2 33.9-33.9V65.9C448 47.2 432.8 32 414.1 32zM237.6 391.1C163 398.6 96.4 344.2 88.9 269.6h94.4V290c0 3.7 3 6.8 6.8 6.8H258c3.7 0 6.8-3 6.8-6.8v-67.9c0-3.7-3-6.8-6.8-6.8h-67.9c-3.7 0-6.8 3-6.8 6.8v20.4H88.9c7-69.4 65.4-122.2 135.1-122.2 69.7 0 128.1 52.8 135.1 122.2 7.5 74.5-46.9 141.1-121.5 148.6z"],ubuntu:[496,512,[],"f7df","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm52.7 93c8.8-15.2 28.3-20.5 43.5-11.7 15.3 8.8 20.5 28.3 11.7 43.6-8.8 15.2-28.3 20.5-43.5 11.7-15.3-8.9-20.5-28.4-11.7-43.6zM87.4 287.9c-17.6 0-31.9-14.3-31.9-31.9 0-17.6 14.3-31.9 31.9-31.9 17.6 0 31.9 14.3 31.9 31.9 0 17.6-14.3 31.9-31.9 31.9zm28.1 3.1c22.3-17.9 22.4-51.9 0-69.9 8.6-32.8 29.1-60.7 56.5-79.1l23.7 39.6c-51.5 36.3-51.5 112.5 0 148.8L172 370c-27.4-18.3-47.8-46.3-56.5-79zm228.7 131.7c-15.3 8.8-34.7 3.6-43.5-11.7-8.8-15.3-3.6-34.8 11.7-43.6 15.2-8.8 34.7-3.6 43.5 11.7 8.8 15.3 3.6 34.8-11.7 43.6zm.3-69.5c-26.7-10.3-56.1 6.6-60.5 35-5.2 1.4-48.9 14.3-96.7-9.4l22.5-40.3c57 26.5 123.4-11.7 128.9-74.4l46.1.7c-2.3 34.5-17.3 65.5-40.3 88.4zm-5.9-105.3c-5.4-62-71.3-101.2-128.9-74.4l-22.5-40.3c47.9-23.7 91.5-10.8 96.7-9.4 4.4 28.3 33.8 45.3 60.5 35 23.1 22.9 38 53.9 40.2 88.5l-46 .6z"],uikit:[448,512,[],"f403","M443.9 128v256L218 512 0 384V169.7l87.6 45.1v117l133.5 75.5 135.8-75.5v-151l-101.1-57.6 87.6-53.1L443.9 128zM308.6 49.1L223.8 0l-88.6 54.8 86 47.3 87.4-53z"],umbraco:[510,512,[],"f8e8","M255.35 8C118.36 7.83 7.14 118.72 7 255.68c-.07 137 111 248.2 248 248.27 136.85 0 247.82-110.7 248-247.67S392.34 8.17 255.35 8zm145 266q-1.14 40.68-14 65t-43.51 35q-30.61 10.7-85.45 10.47h-4.6q-54.78.22-85.44-10.47t-43.52-35q-12.85-24.36-14-65a224.81 224.81 0 0 1 0-30.71 418.37 418.37 0 0 1 3.6-43.88c1.88-13.39 3.57-22.58 5.4-32 1-4.88 1.28-6.42 1.82-8.45a5.09 5.09 0 0 1 4.9-3.89h.69l32 5a5.07 5.07 0 0 1 4.16 5 5 5 0 0 1 0 .77l-1.7 8.78q-2.41 13.25-4.84 33.68a380.62 380.62 0 0 0-2.64 42.15q-.28 40.43 8.13 59.83a43.87 43.87 0 0 0 31.31 25.18A243 243 0 0 0 250 340.6h10.25a242.64 242.64 0 0 0 57.27-5.16 43.86 43.86 0 0 0 31.15-25.23q8.53-19.42 8.13-59.78a388 388 0 0 0-2.6-42.15q-2.48-20.38-4.89-33.68l-1.69-8.78a5 5 0 0 1 0-.77 5 5 0 0 1 4.2-5l32-5h.82a5 5 0 0 1 4.9 3.89c.55 2.05.81 3.57 1.83 8.45 1.82 9.62 3.52 18.78 5.39 32a415.71 415.71 0 0 1 3.61 43.88 228.06 228.06 0 0 1-.04 30.73z"],uniregistry:[384,512,[],"f404","M192 480c39.5 0 76.2-11.8 106.8-32.2H85.3C115.8 468.2 152.5 480 192 480zm-89.1-193.1v-12.4H0v12.4c0 2.5 0 5 .1 7.4h103.1c-.2-2.4-.3-4.9-.3-7.4zm20.5 57H8.5c2.6 8.5 5.8 16.8 9.6 24.8h138.3c-12.9-5.7-24.1-14.2-33-24.8zm-17.7-34.7H1.3c.9 7.6 2.2 15 3.9 22.3h109.7c-4-6.9-7.2-14.4-9.2-22.3zm-2.8-69.3H0v17.3h102.9zm0-173.2H0v4.9h102.9zm0-34.7H0v2.5h102.9zm0 69.3H0v7.4h102.9zm0 104H0v14.8h102.9zm0-69.3H0v9.9h102.9zm0 34.6H0V183h102.9zm166.2 160.9h109.7c1.8-7.3 3.1-14.7 3.9-22.3H278.3c-2.1 7.9-5.2 15.4-9.2 22.3zm12-185.7H384V136H281.1zm0 37.2H384v-12.4H281.1zm0-74.3H384v-7.4H281.1zm0-76.7v2.5H384V32zm-203 410.9h227.7c11.8-8.7 22.7-18.6 32.2-29.7H44.9c9.6 11 21.4 21 33.2 29.7zm203-371.3H384v-4.9H281.1zm0 148.5H384v-14.8H281.1zM38.8 405.7h305.3c6.7-8.5 12.6-17.6 17.8-27.2H23c5.2 9.6 9.2 18.7 15.8 27.2zm188.8-37.1H367c3.7-8 5.8-16.2 8.5-24.8h-115c-8.8 10.7-20.1 19.2-32.9 24.8zm53.5-81.7c0 2.5-.1 5-.4 7.4h103.1c.1-2.5.2-4.9.2-7.4v-12.4H281.1zm0-29.7H384v-17.3H281.1z"],unity:[576,512,[],"f949","M498.11,206.4,445.31,14.72,248.2,66.08,219,116.14l-59.2-.43L15.54,256,159.82,396.32l59.17-.43,29.24,50,197.08,51.36,52.8-191.62-30-49.63ZM223.77,124.2,374.55,86.51,288,232.33H114.87Zm0,263.63L114.87,279.71H288l86.55,145.81Zm193,14L330.17,256l86.58-145.84L458.56,256Z"],untappd:[640,512,[],"f405","M401.3 49.9c-79.8 160.1-84.6 152.5-87.9 173.2l-5.2 32.8c-1.9 12-6.6 23.5-13.7 33.4L145.6 497.1c-7.6 10.6-20.4 16.2-33.4 14.6-40.3-5-77.8-32.2-95.3-68.5-5.7-11.8-4.5-25.8 3.1-36.4l148.9-207.9c7.1-9.9 16.4-18 27.2-23.7l29.3-15.5c18.5-9.8 9.7-11.9 135.6-138.9 1-4.8 1-7.3 3.6-8 3-.7 6.6-1 6.3-4.6l-.4-4.6c-.2-1.9 1.3-3.6 3.2-3.6 4.5-.1 13.2 1.2 25.6 10 12.3 8.9 16.4 16.8 17.7 21.1.6 1.8-.6 3.7-2.4 4.2l-4.5 1.1c-3.4.9-2.5 4.4-2.3 7.4.1 2.8-2.3 3.6-6.5 6.1zM230.1 36.4c3.4.9 2.5 4.4 2.3 7.4-.2 2.7 2.1 3.5 6.4 6 7.9 15.9 15.3 30.5 22.2 44 .7 1.3 2.3 1.5 3.3.5 11.2-12 24.6-26.2 40.5-42.6 1.3-1.4 1.4-3.5.1-4.9-8-8.2-16.5-16.9-25.6-26.1-1-4.7-1-7.3-3.6-8-3-.8-6.6-1-6.3-4.6.3-3.3 1.4-8.1-2.8-8.2-4.5-.1-13.2 1.1-25.6 10-12.3 8.9-16.4 16.8-17.7 21.1-1.4 4.2 3.6 4.6 6.8 5.4zM620 406.7L471.2 198.8c-13.2-18.5-26.6-23.4-56.4-39.1-11.2-5.9-14.2-10.9-30.5-28.9-1-1.1-2.9-.9-3.6.5-46.3 88.8-47.1 82.8-49 94.8-1.7 10.7-1.3 20 .3 29.8 1.9 12 6.6 23.5 13.7 33.4l148.9 207.9c7.6 10.6 20.2 16.2 33.1 14.7 40.3-4.9 78-32 95.7-68.6 5.4-11.9 4.3-25.9-3.4-36.6z"],ups:[384,512,[],"f7e0","M103.2 303c-5.2 3.6-32.6 13.1-32.6-19V180H37.9v102.6c0 74.9 80.2 51.1 97.9 39V180h-32.6zM4 74.82v220.9c0 103.7 74.9 135.2 187.7 184.1 112.4-48.9 187.7-80.2 187.7-184.1V74.82c-116.3-61.6-281.8-49.6-375.4 0zm358.1 220.9c0 86.6-53.2 113.6-170.4 165.3-117.5-51.8-170.5-78.7-170.5-165.3v-126.4c102.3-93.8 231.6-100 340.9-89.8zm-209.6-107.4v212.8h32.7v-68.7c24.4 7.3 71.7-2.6 71.7-78.5 0-97.4-80.7-80.92-104.4-65.6zm32.7 117.3v-100.3c8.4-4.2 38.4-12.7 38.4 49.3 0 67.9-36.4 51.8-38.4 51zm79.1-86.4c.1 47.3 51.6 42.5 52.2 70.4.6 23.5-30.4 23-50.8 4.9v30.1c36.2 21.5 81.9 8.1 83.2-33.5 1.7-51.5-54.1-46.6-53.4-73.2.6-20.3 30.6-20.5 48.5-2.2v-28.4c-28.5-22-79.9-9.2-79.7 31.9z"],usb:[640,512,[],"f287","M641.5 256c0 3.1-1.7 6.1-4.5 7.5L547.9 317c-1.4.8-2.8 1.4-4.5 1.4-1.4 0-3.1-.3-4.5-1.1-2.8-1.7-4.5-4.5-4.5-7.8v-35.6H295.7c25.3 39.6 40.5 106.9 69.6 106.9H392V354c0-5 3.9-8.9 8.9-8.9H490c5 0 8.9 3.9 8.9 8.9v89.1c0 5-3.9 8.9-8.9 8.9h-89.1c-5 0-8.9-3.9-8.9-8.9v-26.7h-26.7c-75.4 0-81.1-142.5-124.7-142.5H140.3c-8.1 30.6-35.9 53.5-69 53.5C32 327.3 0 295.3 0 256s32-71.3 71.3-71.3c33.1 0 61 22.8 69 53.5 39.1 0 43.9 9.5 74.6-60.4C255 88.7 273 95.7 323.8 95.7c7.5-20.9 27-35.6 50.4-35.6 29.5 0 53.5 23.9 53.5 53.5s-23.9 53.5-53.5 53.5c-23.4 0-42.9-14.8-50.4-35.6H294c-29.1 0-44.3 67.4-69.6 106.9h310.1v-35.6c0-3.3 1.7-6.1 4.5-7.8 2.8-1.7 6.4-1.4 8.9.3l89.1 53.5c2.8 1.1 4.5 4.1 4.5 7.2z"],usps:[576,512,[],"f7e1","M460.3 241.7c25.8-41.3 15.2-48.8-11.7-48.8h-27c-.1 0-1.5-1.4-10.9 8-11.2 5.6-37.9 6.3-37.9 8.7 0 4.5 70.3-3.1 88.1 0 9.5 1.5-1.5 20.4-4.4 32-.5 4.5 2.4 2.3 3.8.1zm-112.1 22.6c64-21.3 97.3-23.9 102-26.2 4.4-2.9-4.4-6.6-26.2-5.8-51.7 2.2-137.6 37.1-172.6 53.9l-30.7-93.3h196.6c-2.7-28.2-152.9-22.6-337.9-22.6L27 415.8c196.4-97.3 258.9-130.3 321.2-151.5zM94.7 96c253.3 53.7 330 65.7 332.1 85.2 36.4 0 45.9 0 52.4 6.6 21.1 19.7-14.6 67.7-14.6 67.7-4.4 2.9-406.4 160.2-406.4 160.2h423.1L549 96z"],ussunnah:[512,512,[],"f407","M156.8 285.1l5.7 14.4h-8.2c-1.3-3.2-3.1-7.7-3.8-9.5-2.5-6.3-1.1-8.4 0-10 1.9-2.7 3.2-4.4 3.6-5.2 0 2.2.8 5.7 2.7 10.3zm297.3 18.8c-2.1 13.8-5.7 27.1-10.5 39.7l43 23.4-44.8-18.8c-5.3 13.2-12 25.6-19.9 37.2l34.2 30.2-36.8-26.4c-8.4 11.8-18 22.6-28.7 32.3l24.9 34.7-28.1-31.8c-11 9.6-23.1 18-36.1 25.1l15.7 37.2-19.3-35.3c-13.1 6.8-27 12.1-41.6 15.9l6.7 38.4-10.5-37.4c-14.3 3.4-29.2 5.3-44.5 5.4L256 512l-1.9-38.4c-15.3-.1-30.2-2-44.5-5.3L199 505.6l6.7-38.2c-14.6-3.7-28.6-9.1-41.7-15.8l-19.2 35.1 15.6-37c-13-7-25.2-15.4-36.2-25.1l-27.9 31.6 24.7-34.4c-10.7-9.7-20.4-20.5-28.8-32.3l-36.5 26.2 33.9-29.9c-7.9-11.6-14.6-24.1-20-37.3l-44.4 18.7L67.8 344c-4.8-12.7-8.4-26.1-10.5-39.9l-51 9 50.3-14.2c-1.1-8.5-1.7-17.1-1.7-25.9 0-4.7.2-9.4.5-14.1L0 256l56-2.8c1.3-13.1 3.8-25.8 7.5-38.1L6.4 199l58.9 10.4c4-12 9.1-23.5 15.2-34.4l-55.1-30 58.3 24.6C90 159 97.2 149.2 105.3 140L55.8 96.4l53.9 38.7c8.1-8.6 17-16.5 26.6-23.6l-40-55.6 45.6 51.6c9.5-6.6 19.7-12.3 30.3-17.2l-27.3-64.9 33.8 62.1c10.5-4.4 21.4-7.9 32.7-10.4L199 6.4l19.5 69.2c11-2.1 22.3-3.2 33.8-3.4L256 0l3.6 72.2c11.5.2 22.8 1.4 33.8 3.5L313 6.4l-12.4 70.7c11.3 2.6 22.2 6.1 32.6 10.5l33.9-62.2-27.4 65.1c10.6 4.9 20.7 10.7 30.2 17.2l45.8-51.8-40.1 55.9c9.5 7.1 18.4 15 26.5 23.6l54.2-38.9-49.7 43.9c8 9.1 15.2 18.9 21.5 29.4l58.7-24.7-55.5 30.2c6.1 10.9 11.1 22.3 15.1 34.3l59.3-10.4-57.5 16.2c3.7 12.2 6.2 24.9 7.5 37.9L512 256l-56 2.8c.3 4.6.5 9.3.5 14.1 0 8.7-.6 17.3-1.6 25.8l50.7 14.3-51.5-9.1zm-21.8-31c0-97.5-79-176.5-176.5-176.5s-176.5 79-176.5 176.5 79 176.5 176.5 176.5 176.5-79 176.5-176.5zm-24 0c0 84.3-68.3 152.6-152.6 152.6s-152.6-68.3-152.6-152.6 68.3-152.6 152.6-152.6 152.6 68.3 152.6 152.6zM195 241c0 2.1 1.3 3.8 3.6 5.1 3.3 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.5 6.8-9.6 10.9-9.6 12.6zm-40.7-19c0 2.1 1.3 3.8 3.6 5.1 3.5 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.5 6.8-9.6 10.9-9.6 12.6zm-19 0c0 2.1 1.3 3.8 3.6 5.1 3.3 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.4 6.8-9.6 10.9-9.6 12.6zm204.9 87.9c-8.4-3-8.7-6.8-8.7-15.6V182c-8.2 12.5-14.2 18.6-18 18.6 6.3 14.4 9.5 23.9 9.5 28.3v64.3c0 2.2-2.2 6.5-4.7 6.5h-18c-2.8-7.5-10.2-26.9-15.3-40.3-2 2.5-7.2 9.2-10.7 13.7 2.4 1.6 4.1 3.6 5.2 6.3 2.6 6.7 6.4 16.5 7.9 20.2h-9.2c-3.9-10.4-9.6-25.4-11.8-31.1-2 2.5-7.2 9.2-10.7 13.7 2.4 1.6 4.1 3.6 5.2 6.3.8 2 2.8 7.3 4.3 10.9H256c-1.5-4.1-5.6-14.6-8.4-22-2 2.5-7.2 9.2-10.7 13.7 2.5 1.6 4.3 3.6 5.2 6.3.2.6.5 1.4.6 1.7H225c-4.6-13.9-11.4-27.7-11.4-34.1 0-2.2.3-5.1 1.1-8.2-8.8 10.8-14 15.9-14 25 0 7.5 10.4 28.3 10.4 33.3 0 1.7-.5 3.3-1.4 4.9-9.6-12.7-15.5-20.7-18.8-20.7h-12l-11.2-28c-3.8-9.6-5.7-16-5.7-18.8 0-3.8.5-7.7 1.7-12.2-1 1.3-3.7 4.7-5.5 7.1-.8-2.1-3.1-7.7-4.6-11.5-2.1 2.5-7.5 9.1-11.2 13.6.9 2.3 3.3 8.1 4.9 12.2-2.5 3.3-9.1 11.8-13.6 17.7-4 5.3-5.8 13.3-2.7 21.8 2.5 6.7 2 7.9-1.7 14.1H191c5.5 0 14.3 14 15.5 22 13.2-16 15.4-19.6 16.8-21.6h107c3.9 0 7.2-1.9 9.9-5.8zm20.1-26.6V181.7c-9 12.5-15.9 18.6-20.7 18.6 7.1 14.4 10.7 23.9 10.7 28.3v66.3c0 17.5 8.6 20.4 24 20.4 8.1 0 12.5-.8 13.7-2.7-4.3-1.6-7.6-2.5-9.9-3.3-8.1-3.2-17.8-7.4-17.8-26z"],vaadin:[448,512,[],"f408","M224.5 140.7c1.5-17.6 4.9-52.7 49.8-52.7h98.6c20.7 0 32.1-7.8 32.1-21.6V54.1c0-12.2 9.3-22.1 21.5-22.1S448 41.9 448 54.1v36.5c0 42.9-21.5 62-66.8 62H280.7c-30.1 0-33 14.7-33 27.1 0 1.3-.1 2.5-.2 3.7-.7 12.3-10.9 22.2-23.4 22.2s-22.7-9.8-23.4-22.2c-.1-1.2-.2-2.4-.2-3.7 0-12.3-3-27.1-33-27.1H66.8c-45.3 0-66.8-19.1-66.8-62V54.1C0 41.9 9.4 32 21.6 32s21.5 9.9 21.5 22.1v12.3C43.1 80.2 54.5 88 75.2 88h98.6c44.8 0 48.3 35.1 49.8 52.7h.9zM224 456c11.5 0 21.4-7 25.7-16.3 1.1-1.8 97.1-169.6 98.2-171.4 11.9-19.6-3.2-44.3-27.2-44.3-13.9 0-23.3 6.4-29.8 20.3L224 362l-66.9-117.7c-6.4-13.9-15.9-20.3-29.8-20.3-24 0-39.1 24.6-27.2 44.3 1.1 1.9 97.1 169.6 98.2 171.4 4.3 9.3 14.2 16.3 25.7 16.3z"],viacoin:[384,512,[],"f237","M384 32h-64l-80.7 192h-94.5L64 32H0l48 112H0v48h68.5l13.8 32H0v48h102.8L192 480l89.2-208H384v-48h-82.3l13.8-32H384v-48h-48l48-112zM192 336l-27-64h54l-27 64z"],viadeo:[448,512,[],"f2a9","M276.2 150.5v.7C258.3 98.6 233.6 47.8 205.4 0c43.3 29.2 67 100 70.8 150.5zm32.7 121.7c7.6 18.2 11 37.5 11 57 0 77.7-57.8 141-137.8 139.4l3.8-.3c74.2-46.7 109.3-118.6 109.3-205.1 0-38.1-6.5-75.9-18.9-112 1 11.7 1 23.7 1 35.4 0 91.8-18.1 241.6-116.6 280C95 455.2 49.4 398 49.4 329.2c0-75.6 57.4-142.3 135.4-142.3 16.8 0 33.7 3.1 49.1 9.6 1.7-15.1 6.5-29.9 13.4-43.3-19.9-7.2-41.2-10.7-62.5-10.7-161.5 0-238.7 195.9-129.9 313.7 67.9 74.6 192 73.9 259.8 0 56.6-61.3 60.9-142.4 36.4-201-12.7 8-27.1 13.9-42.2 17zM418.1 11.7c-31 66.5-81.3 47.2-115.8 80.1-12.4 12-20.6 34-20.6 50.5 0 14.1 4.5 27.1 12 38.8 47.4-11 98.3-46 118.2-90.7-.7 5.5-4.8 14.4-7.2 19.2-20.3 35.7-64.6 65.6-99.7 84.9 14.8 14.4 33.7 25.8 55 25.8 79 0 110.1-134.6 58.1-208.6z"],"viadeo-square":[448,512,[],"f2aa","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM280.7 381.2c-42.4 46.2-120 46.6-162.4 0-68-73.6-19.8-196.1 81.2-196.1 13.3 0 26.6 2.1 39.1 6.7-4.3 8.4-7.3 17.6-8.4 27.1-9.7-4.1-20.2-6-30.7-6-48.8 0-84.6 41.7-84.6 88.9 0 43 28.5 78.7 69.5 85.9 61.5-24 72.9-117.6 72.9-175 0-7.3 0-14.8-.6-22.1-11.2-32.9-26.6-64.6-44.2-94.5 27.1 18.3 41.9 62.5 44.2 94.1v.4c7.7 22.5 11.8 46.2 11.8 70 0 54.1-21.9 99-68.3 128.2l-2.4.2c50 1 86.2-38.6 86.2-87.2 0-12.2-2.1-24.3-6.9-35.7 9.5-1.9 18.5-5.6 26.4-10.5 15.3 36.6 12.6 87.3-22.8 125.6zM309 233.7c-13.3 0-25.1-7.1-34.4-16.1 21.9-12 49.6-30.7 62.3-53 1.5-3 4.1-8.6 4.5-12-12.5 27.9-44.2 49.8-73.9 56.7-4.7-7.3-7.5-15.5-7.5-24.3 0-10.3 5.2-24.1 12.9-31.6 21.6-20.5 53-8.5 72.4-50 32.5 46.2 13.1 130.3-36.3 130.3z"],viber:[512,512,[],"f409","M444 49.9C431.3 38.2 379.9.9 265.3.4c0 0-135.1-8.1-200.9 52.3C27.8 89.3 14.9 143 13.5 209.5c-1.4 66.5-3.1 191.1 117 224.9h.1l-.1 51.6s-.8 20.9 13 25.1c16.6 5.2 26.4-10.7 42.3-27.8 8.7-9.4 20.7-23.2 29.8-33.7 82.2 6.9 145.3-8.9 152.5-11.2 16.6-5.4 110.5-17.4 125.7-142 15.8-128.6-7.6-209.8-49.8-246.5zM457.9 287c-12.9 104-89 110.6-103 115.1-6 1.9-61.5 15.7-131.2 11.2 0 0-52 62.7-68.2 79-5.3 5.3-11.1 4.8-11-5.7 0-6.9.4-85.7.4-85.7-.1 0-.1 0 0 0-101.8-28.2-95.8-134.3-94.7-189.8 1.1-55.5 11.6-101 42.6-131.6 55.7-50.5 170.4-43 170.4-43 96.9.4 143.3 29.6 154.1 39.4 35.7 30.6 53.9 103.8 40.6 211.1zm-139-80.8c.4 8.6-12.5 9.2-12.9.6-1.1-22-11.4-32.7-32.6-33.9-8.6-.5-7.8-13.4.7-12.9 27.9 1.5 43.4 17.5 44.8 46.2zm20.3 11.3c1-42.4-25.5-75.6-75.8-79.3-8.5-.6-7.6-13.5.9-12.9 58 4.2 88.9 44.1 87.8 92.5-.1 8.6-13.1 8.2-12.9-.3zm47 13.4c.1 8.6-12.9 8.7-12.9.1-.6-81.5-54.9-125.9-120.8-126.4-8.5-.1-8.5-12.9 0-12.9 73.7.5 133 51.4 133.7 139.2zM374.9 329v.2c-10.8 19-31 40-51.8 33.3l-.2-.3c-21.1-5.9-70.8-31.5-102.2-56.5-16.2-12.8-31-27.9-42.4-42.4-10.3-12.9-20.7-28.2-30.8-46.6-21.3-38.5-26-55.7-26-55.7-6.7-20.8 14.2-41 33.3-51.8h.2c9.2-4.8 18-3.2 23.9 3.9 0 0 12.4 14.8 17.7 22.1 5 6.8 11.7 17.7 15.2 23.8 6.1 10.9 2.3 22-3.7 26.6l-12 9.6c-6.1 4.9-5.3 14-5.3 14s17.8 67.3 84.3 84.3c0 0 9.1.8 14-5.3l9.6-12c4.6-6 15.7-9.8 26.6-3.7 14.7 8.3 33.4 21.2 45.8 32.9 7 5.7 8.6 14.4 3.8 23.6z"],vimeo:[448,512,[],"f40a","M403.2 32H44.8C20.1 32 0 52.1 0 76.8v358.4C0 459.9 20.1 480 44.8 480h358.4c24.7 0 44.8-20.1 44.8-44.8V76.8c0-24.7-20.1-44.8-44.8-44.8zM377 180.8c-1.4 31.5-23.4 74.7-66 129.4-44 57.2-81.3 85.8-111.7 85.8-18.9 0-34.8-17.4-47.9-52.3-25.5-93.3-36.4-148-57.4-148-2.4 0-10.9 5.1-25.4 15.2l-15.2-19.6c37.3-32.8 72.9-69.2 95.2-71.2 25.2-2.4 40.7 14.8 46.5 51.7 20.7 131.2 29.9 151 67.6 91.6 13.5-21.4 20.8-37.7 21.8-48.9 3.5-33.2-25.9-30.9-45.8-22.4 15.9-52.1 46.3-77.4 91.2-76 33.3.9 49 22.5 47.1 64.7z"],"vimeo-square":[448,512,[],"f194","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-16.2 149.6c-1.4 31.1-23.2 73.8-65.3 127.9-43.5 56.5-80.3 84.8-110.4 84.8-18.7 0-34.4-17.2-47.3-51.6-25.2-92.3-35.9-146.4-56.7-146.4-2.4 0-10.8 5-25.1 15.1L64 192c36.9-32.4 72.1-68.4 94.1-70.4 24.9-2.4 40.2 14.6 46 51.1 20.5 129.6 29.6 149.2 66.8 90.5 13.4-21.2 20.6-37.2 21.5-48.3 3.4-32.8-25.6-30.6-45.2-22.2 15.7-51.5 45.8-76.5 90.1-75.1 32.9 1 48.4 22.4 46.5 64z"],"vimeo-v":[448,512,[],"f27d","M447.8 153.6c-2 43.6-32.4 103.3-91.4 179.1-60.9 79.2-112.4 118.8-154.6 118.8-26.1 0-48.2-24.1-66.3-72.3C100.3 250 85.3 174.3 56.2 174.3c-3.4 0-15.1 7.1-35.2 21.1L0 168.2c51.6-45.3 100.9-95.7 131.8-98.5 34.9-3.4 56.3 20.5 64.4 71.5 28.7 181.5 41.4 208.9 93.6 126.7 18.7-29.6 28.8-52.1 30.2-67.6 4.8-45.9-35.8-42.8-63.3-31 22-72.1 64.1-107.1 126.2-105.1 45.8 1.2 67.5 31.1 64.9 89.4z"],vine:[384,512,[],"f1ca","M384 254.7v52.1c-18.4 4.2-36.9 6.1-52.1 6.1-36.9 77.4-103 143.8-125.1 156.2-14 7.9-27.1 8.4-42.7-.8C137 452 34.2 367.7 0 102.7h74.5C93.2 261.8 139 343.4 189.3 404.5c27.9-27.9 54.8-65.1 75.6-106.9-49.8-25.3-80.1-80.9-80.1-145.6 0-65.6 37.7-115.1 102.2-115.1 114.9 0 106.2 127.9 81.6 181.5 0 0-46.4 9.2-63.5-20.5 3.4-11.3 8.2-30.8 8.2-48.5 0-31.3-11.3-46.6-28.4-46.6-18.2 0-30.8 17.1-30.8 50 .1 79.2 59.4 118.7 129.9 101.9z"],vk:[576,512,[],"f189","M545 117.7c3.7-12.5 0-21.7-17.8-21.7h-58.9c-15 0-21.9 7.9-25.6 16.7 0 0-30 73.1-72.4 120.5-13.7 13.7-20 18.1-27.5 18.1-3.7 0-9.4-4.4-9.4-16.9V117.7c0-15-4.2-21.7-16.6-21.7h-92.6c-9.4 0-15 7-15 13.5 0 14.2 21.2 17.5 23.4 57.5v86.8c0 19-3.4 22.5-10.9 22.5-20 0-68.6-73.4-97.4-157.4-5.8-16.3-11.5-22.9-26.6-22.9H38.8c-16.8 0-20.2 7.9-20.2 16.7 0 15.6 20 93.1 93.1 195.5C160.4 378.1 229 416 291.4 416c37.5 0 42.1-8.4 42.1-22.9 0-66.8-3.4-73.1 15.4-73.1 8.7 0 23.7 4.4 58.7 38.1 40 40 46.6 57.9 69 57.9h58.9c16.8 0 25.3-8.4 20.4-25-11.2-34.9-86.9-106.7-90.3-111.5-8.7-11.2-6.2-16.2 0-26.2.1-.1 72-101.3 79.4-135.6z"],vnv:[640,512,[],"f40b","M104.9 352c-34.1 0-46.4-30.4-46.4-30.4L2.6 210.1S-7.8 192 13 192h32.8c10.4 0 13.2 8.7 18.8 18.1l36.7 74.5s5.2 13.1 21.1 13.1 21.1-13.1 21.1-13.1l36.7-74.5c5.6-9.5 8.4-18.1 18.8-18.1h32.8c20.8 0 10.4 18.1 10.4 18.1l-55.8 111.5S174.2 352 140 352h-35.1zm395 0c-34.1 0-46.4-30.4-46.4-30.4l-55.9-111.5S387.2 192 408 192h32.8c10.4 0 13.2 8.7 18.8 18.1l36.7 74.5s5.2 13.1 21.1 13.1 21.1-13.1 21.1-13.1l36.8-74.5c5.6-9.5 8.4-18.1 18.8-18.1H627c20.8 0 10.4 18.1 10.4 18.1l-55.9 111.5S569.3 352 535.1 352h-35.2zM337.6 192c34.1 0 46.4 30.4 46.4 30.4l55.9 111.5s10.4 18.1-10.4 18.1h-32.8c-10.4 0-13.2-8.7-18.8-18.1l-36.7-74.5s-5.2-13.1-21.1-13.1c-15.9 0-21.1 13.1-21.1 13.1l-36.7 74.5c-5.6 9.4-8.4 18.1-18.8 18.1h-32.9c-20.8 0-10.4-18.1-10.4-18.1l55.9-111.5s12.2-30.4 46.4-30.4h35.1z"],vuejs:[448,512,[],"f41f","M356.9 64.3H280l-56 88.6-48-88.6H0L224 448 448 64.3h-91.1zm-301.2 32h53.8L224 294.5 338.4 96.3h53.8L224 384.5 55.7 96.3z"],waze:[512,512,[],"f83f","M502.17 201.67C516.69 287.53 471.23 369.59 389 409.8c13 34.1-12.4 70.2-48.32 70.2a51.68 51.68 0 0 1-51.57-49c-6.44.19-64.2 0-76.33-.64A51.69 51.69 0 0 1 159 479.92c-33.86-1.36-57.95-34.84-47-67.92-37.21-13.11-72.54-34.87-99.62-70.8-13-17.28-.48-41.8 20.84-41.8 46.31 0 32.22-54.17 43.15-110.26C94.8 95.2 193.12 32 288.09 32c102.48 0 197.15 70.67 214.08 169.67zM373.51 388.28c42-19.18 81.33-56.71 96.29-102.14 40.48-123.09-64.15-228-181.71-228-83.45 0-170.32 55.42-186.07 136-9.53 48.91 5 131.35-68.75 131.35C58.21 358.6 91.6 378.11 127 389.54c24.66-21.8 63.87-15.47 79.83 14.34 14.22 1 79.19 1.18 87.9.82a51.69 51.69 0 0 1 78.78-16.42zM205.12 187.13c0-34.74 50.84-34.75 50.84 0s-50.84 34.74-50.84 0zm116.57 0c0-34.74 50.86-34.75 50.86 0s-50.86 34.75-50.86 0zm-122.61 70.69c-3.44-16.94 22.18-22.18 25.62-5.21l.06.28c4.14 21.42 29.85 44 64.12 43.07 35.68-.94 59.25-22.21 64.11-42.77 4.46-16.05 28.6-10.36 25.47 6-5.23 22.18-31.21 62-91.46 62.9-42.55 0-80.88-27.84-87.9-64.25z"],weebly:[512,512,[],"f5cc","M425.09 65.83c-39.88 0-73.28 25.73-83.66 64.33-18.16-58.06-65.5-64.33-84.95-64.33-19.78 0-66.8 6.28-85.28 64.33-10.38-38.6-43.45-64.33-83.66-64.33C38.59 65.83 0 99.72 0 143.03c0 28.96 4.18 33.27 77.17 233.48 22.37 60.57 67.77 69.35 92.74 69.35 39.23 0 70.04-19.46 85.93-53.98 15.89 34.83 46.69 54.29 85.93 54.29 24.97 0 70.36-9.1 92.74-69.67 76.55-208.65 77.5-205.58 77.5-227.2.63-48.32-36.01-83.47-86.92-83.47zm26.34 114.81l-65.57 176.44c-7.92 21.49-21.22 37.22-46.24 37.22-23.44 0-37.38-12.41-44.03-33.9l-39.28-117.42h-.95L216.08 360.4c-6.96 21.5-20.9 33.6-44.02 33.6-25.02 0-38.33-15.74-46.24-37.22L60.88 181.55c-5.38-14.83-7.92-23.91-7.92-34.5 0-16.34 15.84-29.36 38.33-29.36 18.69 0 31.99 11.8 36.11 29.05l44.03 139.82h.95l44.66-136.79c6.02-19.67 16.47-32.08 38.96-32.08s32.94 12.11 38.96 32.08l44.66 136.79h.95l44.03-139.82c4.12-17.25 17.42-29.05 36.11-29.05 22.17 0 38.33 13.32 38.33 35.71-.32 7.87-4.12 16.04-7.61 27.24z"],weibo:[512,512,[],"f18a","M407 177.6c7.6-24-13.4-46.8-37.4-41.7-22 4.8-28.8-28.1-7.1-32.8 50.1-10.9 92.3 37.1 76.5 84.8-6.8 21.2-38.8 10.8-32-10.3zM214.8 446.7C108.5 446.7 0 395.3 0 310.4c0-44.3 28-95.4 76.3-143.7C176 67 279.5 65.8 249.9 161c-4 13.1 12.3 5.7 12.3 6 79.5-33.6 140.5-16.8 114 51.4-3.7 9.4 1.1 10.9 8.3 13.1 135.7 42.3 34.8 215.2-169.7 215.2zm143.7-146.3c-5.4-55.7-78.5-94-163.4-85.7-84.8 8.6-148.8 60.3-143.4 116s78.5 94 163.4 85.7c84.8-8.6 148.8-60.3 143.4-116zM347.9 35.1c-25.9 5.6-16.8 43.7 8.3 38.3 72.3-15.2 134.8 52.8 111.7 124-7.4 24.2 29.1 37 37.4 12 31.9-99.8-55.1-195.9-157.4-174.3zm-78.5 311c-17.1 38.8-66.8 60-109.1 46.3-40.8-13.1-58-53.4-40.3-89.7 17.7-35.4 63.1-55.4 103.4-45.1 42 10.8 63.1 50.2 46 88.5zm-86.3-30c-12.9-5.4-30 .3-38 12.9-8.3 12.9-4.3 28 8.6 34 13.1 6 30.8.3 39.1-12.9 8-13.1 3.7-28.3-9.7-34zm32.6-13.4c-5.1-1.7-11.4.6-14.3 5.4-2.9 5.1-1.4 10.6 3.7 12.9 5.1 2 11.7-.3 14.6-5.4 2.8-5.2 1.1-10.9-4-12.9z"],weixin:[576,512,[],"f1d7","M385.2 167.6c6.4 0 12.6.3 18.8 1.1C387.4 90.3 303.3 32 207.7 32 100.5 32 13 104.8 13 197.4c0 53.4 29.3 97.5 77.9 131.6l-19.3 58.6 68-34.1c24.4 4.8 43.8 9.7 68.2 9.7 6.2 0 12.1-.3 18.3-.8-4-12.9-6.2-26.6-6.2-40.8-.1-84.9 72.9-154 165.3-154zm-104.5-52.9c14.5 0 24.2 9.7 24.2 24.4 0 14.5-9.7 24.2-24.2 24.2-14.8 0-29.3-9.7-29.3-24.2.1-14.7 14.6-24.4 29.3-24.4zm-136.4 48.6c-14.5 0-29.3-9.7-29.3-24.2 0-14.8 14.8-24.4 29.3-24.4 14.8 0 24.4 9.7 24.4 24.4 0 14.6-9.6 24.2-24.4 24.2zM563 319.4c0-77.9-77.9-141.3-165.4-141.3-92.7 0-165.4 63.4-165.4 141.3S305 460.7 397.6 460.7c19.3 0 38.9-5.1 58.6-9.9l53.4 29.3-14.8-48.6C534 402.1 563 363.2 563 319.4zm-219.1-24.5c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.8 0 24.4 9.7 24.4 19.3 0 10-9.7 19.6-24.4 19.6zm107.1 0c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.5 0 24.4 9.7 24.4 19.3.1 10-9.9 19.6-24.4 19.6z"],whatsapp:[448,512,[],"f232","M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z"],"whatsapp-square":[448,512,[],"f40c","M224 122.8c-72.7 0-131.8 59.1-131.9 131.8 0 24.9 7 49.2 20.2 70.1l3.1 5-13.3 48.6 49.9-13.1 4.8 2.9c20.2 12 43.4 18.4 67.1 18.4h.1c72.6 0 133.3-59.1 133.3-131.8 0-35.2-15.2-68.3-40.1-93.2-25-25-58-38.7-93.2-38.7zm77.5 188.4c-3.3 9.3-19.1 17.7-26.7 18.8-12.6 1.9-22.4.9-47.5-9.9-39.7-17.2-65.7-57.2-67.7-59.8-2-2.6-16.2-21.5-16.2-41s10.2-29.1 13.9-33.1c3.6-4 7.9-5 10.6-5 2.6 0 5.3 0 7.6.1 2.4.1 5.7-.9 8.9 6.8 3.3 7.9 11.2 27.4 12.2 29.4s1.7 4.3.3 6.9c-7.6 15.2-15.7 14.6-11.6 21.6 15.3 26.3 30.6 35.4 53.9 47.1 4 2 6.3 1.7 8.6-1 2.3-2.6 9.9-11.6 12.5-15.5 2.6-4 5.3-3.3 8.9-2 3.6 1.3 23.1 10.9 27.1 12.9s6.6 3 7.6 4.6c.9 1.9.9 9.9-2.4 19.1zM400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM223.9 413.2c-26.6 0-52.7-6.7-75.8-19.3L64 416l22.5-82.2c-13.9-24-21.2-51.3-21.2-79.3C65.4 167.1 136.5 96 223.9 96c42.4 0 82.2 16.5 112.2 46.5 29.9 30 47.9 69.8 47.9 112.2 0 87.4-72.7 158.5-160.1 158.5z"],whmcs:[448,512,[],"f40d","M448 161v-21.3l-28.5-8.8-2.2-10.4 20.1-20.7L427 80.4l-29 7.5-7.2-7.5 7.5-28.2-19.1-11.6-21.3 21-10.7-3.2-7-26.4h-22.6l-6.2 26.4-12.1 3.2-19.7-21-19.4 11 8.1 27.7-8.1 8.4-28.5-7.5-11 19.1 20.7 21-2.9 10.4-28.5 7.8-.3 21.7 28.8 7.5 2.4 12.1-20.1 19.9 10.4 18.5 29.6-7.5 7.2 8.6-8.1 26.9 19.9 11.6 19.4-20.4 11.6 2.9 6.7 28.5 22.6.3 6.7-28.8 11.6-3.5 20.7 21.6 20.4-12.1-8.8-28 7.8-8.1 28.8 8.8 10.3-20.1-20.9-18.8 2.2-12.1 29.1-7zm-119.2 45.2c-31.3 0-56.8-25.4-56.8-56.8s25.4-56.8 56.8-56.8 56.8 25.4 56.8 56.8c0 31.5-25.4 56.8-56.8 56.8zm72.3 16.4l46.9 14.5V277l-55.1 13.4-4.1 22.7 38.9 35.3-19.2 37.9-54-16.7-14.6 15.2 16.7 52.5-38.3 22.7-38.9-40.5-21.7 6.6-12.6 54-42.4-.5-12.6-53.6-21.7-5.6-36.4 38.4-37.4-21.7 15.2-50.5-13.7-16.1-55.5 14.1-19.7-34.8 37.9-37.4-4.8-22.8-54-14.1.5-40.9L54 219.9l5.7-19.7-38.9-39.4L41.5 125l53.6 14.1 15.2-15.7-15.2-52 36.4-20.7 36.8 39.4L191 84l11.6-52H245l11.6 45.9L234 72l-6.3-1.7-3.3 5.7-11 19.1-3.3 5.6 4.6 4.6 17.2 17.4-.3 1-23.8 6.5-6.2 1.7-.1 6.4-.2 12.9C153.8 161.6 118 204 118 254.7c0 58.3 47.3 105.7 105.7 105.7 50.5 0 92.7-35.4 103.2-82.8l13.2.2 6.9.1 1.6-6.7 5.6-24 1.9-.6 17.1 17.8 4.7 4.9 5.8-3.4 20.4-12.1 5.8-3.5-2-6.5-6.8-21.2z"],"wikipedia-w":[640,512,[],"f266","M640 51.2l-.3 12.2c-28.1.8-45 15.8-55.8 40.3-25 57.8-103.3 240-155.3 358.6H415l-81.9-193.1c-32.5 63.6-68.3 130-99.2 193.1-.3.3-15 0-15-.3C172 352.3 122.8 243.4 75.8 133.4 64.4 106.7 26.4 63.4.2 63.7c0-3.1-.3-10-.3-14.2h161.9v13.9c-19.2 1.1-52.8 13.3-43.3 34.2 21.9 49.7 103.6 240.3 125.6 288.6 15-29.7 57.8-109.2 75.3-142.8-13.9-28.3-58.6-133.9-72.8-160-9.7-17.8-36.1-19.4-55.8-19.7V49.8l142.5.3v13.1c-19.4.6-38.1 7.8-29.4 26.1 18.9 40 30.6 68.1 48.1 104.7 5.6-10.8 34.7-69.4 48.1-100.8 8.9-20.6-3.9-28.6-38.6-29.4.3-3.6 0-10.3.3-13.6 44.4-.3 111.1-.3 123.1-.6v13.6c-22.5.8-45.8 12.8-58.1 31.7l-59.2 122.8c6.4 16.1 63.3 142.8 69.2 156.7L559.2 91.8c-8.6-23.1-36.4-28.1-47.2-28.3V49.6l127.8 1.1.2.5z"],windows:[448,512,[],"f17a","M0 93.7l183.6-25.3v177.4H0V93.7zm0 324.6l183.6 25.3V268.4H0v149.9zm203.8 28L448 480V268.4H203.8v177.9zm0-380.6v180.1H448V32L203.8 65.7z"],wix:[640,512,[],"f5cf","M393.38 131.69c0 13.03 2.08 32.69-28.68 43.83-9.52 3.45-15.95 9.66-15.95 9.66 0-31 4.72-42.22 17.4-48.86 9.75-5.11 27.23-4.63 27.23-4.63zm-115.8 35.54l-34.24 132.66-28.48-108.57c-7.69-31.99-20.81-48.53-48.43-48.53-27.37 0-40.66 16.18-48.43 48.53L89.52 299.89 55.28 167.23C49.73 140.51 23.86 128.96 0 131.96l65.57 247.93s21.63 1.56 32.46-3.96c14.22-7.25 20.98-12.84 29.59-46.57 7.67-30.07 29.11-118.41 31.12-124.7 4.76-14.94 11.09-13.81 15.4 0 1.97 6.3 23.45 94.63 31.12 124.7 8.6 33.73 15.37 39.32 29.59 46.57 10.82 5.52 32.46 3.96 32.46 3.96l65.57-247.93c-24.42-3.07-49.82 8.93-55.3 35.27zm115.78 5.21s-4.1 6.34-13.46 11.57c-6.01 3.36-11.78 5.64-17.97 8.61-15.14 7.26-13.18 13.95-13.18 35.2v152.07s16.55 2.09 27.37-3.43c13.93-7.1 17.13-13.95 17.26-44.78V181.41l-.02.01v-8.98zm163.44 84.08L640 132.78s-35.11-5.98-52.5 9.85c-13.3 12.1-24.41 29.55-54.18 72.47-.47.73-6.25 10.54-13.07 0-29.29-42.23-40.8-60.29-54.18-72.47-17.39-15.83-52.5-9.85-52.5-9.85l83.2 123.74-82.97 123.36s36.57 4.62 53.95-11.21c11.49-10.46 17.58-20.37 52.51-70.72 6.81-10.52 12.57-.77 13.07 0 29.4 42.38 39.23 58.06 53.14 70.72 17.39 15.83 53.32 11.21 53.32 11.21L556.8 256.52z"],"wizards-of-the-coast":[640,512,[],"f730","M219.19 345.69c-1.9 1.38-11.07 8.44-.26 23.57 4.64 6.42 14.11 12.79 21.73 6.55 6.5-4.88 7.35-12.92.26-23.04-5.47-7.76-14.28-12.88-21.73-7.08zm336.75 75.94c-.34 1.7-.55 1.67.79 0 2.09-4.19 4.19-10.21 4.98-19.9 3.14-38.49-40.33-71.49-101.34-78.03-54.73-6.02-124.38 9.17-188.8 60.49l-.26 1.57c2.62 4.98 4.98 10.74 3.4 21.21l.79.26c63.89-58.4 131.19-77.25 184.35-73.85 58.4 3.67 100.03 34.04 100.03 68.08-.01 9.96-2.63 15.72-3.94 20.17zM392.28 240.42c.79 7.07 4.19 10.21 9.17 10.47 5.5.26 9.43-2.62 10.47-6.55.79-3.4 2.09-29.85 2.09-29.85s-11.26 6.55-14.93 10.47c-3.66 3.68-7.33 8.39-6.8 15.46zm-50.02-151.1C137.75 89.32 13.1 226.8.79 241.2c-1.05.52-1.31.79.79 1.31 60.49 16.5 155.81 81.18 196.13 202.16l1.05.26c55.25-69.92 140.88-128.05 236.99-128.05 80.92 0 130.15 42.16 130.15 80.39 0 18.33-6.55 33.52-22.26 46.35 0 .96-.2.79.79.79 14.66-10.74 27.5-28.8 27.5-48.18 0-22.78-12.05-38.23-12.05-38.23 7.07 7.07 10.74 16.24 10.74 16.24 5.76-40.85 26.97-62.32 26.97-62.32-2.36-9.69-6.81-17.81-6.81-17.81 7.59 8.12 14.4 27.5 14.4 41.37 0 10.47-3.4 22.78-12.57 31.95l.26.52c8.12-4.98 16.5-16.76 16.5-37.97 0-15.71-4.71-25.92-4.71-25.92 5.76-5.24 11.26-9.17 15.97-11.78.79 3.4 2.09 9.69 2.36 14.93 0 1.05.79 1.83 1.05 0 .79-5.76-.26-16.24-.26-16.5 6.02-3.14 9.69-4.45 9.69-4.45C617.74 176 489.43 89.32 342.26 89.32zm-99.24 289.62c-11.06 8.99-24.2 4.08-30.64-4.19-7.45-9.58-6.76-24.09 4.19-32.47 14.85-11.35 27.08-.49 31.16 5.5.28.39 12.13 16.57-4.71 31.16zm2.09-136.43l9.43-17.81 11.78 70.96-12.57 6.02-24.62-28.8 14.14-26.71 3.67 4.45-1.83-8.11zm18.59 117.58l-.26-.26c2.05-4.1-2.5-6.61-17.54-31.69-1.31-2.36-3.14-2.88-4.45-2.62l-.26-.52c7.86-5.76 15.45-10.21 25.4-15.71l.52.26c1.31 1.83 2.09 2.88 3.4 4.71l-.26.52c-1.05-.26-2.36-.79-5.24.26-2.09.79-7.86 3.67-12.31 7.59v1.31c1.57 2.36 3.93 6.55 5.76 9.69h.26c10.05-6.28 7.56-4.55 11.52-7.86h.26c.52 1.83.52 1.83 1.83 5.5l-.26.26c-3.06.61-4.65.34-11.52 5.5v.26c9.46 17.02 11.01 16.75 12.57 15.97l.26.26c-2.34 1.59-6.27 4.21-9.68 6.57zm55.26-32.47c-3.14 1.57-6.02 2.88-9.95 4.98l-.26-.26c1.29-2.59 1.16-2.71-11.78-32.47l-.26-.26c-.15 0-8.9 3.65-9.95 7.33h-.52l-1.05-5.76.26-.52c7.29-4.56 25.53-11.64 27.76-12.57l.52.26 3.14 4.98-.26.52c-3.53-1.76-7.35.76-12.31 2.62v.26c12.31 32.01 12.67 30.64 14.66 30.64v.25zm44.77-16.5c-4.19 1.05-5.24 1.31-9.69 2.88l-.26-.26.52-4.45c-1.05-3.4-3.14-11.52-3.67-13.62l-.26-.26c-3.4.79-8.9 2.62-12.83 3.93l-.26.26c.79 2.62 3.14 9.95 4.19 13.88.79 2.36 1.83 2.88 2.88 3.14v.52c-3.67 1.05-7.07 2.62-10.21 3.93l-.26-.26c1.05-1.31 1.05-2.88.26-4.98-1.05-3.14-8.12-23.83-9.17-27.23-.52-1.83-1.57-3.14-2.62-3.14v-.52c3.14-1.05 6.02-2.09 10.74-3.4l.26.26-.26 4.71c1.31 3.93 2.36 7.59 3.14 9.69h.26c3.93-1.31 9.43-2.88 12.83-3.93l.26-.26-2.62-9.43c-.52-1.83-1.05-3.4-2.62-3.93v-.26c4.45-1.05 7.33-1.83 10.74-2.36l.26.26c-1.05 1.31-1.05 2.88-.52 4.45 1.57 6.28 4.71 20.43 6.28 26.45.54 2.62 1.85 3.41 2.63 3.93zm32.21-6.81l-.26.26c-4.71.52-14.14 2.36-22.52 4.19l-.26-.26.79-4.19c-1.57-7.86-3.4-18.59-4.98-26.19-.26-1.83-.79-2.88-2.62-3.67l.79-.52c9.17-1.57 20.16-2.36 24.88-2.62l.26.26c.52 2.36.79 3.14 1.57 5.5l-.26.26c-1.14-1.14-3.34-3.2-16.24-.79l-.26.26c.26 1.57 1.05 6.55 1.57 9.95l.26.26c9.52-1.68 4.76-.06 10.74-2.36h.26c0 1.57-.26 1.83-.26 5.24h-.26c-4.81-1.03-2.15-.9-10.21 0l-.26.26c.26 2.09 1.57 9.43 2.09 12.57l.26.26c1.15.38 14.21-.65 16.24-4.71h.26c-.53 2.38-1.05 4.21-1.58 6.04zm10.74-44.51c-4.45 2.36-8.12 2.88-11 2.88-.25.02-11.41 1.09-17.54-9.95-6.74-10.79-.98-25.2 5.5-31.69 8.8-8.12 23.35-10.1 28.54-17.02 8.03-10.33-13.04-22.31-29.59-5.76l-2.62-2.88 5.24-16.24c25.59-1.57 45.2-3.04 50.02 16.24.79 3.14 0 9.43-.26 12.05 0 2.62-1.83 18.85-2.09 23.04-.52 4.19-.79 18.33-.79 20.69.26 2.36.52 4.19 1.57 5.5 1.57 1.83 5.76 1.83 5.76 1.83l-.79 4.71c-11.82-1.07-10.28-.59-20.43-1.05-3.22-5.15-2.23-3.28-4.19-7.86 0 .01-4.19 3.94-7.33 5.51zm37.18 21.21c-6.35-10.58-19.82-7.16-21.73 5.5-2.63 17.08 14.3 19.79 20.69 10.21l.26.26c-.52 1.83-1.83 6.02-1.83 6.28l-.52.52c-10.3 6.87-28.5-2.5-25.66-18.59 1.94-10.87 14.44-18.93 28.8-9.95l.26.52c0 1.06-.27 3.41-.27 5.25zm5.77-87.73v-6.55c.69 0 19.65 3.28 27.76 7.33l-1.57 17.54s10.21-9.43 15.45-10.74c5.24-1.57 14.93 7.33 14.93 7.33l-11.26 11.26c-12.07-6.35-19.59-.08-20.69.79-5.29 38.72-8.6 42.17 4.45 46.09l-.52 4.71c-17.55-4.29-18.53-4.5-36.92-7.33l.79-4.71c7.25 0 7.48-5.32 7.59-6.81 0 0 4.98-53.16 4.98-55.25-.02-2.87-4.99-3.66-4.99-3.66zm10.99 114.44c-8.12-2.09-14.14-11-10.74-20.69 3.14-9.43 12.31-12.31 18.85-10.21 9.17 2.62 12.83 11.78 10.74 19.38-2.61 8.9-9.42 13.87-18.85 11.52zm42.16 9.69c-2.36-.52-7.07-2.36-8.64-2.88v-.26l1.57-1.83c.59-8.24.59-7.27.26-7.59-4.82-1.81-6.66-2.36-7.07-2.36-1.31 1.83-2.88 4.45-3.67 5.5l-.79 3.4v.26c-1.31-.26-3.93-1.31-6.02-1.57v-.26l2.62-1.83c3.4-4.71 9.95-14.14 13.88-20.16v-2.09l.52-.26c2.09.79 5.5 2.09 7.59 2.88.48.48.18-1.87-1.05 25.14-.24 1.81.02 2.6.8 3.91zm-4.71-89.82c11.25-18.27 30.76-16.19 34.04-3.4L539.7 198c2.34-6.25-2.82-9.9-4.45-11.26l1.83-3.67c12.22 10.37 16.38 13.97 22.52 20.43-25.91 73.07-30.76 80.81-24.62 84.32l-1.83 4.45c-6.37-3.35-8.9-4.42-17.81-8.64l2.09-6.81c-.26-.26-3.93 3.93-9.69 3.67-19.06-1.3-22.89-31.75-9.67-52.9zm29.33 79.34c0-5.71-6.34-7.89-7.86-5.24-1.31 2.09 1.05 4.98 2.88 8.38 1.57 2.62 2.62 6.28 1.05 9.43-2.64 6.34-12.4 5.31-15.45-.79 0-.7-.27.09 1.83-4.71l.79-.26c-.57 5.66 6.06 9.61 8.38 4.98 1.05-2.09-.52-5.5-2.09-8.38-1.57-2.62-3.67-6.28-1.83-9.69 2.72-5.06 11.25-4.47 14.66 2.36v.52l-2.36 3.4zm21.21 13.36c-1.96-3.27-.91-2.14-4.45-4.71h-.26c-2.36 4.19-5.76 10.47-8.64 16.24-1.31 2.36-1.05 3.4-.79 3.93l-.26.26-5.76-4.45.26-.26 2.09-1.31c3.14-5.76 6.55-12.05 9.17-17.02v-.26c-2.64-1.98-1.22-1.51-6.02-1.83v-.26l3.14-3.4h.26c3.67 2.36 9.95 6.81 12.31 8.9l.26.26-1.31 3.91zm27.23-44.26l-2.88-2.88c.79-2.36 1.83-4.98 2.09-7.59.75-9.74-11.52-11.84-11.52-4.98 0 4.98 7.86 19.38 7.86 27.76 0 10.21-5.76 15.71-13.88 16.5-8.38.79-20.16-10.47-20.16-10.47l4.98-14.4 2.88 2.09c-2.97 17.8 17.68 20.37 13.35 5.24-1.06-4.02-18.75-34.2 2.09-38.23 13.62-2.36 23.04 16.5 23.04 16.5l-7.85 10.46zm35.62-10.21c-11-30.38-60.49-127.53-191.95-129.62-53.42-1.05-94.27 15.45-132.76 37.97l85.63-9.17-91.39 20.69 25.14 19.64-3.93-16.5c7.5-1.71 39.15-8.45 66.77-8.9l-22.26 80.39c13.61-.7 18.97-8.98 19.64-22.78l4.98-1.05.26 26.71c-22.46 3.21-37.3 6.69-49.49 9.95l13.09-43.21-61.54-36.66 2.36 8.12 10.21 4.98c6.28 18.59 19.38 56.56 20.43 58.66 1.95 4.28 3.16 5.78 12.05 4.45l1.05 4.98c-16.08 4.86-23.66 7.61-39.02 14.4l-2.36-4.71c4.4-2.94 8.73-3.94 5.5-12.83-23.7-62.5-21.48-58.14-22.78-59.44l2.36-4.45 33.52 67.3c-3.84-11.87 1.68 1.69-32.99-78.82l-41.9 88.51 4.71-13.88-35.88-42.16 27.76 93.48-11.78 8.38C95 228.58 101.05 231.87 93.23 231.52c-5.5-.26-13.62 5.5-13.62 5.5L74.63 231c30.56-23.53 31.62-24.33 58.4-42.68l4.19 7.07s-5.76 4.19-7.86 7.07c-5.9 9.28 1.67 13.28 61.8 75.68l-18.85-58.92 39.8-10.21 25.66 30.64 4.45-12.31-4.98-24.62 13.09-3.4.52 3.14 3.67-10.47-94.27 29.33 11.26-4.98-13.62-42.42 17.28-9.17 30.11 36.14 28.54-13.09c-1.41-7.47-2.47-14.5-4.71-19.64l17.28 13.88 4.71-2.09-59.18-42.68 23.08 11.5c18.98-6.07 25.23-7.47 32.21-9.69l2.62 11c-12.55 12.55 1.43 16.82 6.55 19.38l-13.62-61.01 12.05 28.28c4.19-1.31 7.33-2.09 7.33-2.09l2.62 8.64s-3.14 1.05-6.28 2.09l8.9 20.95 33.78-65.73-20.69 61.01c42.42-24.09 81.44-36.66 131.98-35.88 67.04 1.05 167.33 40.85 199.8 139.83.78 2.1-.01 2.63-.79.27zM203.48 152.43s1.83-.52 4.19-1.31l9.43 7.59c-.4 0-3.44-.25-11.26 2.36l-2.36-8.64zm143.76 38.5c-1.57-.6-26.46-4.81-33.26 20.69l21.73 17.02 11.53-37.71zM318.43 67.07c-58.4 0-106.05 12.05-114.96 14.4v.79c8.38 2.09 14.4 4.19 21.21 11.78l1.57.26c6.55-1.83 48.97-13.88 110.24-13.88 180.16 0 301.67 116.79 301.67 223.37v9.95c0 1.31.79 2.62 1.05.52.52-2.09.79-8.64.79-19.64.26-83.79-96.63-227.55-321.57-227.55zm211.06 169.68c1.31-5.76 0-12.31-7.33-13.09-9.62-1.13-16.14 23.79-17.02 33.52-.79 5.5-1.31 14.93 6.02 14.93 4.68-.01 9.72-.91 18.33-35.36zm-61.53 42.95c-2.62-.79-9.43-.79-12.57 10.47-1.83 6.81.52 13.35 6.02 14.66 3.67 1.05 8.9.52 11.78-10.74 2.62-9.94-1.83-13.61-5.23-14.39zM491 300.65c1.83.52 3.14 1.05 5.76 1.83 0-1.83.52-8.38.79-12.05-1.05 1.31-5.5 8.12-6.55 9.95v.27z"],"wolf-pack-battalion":[512,512,[],"f514","M267.73 471.53l10.56 15.84 5.28-12.32 5.28 7V512c21.06-7.92 21.11-66.86 25.51-97.21 4.62-31.89-.88-92.81 81.37-149.11-8.88-23.61-12-49.43-2.64-80.05C421 189 447 196.21 456.43 239.73l-30.35 8.36c11.15 23 17 46.76 13.2 72.14L412 313.18l-6.16 33.43-18.47-7-8.8 33.39-19.35-7 26.39 21.11 8.8-28.15L419 364.2l7-35.63 26.39 14.52c.25-20 7-58.06-8.8-84.45l26.39 5.28c4-22.07-2.38-39.21-7.92-56.74l22.43 9.68c-.44-25.07-29.94-56.79-61.58-58.5-20.22-1.09-56.74-25.17-54.1-51.9 2-19.87 17.45-42.62 43.11-49.7-44 36.51-9.68 67.3 5.28 73.46 4.4-11.44 17.54-69.08 0-130.2-40.39 22.87-89.65 65.1-93.2 147.79l-58 38.71-3.52 93.25L369.78 220l7 7-17.59 3.52-44 38.71-15.84-5.28-28.1 49.25-3.52 119.64 21.11 15.84-32.55 15.84-32.55-15.84 21.11-15.84-3.52-119.64-28.15-49.26-15.84 5.28-44-38.71-17.58-3.51 7-7 107.33 59.82-3.52-93.25-58.06-38.71C185 65.1 135.77 22.87 95.3 0c-17.54 61.12-4.4 118.76 0 130.2 15-6.16 49.26-36.95 5.28-73.46 25.66 7.08 41.15 29.83 43.11 49.7 2.63 26.74-33.88 50.81-54.1 51.9-31.65 1.72-61.15 33.44-61.59 58.51l22.43-9.68c-5.54 17.53-11.91 34.67-7.92 56.74l26.39-5.28c-15.76 26.39-9.05 64.43-8.8 84.45l26.39-14.52 7 35.63 24.63-5.28 8.8 28.15L153.35 366 134 373l-8.8-33.43-18.47 7-6.16-33.43-27.27 7c-3.82-25.38 2-49.1 13.2-72.14l-30.35-8.36c9.4-43.52 35.47-50.77 63.34-54.1 9.36 30.62 6.24 56.45-2.64 80.05 82.25 56.3 76.75 117.23 81.37 149.11 4.4 30.35 4.45 89.29 25.51 97.21v-29.83l5.28-7 5.28 12.32 10.56-15.84 11.44 21.11 11.43-21.1zm79.17-95L331.06 366c7.47-4.36 13.76-8.42 19.35-12.32-.6 7.22-.27 13.84-3.51 22.84zm28.15-49.26c-.4 10.94-.9 21.66-1.76 31.67-7.85-1.86-15.57-3.8-21.11-7 8.24-7.94 15.55-16.32 22.87-24.68zm24.63 5.28c0-13.43-2.05-24.21-5.28-33.43a235 235 0 0 1-18.47 27.27zm3.52-80.94c19.44 12.81 27.8 33.66 29.91 56.3-12.32-4.53-24.63-9.31-36.95-10.56 5.06-12 6.65-28.14 7-45.74zm-1.76-45.74c.81 14.3 1.84 28.82 1.76 42.23 19.22-8.11 29.78-9.72 44-14.08-10.61-18.96-27.2-25.53-45.76-28.16zM165.68 376.52L181.52 366c-7.47-4.36-13.76-8.42-19.35-12.32.6 7.26.27 13.88 3.51 22.88zm-28.15-49.26c.4 10.94.9 21.66 1.76 31.67 7.85-1.86 15.57-3.8 21.11-7-8.24-7.93-15.55-16.31-22.87-24.67zm-24.64 5.28c0-13.43 2-24.21 5.28-33.43a235 235 0 0 0 18.47 27.27zm-3.52-80.94c-19.44 12.81-27.8 33.66-29.91 56.3 12.32-4.53 24.63-9.31 37-10.56-5-12-6.65-28.14-7-45.74zm1.76-45.74c-.81 14.3-1.84 28.82-1.76 42.23-19.22-8.11-29.78-9.72-44-14.08 10.63-18.95 27.23-25.52 45.76-28.15z"],wordpress:[512,512,[],"f19a","M61.7 169.4l101.5 278C92.2 413 43.3 340.2 43.3 256c0-30.9 6.6-60.1 18.4-86.6zm337.9 75.9c0-26.3-9.4-44.5-17.5-58.7-10.8-17.5-20.9-32.4-20.9-49.9 0-19.6 14.8-37.8 35.7-37.8.9 0 1.8.1 2.8.2-37.9-34.7-88.3-55.9-143.7-55.9-74.3 0-139.7 38.1-177.8 95.9 5 .2 9.7.3 13.7.3 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l77.5 230.4L249.8 247l-33.1-90.8c-11.5-.7-22.3-2-22.3-2-11.5-.7-10.1-18.2 1.3-17.5 0 0 35.1 2.7 56 2.7 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l76.9 228.7 21.2-70.9c9-29.4 16-50.5 16-68.7zm-139.9 29.3l-63.8 185.5c19.1 5.6 39.2 8.7 60.1 8.7 24.8 0 48.5-4.3 70.6-12.1-.6-.9-1.1-1.9-1.5-2.9l-65.4-179.2zm183-120.7c.9 6.8 1.4 14 1.4 21.9 0 21.6-4 45.8-16.2 76.2l-65 187.9C426.2 403 468.7 334.5 468.7 256c0-37-9.4-71.8-26-102.1zM504 256c0 136.8-111.3 248-248 248C119.2 504 8 392.7 8 256 8 119.2 119.2 8 256 8c136.7 0 248 111.2 248 248zm-11.4 0c0-130.5-106.2-236.6-236.6-236.6C125.5 19.4 19.4 125.5 19.4 256S125.6 492.6 256 492.6c130.5 0 236.6-106.1 236.6-236.6z"],"wordpress-simple":[512,512,[],"f411","M256 8C119.3 8 8 119.2 8 256c0 136.7 111.3 248 248 248s248-111.3 248-248C504 119.2 392.7 8 256 8zM33 256c0-32.3 6.9-63 19.3-90.7l106.4 291.4C84.3 420.5 33 344.2 33 256zm223 223c-21.9 0-43-3.2-63-9.1l66.9-194.4 68.5 187.8c.5 1.1 1 2.1 1.6 3.1-23.1 8.1-48 12.6-74 12.6zm30.7-327.5c13.4-.7 25.5-2.1 25.5-2.1 12-1.4 10.6-19.1-1.4-18.4 0 0-36.1 2.8-59.4 2.8-21.9 0-58.7-2.8-58.7-2.8-12-.7-13.4 17.7-1.4 18.4 0 0 11.4 1.4 23.4 2.1l34.7 95.2L200.6 393l-81.2-241.5c13.4-.7 25.5-2.1 25.5-2.1 12-1.4 10.6-19.1-1.4-18.4 0 0-36.1 2.8-59.4 2.8-4.2 0-9.1-.1-14.4-.3C109.6 73 178.1 33 256 33c58 0 110.9 22.2 150.6 58.5-1-.1-1.9-.2-2.9-.2-21.9 0-37.4 19.1-37.4 39.6 0 18.4 10.6 33.9 21.9 52.3 8.5 14.8 18.4 33.9 18.4 61.5 0 19.1-7.3 41.2-17 72.1l-22.2 74.3-80.7-239.6zm81.4 297.2l68.1-196.9c12.7-31.8 17-57.2 17-79.9 0-8.2-.5-15.8-1.5-22.9 17.4 31.8 27.3 68.2 27.3 107 0 82.3-44.6 154.1-110.9 192.7z"],wpbeginner:[512,512,[],"f297","M462.799 322.374C519.01 386.682 466.961 480 370.944 480c-39.602 0-78.824-17.687-100.142-50.04-6.887.356-22.702.356-29.59 0C219.848 462.381 180.588 480 141.069 480c-95.49 0-148.348-92.996-91.855-157.626C-29.925 190.523 80.479 32 256.006 32c175.632 0 285.87 158.626 206.793 290.374zm-339.647-82.972h41.529v-58.075h-41.529v58.075zm217.18 86.072v-23.839c-60.506 20.915-132.355 9.198-187.589-33.971l.246 24.897c51.101 46.367 131.746 57.875 187.343 32.913zm-150.753-86.072h166.058v-58.075H189.579v58.075z"],wpexplorer:[512,512,[],"f2de","M512 256c0 141.2-114.7 256-256 256C114.8 512 0 397.3 0 256S114.7 0 256 0s256 114.7 256 256zm-32 0c0-123.2-100.3-224-224-224C132.5 32 32 132.5 32 256s100.5 224 224 224 224-100.5 224-224zM160.9 124.6l86.9 37.1-37.1 86.9-86.9-37.1 37.1-86.9zm110 169.1l46.6 94h-14.6l-50-100-48.9 100h-14l51.1-106.9-22.3-9.4 6-14 68.6 29.1-6 14.3-16.5-7.1zm-11.8-116.3l68.6 29.4-29.4 68.3L230 246l29.1-68.6zm80.3 42.9l54.6 23.1-23.4 54.3-54.3-23.1 23.1-54.3z"],wpforms:[448,512,[],"f298","M448 75.2v361.7c0 24.3-19 43.2-43.2 43.2H43.2C19.3 480 0 461.4 0 436.8V75.2C0 51.1 18.8 32 43.2 32h361.7c24 0 43.1 18.8 43.1 43.2zm-37.3 361.6V75.2c0-3-2.6-5.8-5.8-5.8h-9.3L285.3 144 224 94.1 162.8 144 52.5 69.3h-9.3c-3.2 0-5.8 2.8-5.8 5.8v361.7c0 3 2.6 5.8 5.8 5.8h361.7c3.2.1 5.8-2.7 5.8-5.8zM150.2 186v37H76.7v-37h73.5zm0 74.4v37.3H76.7v-37.3h73.5zm11.1-147.3l54-43.7H96.8l64.5 43.7zm210 72.9v37h-196v-37h196zm0 74.4v37.3h-196v-37.3h196zm-84.6-147.3l64.5-43.7H232.8l53.9 43.7zM371.3 335v37.3h-99.4V335h99.4z"],wpressr:[496,512,[],"f3e4","M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm171.33 158.6c-15.18 34.51-30.37 69.02-45.63 103.5-2.44 5.51-6.89 8.24-12.97 8.24-23.02-.01-46.03.06-69.05-.05-5.12-.03-8.25 1.89-10.34 6.72-10.19 23.56-20.63 47-30.95 70.5-1.54 3.51-4.06 5.29-7.92 5.29-45.94-.01-91.87-.02-137.81 0-3.13 0-5.63-1.15-7.72-3.45-11.21-12.33-22.46-24.63-33.68-36.94-2.69-2.95-2.79-6.18-1.21-9.73 8.66-19.54 17.27-39.1 25.89-58.66 12.93-29.35 25.89-58.69 38.75-88.08 1.7-3.88 4.28-5.68 8.54-5.65 14.24.1 28.48.02 42.72.05 6.24.01 9.2 4.84 6.66 10.59-13.6 30.77-27.17 61.55-40.74 92.33-5.72 12.99-11.42 25.99-17.09 39-3.91 8.95 7.08 11.97 10.95 5.6.23-.37-1.42 4.18 30.01-67.69 1.36-3.1 3.41-4.4 6.77-4.39 15.21.08 30.43.02 45.64.04 5.56.01 7.91 3.64 5.66 8.75-8.33 18.96-16.71 37.9-24.98 56.89-4.98 11.43 8.08 12.49 11.28 5.33.04-.08 27.89-63.33 32.19-73.16 2.02-4.61 5.44-6.51 10.35-6.5 26.43.05 52.86 0 79.29.05 12.44.02 13.93-13.65 3.9-13.64-25.26.03-50.52.02-75.78.02-6.27 0-7.84-2.47-5.27-8.27 5.78-13.06 11.59-26.11 17.3-39.21 1.73-3.96 4.52-5.79 8.84-5.78 23.09.06 25.98.02 130.78.03 6.08-.01 8.03 2.79 5.62 8.27z"],xbox:[512,512,[],"f412","M369.9 318.2c44.3 54.3 64.7 98.8 54.4 118.7-7.9 15.1-56.7 44.6-92.6 55.9-29.6 9.3-68.4 13.3-100.4 10.2-38.2-3.7-76.9-17.4-110.1-39C93.3 445.8 87 438.3 87 423.4c0-29.9 32.9-82.3 89.2-142.1 32-33.9 76.5-73.7 81.4-72.6 9.4 2.1 84.3 75.1 112.3 109.5zM188.6 143.8c-29.7-26.9-58.1-53.9-86.4-63.4-15.2-5.1-16.3-4.8-28.7 8.1-29.2 30.4-53.5 79.7-60.3 122.4-5.4 34.2-6.1 43.8-4.2 60.5 5.6 50.5 17.3 85.4 40.5 120.9 9.5 14.6 12.1 17.3 9.3 9.9-4.2-11-.3-37.5 9.5-64 14.3-39 53.9-112.9 120.3-194.4zm311.6 63.5C483.3 127.3 432.7 77 425.6 77c-7.3 0-24.2 6.5-36 13.9-23.3 14.5-41 31.4-64.3 52.8C367.7 197 427.5 283.1 448.2 346c6.8 20.7 9.7 41.1 7.4 52.3-1.7 8.5-1.7 8.5 1.4 4.6 6.1-7.7 19.9-31.3 25.4-43.5 7.4-16.2 15-40.2 18.6-58.7 4.3-22.5 3.9-70.8-.8-93.4zM141.3 43C189 40.5 251 77.5 255.6 78.4c.7.1 10.4-4.2 21.6-9.7 63.9-31.1 94-25.8 107.4-25.2-63.9-39.3-152.7-50-233.9-11.7-23.4 11.1-24 11.9-9.4 11.2z"],xing:[384,512,[],"f168","M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3c.2 0 .2-.1 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2l44.7 77.5zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1z"],"xing-square":[448,512,[],"f169","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM140.4 320.2H93.8c-5.5 0-8.7-5.3-6-10.3l49.3-86.7c.1 0 .1-.1 0-.2l-31.4-54c-3-5.6.2-10.1 6-10.1h46.6c5.2 0 9.5 2.9 12.9 8.7l31.9 55.3c-1.3 2.3-18 31.7-50.1 88.2-3.5 6.2-7.7 9.1-12.6 9.1zm219.7-214.1L257.3 286.8v.2l65.5 119c2.8 5.1.1 10.1-6 10.1h-46.6c-5.5 0-9.7-2.9-12.9-8.7l-66-120.3c2.3-4.1 36.8-64.9 103.4-182.3 3.3-5.8 7.4-8.7 12.5-8.7h46.9c5.7-.1 8.8 4.7 6 10z"],"y-combinator":[448,512,[],"f23b","M448 32v448H0V32h448zM236 287.5L313.5 142h-32.7L235 233c-4.7 9.3-9 18.3-12.8 26.8L210 233l-45.2-91h-35l76.7 143.8v94.5H236v-92.8z"],yahoo:[448,512,[],"f19e","M252 292l4 220c-12.7-2.2-23.5-3.9-32.3-3.9-8.4 0-19.2 1.7-32.3 3.9l4-220C140.4 197.2 85 95.2 21.4 0c11.9 3.1 23 3.9 33.2 3.9 9 0 20.4-.8 34.1-3.9 40.9 72.2 82.1 138.7 135 225.5C261 163.9 314.8 81.4 358.6 0c11.1 2.9 22 3.9 32.9 3.9 11.5 0 23.2-1 35-3.9C392.1 47.9 294.9 216.9 252 292z"],yammer:[512,512,[],"f840","M421.78 152.17A23.06 23.06 0 0 0 400.9 112c-.83.43-1.71.9-2.63 1.4-15.25 8.4-118.33 80.62-106.69 88.77s82.04-23.61 130.2-50zm0 217.17c-48.16-26.38-118.64-58.1-130.2-50s91.42 80.35 106.69 88.74c.92.51 1.8 1 2.63 1.41a23.07 23.07 0 0 0 20.88-40.15zM464.21 237c-.95 0-1.95-.06-3-.06-17.4 0-142.52 13.76-136.24 26.51s83.3 18.74 138.21 18.76a23 23 0 0 0 1-45.21zM31 96.65a24.88 24.88 0 0 1 46.14-18.4l81 205.06h1.21l77-203.53a23.52 23.52 0 0 1 44.45 15.27L171.2 368.44C152.65 415.66 134.08 448 77.91 448a139.67 139.67 0 0 1-23.81-1.95 21.31 21.31 0 0 1 6.9-41.77c.66.06 10.91.66 13.86.66 30.47 0 43.74-18.94 58.07-59.41z"],yandex:[256,512,[],"f413","M153.1 315.8L65.7 512H2l96-209.8c-45.1-22.9-75.2-64.4-75.2-141.1C22.7 53.7 90.8 0 171.7 0H254v512h-55.1V315.8h-45.8zm45.8-269.3h-29.4c-44.4 0-87.4 29.4-87.4 114.6 0 82.3 39.4 108.8 87.4 108.8h29.4V46.5z"],"yandex-international":[320,512,[],"f414","M129.5 512V345.9L18.5 48h55.8l81.8 229.7L250.2 0h51.3L180.8 347.8V512h-51.3z"],yarn:[496,512,[],"f7e3","M393.9 345.2c-39 9.3-48.4 32.1-104 47.4 0 0-2.7 4-10.4 5.8-13.4 3.3-63.9 6-68.5 6.1-12.4.1-19.9-3.2-22-8.2-6.4-15.3 9.2-22 9.2-22-8.1-5-9-9.9-9.8-8.1-2.4 5.8-3.6 20.1-10.1 26.5-8.8 8.9-25.5 5.9-35.3.8-10.8-5.7.8-19.2.8-19.2s-5.8 3.4-10.5-3.6c-6-9.3-17.1-37.3 11.5-62-1.3-10.1-4.6-53.7 40.6-85.6 0 0-20.6-22.8-12.9-43.3 5-13.4 7-13.3 8.6-13.9 5.7-2.2 11.3-4.6 15.4-9.1 20.6-22.2 46.8-18 46.8-18s12.4-37.8 23.9-30.4c3.5 2.3 16.3 30.6 16.3 30.6s13.6-7.9 15.1-5c8.2 16 9.2 46.5 5.6 65.1-6.1 30.6-21.4 47.1-27.6 57.5-1.4 2.4 16.5 10 27.8 41.3 10.4 28.6 1.1 52.7 2.8 55.3.8 1.4 13.7.8 36.4-13.2 12.8-7.9 28.1-16.9 45.4-17 16.7-.5 17.6 19.2 4.9 22.2zM496 256c0 136.9-111.1 248-248 248S0 392.9 0 256 111.1 8 248 8s248 111.1 248 248zm-79.3 75.2c-1.7-13.6-13.2-23-28-22.8-22 .3-40.5 11.7-52.8 19.2-4.8 3-8.9 5.2-12.4 6.8 3.1-44.5-22.5-73.1-28.7-79.4 7.8-11.3 18.4-27.8 23.4-53.2 4.3-21.7 3-55.5-6.9-74.5-1.6-3.1-7.4-11.2-21-7.4-9.7-20-13-22.1-15.6-23.8-1.1-.7-23.6-16.4-41.4 28-12.2.9-31.3 5.3-47.5 22.8-2 2.2-5.9 3.8-10.1 5.4h.1c-8.4 3-12.3 9.9-16.9 22.3-6.5 17.4.2 34.6 6.8 45.7-17.8 15.9-37 39.8-35.7 82.5-34 36-11.8 73-5.6 79.6-1.6 11.1 3.7 19.4 12 23.8 12.6 6.7 30.3 9.6 43.9 2.8 4.9 5.2 13.8 10.1 30 10.1 6.8 0 58-2.9 72.6-6.5 6.8-1.6 11.5-4.5 14.6-7.1 9.8-3.1 36.8-12.3 62.2-28.7 18-11.7 24.2-14.2 37.6-17.4 12.9-3.2 21-15.1 19.4-28.2z"],yelp:[384,512,[],"f1e9","M42.9 240.32l99.62 48.61c19.2 9.4 16.2 37.51-4.5 42.71L30.5 358.45a22.79 22.79 0 0 1-28.21-19.6 197.16 197.16 0 0 1 9-85.32 22.8 22.8 0 0 1 31.61-13.21zm44 239.25a199.45 199.45 0 0 0 79.42 32.11A22.78 22.78 0 0 0 192.94 490l3.9-110.82c.7-21.3-25.5-31.91-39.81-16.1l-74.21 82.4a22.82 22.82 0 0 0 4.09 34.09zm145.34-109.92l58.81 94a22.93 22.93 0 0 0 34 5.5 198.36 198.36 0 0 0 52.71-67.61A23 23 0 0 0 364.17 370l-105.42-34.26c-20.31-6.5-37.81 15.8-26.51 33.91zm148.33-132.23a197.44 197.44 0 0 0-50.41-69.31 22.85 22.85 0 0 0-34 4.4l-62 91.92c-11.9 17.7 4.7 40.61 25.2 34.71L366 268.63a23 23 0 0 0 14.61-31.21zM62.11 30.18a22.86 22.86 0 0 0-9.9 32l104.12 180.44c11.7 20.2 42.61 11.9 42.61-11.4V22.88a22.67 22.67 0 0 0-24.5-22.8 320.37 320.37 0 0 0-112.33 30.1z"],yoast:[448,512,[],"f2b1","M91.3 76h186l-7 18.9h-179c-39.7 0-71.9 31.6-71.9 70.3v205.4c0 35.4 24.9 70.3 84 70.3V460H91.3C41.2 460 0 419.8 0 370.5V165.2C0 115.9 40.7 76 91.3 76zm229.1-56h66.5C243.1 398.1 241.2 418.9 202.2 459.3c-20.8 21.6-49.3 31.7-78.3 32.7v-51.1c49.2-7.7 64.6-49.9 64.6-75.3 0-20.1.6-12.6-82.1-223.2h61.4L218.2 299 320.4 20zM448 161.5V460H234c6.6-9.6 10.7-16.3 12.1-19.4h182.5V161.5c0-32.5-17.1-51.9-48.2-62.9l6.7-17.6c41.7 13.6 60.9 43.1 60.9 80.5z"],youtube:[576,512,[],"f167","M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z"],"youtube-square":[448,512,[],"f431","M186.8 202.1l95.2 54.1-95.2 54.1V202.1zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-42 176.3s0-59.6-7.6-88.2c-4.2-15.8-16.5-28.2-32.2-32.4C337.9 128 224 128 224 128s-113.9 0-142.2 7.7c-15.7 4.2-28 16.6-32.2 32.4-7.6 28.5-7.6 88.2-7.6 88.2s0 59.6 7.6 88.2c4.2 15.8 16.5 27.7 32.2 31.9C110.1 384 224 384 224 384s113.9 0 142.2-7.7c15.7-4.2 28-16.1 32.2-31.9 7.6-28.5 7.6-88.1 7.6-88.1z"],zhihu:[640,512,[],"f63f","M170.54 148.13v217.54l23.43.01 7.71 26.37 42.01-26.37h49.53V148.13H170.54zm97.75 193.93h-27.94l-27.9 17.51-5.08-17.47-11.9-.04V171.75h72.82v170.31zm-118.46-94.39H97.5c1.74-27.1 2.2-51.59 2.2-73.46h51.16s1.97-22.56-8.58-22.31h-88.5c3.49-13.12 7.87-26.66 13.12-40.67 0 0-24.07 0-32.27 21.57-3.39 8.9-13.21 43.14-30.7 78.12 5.89-.64 25.37-1.18 36.84-22.21 2.11-5.89 2.51-6.66 5.14-14.53h28.87c0 10.5-1.2 66.88-1.68 73.44H20.83c-11.74 0-15.56 23.62-15.56 23.62h65.58C66.45 321.1 42.83 363.12 0 396.34c20.49 5.85 40.91-.93 51-9.9 0 0 22.98-20.9 35.59-69.25l53.96 64.94s7.91-26.89-1.24-39.99c-7.58-8.92-28.06-33.06-36.79-41.81L87.9 311.95c4.36-13.98 6.99-27.55 7.87-40.67h61.65s-.09-23.62-7.59-23.62v.01zm412.02-1.6c20.83-25.64 44.98-58.57 44.98-58.57s-18.65-14.8-27.38-4.06c-6 8.15-36.83 48.2-36.83 48.2l19.23 14.43zm-150.09-59.09c-9.01-8.25-25.91 2.13-25.91 2.13s39.52 55.04 41.12 57.45l19.46-13.73s-25.67-37.61-34.66-45.86h-.01zM640 258.35c-19.78 0-130.91.93-131.06.93v-101c4.81 0 12.42-.4 22.85-1.2 40.88-2.41 70.13-4 87.77-4.81 0 0 12.22-27.19-.59-33.44-3.07-1.18-23.17 4.58-23.17 4.58s-165.22 16.49-232.36 18.05c1.6 8.82 7.62 17.08 15.78 19.55 13.31 3.48 22.69 1.7 49.15.89 24.83-1.6 43.68-2.43 56.51-2.43v99.81H351.41s2.82 22.31 25.51 22.85h107.94v70.92c0 13.97-11.19 21.99-24.48 21.12-14.08.11-26.08-1.15-41.69-1.81 1.99 3.97 6.33 14.39 19.31 21.84 9.88 4.81 16.17 6.57 26.02 6.57 29.56 0 45.67-17.28 44.89-45.31v-73.32h122.36c9.68 0 8.7-23.78 8.7-23.78l.03-.01z"]};!function(e){try{!function e(c,t){var a=(2>>0;t--;)c[t]=e[t];return c}function Ve(e){return e.classList?be(e.classList):(e.getAttribute("class")||"").split(" ").filter(function(e){return e})}function Le(e){return"".concat(e).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function Se(e){return Object.keys(e||{}).reduce(function(c,t){return c+"".concat(t,": ").concat(e[t],";")},"")}function Ne(e){return e.size!==ye.size||e.x!==ye.x||e.y!==ye.y||e.rotate!==ye.rotate||e.flipX||e.flipY}function xe(e){var c=e.transform,t=e.containerWidth,a=e.iconWidth,r={transform:"translate(".concat(t/2," 256)")},s="translate(".concat(32*c.x,", ").concat(32*c.y,") "),i="scale(".concat(c.size/16*(c.flipX?-1:1),", ").concat(c.size/16*(c.flipY?-1:1),") "),n="rotate(".concat(c.rotate," 0 0)");return{outer:r,inner:{transform:"".concat(s," ").concat(i," ").concat(n)},path:{transform:"translate(".concat(a/2*-1," -256)")}}}var Ae={x:0,y:0,width:"100%",height:"100%"};function Pe(e){var c=!(1").concat(i.map(Qe).join(""),"")}var $e=function(){};function Je(e){return"string"==typeof(e.getAttribute?e.getAttribute(b):null)}var ec={replace:function(e){var c=e[0],t=e[1].map(function(e){return Qe(e)}).join("\n");if(c.parentNode&&c.outerHTML)c.outerHTML=t+(Z.keepOriginalSource&&"svg"!==c.tagName.toLowerCase()?"\x3c!-- ".concat(c.outerHTML," --\x3e"):"");else if(c.parentNode){var a=document.createElement("span");c.parentNode.replaceChild(a,c),a.outerHTML=t}},nest:function(e){var c=e[0],t=e[1];if(~Ve(c).indexOf(Z.replacementClass))return ec.replace(e);var a=new RegExp("".concat(Z.familyPrefix,"-.*"));delete t[0].attributes.style,delete t[0].attributes.id;var r=t[0].attributes.class.split(" ").reduce(function(e,c){return c===Z.replacementClass||c.match(a)?e.toSvg.push(c):e.toNode.push(c),e},{toNode:[],toSvg:[]});t[0].attributes.class=r.toSvg.join(" ");var s=t.map(function(e){return Qe(e)}).join("\n");c.setAttribute("class",r.toNode.join(" ")),c.setAttribute(b,""),c.innerHTML=s}};function cc(e){e()}function tc(e,c){var t="function"==typeof c?c:$e;if(0===e.length)t();else{var a=cc;Z.mutateApproach===A&&(a=v.requestAnimationFrame||cc),a(function(){var c=!0===Z.autoReplaceSvg?ec.replace:ec[Z.autoReplaceSvg]||ec.replace,a=Ie.begin("mutate");e.map(c),a(),t()})}}var ac=!1;function rc(){ac=!1}var sc=null;function ic(e){if(d&&Z.observeMutations){var c=e.treeCallback,t=e.nodeCallback,a=e.pseudoElementsCallback,r=e.observeMutationsRoot,s=void 0===r?z:r;sc=new d(function(e){ac||be(e).forEach(function(e){if("childList"===e.type&&00&&void 0!==arguments[0]?arguments[0]:{};this.action=e.action,this.container=e.container,this.emitter=e.emitter,this.target=e.target,this.text=e.text,this.trigger=e.trigger,this.selectedText=""}},{key:"initSelection",value:function(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function(){var e=this,c="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return e.removeFake()},this.fakeHandler=this.container.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[c?"right":"left"]="-9999px";var t=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=t+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=(0,a.default)(this.fakeElem),this.copyText()}},{key:"removeFake",value:function(){this.fakeHandler&&(this.container.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function(){this.selectedText=(0,a.default)(this.target),this.copyText()}},{key:"copyText",value:function(){var e=void 0;try{e=document.execCommand(this.action)}catch(c){e=!1}this.handleResult(e)}},{key:"handleResult",value:function(e){this.emitter.emit(e?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function(){this.trigger&&this.trigger.focus(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function(){this.removeFake()}},{key:"action",set:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=e,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function(){return this._action}},{key:"target",set:function(e){if(void 0!==e){if(!e||"object"!==(void 0===e?"undefined":r(e))||1!==e.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&e.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(e.hasAttribute("readonly")||e.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=e}},get:function(){return this._target}}]),e}();e.exports=i},r=[e,t(7)],void 0===(s="function"==typeof(a=i)?a.apply(c,r):a)||(e.exports=s)},function(e,c,t){var a=t(6),r=t(5);e.exports=function(e,c,t){if(!e&&!c&&!t)throw new Error("Missing required arguments");if(!a.string(c))throw new TypeError("Second argument must be a String");if(!a.fn(t))throw new TypeError("Third argument must be a Function");if(a.node(e))return function(e,c,t){return e.addEventListener(c,t),{destroy:function(){e.removeEventListener(c,t)}}}(e,c,t);if(a.nodeList(e))return function(e,c,t){return Array.prototype.forEach.call(e,function(e){e.addEventListener(c,t)}),{destroy:function(){Array.prototype.forEach.call(e,function(e){e.removeEventListener(c,t)})}}}(e,c,t);if(a.string(e))return function(e,c,t){return r(document.body,e,c,t)}(e,c,t);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}},function(e,c){function t(){}t.prototype={on:function(e,c,t){var a=this.e||(this.e={});return(a[e]||(a[e]=[])).push({fn:c,ctx:t}),this},once:function(e,c,t){var a=this;function r(){a.off(e,r),c.apply(t,arguments)}return r._=c,this.on(e,r,t)},emit:function(e){for(var c=[].slice.call(arguments,1),t=((this.e||(this.e={}))[e]||[]).slice(),a=0,r=t.length;a0&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof e.action?e.action:this.defaultAction,this.target="function"==typeof e.target?e.target:this.defaultTarget,this.text="function"==typeof e.text?e.text:this.defaultText,this.container="object"===l(e.container)?e.container:document.body}},{key:"listenClick",value:function(e){var c=this;this.listener=(0,i.default)(e,"click",function(e){return c.onClick(e)})}},{key:"onClick",value:function(e){var c=e.delegateTarget||e.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new r.default({action:this.action(c),target:this.target(c),text:this.text(c),container:this.container,trigger:c,emitter:this})}},{key:"defaultAction",value:function(e){return h("action",e)}},{key:"defaultTarget",value:function(e){var c=h("target",e);if(c)return document.querySelector(c)}},{key:"defaultText",value:function(e){return h("text",e)}},{key:"destroy",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["copy","cut"],c="string"==typeof e?[e]:e,t=!!document.queryCommandSupported;return c.forEach(function(e){t=t&&!!document.queryCommandSupported(e)}),t}}]),c}();function h(e,c){var t="data-clipboard-"+e;if(c.hasAttribute(t))return c.getAttribute(t)}e.exports=m},r=[e,t(0),t(2),t(1)],void 0===(s="function"==typeof(a=i)?a.apply(c,r):a)||(e.exports=s)},function(e,c){var t=9;if("undefined"!=typeof Element&&!Element.prototype.matches){var a=Element.prototype;a.matches=a.matchesSelector||a.mozMatchesSelector||a.msMatchesSelector||a.oMatchesSelector||a.webkitMatchesSelector}e.exports=function(e,c){for(;e&&e.nodeType!==t;){if("function"==typeof e.matches&&e.matches(c))return e;e=e.parentNode}}},function(e,c,t){var a=t(4);function r(e,c,t,r,s){var i=function(e,c,t,r){return function(t){t.delegateTarget=a(t.target,c),t.delegateTarget&&r.call(e,t)}}.apply(this,arguments);return e.addEventListener(t,i,s),{destroy:function(){e.removeEventListener(t,i,s)}}}e.exports=function(e,c,t,a,s){return"function"==typeof e.addEventListener?r.apply(null,arguments):"function"==typeof t?r.bind(null,document).apply(null,arguments):("string"==typeof e&&(e=document.querySelectorAll(e)),Array.prototype.map.call(e,function(e){return r(e,c,t,a,s)}))}},function(e,c){c.node=function(e){return void 0!==e&&e instanceof HTMLElement&&1===e.nodeType},c.nodeList=function(e){var t=Object.prototype.toString.call(e);return void 0!==e&&("[object NodeList]"===t||"[object HTMLCollection]"===t)&&"length"in e&&(0===e.length||c.node(e[0]))},c.string=function(e){return"string"==typeof e||e instanceof String},c.fn=function(e){return"[object Function]"===Object.prototype.toString.call(e)}},function(e,c){e.exports=function(e){var c;if("SELECT"===e.nodeName)e.focus(),c=e.value;else if("INPUT"===e.nodeName||"TEXTAREA"===e.nodeName){var t=e.hasAttribute("readonly");t||e.setAttribute("readonly",""),e.select(),e.setSelectionRange(0,e.value.length),t||e.removeAttribute("readonly"),c=e.value}else{e.hasAttribute("contenteditable")&&e.focus();var a=window.getSelection(),r=document.createRange();r.selectNodeContents(e),a.removeAllRanges(),a.addRange(r),c=a.toString()}return c}}])}),function(e,c){"object"==typeof exports&&"undefined"!=typeof module?c(exports):"function"==typeof define&&define.amd?define(["exports"],c):c((e=e||self).azblob={})}(this,function(e){"use strict";function c(e){return e.toLowerCase()}var t=function(){function e(e){if(this._headersMap={},e)for(var c in e)this.set(c,e[c])}return e.prototype.set=function(e,t){this._headersMap[c(e)]={name:e,value:t.toString()}},e.prototype.get=function(e){var t=this._headersMap[c(e)];return t?t.value:void 0},e.prototype.contains=function(e){return!!this._headersMap[c(e)]},e.prototype.remove=function(e){var t=this.contains(e);return delete this._headersMap[c(e)],t},e.prototype.rawHeaders=function(){var e={};for(var c in this._headersMap){var t=this._headersMap[c];e[t.name.toLowerCase()]=t.value}return e},e.prototype.headersArray=function(){var e=[];for(var c in this._headersMap)e.push(this._headersMap[c]);return e},e.prototype.headerNames=function(){for(var e=[],c=this.headersArray(),t=0;t>>((3&c)<<3)&255;return a}}}(c={exports:{}}),c.exports}(),i=[],n=0;n<256;++n)i[n]=(n+256).toString(16).substr(1);var l=function(e,c){var t=c||0,a=i;return[a[e[t++]],a[e[t++]],a[e[t++]],a[e[t++]],"-",a[e[t++]],a[e[t++]],"-",a[e[t++]],a[e[t++]],"-",a[e[t++]],a[e[t++]],"-",a[e[t++]],a[e[t++]],a[e[t++]],a[e[t++]],a[e[t++]],a[e[t++]]].join("")},o=function(e,c,t){var a=c&&t||0;"string"==typeof e&&(c="binary"===e?new Array(16):null,e=null);var r=(e=e||{}).random||(e.rng||s)();if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,c)for(var i=0;i<16;++i)c[a+i]=r[i];return c||l(r)},m={msRestVersion:"2.0.4",HTTP:"http:",HTTPS:"https:",HTTP_PROXY:"HTTP_PROXY",HTTPS_PROXY:"HTTPS_PROXY",HttpConstants:{HttpVerbs:{PUT:"PUT",GET:"GET",DELETE:"DELETE",POST:"POST",MERGE:"MERGE",HEAD:"HEAD",PATCH:"PATCH"},StatusCodes:{TooManyRequests:429}},HeaderConstants:{AUTHORIZATION:"authorization",AUTHORIZATION_SCHEME:"Bearer",RETRY_AFTER:"Retry-After",USER_AGENT:"User-Agent"}},h="undefined"!=typeof process&&!!process.version&&!!process.versions&&!!process.versions.node;function v(e){var c={};return c.body=e.bodyAsText,c.headers=e.headers,c.status=e.status,c}function z(e){var c=e.clone();return c.headers&&c.headers.remove("authorization"),c}function d(){return o()}function u(e,c){return new Promise(function(t){return setTimeout(function(){return t(c)},e)})}var p=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function f(e,c,t){return e&&c?e.split(c).join(t||""):e}var M=function(){function e(e,c){void 0===e&&(e={}),this.modelMappers=e,this.isXML=c}return e.prototype.validateConstraints=function(e,c,t){var a=function(e,a){throw new Error('"'+t+'" with value "'+c+'" should satisfy the constraint "'+e+'": '+a+".")};if(e.constraints&&null!=c){var r=e.constraints,s=r.ExclusiveMaximum,i=r.ExclusiveMinimum,n=r.InclusiveMaximum,l=r.InclusiveMinimum,o=r.MaxItems,m=r.MaxLength,h=r.MinItems,v=r.MinLength,z=r.MultipleOf,d=r.Pattern,u=r.UniqueItems;if(null!=s&&c>=s&&a("ExclusiveMaximum",s),null!=i&&c<=i&&a("ExclusiveMinimum",i),null!=n&&c>n&&a("InclusiveMaximum",n),null!=l&&co&&a("MaxItems",o),null!=m&&c.length>m&&a("MaxLength",m),null!=h&&c.length=0&&"="===e[t-1];)--t;return e.substr(0,t)}(a(e)).replace(/\+/g,"-").replace(/\//g,"_")}}(c)}return c}(0,c):null!==s.match(/^Sequence$/gi)?r=function(e,c,t,a){if(!Array.isArray(t))throw new Error(a+" must be of type Array.");var r=c.type.element;if(!r||"object"!=typeof r)throw new Error('element" metadata for an Array must be defined in the mapper and it must of type "object" in '+a+".");for(var s=[],i=0;i0&&r[r.length-1])&&(6===s[0]||2===s[0])){i=0;continue}if(3===s[0]&&(!r||s[1]>r[0]&&s[1]'+Z.serializeToString(t)}function X(e){for(var c=[],t=0,a=Object.keys(e);t=200&&t.status<300);i.headersMapper&&(e.parsedHeaders=c.serializer.deserialize(i.headersMapper,e.headers.rawHeaders(),"operationRes.parsedHeaders"))}}else{var l=c.responses.default;if(l){var o=B(c)?"Unexpected status code: "+a:e.bodyAsText,m=new R(o);m.statusCode=a,m.request=z(e.request),m.response=v(e);var h=e.parsedBody;try{if(h){var d=l.bodyMapper;if(d&&"CloudError"===d.serializedName)h.error&&(h=h.error),h.code&&(m.code=h.code),h.message&&(m.message=h.message);else{var u=h;h.error&&(u=h.error),m.code=u.code,u.message&&(m.message=u.message)}if(d){var p=h;c.isXML&&d.type.name===L.Sequence&&(p="object"==typeof h?h[d.xmlElementName]:[]),m.body=c.serializer.deserialize(d,p,"error.body")}}}catch(c){m.message='Error "'+c.message+'" occurred in deserializing the responseBody - "'+e.bodyAsText+'" for the default response.'}return Promise.reject(m)}}}}return Promise.resolve(e)})}(c.jsonContentTypes,c.xmlContentTypes,e)})]})})},c}(G),J=3e4,ee=3,ce=9e4,te=3e3,ae=function(e){function c(c,t,a,r,s,i){var n=e.call(this,c,t)||this;function l(e){return"number"==typeof e}return n.retryCount=l(a)?a:ee,n.retryInterval=l(r)?r:J,n.minRetryInterval=l(s)?s:te,n.maxRetryInterval=l(i)?i:ce,n}return x(c,e),c.prototype.sendRequest=function(e){var c=this;return this._nextPolicy.sendRequest(e.clone()).then(function(t){return re(c,e,t)}).catch(function(t){return re(c,e,t.response,void 0,t)})},c}(G);function re(e,c,t,a,r){a=function(e,c,t){c||(c={retryCount:0,retryInterval:0}),t&&(c.error&&(t.innerError=c.error),c.error=t),c.retryCount++;var a=Math.pow(2,c.retryCount)-1;return a*=.8*e.retryInterval+Math.floor(Math.random()*(1.2*e.retryInterval-.8*e.retryInterval)),c.retryInterval=Math.min(e.minRetryInterval+a,e.maxRetryInterval),c}(e,a,r);var s=c.abortSignal&&c.abortSignal.aborted;if(!s&&function(e,c,t){if(null==c||c<500&&408!==c||501===c||505===c)return!1;if(!t)throw new Error("retryData for the ExponentialRetryPolicyFilter cannot be null.");return(t&&t.retryCount)0},e.prototype.set=function(e,c){if(e)if(null!=c){var t=Array.isArray(c)?c:c.toString();this._rawQuery[e]=t}else delete this._rawQuery[e]},e.prototype.get=function(e){return e?this._rawQuery[e]:void 0},e.prototype.toString=function(){var e="";for(var c in this._rawQuery){e&&(e+="&");var t=this._rawQuery[c];if(Array.isArray(t)){for(var a=[],r=0,s=t;r0)for(var a=this._requestPolicyFactories.length-1;a>=0;--a)t=this._requestPolicyFactories[a].create(t,this._requestPolicyOptions);return t.sendRequest(c)},e.prototype.sendOperationRequest=function(e,c,t){"function"==typeof e.options&&(t=e.options,e.options=void 0);var a,r=new S;try{var s=c.baseUrl||this.baseUri;if(!s)throw new Error("If operationSpec.baseUrl is not specified, then the ServiceClient must have a baseUri string property that contains the base URL to use.");r.method=c.httpMethod,r.operationSpec=c;var i=me.parse(s);if(c.path&&i.appendPath(c.path),c.urlParameters&&c.urlParameters.length>0)for(var n=0,l=c.urlParameters;n0)for(var h=0,v=c.queryParameters;h0){c.formData={};for(var v=0,z=a.formDataParameters;v0){if(r.isConstant)i=r.defaultValue;else{var n=qe(t,a);n.propertyFound||(n=qe(c,a));var l=!1;n.propertyFound||(l=r.required||"options"===a[0]&&2===a.length),i=l?r.defaultValue:n.propertyValue}var o=_(a,r);s.serialize(r,i,o)}}else for(var m in r.required&&(i={}),a){var h=r.type.modelProperties[m],v=a[m],z=e(c,t,v,h,s),d=_(v,h);s.serialize(h,z,d),void 0!==z&&(i||(i={}),i[m]=z)}return i}(e,c,t.parameterPath,t.mapper,a)}function qe(e,c){for(var t={propertyFound:!1},a=0;a0&&(this.timer=setTimeout(function(){r.abort.call(r)},c),this.timer&&h&&this.timer.unref())}return Object.defineProperty(e.prototype,"aborted",{get:function(){return this._aborted},enumerable:!0,configurable:!0}),Object.defineProperty(e,"none",{get:function(){return new e(void 0,0)},enumerable:!0,configurable:!0}),e.timeout=function(c){return new e(void 0,c)},e.prototype.withTimeout=function(c){var t=new e(this,c);return this.children.push(t),t},e.prototype.withValue=function(c,t){var a=new e(this,0,c,t);return this.children.push(a),a},e.prototype.getValue=function(e){for(var c=this;c;c=c.parent)if(c.key===e)return c.value},e.prototype.abort=function(){var e=this;this.aborted||(this.cancelTimer(),this.onabort&&this.onabort.call(this,{type:"abort"}),this.abortEventListeners.forEach(function(c){c.call(e,{type:"abort"})}),this.children.forEach(function(e){return e.cancelByParent()}),this._aborted=!0)},e.prototype.addEventListener=function(e,c){this.abortEventListeners.push(c)},e.prototype.removeEventListener=function(e,c){var t=this.abortEventListeners.indexOf(c);t>-1&&this.abortEventListeners.splice(t,1)},e.prototype.dispatchEvent=function(){throw new Error("Method not implemented.")},e.prototype.cancelByParent=function(){this.abort()},e.prototype.cancelTimer=function(){this.timer&&clearTimeout(this.timer)},e}(),ke={serializedName:"KeyInfo",type:{name:"Composite",className:"KeyInfo",modelProperties:{start:{xmlName:"Start",required:!0,serializedName:"Start",type:{name:"String"}},expiry:{xmlName:"Expiry",required:!0,serializedName:"Expiry",type:{name:"String"}}}}},Ee={serializedName:"UserDelegationKey",type:{name:"Composite",className:"UserDelegationKey",modelProperties:{signedOid:{xmlName:"SignedOid",required:!0,serializedName:"SignedOid",type:{name:"String"}},signedTid:{xmlName:"SignedTid",required:!0,serializedName:"SignedTid",type:{name:"String"}},signedStart:{xmlName:"SignedStart",required:!0,serializedName:"SignedStart",type:{name:"String"}},signedExpiry:{xmlName:"SignedExpiry",required:!0,serializedName:"SignedExpiry",type:{name:"String"}},signedService:{xmlName:"SignedService",required:!0,serializedName:"SignedService",type:{name:"String"}},signedVersion:{xmlName:"SignedVersion",required:!0,serializedName:"SignedVersion",type:{name:"String"}},value:{xmlName:"Value",required:!0,serializedName:"Value",type:{name:"String"}}}}},Ie={serializedName:"StorageError",type:{name:"Composite",className:"StorageError",modelProperties:{message:{xmlName:"Message",serializedName:"Message",type:{name:"String"}}}}},Oe={serializedName:"DataLakeStorageError",type:{name:"Composite",className:"DataLakeStorageError",modelProperties:{error:{xmlName:"error",serializedName:"error",type:{name:"Composite",className:"DataLakeStorageErrorError"}}}}},_e={xmlName:"EnumerationResults",serializedName:"ListBlobsFlatSegmentResponse",type:{name:"Composite",className:"ListBlobsFlatSegmentResponse",modelProperties:{serviceEndpoint:{xmlIsAttribute:!0,xmlName:"ServiceEndpoint",required:!0,serializedName:"ServiceEndpoint",type:{name:"String"}},containerName:{xmlIsAttribute:!0,xmlName:"ContainerName",required:!0,serializedName:"ContainerName",type:{name:"String"}},prefix:{xmlName:"Prefix",serializedName:"Prefix",type:{name:"String"}},marker:{xmlName:"Marker",serializedName:"Marker",type:{name:"String"}},maxResults:{xmlName:"MaxResults",serializedName:"MaxResults",type:{name:"Number"}},delimiter:{xmlName:"Delimiter",serializedName:"Delimiter",type:{name:"String"}},segment:{xmlName:"Blobs",required:!0,serializedName:"Segment",type:{name:"Composite",className:"BlobFlatListSegment"}},nextMarker:{xmlName:"NextMarker",serializedName:"NextMarker",type:{name:"String"}}}}},Be={xmlName:"EnumerationResults",serializedName:"ListBlobsHierarchySegmentResponse",type:{name:"Composite",className:"ListBlobsHierarchySegmentResponse",modelProperties:{serviceEndpoint:{xmlIsAttribute:!0,xmlName:"ServiceEndpoint",required:!0,serializedName:"ServiceEndpoint",type:{name:"String"}},containerName:{xmlIsAttribute:!0,xmlName:"ContainerName",required:!0,serializedName:"ContainerName",type:{name:"String"}},prefix:{xmlName:"Prefix",serializedName:"Prefix",type:{name:"String"}},marker:{xmlName:"Marker",serializedName:"Marker",type:{name:"String"}},maxResults:{xmlName:"MaxResults",serializedName:"MaxResults",type:{name:"Number"}},delimiter:{xmlName:"Delimiter",serializedName:"Delimiter",type:{name:"String"}},segment:{xmlName:"Blobs",required:!0,serializedName:"Segment",type:{name:"Composite",className:"BlobHierarchyListSegment"}},nextMarker:{xmlName:"NextMarker",serializedName:"NextMarker",type:{name:"String"}}}}},De={serializedName:"BlockList",type:{name:"Composite",className:"BlockList",modelProperties:{committedBlocks:{xmlIsWrapped:!0,xmlName:"CommittedBlocks",xmlElementName:"Block",serializedName:"CommittedBlocks",type:{name:"Sequence",element:{type:{name:"Composite",className:"Block"}}}},uncommittedBlocks:{xmlIsWrapped:!0,xmlName:"UncommittedBlocks",xmlElementName:"Block",serializedName:"UncommittedBlocks",type:{name:"Sequence",element:{type:{name:"Composite",className:"Block"}}}}}}},Ue={xmlName:"BlockList",serializedName:"BlockLookupList",type:{name:"Composite",className:"BlockLookupList",modelProperties:{committed:{xmlName:"Committed",xmlElementName:"Committed",serializedName:"Committed",type:{name:"Sequence",element:{type:{name:"String"}}}},uncommitted:{xmlName:"Uncommitted",xmlElementName:"Uncommitted",serializedName:"Uncommitted",type:{name:"Sequence",element:{type:{name:"String"}}}},latest:{xmlName:"Latest",xmlElementName:"Latest",serializedName:"Latest",type:{name:"Sequence",element:{type:{name:"String"}}}}}}},je={xmlName:"EnumerationResults",serializedName:"ListContainersSegmentResponse",type:{name:"Composite",className:"ListContainersSegmentResponse",modelProperties:{serviceEndpoint:{xmlIsAttribute:!0,xmlName:"ServiceEndpoint",required:!0,serializedName:"ServiceEndpoint",type:{name:"String"}},prefix:{xmlName:"Prefix",serializedName:"Prefix",type:{name:"String"}},marker:{xmlName:"Marker",serializedName:"Marker",type:{name:"String"}},maxResults:{xmlName:"MaxResults",serializedName:"MaxResults",type:{name:"Number"}},containerItems:{xmlIsWrapped:!0,xmlName:"Containers",xmlElementName:"Container",required:!0,serializedName:"ContainerItems",type:{name:"Sequence",element:{type:{name:"Composite",className:"ContainerItem"}}}},nextMarker:{xmlName:"NextMarker",serializedName:"NextMarker",type:{name:"String"}}}}},Ze={serializedName:"PageList",type:{name:"Composite",className:"PageList",modelProperties:{pageRange:{xmlName:"PageRange",xmlElementName:"PageRange",serializedName:"PageRange",type:{name:"Sequence",element:{type:{name:"Composite",className:"PageRange"}}}},clearRange:{xmlName:"ClearRange",xmlElementName:"ClearRange",serializedName:"ClearRange",type:{name:"Sequence",element:{type:{name:"Composite",className:"ClearRange"}}}}}}},Fe={serializedName:"StorageServiceProperties",type:{name:"Composite",className:"StorageServiceProperties",modelProperties:{logging:{xmlName:"Logging",serializedName:"Logging",type:{name:"Composite",className:"Logging"}},hourMetrics:{xmlName:"HourMetrics",serializedName:"HourMetrics",type:{name:"Composite",className:"Metrics"}},minuteMetrics:{xmlName:"MinuteMetrics",serializedName:"MinuteMetrics",type:{name:"Composite",className:"Metrics"}},cors:{xmlIsWrapped:!0,xmlName:"Cors",xmlElementName:"CorsRule",serializedName:"Cors",type:{name:"Sequence",element:{type:{name:"Composite",className:"CorsRule"}}}},defaultServiceVersion:{xmlName:"DefaultServiceVersion",serializedName:"DefaultServiceVersion",type:{name:"String"}},deleteRetentionPolicy:{xmlName:"DeleteRetentionPolicy",serializedName:"DeleteRetentionPolicy",type:{name:"Composite",className:"RetentionPolicy"}},staticWebsite:{xmlName:"StaticWebsite",serializedName:"StaticWebsite",type:{name:"Composite",className:"StaticWebsite"}}}}},Xe={serializedName:"StorageServiceStats",type:{name:"Composite",className:"StorageServiceStats",modelProperties:{geoReplication:{xmlName:"GeoReplication",serializedName:"GeoReplication",type:{name:"Composite",className:"GeoReplication"}}}}},Ge={serializedName:"service-setproperties-headers",type:{name:"Composite",className:"ServiceSetPropertiesHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Ke={serializedName:"service-getproperties-headers",type:{name:"Composite",className:"ServiceGetPropertiesHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},We={serializedName:"service-getstatistics-headers",type:{name:"Composite",className:"ServiceGetStatisticsHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Ye={serializedName:"service-listcontainerssegment-headers",type:{name:"Composite",className:"ServiceListContainersSegmentHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Qe={serializedName:"service-getuserdelegationkey-headers",type:{name:"Composite",className:"ServiceGetUserDelegationKeyHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},$e={serializedName:"service-getaccountinfo-headers",type:{name:"Composite",className:"ServiceGetAccountInfoHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},skuName:{serializedName:"x-ms-sku-name",type:{name:"Enum",allowedValues:["Standard_LRS","Standard_GRS","Standard_RAGRS","Standard_ZRS","Premium_LRS"]}},accountKind:{serializedName:"x-ms-account-kind",type:{name:"Enum",allowedValues:["Storage","BlobStorage","StorageV2"]}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Je={serializedName:"service-submitbatch-headers",type:{name:"Composite",className:"ServiceSubmitBatchHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},contentType:{serializedName:"content-type",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},ec={serializedName:"container-create-headers",type:{name:"Composite",className:"ContainerCreateHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},cc={serializedName:"container-getproperties-headers",type:{name:"Composite",className:"ContainerGetPropertiesHeaders",modelProperties:{metadata:{serializedName:"x-ms-meta",type:{name:"Dictionary",value:{type:{name:"String"}}},headerCollectionPrefix:"x-ms-meta-"},eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},leaseDuration:{serializedName:"x-ms-lease-duration",type:{name:"Enum",allowedValues:["infinite","fixed"]}},leaseState:{serializedName:"x-ms-lease-state",type:{name:"Enum",allowedValues:["available","leased","expired","breaking","broken"]}},leaseStatus:{serializedName:"x-ms-lease-status",type:{name:"Enum",allowedValues:["locked","unlocked"]}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},blobPublicAccess:{serializedName:"x-ms-blob-public-access",type:{name:"String"}},hasImmutabilityPolicy:{serializedName:"x-ms-has-immutability-policy",type:{name:"Boolean"}},hasLegalHold:{serializedName:"x-ms-has-legal-hold",type:{name:"Boolean"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},tc={serializedName:"container-delete-headers",type:{name:"Composite",className:"ContainerDeleteHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},ac={serializedName:"container-setmetadata-headers",type:{name:"Composite",className:"ContainerSetMetadataHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},rc={serializedName:"container-getaccesspolicy-headers",type:{name:"Composite",className:"ContainerGetAccessPolicyHeaders",modelProperties:{blobPublicAccess:{serializedName:"x-ms-blob-public-access",type:{name:"String"}},eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},sc={serializedName:"container-setaccesspolicy-headers",type:{name:"Composite",className:"ContainerSetAccessPolicyHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},ic={serializedName:"container-acquirelease-headers",type:{name:"Composite",className:"ContainerAcquireLeaseHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},leaseId:{serializedName:"x-ms-lease-id",type:{name:"String"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},nc={serializedName:"container-releaselease-headers",type:{name:"Composite",className:"ContainerReleaseLeaseHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},lc={serializedName:"container-renewlease-headers",type:{name:"Composite",className:"ContainerRenewLeaseHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},leaseId:{serializedName:"x-ms-lease-id",type:{name:"String"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},oc={serializedName:"container-breaklease-headers",type:{name:"Composite",className:"ContainerBreakLeaseHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},leaseTime:{serializedName:"x-ms-lease-time",type:{name:"Number"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},mc={serializedName:"container-changelease-headers",type:{name:"Composite",className:"ContainerChangeLeaseHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},leaseId:{serializedName:"x-ms-lease-id",type:{name:"String"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},hc={serializedName:"container-listblobflatsegment-headers",type:{name:"Composite",className:"ContainerListBlobFlatSegmentHeaders",modelProperties:{contentType:{serializedName:"content-type",type:{name:"String"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},vc={serializedName:"container-listblobhierarchysegment-headers",type:{name:"Composite",className:"ContainerListBlobHierarchySegmentHeaders",modelProperties:{contentType:{serializedName:"content-type",type:{name:"String"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},zc={serializedName:"container-getaccountinfo-headers",type:{name:"Composite",className:"ContainerGetAccountInfoHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},skuName:{serializedName:"x-ms-sku-name",type:{name:"Enum",allowedValues:["Standard_LRS","Standard_GRS","Standard_RAGRS","Standard_ZRS","Premium_LRS"]}},accountKind:{serializedName:"x-ms-account-kind",type:{name:"Enum",allowedValues:["Storage","BlobStorage","StorageV2"]}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},dc={serializedName:"blob-download-headers",type:{name:"Composite",className:"BlobDownloadHeaders",modelProperties:{lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},metadata:{serializedName:"x-ms-meta",type:{name:"Dictionary",value:{type:{name:"String"}}},headerCollectionPrefix:"x-ms-meta-"},contentLength:{serializedName:"content-length",type:{name:"Number"}},contentType:{serializedName:"content-type",type:{name:"String"}},contentRange:{serializedName:"content-range",type:{name:"String"}},eTag:{serializedName:"etag",type:{name:"String"}},contentMD5:{serializedName:"content-md5",type:{name:"ByteArray"}},contentEncoding:{serializedName:"content-encoding",type:{name:"String"}},cacheControl:{serializedName:"cache-control",type:{name:"String"}},contentDisposition:{serializedName:"content-disposition",type:{name:"String"}},contentLanguage:{serializedName:"content-language",type:{name:"String"}},blobSequenceNumber:{serializedName:"x-ms-blob-sequence-number",type:{name:"Number"}},blobType:{serializedName:"x-ms-blob-type",type:{name:"Enum",allowedValues:["BlockBlob","PageBlob","AppendBlob"]}},copyCompletionTime:{serializedName:"x-ms-copy-completion-time",type:{name:"DateTimeRfc1123"}},copyStatusDescription:{serializedName:"x-ms-copy-status-description",type:{name:"String"}},copyId:{serializedName:"x-ms-copy-id",type:{name:"String"}},copyProgress:{serializedName:"x-ms-copy-progress",type:{name:"String"}},copySource:{serializedName:"x-ms-copy-source",type:{name:"String"}},copyStatus:{serializedName:"x-ms-copy-status",type:{name:"Enum",allowedValues:["pending","success","aborted","failed"]}},leaseDuration:{serializedName:"x-ms-lease-duration",type:{name:"Enum",allowedValues:["infinite","fixed"]}},leaseState:{serializedName:"x-ms-lease-state",type:{name:"Enum",allowedValues:["available","leased","expired","breaking","broken"]}},leaseStatus:{serializedName:"x-ms-lease-status",type:{name:"Enum",allowedValues:["locked","unlocked"]}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},acceptRanges:{serializedName:"accept-ranges",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},blobCommittedBlockCount:{serializedName:"x-ms-blob-committed-block-count",type:{name:"Number"}},isServerEncrypted:{serializedName:"x-ms-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",type:{name:"String"}},blobContentMD5:{serializedName:"x-ms-blob-content-md5",type:{name:"ByteArray"}},contentCrc64:{serializedName:"x-ms-content-crc64",type:{name:"ByteArray"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},uc={serializedName:"blob-getproperties-headers",type:{name:"Composite",className:"BlobGetPropertiesHeaders",modelProperties:{lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},creationTime:{serializedName:"x-ms-creation-time",type:{name:"DateTimeRfc1123"}},metadata:{serializedName:"x-ms-meta",type:{name:"Dictionary",value:{type:{name:"String"}}},headerCollectionPrefix:"x-ms-meta-"},blobType:{serializedName:"x-ms-blob-type",type:{name:"Enum",allowedValues:["BlockBlob","PageBlob","AppendBlob"]}},copyCompletionTime:{serializedName:"x-ms-copy-completion-time",type:{name:"DateTimeRfc1123"}},copyStatusDescription:{serializedName:"x-ms-copy-status-description",type:{name:"String"}},copyId:{serializedName:"x-ms-copy-id",type:{name:"String"}},copyProgress:{serializedName:"x-ms-copy-progress",type:{name:"String"}},copySource:{serializedName:"x-ms-copy-source",type:{name:"String"}},copyStatus:{serializedName:"x-ms-copy-status",type:{name:"Enum",allowedValues:["pending","success","aborted","failed"]}},isIncrementalCopy:{serializedName:"x-ms-incremental-copy",type:{name:"Boolean"}},destinationSnapshot:{serializedName:"x-ms-copy-destination-snapshot",type:{name:"String"}},leaseDuration:{serializedName:"x-ms-lease-duration",type:{name:"Enum",allowedValues:["infinite","fixed"]}},leaseState:{serializedName:"x-ms-lease-state",type:{name:"Enum",allowedValues:["available","leased","expired","breaking","broken"]}},leaseStatus:{serializedName:"x-ms-lease-status",type:{name:"Enum",allowedValues:["locked","unlocked"]}},contentLength:{serializedName:"content-length",type:{name:"Number"}},contentType:{serializedName:"content-type",type:{name:"String"}},eTag:{serializedName:"etag",type:{name:"String"}},contentMD5:{serializedName:"content-md5",type:{name:"ByteArray"}},contentEncoding:{serializedName:"content-encoding",type:{name:"String"}},contentDisposition:{serializedName:"content-disposition",type:{name:"String"}},contentLanguage:{serializedName:"content-language",type:{name:"String"}},cacheControl:{serializedName:"cache-control",type:{name:"String"}},blobSequenceNumber:{serializedName:"x-ms-blob-sequence-number",type:{name:"Number"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},acceptRanges:{serializedName:"accept-ranges",type:{name:"String"}},blobCommittedBlockCount:{serializedName:"x-ms-blob-committed-block-count",type:{name:"Number"}},isServerEncrypted:{serializedName:"x-ms-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",type:{name:"String"}},accessTier:{serializedName:"x-ms-access-tier",type:{name:"String"}},accessTierInferred:{serializedName:"x-ms-access-tier-inferred",type:{name:"Boolean"}},archiveStatus:{serializedName:"x-ms-archive-status",type:{name:"String"}},accessTierChangeTime:{serializedName:"x-ms-access-tier-change-time",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},pc={serializedName:"blob-delete-headers",type:{name:"Composite",className:"BlobDeleteHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},fc={serializedName:"blob-setaccesscontrol-headers",type:{name:"Composite",className:"BlobSetAccessControlHeaders",modelProperties:{date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}}}}},Mc={serializedName:"blob-getaccesscontrol-headers",type:{name:"Composite",className:"BlobGetAccessControlHeaders",modelProperties:{date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},xMsOwner:{serializedName:"x-ms-owner",type:{name:"String"}},xMsGroup:{serializedName:"x-ms-group",type:{name:"String"}},xMsPermissions:{serializedName:"x-ms-permissions",type:{name:"String"}},xMsAcl:{serializedName:"x-ms-acl",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}}}}},yc={serializedName:"blob-rename-headers",type:{name:"Composite",className:"BlobRenameHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},contentLength:{serializedName:"content-length",type:{name:"Number"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}}}}},Cc={serializedName:"pageblob-create-headers",type:{name:"Composite",className:"PageBlobCreateHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},contentMD5:{serializedName:"content-md5",type:{name:"ByteArray"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},isServerEncrypted:{serializedName:"x-ms-request-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Hc={serializedName:"appendblob-create-headers",type:{name:"Composite",className:"AppendBlobCreateHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},contentMD5:{serializedName:"content-md5",type:{name:"ByteArray"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},isServerEncrypted:{serializedName:"x-ms-request-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},gc={serializedName:"blockblob-upload-headers",type:{name:"Composite",className:"BlockBlobUploadHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},contentMD5:{serializedName:"content-md5",type:{name:"ByteArray"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},isServerEncrypted:{serializedName:"x-ms-request-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},bc={serializedName:"blob-undelete-headers",type:{name:"Composite",className:"BlobUndeleteHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Vc={serializedName:"blob-sethttpheaders-headers",type:{name:"Composite",className:"BlobSetHTTPHeadersHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},blobSequenceNumber:{serializedName:"x-ms-blob-sequence-number",type:{name:"Number"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Lc={serializedName:"blob-setmetadata-headers",type:{name:"Composite",className:"BlobSetMetadataHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},isServerEncrypted:{serializedName:"x-ms-request-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Sc={serializedName:"blob-acquirelease-headers",type:{name:"Composite",className:"BlobAcquireLeaseHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},leaseId:{serializedName:"x-ms-lease-id",type:{name:"String"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Nc={serializedName:"blob-releaselease-headers",type:{name:"Composite",className:"BlobReleaseLeaseHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},xc={serializedName:"blob-renewlease-headers",type:{name:"Composite",className:"BlobRenewLeaseHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},leaseId:{serializedName:"x-ms-lease-id",type:{name:"String"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Ac={serializedName:"blob-changelease-headers",type:{name:"Composite",className:"BlobChangeLeaseHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},leaseId:{serializedName:"x-ms-lease-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Pc={serializedName:"blob-breaklease-headers",type:{name:"Composite",className:"BlobBreakLeaseHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},leaseTime:{serializedName:"x-ms-lease-time",type:{name:"Number"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},wc={serializedName:"blob-createsnapshot-headers",type:{name:"Composite",className:"BlobCreateSnapshotHeaders",modelProperties:{snapshot:{serializedName:"x-ms-snapshot",type:{name:"String"}},eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},isServerEncrypted:{serializedName:"x-ms-request-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},qc={serializedName:"blob-startcopyfromurl-headers",type:{name:"Composite",className:"BlobStartCopyFromURLHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},copyId:{serializedName:"x-ms-copy-id",type:{name:"String"}},copyStatus:{serializedName:"x-ms-copy-status",type:{name:"Enum",allowedValues:["pending","success","aborted","failed"]}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Rc={serializedName:"blob-copyfromurl-headers",type:{name:"Composite",className:"BlobCopyFromURLHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},copyId:{serializedName:"x-ms-copy-id",type:{name:"String"}},copyStatus:{serializedName:"x-ms-copy-status",type:{name:"Enum",allowedValues:["success"]}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Tc={serializedName:"blob-abortcopyfromurl-headers",type:{name:"Composite",className:"BlobAbortCopyFromURLHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},kc={serializedName:"blob-settier-headers",type:{name:"Composite",className:"BlobSetTierHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Ec={serializedName:"blob-getaccountinfo-headers",type:{name:"Composite",className:"BlobGetAccountInfoHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},skuName:{serializedName:"x-ms-sku-name",type:{name:"Enum",allowedValues:["Standard_LRS","Standard_GRS","Standard_RAGRS","Standard_ZRS","Premium_LRS"]}},accountKind:{serializedName:"x-ms-account-kind",type:{name:"Enum",allowedValues:["Storage","BlobStorage","StorageV2"]}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Ic={serializedName:"blockblob-stageblock-headers",type:{name:"Composite",className:"BlockBlobStageBlockHeaders",modelProperties:{contentMD5:{serializedName:"content-md5",type:{name:"ByteArray"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},xMsContentCrc64:{serializedName:"x-ms-content-crc64",type:{name:"ByteArray"}},isServerEncrypted:{serializedName:"x-ms-request-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Oc={serializedName:"blockblob-stageblockfromurl-headers",type:{name:"Composite",className:"BlockBlobStageBlockFromURLHeaders",modelProperties:{contentMD5:{serializedName:"content-md5",type:{name:"ByteArray"}},xMsContentCrc64:{serializedName:"x-ms-content-crc64",type:{name:"ByteArray"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},isServerEncrypted:{serializedName:"x-ms-request-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},_c={serializedName:"blockblob-commitblocklist-headers",type:{name:"Composite",className:"BlockBlobCommitBlockListHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},contentMD5:{serializedName:"content-md5",type:{name:"ByteArray"}},xMsContentCrc64:{serializedName:"x-ms-content-crc64",type:{name:"ByteArray"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},isServerEncrypted:{serializedName:"x-ms-request-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Bc={serializedName:"blockblob-getblocklist-headers",type:{name:"Composite",className:"BlockBlobGetBlockListHeaders",modelProperties:{lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},eTag:{serializedName:"etag",type:{name:"String"}},contentType:{serializedName:"content-type",type:{name:"String"}},blobContentLength:{serializedName:"x-ms-blob-content-length",type:{name:"Number"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Dc={serializedName:"pageblob-uploadpages-headers",type:{name:"Composite",className:"PageBlobUploadPagesHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},contentMD5:{serializedName:"content-md5",type:{name:"ByteArray"}},xMsContentCrc64:{serializedName:"x-ms-content-crc64",type:{name:"ByteArray"}},blobSequenceNumber:{serializedName:"x-ms-blob-sequence-number",type:{name:"Number"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},isServerEncrypted:{serializedName:"x-ms-request-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Uc={serializedName:"pageblob-clearpages-headers",type:{name:"Composite",className:"PageBlobClearPagesHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},contentMD5:{serializedName:"content-md5",type:{name:"ByteArray"}},xMsContentCrc64:{serializedName:"x-ms-content-crc64",type:{name:"ByteArray"}},blobSequenceNumber:{serializedName:"x-ms-blob-sequence-number",type:{name:"Number"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},jc={serializedName:"pageblob-uploadpagesfromurl-headers",type:{name:"Composite",className:"PageBlobUploadPagesFromURLHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},contentMD5:{serializedName:"content-md5",type:{name:"ByteArray"}},xMsContentCrc64:{serializedName:"x-ms-content-crc64",type:{name:"ByteArray"}},blobSequenceNumber:{serializedName:"x-ms-blob-sequence-number",type:{name:"Number"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},isServerEncrypted:{serializedName:"x-ms-request-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Zc={serializedName:"pageblob-getpageranges-headers",type:{name:"Composite",className:"PageBlobGetPageRangesHeaders",modelProperties:{lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},eTag:{serializedName:"etag",type:{name:"String"}},blobContentLength:{serializedName:"x-ms-blob-content-length",type:{name:"Number"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Fc={serializedName:"pageblob-getpagerangesdiff-headers",type:{name:"Composite",className:"PageBlobGetPageRangesDiffHeaders",modelProperties:{lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},eTag:{serializedName:"etag",type:{name:"String"}},blobContentLength:{serializedName:"x-ms-blob-content-length",type:{name:"Number"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Xc={serializedName:"pageblob-resize-headers",type:{name:"Composite",className:"PageBlobResizeHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},blobSequenceNumber:{serializedName:"x-ms-blob-sequence-number",type:{name:"Number"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Gc={serializedName:"pageblob-updatesequencenumber-headers",type:{name:"Composite",className:"PageBlobUpdateSequenceNumberHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},blobSequenceNumber:{serializedName:"x-ms-blob-sequence-number",type:{name:"Number"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Kc={serializedName:"pageblob-copyincremental-headers",type:{name:"Composite",className:"PageBlobCopyIncrementalHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},copyId:{serializedName:"x-ms-copy-id",type:{name:"String"}},copyStatus:{serializedName:"x-ms-copy-status",type:{name:"Enum",allowedValues:["pending","success","aborted","failed"]}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Wc={serializedName:"appendblob-appendblock-headers",type:{name:"Composite",className:"AppendBlobAppendBlockHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},contentMD5:{serializedName:"content-md5",type:{name:"ByteArray"}},xMsContentCrc64:{serializedName:"x-ms-content-crc64",type:{name:"ByteArray"}},clientRequestId:{serializedName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},blobAppendOffset:{serializedName:"x-ms-blob-append-offset",type:{name:"String"}},blobCommittedBlockCount:{serializedName:"x-ms-blob-committed-block-count",type:{name:"Number"}},isServerEncrypted:{serializedName:"x-ms-request-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Yc={serializedName:"appendblob-appendblockfromurl-headers",type:{name:"Composite",className:"AppendBlobAppendBlockFromUrlHeaders",modelProperties:{eTag:{serializedName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",type:{name:"DateTimeRfc1123"}},contentMD5:{serializedName:"content-md5",type:{name:"ByteArray"}},xMsContentCrc64:{serializedName:"x-ms-content-crc64",type:{name:"ByteArray"}},requestId:{serializedName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",type:{name:"DateTimeRfc1123"}},blobAppendOffset:{serializedName:"x-ms-blob-append-offset",type:{name:"String"}},blobCommittedBlockCount:{serializedName:"x-ms-blob-committed-block-count",type:{name:"Number"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",type:{name:"String"}}}}},Qc=Object.freeze({ContainerItem:{xmlName:"Container",serializedName:"ContainerItem",type:{name:"Composite",className:"ContainerItem",modelProperties:{name:{xmlName:"Name",required:!0,serializedName:"Name",type:{name:"String"}},properties:{xmlName:"Properties",required:!0,serializedName:"Properties",type:{name:"Composite",className:"ContainerProperties"}},metadata:{xmlName:"Metadata",serializedName:"Metadata",type:{name:"Dictionary",value:{type:{name:"String"}}}}}}},ContainerProperties:{serializedName:"ContainerProperties",type:{name:"Composite",className:"ContainerProperties",modelProperties:{lastModified:{xmlName:"Last-Modified",required:!0,serializedName:"Last-Modified",type:{name:"DateTimeRfc1123"}},etag:{xmlName:"Etag",required:!0,serializedName:"Etag",type:{name:"String"}},leaseStatus:{xmlName:"LeaseStatus",serializedName:"LeaseStatus",type:{name:"Enum",allowedValues:["locked","unlocked"]}},leaseState:{xmlName:"LeaseState",serializedName:"LeaseState",type:{name:"Enum",allowedValues:["available","leased","expired","breaking","broken"]}},leaseDuration:{xmlName:"LeaseDuration",serializedName:"LeaseDuration",type:{name:"Enum",allowedValues:["infinite","fixed"]}},publicAccess:{xmlName:"PublicAccess",serializedName:"PublicAccess",type:{name:"String"}},hasImmutabilityPolicy:{xmlName:"HasImmutabilityPolicy",serializedName:"HasImmutabilityPolicy",type:{name:"Boolean"}},hasLegalHold:{xmlName:"HasLegalHold",serializedName:"HasLegalHold",type:{name:"Boolean"}}}}},CorsRule:{serializedName:"CorsRule",type:{name:"Composite",className:"CorsRule",modelProperties:{allowedOrigins:{xmlName:"AllowedOrigins",required:!0,serializedName:"AllowedOrigins",type:{name:"String"}},allowedMethods:{xmlName:"AllowedMethods",required:!0,serializedName:"AllowedMethods",type:{name:"String"}},allowedHeaders:{xmlName:"AllowedHeaders",required:!0,serializedName:"AllowedHeaders",type:{name:"String"}},exposedHeaders:{xmlName:"ExposedHeaders",required:!0,serializedName:"ExposedHeaders",type:{name:"String"}},maxAgeInSeconds:{xmlName:"MaxAgeInSeconds",required:!0,serializedName:"MaxAgeInSeconds",constraints:{InclusiveMinimum:0},type:{name:"Number"}}}}},GeoReplication:{serializedName:"GeoReplication",type:{name:"Composite",className:"GeoReplication",modelProperties:{status:{xmlName:"Status",required:!0,serializedName:"Status",type:{name:"String"}},lastSyncTime:{xmlName:"LastSyncTime",required:!0,serializedName:"LastSyncTime",type:{name:"DateTimeRfc1123"}}}}},KeyInfo:ke,ListContainersSegmentResponse:je,Logging:{serializedName:"Logging",type:{name:"Composite",className:"Logging",modelProperties:{version:{xmlName:"Version",required:!0,serializedName:"Version",type:{name:"String"}},deleteProperty:{xmlName:"Delete",required:!0,serializedName:"Delete",type:{name:"Boolean"}},read:{xmlName:"Read",required:!0,serializedName:"Read",type:{name:"Boolean"}},write:{xmlName:"Write",required:!0,serializedName:"Write",type:{name:"Boolean"}},retentionPolicy:{xmlName:"RetentionPolicy",required:!0,serializedName:"RetentionPolicy",type:{name:"Composite",className:"RetentionPolicy"}}}}},Metrics:{serializedName:"Metrics",type:{name:"Composite",className:"Metrics",modelProperties:{version:{xmlName:"Version",serializedName:"Version",type:{name:"String"}},enabled:{xmlName:"Enabled",required:!0,serializedName:"Enabled",type:{name:"Boolean"}},includeAPIs:{xmlName:"IncludeAPIs",serializedName:"IncludeAPIs",type:{name:"Boolean"}},retentionPolicy:{xmlName:"RetentionPolicy",serializedName:"RetentionPolicy",type:{name:"Composite",className:"RetentionPolicy"}}}}},RetentionPolicy:{serializedName:"RetentionPolicy",type:{name:"Composite",className:"RetentionPolicy",modelProperties:{enabled:{xmlName:"Enabled",required:!0,serializedName:"Enabled",type:{name:"Boolean"}},days:{xmlName:"Days",serializedName:"Days",constraints:{InclusiveMinimum:1},type:{name:"Number"}}}}},ServiceGetAccountInfoHeaders:$e,ServiceGetPropertiesHeaders:Ke,ServiceGetStatisticsHeaders:We,ServiceGetUserDelegationKeyHeaders:Qe,ServiceListContainersSegmentHeaders:Ye,ServiceSetPropertiesHeaders:Ge,ServiceSubmitBatchHeaders:Je,StaticWebsite:{serializedName:"StaticWebsite",type:{name:"Composite",className:"StaticWebsite",modelProperties:{enabled:{xmlName:"Enabled",required:!0,serializedName:"Enabled",type:{name:"Boolean"}},indexDocument:{xmlName:"IndexDocument",serializedName:"IndexDocument",type:{name:"String"}},errorDocument404Path:{xmlName:"ErrorDocument404Path",serializedName:"ErrorDocument404Path",type:{name:"String"}}}}},StorageError:Ie,StorageServiceProperties:Fe,StorageServiceStats:Xe,UserDelegationKey:Ee}),$c={parameterPath:["options","access"],mapper:{serializedName:"x-ms-blob-public-access",type:{name:"String"}}},Jc={parameterPath:"action",mapper:{required:!0,isConstant:!0,serializedName:"x-ms-lease-action",defaultValue:"acquire",type:{name:"String"}}},et={parameterPath:"action",mapper:{required:!0,isConstant:!0,serializedName:"x-ms-lease-action",defaultValue:"release",type:{name:"String"}}},ct={parameterPath:"action",mapper:{required:!0,isConstant:!0,serializedName:"x-ms-lease-action",defaultValue:"renew",type:{name:"String"}}},tt={parameterPath:"action",mapper:{required:!0,isConstant:!0,serializedName:"x-ms-lease-action",defaultValue:"break",type:{name:"String"}}},at={parameterPath:"action",mapper:{required:!0,isConstant:!0,serializedName:"x-ms-lease-action",defaultValue:"change",type:{name:"String"}}},rt={parameterPath:["options","appendPositionAccessConditions","appendPosition"],mapper:{serializedName:"x-ms-blob-condition-appendpos",type:{name:"Number"}}},st={parameterPath:["options","blobHTTPHeaders","blobCacheControl"],mapper:{serializedName:"x-ms-blob-cache-control",type:{name:"String"}}},it={parameterPath:["options","blobHTTPHeaders","blobContentDisposition"],mapper:{serializedName:"x-ms-blob-content-disposition",type:{name:"String"}}},nt={parameterPath:["options","blobHTTPHeaders","blobContentEncoding"],mapper:{serializedName:"x-ms-blob-content-encoding",type:{name:"String"}}},lt={parameterPath:["options","blobHTTPHeaders","blobContentLanguage"],mapper:{serializedName:"x-ms-blob-content-language",type:{name:"String"}}},ot={parameterPath:"blobContentLength",mapper:{required:!0,serializedName:"x-ms-blob-content-length",type:{name:"Number"}}},mt={parameterPath:["options","blobHTTPHeaders","blobContentMD5"],mapper:{serializedName:"x-ms-blob-content-md5",type:{name:"ByteArray"}}},ht={parameterPath:["options","blobHTTPHeaders","blobContentType"],mapper:{serializedName:"x-ms-blob-content-type",type:{name:"String"}}},vt={parameterPath:["options","blobSequenceNumber"],mapper:{serializedName:"x-ms-blob-sequence-number",defaultValue:0,type:{name:"Number"}}},zt={parameterPath:"blockId",mapper:{required:!0,serializedName:"blockid",type:{name:"String"}}},dt={parameterPath:["options","breakPeriod"],mapper:{serializedName:"x-ms-lease-break-period",type:{name:"Number"}}},ut={parameterPath:"comp",mapper:{required:!0,isConstant:!0,serializedName:"comp",defaultValue:"properties",type:{name:"String"}}},pt={parameterPath:"comp",mapper:{required:!0,isConstant:!0,serializedName:"comp",defaultValue:"page",type:{name:"String"}}},ft={parameterPath:"comp",mapper:{required:!0,isConstant:!0,serializedName:"comp",defaultValue:"pagelist",type:{name:"String"}}},Mt={parameterPath:"comp",mapper:{required:!0,isConstant:!0,serializedName:"comp",defaultValue:"appendblock",type:{name:"String"}}},yt={parameterPath:"comp",mapper:{required:!0,isConstant:!0,serializedName:"comp",defaultValue:"block",type:{name:"String"}}},Ct={parameterPath:"comp",mapper:{required:!0,isConstant:!0,serializedName:"comp",defaultValue:"blocklist",type:{name:"String"}}},Ht={parameterPath:"comp",mapper:{required:!0,isConstant:!0,serializedName:"comp",defaultValue:"list",type:{name:"String"}}},gt={parameterPath:"comp",mapper:{required:!0,isConstant:!0,serializedName:"comp",defaultValue:"metadata",type:{name:"String"}}},bt={parameterPath:"comp",mapper:{required:!0,isConstant:!0,serializedName:"comp",defaultValue:"acl",type:{name:"String"}}},Vt={parameterPath:"comp",mapper:{required:!0,isConstant:!0,serializedName:"comp",defaultValue:"lease",type:{name:"String"}}},Lt={parameterPath:"contentLength",mapper:{required:!0,serializedName:"Content-Length",type:{name:"Number"}}},St={parameterPath:"copySource",mapper:{required:!0,serializedName:"x-ms-copy-source",type:{name:"String"}}},Nt={parameterPath:["options","duration"],mapper:{serializedName:"x-ms-lease-duration",type:{name:"Number"}}},xt={parameterPath:["options","cpkInfo","encryptionAlgorithm"],mapper:{serializedName:"x-ms-encryption-algorithm",type:{name:"Enum",allowedValues:["AES256"]}}},At={parameterPath:["options","cpkInfo","encryptionKey"],mapper:{serializedName:"x-ms-encryption-key",type:{name:"String"}}},Pt={parameterPath:["options","cpkInfo","encryptionKeySha256"],mapper:{serializedName:"x-ms-encryption-key-sha256",type:{name:"String"}}},wt={parameterPath:["options","modifiedAccessConditions","ifMatch"],mapper:{serializedName:"If-Match",type:{name:"String"}}},qt={parameterPath:["options","modifiedAccessConditions","ifModifiedSince"],mapper:{serializedName:"If-Modified-Since",type:{name:"DateTimeRfc1123"}}},Rt={parameterPath:["options","modifiedAccessConditions","ifNoneMatch"],mapper:{serializedName:"If-None-Match",type:{name:"String"}}},Tt={parameterPath:["options","sequenceNumberAccessConditions","ifSequenceNumberEqualTo"],mapper:{serializedName:"x-ms-if-sequence-number-eq",type:{name:"Number"}}},kt={parameterPath:["options","sequenceNumberAccessConditions","ifSequenceNumberLessThan"],mapper:{serializedName:"x-ms-if-sequence-number-lt",type:{name:"Number"}}},Et={parameterPath:["options","sequenceNumberAccessConditions","ifSequenceNumberLessThanOrEqualTo"],mapper:{serializedName:"x-ms-if-sequence-number-le",type:{name:"Number"}}},It={parameterPath:["options","modifiedAccessConditions","ifUnmodifiedSince"],mapper:{serializedName:"If-Unmodified-Since",type:{name:"DateTimeRfc1123"}}},Ot={parameterPath:["options","include"],mapper:{serializedName:"include",type:{name:"Sequence",element:{type:{name:"Enum",allowedValues:["copy","deleted","metadata","snapshots","uncommittedblobs"]}}}},collectionFormat:ge.Csv},_t={parameterPath:["options","leaseAccessConditions","leaseId"],mapper:{serializedName:"x-ms-lease-id",type:{name:"String"}}},Bt={parameterPath:"leaseId",mapper:{required:!0,serializedName:"x-ms-lease-id",type:{name:"String"}}},Dt={parameterPath:["options","marker"],mapper:{serializedName:"marker",type:{name:"String"}}},Ut={parameterPath:["options","maxresults"],mapper:{serializedName:"maxresults",constraints:{InclusiveMinimum:1},type:{name:"Number"}}},jt={parameterPath:["options","appendPositionAccessConditions","maxSize"],mapper:{serializedName:"x-ms-blob-condition-maxsize",type:{name:"Number"}}},Zt={parameterPath:["options","metadata"],mapper:{serializedName:"x-ms-meta",type:{name:"Dictionary",value:{type:{name:"String"}}},headerCollectionPrefix:"x-ms-meta-"}},Ft={parameterPath:"pageWrite",mapper:{required:!0,isConstant:!0,serializedName:"x-ms-page-write",defaultValue:"update",type:{name:"String"}}},Xt={parameterPath:["options","posixPermissions"],mapper:{serializedName:"x-ms-permissions",type:{name:"String"}}},Gt={parameterPath:["options","prefix"],mapper:{serializedName:"prefix",type:{name:"String"}}},Kt={parameterPath:["options","proposedLeaseId"],mapper:{serializedName:"x-ms-proposed-lease-id",type:{name:"String"}}},Wt={parameterPath:"proposedLeaseId",mapper:{required:!0,serializedName:"x-ms-proposed-lease-id",type:{name:"String"}}},Yt={parameterPath:["options","range"],mapper:{serializedName:"x-ms-range",type:{name:"String"}}},Qt={parameterPath:["options","rehydratePriority"],mapper:{serializedName:"x-ms-rehydrate-priority",type:{name:"String"}}},$t={parameterPath:["options","requestId"],mapper:{serializedName:"x-ms-client-request-id",type:{name:"String"}}},Jt={parameterPath:"restype",mapper:{required:!0,isConstant:!0,serializedName:"restype",defaultValue:"service",type:{name:"String"}}},ea={parameterPath:"restype",mapper:{required:!0,isConstant:!0,serializedName:"restype",defaultValue:"account",type:{name:"String"}}},ca={parameterPath:"restype",mapper:{required:!0,isConstant:!0,serializedName:"restype",defaultValue:"container",type:{name:"String"}}},ta={parameterPath:["options","snapshot"],mapper:{serializedName:"snapshot",type:{name:"String"}}},aa={parameterPath:["options","sourceContentCrc64"],mapper:{serializedName:"x-ms-source-content-crc64",type:{name:"ByteArray"}}},ra={parameterPath:["options","sourceContentMD5"],mapper:{serializedName:"x-ms-source-content-md5",type:{name:"ByteArray"}}},sa={parameterPath:["options","sourceModifiedAccessConditions","sourceIfMatch"],mapper:{serializedName:"x-ms-source-if-match",type:{name:"String"}}},ia={parameterPath:["options","sourceModifiedAccessConditions","sourceIfModifiedSince"],mapper:{serializedName:"x-ms-source-if-modified-since",type:{name:"DateTimeRfc1123"}}},na={parameterPath:["options","sourceModifiedAccessConditions","sourceIfNoneMatch"],mapper:{serializedName:"x-ms-source-if-none-match",type:{name:"String"}}},la={parameterPath:["options","sourceModifiedAccessConditions","sourceIfUnmodifiedSince"],mapper:{serializedName:"x-ms-source-if-unmodified-since",type:{name:"DateTimeRfc1123"}}},oa={parameterPath:["options","sourceRange"],mapper:{serializedName:"x-ms-source-range",type:{name:"String"}}},ma={parameterPath:"sourceUrl",mapper:{required:!0,serializedName:"x-ms-copy-source",type:{name:"String"}}},ha={parameterPath:["options","tier"],mapper:{serializedName:"x-ms-access-tier",type:{name:"String"}}},va={parameterPath:["options","timeout"],mapper:{serializedName:"timeout",constraints:{InclusiveMinimum:0},type:{name:"Number"}}},za={parameterPath:["options","transactionalContentCrc64"],mapper:{serializedName:"x-ms-content-crc64",type:{name:"ByteArray"}}},da={parameterPath:["options","transactionalContentMD5"],mapper:{serializedName:"Content-MD5",type:{name:"ByteArray"}}},ua={parameterPath:"url",mapper:{required:!0,serializedName:"url",defaultValue:"",type:{name:"String"}},skipEncoding:!0},pa={parameterPath:"version",mapper:{required:!0,isConstant:!0,serializedName:"x-ms-version",defaultValue:"2019-02-02",type:{name:"String"}}},fa=function(){function e(e){this.client=e}return e.prototype.setProperties=function(e,c,t){return this.client.sendOperationRequest({storageServiceProperties:e,options:c},ya,t)},e.prototype.getProperties=function(e,c){return this.client.sendOperationRequest({options:e},Ca,c)},e.prototype.getStatistics=function(e,c){return this.client.sendOperationRequest({options:e},Ha,c)},e.prototype.listContainersSegment=function(e,c){return this.client.sendOperationRequest({options:e},ga,c)},e.prototype.getUserDelegationKey=function(e,c,t){return this.client.sendOperationRequest({keyInfo:e,options:c},ba,t)},e.prototype.getAccountInfo=function(e,c){return this.client.sendOperationRequest({options:e},Va,c)},e.prototype.submitBatch=function(e,c,t,a,r){return this.client.sendOperationRequest({body:e,contentLength:c,multipartContentType:t,options:a},La,r)},e}(),Ma=new M(Qc,!0),ya={httpMethod:"PUT",urlParameters:[ua],queryParameters:[va,Jt,ut],headerParameters:[pa,$t],requestBody:{parameterPath:"storageServiceProperties",mapper:A({},Fe,{required:!0})},contentType:"application/xml; charset=utf-8",responses:{202:{headersMapper:Ge},default:{bodyMapper:Ie}},isXML:!0,serializer:Ma},Ca={httpMethod:"GET",urlParameters:[ua],queryParameters:[va,Jt,ut],headerParameters:[pa,$t],responses:{200:{bodyMapper:Fe,headersMapper:Ke},default:{bodyMapper:Ie}},isXML:!0,serializer:Ma},Ha={httpMethod:"GET",urlParameters:[ua],queryParameters:[va,Jt,{parameterPath:"comp",mapper:{required:!0,isConstant:!0,serializedName:"comp",defaultValue:"stats",type:{name:"String"}}}],headerParameters:[pa,$t],responses:{200:{bodyMapper:Xe,headersMapper:We},default:{bodyMapper:Ie}},isXML:!0,serializer:Ma},ga={httpMethod:"GET",urlParameters:[ua],queryParameters:[Gt,Dt,Ut,{parameterPath:["options","include"],mapper:{serializedName:"include",type:{name:"Enum",allowedValues:["metadata"]}}},va,Ht],headerParameters:[pa,$t],responses:{200:{bodyMapper:je,headersMapper:Ye},default:{bodyMapper:Ie}},isXML:!0,serializer:Ma},ba={httpMethod:"POST",urlParameters:[ua],queryParameters:[va,Jt,{parameterPath:"comp",mapper:{required:!0,isConstant:!0,serializedName:"comp",defaultValue:"userdelegationkey",type:{name:"String"}}}],headerParameters:[pa,$t],requestBody:{parameterPath:"keyInfo",mapper:A({},ke,{required:!0})},contentType:"application/xml; charset=utf-8",responses:{200:{bodyMapper:Ee,headersMapper:Qe},default:{bodyMapper:Ie}},isXML:!0,serializer:Ma},Va={httpMethod:"GET",urlParameters:[ua],queryParameters:[ea,ut],headerParameters:[pa],responses:{200:{headersMapper:$e},default:{bodyMapper:Ie}},isXML:!0,serializer:Ma},La={httpMethod:"POST",urlParameters:[ua],queryParameters:[va,{parameterPath:"comp",mapper:{required:!0,isConstant:!0,serializedName:"comp",defaultValue:"batch",type:{name:"String"}}}],headerParameters:[Lt,{parameterPath:"multipartContentType",mapper:{required:!0,serializedName:"Content-Type",type:{name:"String"}}},pa,$t],requestBody:{parameterPath:"body",mapper:{required:!0,serializedName:"body",type:{name:"Stream"}}},contentType:"application/xml; charset=utf-8",responses:{202:{bodyMapper:{serializedName:"parsedResponse",type:{name:"Stream"}},headersMapper:Je},default:{bodyMapper:Ie}},isXML:!0,serializer:Ma},Sa=Object.freeze({AccessPolicy:{serializedName:"AccessPolicy",type:{name:"Composite",className:"AccessPolicy",modelProperties:{start:{xmlName:"Start",required:!0,serializedName:"Start",type:{name:"String"}},expiry:{xmlName:"Expiry",required:!0,serializedName:"Expiry",type:{name:"String"}},permission:{xmlName:"Permission",required:!0,serializedName:"Permission",type:{name:"String"}}}}},BlobFlatListSegment:{xmlName:"Blobs",serializedName:"BlobFlatListSegment",type:{name:"Composite",className:"BlobFlatListSegment",modelProperties:{blobItems:{xmlName:"BlobItems",xmlElementName:"Blob",required:!0,serializedName:"BlobItems",type:{name:"Sequence",element:{type:{name:"Composite",className:"BlobItem"}}}}}}},BlobHierarchyListSegment:{xmlName:"Blobs",serializedName:"BlobHierarchyListSegment",type:{name:"Composite",className:"BlobHierarchyListSegment",modelProperties:{blobPrefixes:{xmlName:"BlobPrefixes",xmlElementName:"BlobPrefix",serializedName:"BlobPrefixes",type:{name:"Sequence",element:{type:{name:"Composite",className:"BlobPrefix"}}}},blobItems:{xmlName:"BlobItems",xmlElementName:"Blob",required:!0,serializedName:"BlobItems",type:{name:"Sequence",element:{type:{name:"Composite",className:"BlobItem"}}}}}}},BlobItem:{xmlName:"Blob",serializedName:"BlobItem",type:{name:"Composite",className:"BlobItem",modelProperties:{name:{xmlName:"Name",required:!0,serializedName:"Name",type:{name:"String"}},deleted:{xmlName:"Deleted",required:!0,serializedName:"Deleted",type:{name:"Boolean"}},snapshot:{xmlName:"Snapshot",required:!0,serializedName:"Snapshot",type:{name:"String"}},properties:{xmlName:"Properties",required:!0,serializedName:"Properties",type:{name:"Composite",className:"BlobProperties"}},metadata:{xmlName:"Metadata",serializedName:"Metadata",type:{name:"Composite",className:"BlobMetadata",additionalProperties:{type:{name:"String"}}}}}}},BlobMetadata:{xmlName:"Metadata",serializedName:"BlobMetadata",type:{name:"Composite",className:"BlobMetadata",modelProperties:{encrypted:{xmlIsAttribute:!0,xmlName:"Encrypted",serializedName:"Encrypted",type:{name:"String"}}},additionalProperties:{type:{name:"String"}}}},BlobPrefix:{serializedName:"BlobPrefix",type:{name:"Composite",className:"BlobPrefix",modelProperties:{name:{xmlName:"Name",required:!0,serializedName:"Name",type:{name:"String"}}}}},BlobProperties:{xmlName:"Properties",serializedName:"BlobProperties",type:{name:"Composite",className:"BlobProperties",modelProperties:{creationTime:{xmlName:"Creation-Time",serializedName:"Creation-Time",type:{name:"DateTimeRfc1123"}},lastModified:{xmlName:"Last-Modified",required:!0,serializedName:"Last-Modified",type:{name:"DateTimeRfc1123"}},etag:{xmlName:"Etag",required:!0,serializedName:"Etag",type:{name:"String"}},contentLength:{xmlName:"Content-Length",serializedName:"Content-Length",type:{name:"Number"}},contentType:{xmlName:"Content-Type",serializedName:"Content-Type",type:{name:"String"}},contentEncoding:{xmlName:"Content-Encoding",serializedName:"Content-Encoding",type:{name:"String"}},contentLanguage:{xmlName:"Content-Language",serializedName:"Content-Language",type:{name:"String"}},contentMD5:{xmlName:"Content-MD5",serializedName:"Content-MD5",type:{name:"ByteArray"}},contentDisposition:{xmlName:"Content-Disposition",serializedName:"Content-Disposition",type:{name:"String"}},cacheControl:{xmlName:"Cache-Control",serializedName:"Cache-Control",type:{name:"String"}},blobSequenceNumber:{xmlName:"x-ms-blob-sequence-number",serializedName:"x-ms-blob-sequence-number",type:{name:"Number"}},blobType:{xmlName:"BlobType",serializedName:"BlobType",type:{name:"Enum",allowedValues:["BlockBlob","PageBlob","AppendBlob"]}},leaseStatus:{xmlName:"LeaseStatus",serializedName:"LeaseStatus",type:{name:"Enum",allowedValues:["locked","unlocked"]}},leaseState:{xmlName:"LeaseState",serializedName:"LeaseState",type:{name:"Enum",allowedValues:["available","leased","expired","breaking","broken"]}},leaseDuration:{xmlName:"LeaseDuration",serializedName:"LeaseDuration",type:{name:"Enum",allowedValues:["infinite","fixed"]}},copyId:{xmlName:"CopyId",serializedName:"CopyId",type:{name:"String"}},copyStatus:{xmlName:"CopyStatus",serializedName:"CopyStatus",type:{name:"Enum",allowedValues:["pending","success","aborted","failed"]}},copySource:{xmlName:"CopySource",serializedName:"CopySource",type:{name:"String"}},copyProgress:{xmlName:"CopyProgress",serializedName:"CopyProgress",type:{name:"String"}},copyCompletionTime:{xmlName:"CopyCompletionTime",serializedName:"CopyCompletionTime",type:{name:"DateTimeRfc1123"}},copyStatusDescription:{xmlName:"CopyStatusDescription",serializedName:"CopyStatusDescription",type:{name:"String"}},serverEncrypted:{xmlName:"ServerEncrypted",serializedName:"ServerEncrypted",type:{name:"Boolean"}},incrementalCopy:{xmlName:"IncrementalCopy",serializedName:"IncrementalCopy",type:{name:"Boolean"}},destinationSnapshot:{xmlName:"DestinationSnapshot",serializedName:"DestinationSnapshot",type:{name:"String"}},deletedTime:{xmlName:"DeletedTime",serializedName:"DeletedTime",type:{name:"DateTimeRfc1123"}},remainingRetentionDays:{xmlName:"RemainingRetentionDays",serializedName:"RemainingRetentionDays",type:{name:"Number"}},accessTier:{xmlName:"AccessTier",serializedName:"AccessTier",type:{name:"String"}},accessTierInferred:{xmlName:"AccessTierInferred",serializedName:"AccessTierInferred",type:{name:"Boolean"}},archiveStatus:{xmlName:"ArchiveStatus",serializedName:"ArchiveStatus",type:{name:"String"}},customerProvidedKeySha256:{xmlName:"CustomerProvidedKeySha256",serializedName:"CustomerProvidedKeySha256",type:{name:"String"}},accessTierChangeTime:{xmlName:"AccessTierChangeTime",serializedName:"AccessTierChangeTime",type:{name:"DateTimeRfc1123"}}}}},ContainerAcquireLeaseHeaders:ic,ContainerBreakLeaseHeaders:oc,ContainerChangeLeaseHeaders:mc,ContainerCreateHeaders:ec,ContainerDeleteHeaders:tc,ContainerGetAccessPolicyHeaders:rc,ContainerGetAccountInfoHeaders:zc,ContainerGetPropertiesHeaders:cc,ContainerListBlobFlatSegmentHeaders:hc,ContainerListBlobHierarchySegmentHeaders:vc,ContainerReleaseLeaseHeaders:nc,ContainerRenewLeaseHeaders:lc,ContainerSetAccessPolicyHeaders:sc,ContainerSetMetadataHeaders:ac,ListBlobsFlatSegmentResponse:_e,ListBlobsHierarchySegmentResponse:Be,SignedIdentifier:{serializedName:"SignedIdentifier",type:{name:"Composite",className:"SignedIdentifier",modelProperties:{id:{xmlName:"Id",required:!0,serializedName:"Id",type:{name:"String"}},accessPolicy:{xmlName:"AccessPolicy",required:!0,serializedName:"AccessPolicy",type:{name:"Composite",className:"AccessPolicy"}}}}},StorageError:Ie}),Na=function(){function e(e){this.client=e}return e.prototype.create=function(e,c){return this.client.sendOperationRequest({options:e},Aa,c)},e.prototype.getProperties=function(e,c){return this.client.sendOperationRequest({options:e},Pa,c)},e.prototype.deleteMethod=function(e,c){return this.client.sendOperationRequest({options:e},wa,c)},e.prototype.setMetadata=function(e,c){return this.client.sendOperationRequest({options:e},qa,c)},e.prototype.getAccessPolicy=function(e,c){return this.client.sendOperationRequest({options:e},Ra,c)},e.prototype.setAccessPolicy=function(e,c){return this.client.sendOperationRequest({options:e},Ta,c)},e.prototype.acquireLease=function(e,c){return this.client.sendOperationRequest({options:e},ka,c)},e.prototype.releaseLease=function(e,c,t){return this.client.sendOperationRequest({leaseId:e,options:c},Ea,t)},e.prototype.renewLease=function(e,c,t){return this.client.sendOperationRequest({leaseId:e,options:c},Ia,t)},e.prototype.breakLease=function(e,c){return this.client.sendOperationRequest({options:e},Oa,c)},e.prototype.changeLease=function(e,c,t,a){return this.client.sendOperationRequest({leaseId:e,proposedLeaseId:c,options:t},_a,a)},e.prototype.listBlobFlatSegment=function(e,c){return this.client.sendOperationRequest({options:e},Ba,c)},e.prototype.listBlobHierarchySegment=function(e,c,t){return this.client.sendOperationRequest({delimiter:e,options:c},Da,t)},e.prototype.getAccountInfo=function(e,c){return this.client.sendOperationRequest({options:e},Ua,c)},e}(),xa=new M(Sa,!0),Aa={httpMethod:"PUT",path:"{containerName}",urlParameters:[ua],queryParameters:[va,ca],headerParameters:[Zt,$c,pa,$t],responses:{201:{headersMapper:ec},default:{bodyMapper:Ie}},isXML:!0,serializer:xa},Pa={httpMethod:"GET",path:"{containerName}",urlParameters:[ua],queryParameters:[va,ca],headerParameters:[pa,$t,_t],responses:{200:{headersMapper:cc},default:{bodyMapper:Ie}},isXML:!0,serializer:xa},wa={httpMethod:"DELETE",path:"{containerName}",urlParameters:[ua],queryParameters:[va,ca],headerParameters:[pa,$t,_t,qt,It],responses:{202:{headersMapper:tc},default:{bodyMapper:Ie}},isXML:!0,serializer:xa},qa={httpMethod:"PUT",path:"{containerName}",urlParameters:[ua],queryParameters:[va,ca,gt],headerParameters:[Zt,pa,$t,_t,qt],responses:{200:{headersMapper:ac},default:{bodyMapper:Ie}},isXML:!0,serializer:xa},Ra={httpMethod:"GET",path:"{containerName}",urlParameters:[ua],queryParameters:[va,ca,bt],headerParameters:[pa,$t,_t],responses:{200:{bodyMapper:{xmlElementName:"SignedIdentifier",serializedName:"parsedResponse",type:{name:"Sequence",element:{type:{name:"Composite",className:"SignedIdentifier"}}}},headersMapper:rc},default:{bodyMapper:Ie}},isXML:!0,serializer:xa},Ta={httpMethod:"PUT",path:"{containerName}",urlParameters:[ua],queryParameters:[va,ca,bt],headerParameters:[$c,pa,$t,_t,qt,It],requestBody:{parameterPath:["options","containerAcl"],mapper:{xmlName:"SignedIdentifiers",xmlElementName:"SignedIdentifier",serializedName:"containerAcl",type:{name:"Sequence",element:{type:{name:"Composite",className:"SignedIdentifier"}}}}},contentType:"application/xml; charset=utf-8",responses:{200:{headersMapper:sc},default:{bodyMapper:Ie}},isXML:!0,serializer:xa},ka={httpMethod:"PUT",path:"{containerName}",urlParameters:[ua],queryParameters:[va,Vt,ca],headerParameters:[Nt,Kt,pa,$t,Jc,qt,It],responses:{201:{headersMapper:ic},default:{bodyMapper:Ie}},isXML:!0,serializer:xa},Ea={httpMethod:"PUT",path:"{containerName}",urlParameters:[ua],queryParameters:[va,Vt,ca],headerParameters:[Bt,pa,$t,et,qt,It],responses:{200:{headersMapper:nc},default:{bodyMapper:Ie}},isXML:!0,serializer:xa},Ia={httpMethod:"PUT",path:"{containerName}",urlParameters:[ua],queryParameters:[va,Vt,ca],headerParameters:[Bt,pa,$t,ct,qt,It],responses:{200:{headersMapper:lc},default:{bodyMapper:Ie}},isXML:!0,serializer:xa},Oa={httpMethod:"PUT",path:"{containerName}",urlParameters:[ua],queryParameters:[va,Vt,ca],headerParameters:[dt,pa,$t,tt,qt,It],responses:{202:{headersMapper:oc},default:{bodyMapper:Ie}},isXML:!0,serializer:xa},_a={httpMethod:"PUT",path:"{containerName}",urlParameters:[ua],queryParameters:[va,Vt,ca],headerParameters:[Bt,Wt,pa,$t,at,qt,It],responses:{200:{headersMapper:mc},default:{bodyMapper:Ie}},isXML:!0,serializer:xa},Ba={httpMethod:"GET",path:"{containerName}",urlParameters:[ua],queryParameters:[Gt,Dt,Ut,Ot,va,ca,Ht],headerParameters:[pa,$t],responses:{200:{bodyMapper:_e,headersMapper:hc},default:{bodyMapper:Ie}},isXML:!0,serializer:xa},Da={httpMethod:"GET",path:"{containerName}",urlParameters:[ua],queryParameters:[Gt,{parameterPath:"delimiter",mapper:{required:!0,serializedName:"delimiter",type:{name:"String"}}},Dt,Ut,Ot,va,ca,Ht],headerParameters:[pa,$t],responses:{200:{bodyMapper:Be,headersMapper:vc},default:{bodyMapper:Ie}},isXML:!0,serializer:xa},Ua={httpMethod:"GET",path:"{containerName}",urlParameters:[ua],queryParameters:[ea,ut],headerParameters:[pa],responses:{200:{headersMapper:zc},default:{bodyMapper:Ie}},isXML:!0,serializer:xa},ja=Object.freeze({BlobAbortCopyFromURLHeaders:Tc,BlobAcquireLeaseHeaders:Sc,BlobBreakLeaseHeaders:Pc,BlobChangeLeaseHeaders:Ac,BlobCopyFromURLHeaders:Rc,BlobCreateSnapshotHeaders:wc,BlobDeleteHeaders:pc,BlobDownloadHeaders:dc,BlobGetAccessControlHeaders:Mc,BlobGetAccountInfoHeaders:Ec,BlobGetPropertiesHeaders:uc,BlobReleaseLeaseHeaders:Nc,BlobRenameHeaders:yc,BlobRenewLeaseHeaders:xc,BlobSetAccessControlHeaders:fc,BlobSetHTTPHeadersHeaders:Vc,BlobSetMetadataHeaders:Lc,BlobSetTierHeaders:kc,BlobStartCopyFromURLHeaders:qc,BlobUndeleteHeaders:bc,DataLakeStorageError:Oe,DataLakeStorageErrorError:{serializedName:"DataLakeStorageError_error",type:{name:"Composite",className:"DataLakeStorageErrorError",modelProperties:{code:{xmlName:"Code",serializedName:"Code",type:{name:"String"}},message:{xmlName:"Message",serializedName:"Message",type:{name:"String"}}}}},StorageError:Ie}),Za=function(){function e(e){this.client=e}return e.prototype.download=function(e,c){return this.client.sendOperationRequest({options:e},Xa,c)},e.prototype.getProperties=function(e,c){return this.client.sendOperationRequest({options:e},Ga,c)},e.prototype.deleteMethod=function(e,c){return this.client.sendOperationRequest({options:e},Ka,c)},e.prototype.setAccessControl=function(e,c){return this.client.sendOperationRequest({options:e},Wa,c)},e.prototype.getAccessControl=function(e,c){return this.client.sendOperationRequest({options:e},Ya,c)},e.prototype.rename=function(e,c,t){return this.client.sendOperationRequest({renameSource:e,options:c},Qa,t)},e.prototype.undelete=function(e,c){return this.client.sendOperationRequest({options:e},$a,c)},e.prototype.setHTTPHeaders=function(e,c){return this.client.sendOperationRequest({options:e},Ja,c)},e.prototype.setMetadata=function(e,c){return this.client.sendOperationRequest({options:e},er,c)},e.prototype.acquireLease=function(e,c){return this.client.sendOperationRequest({options:e},cr,c)},e.prototype.releaseLease=function(e,c,t){return this.client.sendOperationRequest({leaseId:e,options:c},tr,t)},e.prototype.renewLease=function(e,c,t){return this.client.sendOperationRequest({leaseId:e,options:c},ar,t)},e.prototype.changeLease=function(e,c,t,a){return this.client.sendOperationRequest({leaseId:e,proposedLeaseId:c,options:t},rr,a)},e.prototype.breakLease=function(e,c){return this.client.sendOperationRequest({options:e},sr,c)},e.prototype.createSnapshot=function(e,c){return this.client.sendOperationRequest({options:e},ir,c)},e.prototype.startCopyFromURL=function(e,c,t){return this.client.sendOperationRequest({copySource:e,options:c},nr,t)},e.prototype.copyFromURL=function(e,c,t){return this.client.sendOperationRequest({copySource:e,options:c},lr,t)},e.prototype.abortCopyFromURL=function(e,c,t){return this.client.sendOperationRequest({copyId:e,options:c},or,t)},e.prototype.setTier=function(e,c,t){return this.client.sendOperationRequest({tier:e,options:c},mr,t)},e.prototype.getAccountInfo=function(e,c){return this.client.sendOperationRequest({options:e},hr,c)},e}(),Fa=new M(ja,!0),Xa={httpMethod:"GET",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[ta,va],headerParameters:[Yt,{parameterPath:["options","rangeGetContentMD5"],mapper:{serializedName:"x-ms-range-get-content-md5",type:{name:"Boolean"}}},{parameterPath:["options","rangeGetContentCRC64"],mapper:{serializedName:"x-ms-range-get-content-crc64",type:{name:"Boolean"}}},pa,$t,_t,At,Pt,xt,qt,It,wt,Rt],responses:{200:{bodyMapper:{serializedName:"parsedResponse",type:{name:"Stream"}},headersMapper:dc},206:{bodyMapper:{serializedName:"parsedResponse",type:{name:"Stream"}},headersMapper:dc},default:{bodyMapper:Ie}},isXML:!0,serializer:Fa},Ga={httpMethod:"HEAD",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[ta,va],headerParameters:[pa,$t,_t,At,Pt,xt,qt,It,wt,Rt],responses:{200:{headersMapper:uc},default:{bodyMapper:Ie}},isXML:!0,serializer:Fa},Ka={httpMethod:"DELETE",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[ta,va],headerParameters:[{parameterPath:["options","deleteSnapshots"],mapper:{serializedName:"x-ms-delete-snapshots",type:{name:"Enum",allowedValues:["include","only"]}}},pa,$t,_t,qt,It,wt,Rt],responses:{202:{headersMapper:pc},default:{bodyMapper:Ie}},isXML:!0,serializer:Fa},Wa={httpMethod:"PATCH",path:"{filesystem}/{path}",urlParameters:[ua],queryParameters:[va,{parameterPath:"action",mapper:{required:!0,isConstant:!0,serializedName:"action",defaultValue:"setAccessControl",type:{name:"String"}}}],headerParameters:[{parameterPath:["options","owner"],mapper:{serializedName:"x-ms-owner",type:{name:"String"}}},{parameterPath:["options","group"],mapper:{serializedName:"x-ms-group",type:{name:"String"}}},Xt,{parameterPath:["options","posixAcl"],mapper:{serializedName:"x-ms-acl",type:{name:"String"}}},$t,pa,_t,wt,Rt,qt,It],responses:{200:{headersMapper:fc},default:{bodyMapper:Oe}},isXML:!0,serializer:Fa},Ya={httpMethod:"HEAD",path:"{filesystem}/{path}",urlParameters:[ua],queryParameters:[va,{parameterPath:["options","upn"],mapper:{serializedName:"upn",type:{name:"Boolean"}}},{parameterPath:"action",mapper:{required:!0,isConstant:!0,serializedName:"action",defaultValue:"getAccessControl",type:{name:"String"}}}],headerParameters:[$t,pa,_t,wt,Rt,qt,It],responses:{200:{headersMapper:Mc},default:{bodyMapper:Oe}},isXML:!0,serializer:Fa},Qa={httpMethod:"PUT",path:"{filesystem}/{path}",urlParameters:[ua],queryParameters:[va,{parameterPath:"pathRenameMode",mapper:{serializedName:"mode",type:{name:"Enum",allowedValues:["legacy","posix"]}}}],headerParameters:[{parameterPath:"renameSource",mapper:{required:!0,serializedName:"x-ms-rename-source",type:{name:"String"}}},{parameterPath:["options","directoryProperties"],mapper:{serializedName:"x-ms-properties",type:{name:"String"}}},Xt,{parameterPath:["options","posixUmask"],mapper:{serializedName:"x-ms-umask",type:{name:"String"}}},{parameterPath:["options","sourceLeaseId"],mapper:{serializedName:"x-ms-source-lease-id",type:{name:"String"}}},pa,$t,{parameterPath:["options","directoryHttpHeaders","cacheControl"],mapper:{serializedName:"x-ms-cache-control",type:{name:"String"}}},{parameterPath:["options","directoryHttpHeaders","contentType"],mapper:{serializedName:"x-ms-content-type",type:{name:"String"}}},{parameterPath:["options","directoryHttpHeaders","contentEncoding"],mapper:{serializedName:"x-ms-content-encoding",type:{name:"String"}}},{parameterPath:["options","directoryHttpHeaders","contentLanguage"],mapper:{serializedName:"x-ms-content-language",type:{name:"String"}}},{parameterPath:["options","directoryHttpHeaders","contentDisposition"],mapper:{serializedName:"x-ms-content-disposition",type:{name:"String"}}},_t,qt,It,wt,Rt,ia,la,sa,na],responses:{201:{headersMapper:yc},default:{bodyMapper:Oe}},isXML:!0,serializer:Fa},$a={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,{parameterPath:"comp",mapper:{required:!0,isConstant:!0,serializedName:"comp",defaultValue:"undelete",type:{name:"String"}}}],headerParameters:[pa,$t],responses:{200:{headersMapper:bc},default:{bodyMapper:Ie}},isXML:!0,serializer:Fa},Ja={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,ut],headerParameters:[pa,$t,st,ht,mt,nt,lt,it,_t,qt,It,wt,Rt],responses:{200:{headersMapper:Vc},default:{bodyMapper:Ie}},isXML:!0,serializer:Fa},er={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,gt],headerParameters:[Zt,pa,$t,_t,At,Pt,xt,qt,It,wt,Rt],responses:{200:{headersMapper:Lc},default:{bodyMapper:Ie}},isXML:!0,serializer:Fa},cr={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,Vt],headerParameters:[Nt,Kt,pa,$t,Jc,qt,It,wt,Rt],responses:{201:{headersMapper:Sc},default:{bodyMapper:Ie}},isXML:!0,serializer:Fa},tr={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,Vt],headerParameters:[Bt,pa,$t,et,qt,It,wt,Rt],responses:{200:{headersMapper:Nc},default:{bodyMapper:Ie}},isXML:!0,serializer:Fa},ar={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,Vt],headerParameters:[Bt,pa,$t,ct,qt,It,wt,Rt],responses:{200:{headersMapper:xc},default:{bodyMapper:Ie}},isXML:!0,serializer:Fa},rr={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,Vt],headerParameters:[Bt,Wt,pa,$t,at,qt,It,wt,Rt],responses:{200:{headersMapper:Ac},default:{bodyMapper:Ie}},isXML:!0,serializer:Fa},sr={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,Vt],headerParameters:[dt,pa,$t,tt,qt,It,wt,Rt],responses:{202:{headersMapper:Pc},default:{bodyMapper:Ie}},isXML:!0,serializer:Fa},ir={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,{parameterPath:"comp",mapper:{required:!0,isConstant:!0,serializedName:"comp",defaultValue:"snapshot",type:{name:"String"}}}],headerParameters:[Zt,pa,$t,At,Pt,xt,qt,It,wt,Rt,_t],responses:{201:{headersMapper:wc},default:{bodyMapper:Ie}},isXML:!0,serializer:Fa},nr={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va],headerParameters:[Zt,ha,Qt,St,pa,$t,ia,la,sa,na,qt,It,wt,Rt,_t],responses:{202:{headersMapper:qc},default:{bodyMapper:Ie}},isXML:!0,serializer:Fa},lr={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va],headerParameters:[Zt,ha,St,pa,$t,{parameterPath:"xMsRequiresSync",mapper:{required:!0,isConstant:!0,serializedName:"x-ms-requires-sync",defaultValue:"true",type:{name:"String"}}},ia,la,sa,na,qt,It,wt,Rt,_t],responses:{202:{headersMapper:Rc},default:{bodyMapper:Ie}},isXML:!0,serializer:Fa},or={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[{parameterPath:"copyId",mapper:{required:!0,serializedName:"copyid",type:{name:"String"}}},va,{parameterPath:"comp",mapper:{required:!0,isConstant:!0,serializedName:"comp",defaultValue:"copy",type:{name:"String"}}}],headerParameters:[pa,$t,{parameterPath:"copyActionAbortConstant",mapper:{required:!0,isConstant:!0,serializedName:"x-ms-copy-action",defaultValue:"abort",type:{name:"String"}}},_t],responses:{204:{headersMapper:Tc},default:{bodyMapper:Ie}},isXML:!0,serializer:Fa},mr={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,{parameterPath:"comp",mapper:{required:!0,isConstant:!0,serializedName:"comp",defaultValue:"tier",type:{name:"String"}}}],headerParameters:[{parameterPath:"tier",mapper:{required:!0,serializedName:"x-ms-access-tier",type:{name:"String"}}},Qt,pa,$t,_t],responses:{200:{headersMapper:kc},202:{headersMapper:kc},default:{bodyMapper:Ie}},isXML:!0,serializer:Fa},hr={httpMethod:"GET",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[ea,ut],headerParameters:[pa],responses:{200:{headersMapper:Ec},default:{bodyMapper:Ie}},isXML:!0,serializer:Fa},vr=Object.freeze({ClearRange:{serializedName:"ClearRange",type:{name:"Composite",className:"ClearRange",modelProperties:{start:{xmlName:"Start",required:!0,serializedName:"Start",type:{name:"Number"}},end:{xmlName:"End",required:!0,serializedName:"End",type:{name:"Number"}}}}},PageBlobClearPagesHeaders:Uc,PageBlobCopyIncrementalHeaders:Kc,PageBlobCreateHeaders:Cc,PageBlobGetPageRangesDiffHeaders:Fc,PageBlobGetPageRangesHeaders:Zc,PageBlobResizeHeaders:Xc,PageBlobUpdateSequenceNumberHeaders:Gc,PageBlobUploadPagesFromURLHeaders:jc,PageBlobUploadPagesHeaders:Dc,PageList:Ze,PageRange:{serializedName:"PageRange",type:{name:"Composite",className:"PageRange",modelProperties:{start:{xmlName:"Start",required:!0,serializedName:"Start",type:{name:"Number"}},end:{xmlName:"End",required:!0,serializedName:"End",type:{name:"Number"}}}}},StorageError:Ie}),zr=function(){function e(e){this.client=e}return e.prototype.create=function(e,c,t,a){return this.client.sendOperationRequest({contentLength:e,blobContentLength:c,options:t},ur,a)},e.prototype.uploadPages=function(e,c,t,a){return this.client.sendOperationRequest({body:e,contentLength:c,options:t},pr,a)},e.prototype.clearPages=function(e,c,t){return this.client.sendOperationRequest({contentLength:e,options:c},fr,t)},e.prototype.uploadPagesFromURL=function(e,c,t,a,r,s){return this.client.sendOperationRequest({sourceUrl:e,sourceRange:c,contentLength:t,range:a,options:r},Mr,s)},e.prototype.getPageRanges=function(e,c){return this.client.sendOperationRequest({options:e},yr,c)},e.prototype.getPageRangesDiff=function(e,c){return this.client.sendOperationRequest({options:e},Cr,c)},e.prototype.resize=function(e,c,t){return this.client.sendOperationRequest({blobContentLength:e,options:c},Hr,t)},e.prototype.updateSequenceNumber=function(e,c,t){return this.client.sendOperationRequest({sequenceNumberAction:e,options:c},gr,t)},e.prototype.copyIncremental=function(e,c,t){return this.client.sendOperationRequest({copySource:e,options:c},br,t)},e}(),dr=new M(vr,!0),ur={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va],headerParameters:[Lt,Zt,ot,vt,pa,$t,ha,{parameterPath:"blobType",mapper:{required:!0,isConstant:!0,serializedName:"x-ms-blob-type",defaultValue:"PageBlob",type:{name:"String"}}},ht,nt,lt,mt,st,it,_t,At,Pt,xt,qt,It,wt,Rt],responses:{201:{headersMapper:Cc},default:{bodyMapper:Ie}},isXML:!0,serializer:dr},pr={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,pt],headerParameters:[Lt,da,za,Yt,pa,$t,Ft,_t,At,Pt,xt,Et,kt,Tt,qt,It,wt,Rt],requestBody:{parameterPath:"body",mapper:{required:!0,serializedName:"body",type:{name:"Stream"}}},contentType:"application/octet-stream",responses:{201:{headersMapper:Dc},default:{bodyMapper:Ie}},isXML:!0,serializer:dr},fr={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,pt],headerParameters:[Lt,Yt,pa,$t,{parameterPath:"pageWrite",mapper:{required:!0,isConstant:!0,serializedName:"x-ms-page-write",defaultValue:"clear",type:{name:"String"}}},_t,At,Pt,xt,Et,kt,Tt,qt,It,wt,Rt],responses:{201:{headersMapper:Uc},default:{bodyMapper:Ie}},isXML:!0,serializer:dr},Mr={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,pt],headerParameters:[ma,{parameterPath:"sourceRange",mapper:{required:!0,serializedName:"x-ms-source-range",type:{name:"String"}}},ra,aa,Lt,{parameterPath:"range",mapper:{required:!0,serializedName:"x-ms-range",type:{name:"String"}}},pa,$t,Ft,At,Pt,xt,_t,Et,kt,Tt,qt,It,wt,Rt,ia,la,sa,na],responses:{201:{headersMapper:jc},default:{bodyMapper:Ie}},isXML:!0,serializer:dr},yr={httpMethod:"GET",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[ta,va,ft],headerParameters:[Yt,pa,$t,_t,qt,It,wt,Rt],responses:{200:{bodyMapper:Ze,headersMapper:Zc},default:{bodyMapper:Ie}},isXML:!0,serializer:dr},Cr={httpMethod:"GET",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[ta,va,{parameterPath:["options","prevsnapshot"],mapper:{serializedName:"prevsnapshot",type:{name:"String"}}},ft],headerParameters:[Yt,pa,$t,_t,qt,It,wt,Rt],responses:{200:{bodyMapper:Ze,headersMapper:Fc},default:{bodyMapper:Ie}},isXML:!0,serializer:dr},Hr={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,ut],headerParameters:[ot,pa,$t,_t,At,Pt,xt,qt,It,wt,Rt],responses:{200:{headersMapper:Xc},default:{bodyMapper:Ie}},isXML:!0,serializer:dr},gr={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,ut],headerParameters:[{parameterPath:"sequenceNumberAction",mapper:{required:!0,serializedName:"x-ms-sequence-number-action",type:{name:"Enum",allowedValues:["max","update","increment"]}}},vt,pa,$t,_t,qt,It,wt,Rt],responses:{200:{headersMapper:Gc},default:{bodyMapper:Ie}},isXML:!0,serializer:dr},br={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,{parameterPath:"comp",mapper:{required:!0,isConstant:!0,serializedName:"comp",defaultValue:"incrementalcopy",type:{name:"String"}}}],headerParameters:[St,pa,$t,qt,It,wt,Rt],responses:{202:{headersMapper:Kc},default:{bodyMapper:Ie}},isXML:!0,serializer:dr},Vr=Object.freeze({AppendBlobAppendBlockFromUrlHeaders:Yc,AppendBlobAppendBlockHeaders:Wc,AppendBlobCreateHeaders:Hc,StorageError:Ie}),Lr=function(){function e(e){this.client=e}return e.prototype.create=function(e,c,t){return this.client.sendOperationRequest({contentLength:e,options:c},Nr,t)},e.prototype.appendBlock=function(e,c,t,a){return this.client.sendOperationRequest({body:e,contentLength:c,options:t},xr,a)},e.prototype.appendBlockFromUrl=function(e,c,t,a){return this.client.sendOperationRequest({sourceUrl:e,contentLength:c,options:t},Ar,a)},e}(),Sr=new M(Vr,!0),Nr={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va],headerParameters:[Lt,Zt,pa,$t,{parameterPath:"blobType",mapper:{required:!0,isConstant:!0,serializedName:"x-ms-blob-type",defaultValue:"AppendBlob",type:{name:"String"}}},ht,nt,lt,mt,st,it,_t,At,Pt,xt,qt,It,wt,Rt],responses:{201:{headersMapper:Hc},default:{bodyMapper:Ie}},isXML:!0,serializer:Sr},xr={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,Mt],headerParameters:[Lt,da,za,pa,$t,_t,jt,rt,At,Pt,xt,qt,It,wt,Rt],requestBody:{parameterPath:"body",mapper:{required:!0,serializedName:"body",type:{name:"Stream"}}},contentType:"application/octet-stream",responses:{201:{headersMapper:Wc},default:{bodyMapper:Ie}},isXML:!0,serializer:Sr},Ar={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,Mt],headerParameters:[ma,oa,ra,aa,Lt,da,pa,$t,At,Pt,xt,_t,jt,rt,qt,It,wt,Rt,ia,la,sa,na],responses:{201:{headersMapper:Yc},default:{bodyMapper:Ie}},isXML:!0,serializer:Sr},Pr=Object.freeze({Block:{serializedName:"Block",type:{name:"Composite",className:"Block",modelProperties:{name:{xmlName:"Name",required:!0,serializedName:"Name",type:{name:"String"}},size:{xmlName:"Size",required:!0,serializedName:"Size",type:{name:"Number"}}}}},BlockBlobCommitBlockListHeaders:_c,BlockBlobGetBlockListHeaders:Bc,BlockBlobStageBlockFromURLHeaders:Oc,BlockBlobStageBlockHeaders:Ic,BlockBlobUploadHeaders:gc,BlockList:De,BlockLookupList:Ue,StorageError:Ie}),wr=function(){function e(e){this.client=e}return e.prototype.upload=function(e,c,t,a){return this.client.sendOperationRequest({body:e,contentLength:c,options:t},Rr,a)},e.prototype.stageBlock=function(e,c,t,a,r){return this.client.sendOperationRequest({blockId:e,contentLength:c,body:t,options:a},Tr,r)},e.prototype.stageBlockFromURL=function(e,c,t,a,r){return this.client.sendOperationRequest({blockId:e,contentLength:c,sourceUrl:t,options:a},kr,r)},e.prototype.commitBlockList=function(e,c,t){return this.client.sendOperationRequest({blocks:e,options:c},Er,t)},e.prototype.getBlockList=function(e,c,t){return this.client.sendOperationRequest({listType:e,options:c},Ir,t)},e}(),qr=new M(Pr,!0),Rr={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va],headerParameters:[Lt,Zt,ha,pa,$t,{parameterPath:"blobType",mapper:{required:!0,isConstant:!0,serializedName:"x-ms-blob-type",defaultValue:"BlockBlob",type:{name:"String"}}},ht,nt,lt,mt,st,it,_t,At,Pt,xt,qt,It,wt,Rt],requestBody:{parameterPath:"body",mapper:{required:!0,serializedName:"body",type:{name:"Stream"}}},contentType:"application/octet-stream",responses:{201:{headersMapper:gc},default:{bodyMapper:Ie}},isXML:!0,serializer:qr},Tr={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[zt,va,yt],headerParameters:[Lt,da,za,pa,$t,_t,At,Pt,xt],requestBody:{parameterPath:"body",mapper:{required:!0,serializedName:"body",type:{name:"Stream"}}},contentType:"application/octet-stream",responses:{201:{headersMapper:Ic},default:{bodyMapper:Ie}},isXML:!0,serializer:qr},kr={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[zt,va,yt],headerParameters:[Lt,ma,oa,ra,aa,pa,$t,At,Pt,xt,_t,ia,la,sa,na],responses:{201:{headersMapper:Oc},default:{bodyMapper:Ie}},isXML:!0,serializer:qr},Er={httpMethod:"PUT",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[va,Ct],headerParameters:[da,za,Zt,ha,pa,$t,st,ht,nt,lt,mt,it,_t,At,Pt,xt,qt,It,wt,Rt],requestBody:{parameterPath:"blocks",mapper:A({},Ue,{required:!0})},contentType:"application/xml; charset=utf-8",responses:{201:{headersMapper:_c},default:{bodyMapper:Ie}},isXML:!0,serializer:qr},Ir={httpMethod:"GET",path:"{containerName}/{blob}",urlParameters:[ua],queryParameters:[ta,{parameterPath:"listType",mapper:{required:!0,serializedName:"blocklisttype",defaultValue:"committed",type:{name:"Enum",allowedValues:["committed","uncommitted","all"]}}},va,Ct],headerParameters:[pa,$t,_t],responses:{200:{bodyMapper:De,headersMapper:Bc},default:{bodyMapper:Ie}},isXML:!0,serializer:qr};function Or(e){if(e.offset<0)throw new RangeError("IRange.offset cannot be smaller than 0.");if(e.count&&e.count<=0)throw new RangeError("IRange.count must be larger than 0. Leave it undefined if you want a range from offset to the end.");return e.count?"bytes="+e.offset+"-"+(e.offset+e.count-1):"bytes="+e.offset+"-"}var _r,Br,Dr=268435456,Ur=104857600,jr=5e4,Zr=4194304,Fr="_",Xr="sig",Gr="snapshot",Kr="timeout",Wr={AUTHORIZATION:"Authorization",AUTHORIZATION_SCHEME:"Bearer",CONTENT_ENCODING:"Content-Encoding",CONTENT_ID:"Content-ID",CONTENT_LANGUAGE:"Content-Language",CONTENT_LENGTH:"Content-Length",CONTENT_MD5:"Content-Md5",CONTENT_TRANSFER_ENCODING:"Content-Transfer-Encoding",CONTENT_TYPE:"Content-Type",COOKIE:"Cookie",DATE:"date",IF_MATCH:"if-match",IF_MODIFIED_SINCE:"if-modified-since",IF_NONE_MATCH:"if-none-match",IF_UNMODIFIED_SINCE:"if-unmodified-since",PREFIX_FOR_STORAGE:"x-ms-",RANGE:"Range",USER_AGENT:"User-Agent",X_MS_CLIENT_REQUEST_ID:"x-ms-client-request-id",X_MS_DATE:"x-ms-date",X_MS_ERROR_CODE:"x-ms-error-code",X_MS_VERSION:"x-ms-version"},Yr="\r\n",Qr="AES256";function $r(e){if(null!=e)return e}function Jr(e,c){if(e&&!c)throw new RangeError("Customer-provided encryption key must be used over HTTPS.");e&&!e.encryptionAlgorithm&&(e.encryptionAlgorithm=Qr)}function es(e,c){var t=me.parse(e),a=t.getPath();return a=a?a.endsWith("/")?""+a+c:a+"/"+c:c,t.setPath(a),t.toString()}function cs(e,c,t){var a=me.parse(e);return a.setQueryParameter(c,t),a.toString()}function ts(e,c){void 0===c&&(c=!0);var t=e.toISOString();return c?t.substring(0,t.length-1)+"0000Z":t.substring(0,t.length-5)+"Z"}function as(e,c){e.length>42&&(e=e.slice(0,42));var t,a=e+function(e,c,t){return void 0===t&&(t=" "),String.prototype.padStart?e.padStart(c,t):(t=t||" ",e.length>c?e:((c-=e.length)>t.length&&(t+=t.repeat(c/t.length)),t.slice(0,c)+e))}(c.toString(),48-e.length,"0");return t=a,h?Buffer.from(t).toString("base64"):btoa(t)}function rs(e,c){return e.toLocaleLowerCase()===c.toLocaleLowerCase()}(_r=e.BlockBlobTier||(e.BlockBlobTier={})).Hot="Hot",_r.Cool="Cool",_r.Archive="Archive",(Br=e.PremiumPageBlobTier||(e.PremiumPageBlobTier={})).P4="P4",Br.P6="P6",Br.P10="P10",Br.P15="P15",Br.P20="P20",Br.P30="P30",Br.P40="P40",Br.P50="P50",Br.P60="P60",Br.P70="P70",Br.P80="P80";var ss,is=function(e){function c(c,t){return e.call(this,c,t)||this}return x(c,e),c.prototype.sendRequest=function(e){return P(this,void 0,void 0,function(){return w(this,function(c){return"GET"!==e.method.toUpperCase()&&"HEAD"!==e.method.toUpperCase()||(e.url=cs(e.url,Fr,(new Date).getTime().toString())),e.headers.remove(Wr.COOKIE),e.headers.remove(Wr.CONTENT_LENGTH),[2,this._nextPolicy.sendRequest(e)]})})},c}(G),ns=function(){function e(){}return e.prototype.create=function(e,c){return new is(e,c)},e}(),ls=function(){function e(){}return e.prototype.create=function(e,c){throw new Error("Method should be implemented in children classes.")},e}(),os="azure-storage-blob",ms="1.0.0",hs=function(e){function c(c,t){var a=this;if(null==c)throw new Error("'url' cannot be null.");if(t||(t={}),!t.userAgent){var r=ne();t.userAgent=os+"/"+ms+" "+r}return(a=e.call(this,void 0,t)||this).version="2019-02-02",a.baseUri="{url}",a.requestContentType="application/json; charset=utf-8",a.url=c,null!==t.pathRenameMode&&void 0!==t.pathRenameMode&&(a.pathRenameMode=t.pathRenameMode),a}return x(c,e),c}(Ae),vs=function(e){function c(c,t,a){var r=e.call(this,c,t)||this;return r.keepAliveOptions=a,r}return x(c,e),c.prototype.sendRequest=function(e){return P(this,void 0,void 0,function(){return w(this,function(c){return e.keepAlive=this.keepAliveOptions.enable,[2,this._nextPolicy.sendRequest(e)]})})},c}(G),zs=function(){function e(e){void 0===e&&(e={enable:!0}),this.keepAliveOptions=e}return e.prototype.create=function(e,c){return new vs(e,c,this.keepAliveOptions)},e}(),ds={logWarningIfTryOverThreshold:3e3},us=function(c){function t(e,t,a){void 0===a&&(a=ds);var r=c.call(this,e,t)||this;return r.tryCount=0,r.operationStartTime=new Date,r.requestStartTime=new Date,r.loggingOptions=a,r}return x(t,c),t.prototype.sendRequest=function(c){return P(this,void 0,void 0,function(){var t,a,r,s,i,n,l,o,m,h;return w(this,function(v){switch(v.label){case 0:this.tryCount++,this.requestStartTime=new Date,1===this.tryCount&&(this.operationStartTime=this.requestStartTime),function(e,c){return me.parse(e).getQueryParameterValue(c)}(t=c.url,Xr)&&(t=cs(t,Xr,"*****")),this.log(e.HttpPipelineLogLevel.INFO,"'"+t+"'==> OUTGOING REQUEST (Try number="+this.tryCount+")."),v.label=1;case 1:return v.trys.push([1,3,,4]),[4,this._nextPolicy.sendRequest(c)];case 2:return a=v.sent(),r=new Date,s=r.getTime()-this.requestStartTime.getTime(),i=r.getTime()-this.operationStartTime.getTime(),n=e.HttpPipelineLogLevel.INFO,l="",this.shouldLog(e.HttpPipelineLogLevel.INFO)&&(l="Successfully Received Response. "),s>=this.loggingOptions.logWarningIfTryOverThreshold&&this.shouldLog(e.HttpPipelineLogLevel.WARNING)&&(n=e.HttpPipelineLogLevel.WARNING,l="SLOW OPERATION. Duration > "+this.loggingOptions.logWarningIfTryOverThreshold+" ms. "),(a.status>=400&&a.status<=499&&404!==a.status&&409!==a.status&&412!==a.status&&416!==a.status||a.status>=500&&a.status<=509)&&(o="REQUEST ERROR: HTTP request failed with status code: "+a.status+". ",l=o,n=e.HttpPipelineLogLevel.ERROR),m="Request try:"+this.tryCount+", status:"+a.status+" request duration:"+s+" ms, operation duration:"+i+" ms\n",this.log(n,l+m),[2,a];case 3:throw h=v.sent(),this.log(e.HttpPipelineLogLevel.ERROR,"Unexpected failure attempting to make request. Error message: "+h.message),h;case 4:return[2]}})})},t}(G),ps=function(){function e(e){this.loggingOptions=e}return e.prototype.create=function(e,c){return new us(e,c,this.loggingOptions)},e}(),fs=function(){function e(e,c){void 0===c&&(c={}),this.factories=e,this.options=c}return e.prototype.toServiceClientOptions=function(){return{httpClient:this.options.HTTPClient,httpPipelineLogger:this.options.logger,requestPolicyFactories:this.factories}},e}();(ss=e.RetryPolicyType||(e.RetryPolicyType={}))[ss.EXPONENTIAL=0]="EXPONENTIAL",ss[ss.FIXED=1]="FIXED";var Ms,ys={maxRetryDelayInMs:12e4,maxTries:4,retryDelayInMs:4e3,retryPolicyType:e.RetryPolicyType.EXPONENTIAL,secondaryHost:"",tryTimeoutInMs:void 0},Cs=new R("The request was aborted",R.REQUEST_ABORTED_ERROR),Hs=function(c){function t(e,t,a){void 0===a&&(a=ys);var r=c.call(this,e,t)||this;return r.retryOptions={retryPolicyType:a.retryPolicyType?a.retryPolicyType:ys.retryPolicyType,maxTries:a.maxTries&&a.maxTries>=1?Math.floor(a.maxTries):ys.maxTries,tryTimeoutInMs:a.tryTimeoutInMs&&a.tryTimeoutInMs>=0?a.tryTimeoutInMs:ys.tryTimeoutInMs,retryDelayInMs:a.retryDelayInMs&&a.retryDelayInMs>=0?Math.min(a.retryDelayInMs,a.maxRetryDelayInMs?a.maxRetryDelayInMs:ys.maxRetryDelayInMs):ys.retryDelayInMs,maxRetryDelayInMs:a.maxRetryDelayInMs&&a.maxRetryDelayInMs>=0?a.maxRetryDelayInMs:ys.maxRetryDelayInMs,secondaryHost:a.secondaryHost?a.secondaryHost:ys.secondaryHost},r}return x(t,c),t.prototype.sendRequest=function(e){return P(this,void 0,void 0,function(){return w(this,function(c){return[2,this.attemptSendRequest(e,!1,1)]})})},t.prototype.attemptSendRequest=function(c,t,a){return P(this,void 0,void 0,function(){var r,s,i,n;return w(this,function(l){switch(l.label){case 0:r=c.clone(),(s=t||!this.retryOptions.secondaryHost||!("GET"===c.method||"HEAD"===c.method||"OPTIONS"===c.method)||a%2==1)||(r.url=function(e,c){var t=me.parse(e);return t.setHost(c),t.toString()}(r.url,this.retryOptions.secondaryHost)),this.retryOptions.tryTimeoutInMs&&(r.url=cs(r.url,Kr,Math.floor(this.retryOptions.tryTimeoutInMs/1e3).toString())),l.label=1;case 1:return l.trys.push([1,3,,4]),this.logf(e.HttpPipelineLogLevel.INFO,"RetryPolicy: =====> Try="+a+" "+(s?"Primary":"Secondary")),[4,this._nextPolicy.sendRequest(r)];case 2:return i=l.sent(),this.shouldRetry(s,a,i)?(t=t||!s&&404===i.status,[3,4]):[2,i];case 3:if(n=l.sent(),this.logf(e.HttpPipelineLogLevel.ERROR,"RetryPolicy: Caught error, message: "+n.message+", code: "+n.code),!this.shouldRetry(s,a,i,n))throw n;return[3,4];case 4:return[4,this.delay(s,a,c.abortSignal)];case 5:return l.sent(),[4,this.attemptSendRequest(c,t,++a)];case 6:return[2,l.sent()]}})})},t.prototype.shouldRetry=function(c,t,a,r){if(t>=this.retryOptions.maxTries)return this.logf(e.HttpPipelineLogLevel.INFO,"RetryPolicy: Attempt(s) "+t+" >= maxTries "+this.retryOptions.maxTries+", no further try."),!1;if(r)for(var s=0,i=["ETIMEDOUT","ESOCKETTIMEDOUT","ECONNREFUSED","ECONNRESET","ENOENT","ENOTFOUND","TIMEOUT","REQUEST_SEND_ERROR"];s0){var t=this.listeners[e].shift();setImmediate(function(){t.call(c)})}},e.keys={},e.listeners={},e}(),ks=function(){function e(){this.batch="batch",this.batchRequest=new Os}return e.prototype.getMultiPartContentType=function(){return this.batchRequest.getMultipartContentType()},e.prototype.getHttpRequestBody=function(){return this.batchRequest.getHttpRequestBody()},e.prototype.getSubRequests=function(){return this.batchRequest.getSubRequests()},e.prototype.addSubRequestInternal=function(e,c){return P(this,void 0,void 0,function(){return w(this,function(t){switch(t.label){case 0:return[4,Ts.lock(this.batch)];case 1:t.sent(),t.label=2;case 2:return t.trys.push([2,,4,6]),this.batchRequest.preAddSubRequest(e),[4,c()];case 3:return t.sent(),this.batchRequest.postAddSubRequest(e),[3,6];case 4:return[4,Ts.unlock(this.batch)];case 5:return t.sent(),[7];case 6:return[2]}})})},e}(),Es=function(e){function c(){return e.call(this)||this}return x(c,e),c.prototype.addSubRequest=function(c,t,a){return P(this,void 0,void 0,function(){var r,s,i=this;return w(this,function(n){switch(n.label){case 0:if("string"==typeof c&&t instanceof ls)r=c,s=t;else{if(!(c instanceof ws))throw new RangeError("Invalid arguments. Either url and credential, or BlobURL need be provided.");r=c.url,s=c.credential,a=t}return a||(a={}),[4,e.prototype.addSubRequestInternal.call(this,{url:r,credential:s},function(){return P(i,void 0,void 0,function(){return w(this,function(e){switch(e.label){case 0:return[4,new ws(r,this.batchRequest.createPipeline(s)).delete(Te.none,a)];case 1:return e.sent(),[2]}})})})];case 1:return n.sent(),[2]}})})},c}(ks),Is=function(e){function c(){return e.call(this)||this}return x(c,e),c.prototype.addSubRequest=function(c,t,a,r){return P(this,void 0,void 0,function(){var s,i,n,l=this;return w(this,function(o){switch(o.label){case 0:if("string"==typeof c&&t instanceof ls)s=c,i=t,n=a;else{if(!(c instanceof ws))throw new RangeError("Invalid arguments. Either url and credential, or BlobURL need be provided.");s=c.url,i=c.credential,n=t,r=a}return r||(r={}),[4,e.prototype.addSubRequestInternal.call(this,{url:s,credential:i},function(){return P(l,void 0,void 0,function(){return w(this,function(e){switch(e.label){case 0:return[4,new ws(s,this.batchRequest.createPipeline(i)).setTier(Te.none,n,r)];case 1:return e.sent(),[2]}})})})];case 1:return o.sent(),[2]}})})},c}(ks),Os=function(){function e(){this.operationCount=0,this.body="";var e=d();this.boundary="batch_"+e,this.subRequestPrefix="--"+this.boundary+Yr+Wr.CONTENT_TYPE+": application/http"+Yr+Wr.CONTENT_TRANSFER_ENCODING+": binary",this.multipartContentType="multipart/mixed; boundary="+this.boundary,this.batchRequestEnding="--"+this.boundary+"--",this.subRequests=new Map}return e.prototype.createPipeline=function(e){var c=e instanceof As,t=3+(c?0:1),a=new Array(t);return a[0]=W(),a[1]=new Us,c||(a[2]=e),a[t-1]=new Bs(this),new fs(a,{})},e.prototype.appendSubRequestToBody=function(e){this.body+=[this.subRequestPrefix,Wr.CONTENT_ID+": "+this.operationCount,"",e.method.toString()+" "+function(e){var c=me.parse(e),t=c.getPath();if(!t)throw new RangeError("Invalid url without valid path.");var a=c.getQuery()||"";return""!=(a=a.trim())&&(a=a.startsWith("?")?a:"?"+a),""+t+a}(e.url)+" HTTP/1.1"+Yr].join(Yr);for(var c=0,t=e.headers.headersArray();c=256)throw new RangeError("Cannot exceed 256 sub requests in a single batch");var c=function(e){return me.parse(e).getPath()}(e.url);if(!c||""==c)throw new RangeError("Invalid url for sub request: '"+e.url+"'")},e.prototype.postAddSubRequest=function(e){this.subRequests.set(this.operationCount,e),this.operationCount++},e.prototype.getHttpRequestBody=function(){return""+this.body+this.batchRequestEnding+Yr},e.prototype.getMultipartContentType=function(){return this.multipartContentType},e.prototype.getSubRequests=function(){return this.subRequests},e}(),_s=function(e){function c(c,a,r){var s=e.call(this,a,r)||this;return s.dummyResponse={request:new S,status:200,headers:new t},s.batchRequest=c,s}return x(c,e),c.prototype.sendRequest=function(e){return P(this,void 0,void 0,function(){return w(this,function(c){switch(c.label){case 0:return[4,this.batchRequest.appendSubRequestToBody(e)];case 1:return c.sent(),[2,this.dummyResponse]}})})},c}(G),Bs=function(){function e(e){this.batchRequest=e}return e.prototype.create=function(e,c){return new _s(this.batchRequest,e,c)},e}(),Ds=function(e){function c(c,t){return e.call(this,c,t)||this}return x(c,e),c.prototype.sendRequest=function(e){return P(this,void 0,void 0,function(){var c,t,a,r;return w(this,function(s){for(c="",t=0,a=e.headers.headersArray();t0&&i.length>r&&!i.warned){i.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+i.length+" "+String(c)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=e,l.type=c,l.count=i.length,n=l,console&&console.warn&&console.warn(n)}return e}function ci(e,c,t){var a={fired:!1,wrapFn:void 0,target:e,type:c,listener:t},r=function(){for(var e=[],c=0;c0&&(s=c[0]),s instanceof Error)throw s;var i=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw i.context=s,i}var n=r[e];if(void 0===n)return!1;if("function"==typeof n)Ks(n,this,c);else{var l=n.length,o=ri(n,l);for(t=0;t=0;s--)if(t[s]===c||t[s].listener===c){i=t[s].listener,r=s;break}if(r<0)return this;0===r?t.shift():function(e,c){for(;c+1=0;a--)this.removeListener(e,c[a]);return this},Ys.prototype.listeners=function(e){return ti(this,e,!0)},Ys.prototype.rawListeners=function(e){return ti(this,e,!1)},Ys.listenerCount=function(e,c){return"function"==typeof e.listenerCount?e.listenerCount(c):ai.call(e,c)},Ys.prototype.listenerCount=ai,Ys.prototype.eventNames=function(){return this._eventsCount>0?Rs(this._events):[]};var si,ii=Qs.EventEmitter;!function(e){e[e.Good=0]="Good",e[e.Error=1]="Error"}(si||(si={}));var ni=function(){function e(e){if(void 0===e&&(e=5),this.actives=0,this.completed=0,this.offset=0,this.operations=[],this.state=si.Good,e<1)throw new RangeError("concurrency must be larger than 0");this.concurrency=e,this.emitter=new ii}return e.prototype.addOperation=function(e){var c=this;this.operations.push(function(){return P(c,void 0,void 0,function(){var c;return w(this,function(t){switch(t.label){case 0:return t.trys.push([0,2,,3]),this.actives++,[4,e()];case 1:return t.sent(),this.actives--,this.completed++,this.parallelExecute(),[3,3];case 2:return c=t.sent(),this.emitter.emit("error",c),[3,3];case 3:return[2]}})})})},e.prototype.do=function(){return P(this,void 0,void 0,function(){var e=this;return w(this,function(c){return this.parallelExecute(),[2,new Promise(function(c,t){e.emitter.on("finish",c),e.emitter.on("error",function(c){e.state=si.Error,t(c)})})]})})},e.prototype.nextOperation=function(){return this.offset=this.operations.length)this.emitter.emit("finish");else for(;this.activesUr)throw new RangeError("blockSize option must be >= 0 and <= "+Ur);if(0===r.maxSingleShotSize||r.maxSingleShotSize||(r.maxSingleShotSize=Dr),r.maxSingleShotSize<0||r.maxSingleShotSize>Dr)throw new RangeError("maxSingleShotSize option must be >= 0 and <= "+Dr);if(0===r.blockSize){if(t>Ur*jr)throw new RangeError(t+" is too larger to upload to a block blob.");t>r.maxSingleShotSize&&(r.blockSize=Math.ceil(t/jr),r.blockSizejr)throw new RangeError("The buffer's size is too big or the BlockSize is too small;the number of blocks must be <= "+jr);for(i=[],n=d(),l=0,o=new ni(r.parallelism),m=function(m){o.addOperation(function(){return P(v,void 0,void 0,function(){var o,h,v,z;return w(this,function(d){switch(d.label){case 0:return o=as(n,m),h=r.blockSize*m,v=m===s-1?t:h+r.blockSize,z=v-h,i.push(o),[4,a.stageBlock(e,o,c(h,z),z,{leaseAccessConditions:r.blobAccessConditions.leaseAccessConditions})];case 1:return d.sent(),l+=z,r.progress&&r.progress({loadedBytes:l}),[2]}})})})},h=0;h>>0;t--;)c[t]=e[t];return c}function Ve(e){return e.classList?be(e.classList):(e.getAttribute("class")||"").split(" ").filter(function(e){return e})}function Le(e){return"".concat(e).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function Se(e){return Object.keys(e||{}).reduce(function(c,t){return c+"".concat(t,": ").concat(e[t],";")},"")}function Ne(e){return e.size!==ye.size||e.x!==ye.x||e.y!==ye.y||e.rotate!==ye.rotate||e.flipX||e.flipY}function xe(e){var c=e.transform,t=e.containerWidth,a=e.iconWidth,r={transform:"translate(".concat(t/2," 256)")},s="translate(".concat(32*c.x,", ").concat(32*c.y,") "),i="scale(".concat(c.size/16*(c.flipX?-1:1),", ").concat(c.size/16*(c.flipY?-1:1),") "),n="rotate(".concat(c.rotate," 0 0)");return{outer:r,inner:{transform:"".concat(s," ").concat(i," ").concat(n)},path:{transform:"translate(".concat(a/2*-1," -256)")}}}var Ae={x:0,y:0,width:"100%",height:"100%"};function Pe(e){var c=!(1").concat(i.map(Qe).join(""),"")}var $e=function(){};function Je(e){return"string"==typeof(e.getAttribute?e.getAttribute(b):null)}var ec={replace:function(e){var c=e[0],t=e[1].map(function(e){return Qe(e)}).join("\n");if(c.parentNode&&c.outerHTML)c.outerHTML=t+(Z.keepOriginalSource&&"svg"!==c.tagName.toLowerCase()?"\x3c!-- ".concat(c.outerHTML," --\x3e"):"");else if(c.parentNode){var a=document.createElement("span");c.parentNode.replaceChild(a,c),a.outerHTML=t}},nest:function(e){var c=e[0],t=e[1];if(~Ve(c).indexOf(Z.replacementClass))return ec.replace(e);var a=new RegExp("".concat(Z.familyPrefix,"-.*"));delete t[0].attributes.style,delete t[0].attributes.id;var r=t[0].attributes.class.split(" ").reduce(function(e,c){return c===Z.replacementClass||c.match(a)?e.toSvg.push(c):e.toNode.push(c),e},{toNode:[],toSvg:[]});t[0].attributes.class=r.toSvg.join(" ");var s=t.map(function(e){return Qe(e)}).join("\n");c.setAttribute("class",r.toNode.join(" ")),c.setAttribute(b,""),c.innerHTML=s}};function cc(e){e()}function tc(e,c){var t="function"==typeof c?c:$e;if(0===e.length)t();else{var a=cc;Z.mutateApproach===A&&(a=v.requestAnimationFrame||cc),a(function(){var c=!0===Z.autoReplaceSvg?ec.replace:ec[Z.autoReplaceSvg]||ec.replace,a=Ie.begin("mutate");e.map(c),a(),t()})}}var ac=!1;function rc(){ac=!1}var sc=null;function ic(e){if(d&&Z.observeMutations){var c=e.treeCallback,t=e.nodeCallback,a=e.pseudoElementsCallback,r=e.observeMutationsRoot,s=void 0===r?z:r;sc=new d(function(e){ac||be(e).forEach(function(e){if("childList"===e.type&&0
\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-client/components/customs/subscriber/view.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-client/components/customs/subscriber/view.html index 7880d0e8f..4ffdfeec1 100644 --- a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-client/components/customs/subscriber/view.html +++ b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-client/components/customs/subscriber/view.html @@ -1 +1 @@ -

{{translate($ctrl.msg.text)}}

\ No newline at end of file +

{{translate($ctrl.msg.text)}}

\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-client/components/mix-messages-hub-client/view.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-client/components/mix-messages-hub-client/view.html index 48e896002..779be29b9 100644 --- a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-client/components/mix-messages-hub-client/view.html +++ b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-client/components/mix-messages-hub-client/view.html @@ -1 +1 @@ -
Save Data

  • {{m.name}}
\ No newline at end of file +
Save Data

  • {{m.name}}
\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-client/components/service-hub-client/view.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-client/components/service-hub-client/view.html index 673a84065..2a868af7a 100644 --- a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-client/components/service-hub-client/view.html +++ b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-client/components/service-hub-client/view.html @@ -1 +1 @@ -
Save Data

  • {{m.name}}
\ No newline at end of file +
Save Data

  • {{m.name}}
\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-init/pages/step1/components/mssql-local-info copy/view.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-init/pages/step1/components/mssql-local-info copy/view.html deleted file mode 100644 index fde56f77c..000000000 --- a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-init/pages/step1/components/mssql-local-info copy/view.html +++ /dev/null @@ -1 +0,0 @@ -
Please make sure you already installed Microsoft SQL Server Express on your environment!
\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/additional-field/view.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/additional-field/view.html index 405f349bd..95d49fca4 100644 --- a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/additional-field/view.html +++ b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/additional-field/view.html @@ -1 +1 @@ -
Additional Data Columns
Column:
Type {{col.dataType}}
Width
Height


Column:
Type
\ No newline at end of file +
Additional Data Columns
Column:
Type {{col.dataType}}
Width
Height


Column:
Type
\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/additional-value/view.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/additional-value/view.html index 00525159d..bce515749 100644 --- a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/additional-value/view.html +++ b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/additional-value/view.html @@ -1 +1 @@ -
Database
{{ctrl.additionalData}}
\ No newline at end of file +
Database
{{ctrl.additionalData}}
\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/attribute-list/view.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/attribute-list/view.html deleted file mode 100644 index c7a99cede..000000000 --- a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/attribute-list/view.html +++ /dev/null @@ -1 +0,0 @@ -
Column name:
Type {{col.dataType}}
Config
Width
Height
Regular Expression
Input option value

\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/attribute-set-data-filter/view.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/attribute-set-data-filter/view.html deleted file mode 100644 index 483844f18..000000000 --- a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/attribute-set-data-filter/view.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/attribute-set-form/view.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/attribute-set-form/view.html deleted file mode 100644 index 44e851a90..000000000 --- a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/attribute-set-form/view.html +++ /dev/null @@ -1 +0,0 @@ -
Back to list Search links
\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/attribute-set-nav-data/view.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/attribute-set-nav-data/view.html deleted file mode 100644 index 71f4b0e4c..000000000 --- a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/attribute-set-nav-data/view.html +++ /dev/null @@ -1 +0,0 @@ -
\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/attribute-set-navs/view.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/attribute-set-navs/view.html deleted file mode 100644 index 64b546ba7..000000000 --- a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/attribute-set-navs/view.html +++ /dev/null @@ -1 +0,0 @@ -
\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/attribute-value-editor/view.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/attribute-value-editor/view.html deleted file mode 100644 index bce0bdebe..000000000 --- a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/attribute-value-editor/view.html +++ /dev/null @@ -1 +0,0 @@ -
({{$ctrl.attributeValue.dataType}})

\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/donation/view.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/donation/view.html deleted file mode 100644 index 083c2c07a..000000000 --- a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/donation/view.html +++ /dev/null @@ -1 +0,0 @@ -
Contributers
{{item.login}}
\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/github-contributers copy/view.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/github-contributers copy/view.html deleted file mode 100644 index 083c2c07a..000000000 --- a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/github-contributers copy/view.html +++ /dev/null @@ -1 +0,0 @@ -
Contributers
{{item.login}}
\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/list-mix-column/view.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/list-mix-column/view.html new file mode 100644 index 000000000..8b66186be --- /dev/null +++ b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/list-mix-column/view.html @@ -0,0 +1 @@ +
Column name:
Type {{col.dataType}}
Config
Width
Height
Regular Expression
Input option value

\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/mix-database-column/view.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/mix-database-column/view.html new file mode 100644 index 000000000..00772dc00 --- /dev/null +++ b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/mix-database-column/view.html @@ -0,0 +1 @@ +
Column:
Type {{$ctrl.column.dataType}}
Width
Height


Column:
Type
\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/mix-database-data-filter/view.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/mix-database-data-filter/view.html new file mode 100644 index 000000000..11fc8b134 --- /dev/null +++ b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/mix-database-data-filter/view.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/mix-database-data-value-editor/view.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/mix-database-data-value-editor/view.html new file mode 100644 index 000000000..43b0bb58b --- /dev/null +++ b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/mix-database-data-value-editor/view.html @@ -0,0 +1 @@ +
({{$ctrl.mixDatabaseDataValue.dataType}})

\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/attribute-set-values/attribute-set-values.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/mix-database-data-values/view.html similarity index 100% rename from src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/attribute-set-values/attribute-set-values.html rename to src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/mix-database-data-values/view.html diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/mix-database-form/view.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/mix-database-form/view.html new file mode 100644 index 000000000..c429a0077 --- /dev/null +++ b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/mix-database-form/view.html @@ -0,0 +1 @@ +
Back to list Search links
\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/mix-database-nav-data/view.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/mix-database-nav-data/view.html new file mode 100644 index 000000000..c8919c249 --- /dev/null +++ b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/mix-database-nav-data/view.html @@ -0,0 +1 @@ +
\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/attribute-set-nav-values/view.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/mix-database-nav-values/view.html similarity index 100% rename from src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/attribute-set-nav-values/view.html rename to src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/mix-database-nav-values/view.html diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/mix-database-navs/view.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/mix-database-navs/view.html new file mode 100644 index 000000000..40c7f74c6 --- /dev/null +++ b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/mix-database-navs/view.html @@ -0,0 +1 @@ +
\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/mix-value-editor/view.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/mix-value-editor/view.html index a3ba622cc..22390e1a3 100644 --- a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/mix-value-editor/view.html +++ b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/mix-value-editor/view.html @@ -1 +1 @@ -

\ No newline at end of file +

\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/post-attribute-set-form/view.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/post-attribute-set-form/view.html deleted file mode 100644 index 8fb50085e..000000000 --- a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/post-attribute-set-form/view.html +++ /dev/null @@ -1 +0,0 @@ -
TitleValue
\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/post-attribute-set-values/view.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/post-attribute-set-values/view.html deleted file mode 100644 index f6822dcd1..000000000 --- a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/post-attribute-set-values/view.html +++ /dev/null @@ -1 +0,0 @@ -
\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/service-hub-portal/view.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/service-hub-portal/view.html index 411e909fd..750926a08 100644 --- a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/service-hub-portal/view.html +++ b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/components/service-hub-portal/view.html @@ -1 +1 @@ -
Save Data

  • {{m.name}}
\ No newline at end of file +
Save Data

  • {{m.name}}
\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/attribute-set-data/details.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/attribute-set-data/details.html deleted file mode 100644 index 34341ff6b..000000000 --- a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/attribute-set-data/details.html +++ /dev/null @@ -1 +0,0 @@ -

Create {{attributeSetTitle}}'s data

Fill all of the following fields to create a new data for {{attributeSetTitle}} database.

\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/attribute-set-data/list.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/attribute-set-data/list.html deleted file mode 100644 index 80c7c53e7..000000000 --- a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/attribute-set-data/list.html +++ /dev/null @@ -1 +0,0 @@ -

{{attributeSetTitle}}'s data

This list is show all of the total items existing in {{attributeSetTitle}} database.

Total items:
\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/attribute-set-data/navigation.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/attribute-set-data/navigation.html deleted file mode 100644 index cccd78388..000000000 --- a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/attribute-set-data/navigation.html +++ /dev/null @@ -1 +0,0 @@ -
\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/attribute-set/list.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/attribute-set/list.html deleted file mode 100644 index 518953657..000000000 --- a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/attribute-set/list.html +++ /dev/null @@ -1 +0,0 @@ -

Database list

Use the filter side bar on the right to filter and search your database.

DatabaseNameTypeCreated Date
{{item.title}}{{item.name}}{{item.model.type}}{{item.createdDateTime | utcToLocal}}
Apply
\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/configuration/details.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/configuration/details.html index c26f28477..297e4fda5 100644 --- a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/configuration/details.html +++ b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/configuration/details.html @@ -1 +1 @@ -

Create new configuration

Use the filter side bar on the right to filter and search your settings.

\ No newline at end of file +

Create new configuration

Use the filter side bar on the right to filter and search your settings.

\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/mix-database-data/details.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/mix-database-data/details.html new file mode 100644 index 000000000..4b5a14095 --- /dev/null +++ b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/mix-database-data/details.html @@ -0,0 +1 @@ +

Create {{mixDatabaseTitle}}'s data

Fill all of the following fields to create a new data for {{mixDatabaseTitle}} database.

\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/mix-database-data/list.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/mix-database-data/list.html new file mode 100644 index 000000000..fc4ad7267 --- /dev/null +++ b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/mix-database-data/list.html @@ -0,0 +1 @@ +

{{mixDatabaseTitle}}'s data

This list is show all of the total items existing in {{mixDatabaseTitle}} database.

Total items:
\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/mix-database-data/navigation.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/mix-database-data/navigation.html new file mode 100644 index 000000000..525945db1 --- /dev/null +++ b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/mix-database-data/navigation.html @@ -0,0 +1 @@ +
\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/attribute-set/components/edm/view.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/mix-database/components/edm/view.html similarity index 100% rename from src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/attribute-set/components/edm/view.html rename to src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/mix-database/components/edm/view.html diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/attribute-set/components/main/view.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/mix-database/components/main/view.html similarity index 100% rename from src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/attribute-set/components/main/view.html rename to src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/mix-database/components/main/view.html diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/attribute-set/details.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/mix-database/details.html similarity index 66% rename from src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/attribute-set/details.html rename to src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/mix-database/details.html index 47e7df453..e37f0f6a4 100644 --- a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/attribute-set/details.html +++ b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/mix-database/details.html @@ -1 +1 @@ -

Create/Update Database

Dynamic database to allow you design any web/mobile applications.

\ No newline at end of file +

Create/Update Database

Dynamic database to allow you design any web/mobile applications.

\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/mix-database/list.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/mix-database/list.html new file mode 100644 index 000000000..88b536bd3 --- /dev/null +++ b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/mix-database/list.html @@ -0,0 +1 @@ +

Database list

Use the filter side bar on the right to filter and search your database.

DatabaseNameTypeCreated Date
{{item.title}}{{item.name}}{{item.model.type}}{{item.createdDateTime | utcToLocal}}
Apply
\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/post/components/attribute-set/view.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/post/components/attribute-set/view.html deleted file mode 100644 index 2f48c3726..000000000 --- a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/post/components/attribute-set/view.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/post/details.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/post/details.html index 330b12143..b460e1f7b 100644 --- a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/post/details.html +++ b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/post/details.html @@ -1 +1 @@ -

Create Post

Fill all of the following fields to create a new post.

\ No newline at end of file +

Create Post

Fill all of the following fields to create a new post.

\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/post/gallery-details.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/post/gallery-details.html index 1e61992a0..c68d56598 100644 --- a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/post/gallery-details.html +++ b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/post/gallery-details.html @@ -1 +1,2 @@ -
Info
URL Alias
\ No newline at end of file +
Info
URL Alias
\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/theme/components/theme-export-attribute-sets/view.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/theme/components/theme-export-attribute-sets/view.html index c24984286..562861ca8 100644 --- a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/theme/components/theme-export-attribute-sets/view.html +++ b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/theme/components/theme-export-attribute-sets/view.html @@ -1 +1 @@ -

With Data
\ No newline at end of file +

With Data
\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/theme/components/theme-export-mix-databases/view.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/theme/components/theme-export-mix-databases/view.html new file mode 100644 index 000000000..562861ca8 --- /dev/null +++ b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/theme/components/theme-export-mix-databases/view.html @@ -0,0 +1 @@ +

With Data
\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/theme/export.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/theme/export.html index fd686ef49..041f9e701 100644 --- a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/theme/export.html +++ b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/theme/export.html @@ -1 +1 @@ -

Export theme and data

Use the filter side bar on the right to filter and search your themes.

\ No newline at end of file +

Export theme and data

Use the filter side bar on the right to filter and search your themes.

\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/user/list.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/user/list.html index da2f2cc21..80a5ccdb8 100644 --- a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/user/list.html +++ b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-portal/pages/user/list.html @@ -1 +1 @@ -

User List

Use the filter side bar on the right to filter and search your users.

UsernameRolesAvatarCreated Date
{{item.createdDateTime | utcToLocal:'d.M.yyyy h:mm a'}}
\ No newline at end of file +

User List

Use the filter side bar on the right to filter and search your users.

UsernameRolesAvatarCreated Date
{{item.joinDate | utcToLocal:'d.M.yyyy h:mm a'}}
\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-shared/components/attribute-value-preview/view.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-shared/components/mix-database-data-value-preview/view.html similarity index 100% rename from src/Mix.Cms.Web/wwwroot/mix-app/views/app-shared/components/attribute-value-preview/view.html rename to src/Mix.Cms.Web/wwwroot/mix-app/views/app-shared/components/mix-database-data-value-preview/view.html diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-shared/components/attribute-set-form-web/view.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-shared/components/mix-database-form-web/view.html similarity index 100% rename from src/Mix.Cms.Web/wwwroot/mix-app/views/app-shared/components/attribute-set-form-web/view.html rename to src/Mix.Cms.Web/wwwroot/mix-app/views/app-shared/components/mix-database-form-web/view.html diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-shared/components/mix-field-editor/view.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-shared/components/mix-field-editor/view.html index 0ad28ec1a..0b83be06d 100644 --- a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-shared/components/mix-field-editor/view.html +++ b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-shared/components/mix-field-editor/view.html @@ -1 +1 @@ -
Loading...
({{$ctrl.translate($ctrl.field.dataType)}})
\ No newline at end of file +
Loading...
({{$ctrl.translate($ctrl.field.dataType)}})
\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-shared/components/modal-croppie/croppie.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-shared/components/modal-croppie/croppie.html index 165b18a7b..2d1d45574 100644 --- a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-shared/components/modal-croppie/croppie.html +++ b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-shared/components/modal-croppie/croppie.html @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-shared/components/module-form-editor/view.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-shared/components/module-form-editor/view.html index f84164643..a4a7bedab 100644 --- a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-shared/components/module-form-editor/view.html +++ b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-shared/components/module-form-editor/view.html @@ -1 +1 @@ -
\ No newline at end of file +
{{$ctrl.dataType}}
\ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-shared/components/preview-popup/preview-popup.html b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-shared/components/preview-popup/preview-popup.html index c58ef7145..48eb9daf5 100644 --- a/src/Mix.Cms.Web/wwwroot/mix-app/views/app-shared/components/preview-popup/preview-popup.html +++ b/src/Mix.Cms.Web/wwwroot/mix-app/views/app-shared/components/preview-popup/preview-popup.html @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/Mix.Cms.Web/wwwroot/mix-content/imports/themes/default.zip b/src/Mix.Cms.Web/wwwroot/mix-content/imports/themes/default.zip index 2130a77d5..144977b9e 100644 Binary files a/src/Mix.Cms.Web/wwwroot/mix-content/imports/themes/default.zip and b/src/Mix.Cms.Web/wwwroot/mix-content/imports/themes/default.zip differ diff --git a/src/Mix.Cms.Web/wwwroot/mix-content/imports/themes/default_blank.zip b/src/Mix.Cms.Web/wwwroot/mix-content/imports/themes/default_blank.zip index 63459dc08..8105fdb64 100644 Binary files a/src/Mix.Cms.Web/wwwroot/mix-content/imports/themes/default_blank.zip and b/src/Mix.Cms.Web/wwwroot/mix-content/imports/themes/default_blank.zip differ diff --git a/src/Mix.Heart.NetCore/Controllers/BaseRestApiController.cs b/src/Mix.Heart.NetCore/Controllers/BaseRestApiController.cs index 664789fe7..2106dc3e0 100644 --- a/src/Mix.Heart.NetCore/Controllers/BaseRestApiController.cs +++ b/src/Mix.Heart.NetCore/Controllers/BaseRestApiController.cs @@ -355,7 +355,7 @@ public async Task> Delete(string id) [HttpGet("clear-cache")] protected async Task ClearCacheAsync(Type type) { - await CacheService.RemoveCacheAsync(type: type); + await MixCacheService.RemoveCacheAsync(type: type); } #endregion Routes diff --git a/src/Mix.Heart.NetCore/Mix.Heart.NetCore.csproj b/src/Mix.Heart.NetCore/Mix.Heart.NetCore.csproj index b13b502df..f06288655 100644 --- a/src/Mix.Heart.NetCore/Mix.Heart.NetCore.csproj +++ b/src/Mix.Heart.NetCore/Mix.Heart.NetCore.csproj @@ -7,7 +7,7 @@ - + diff --git a/src/MixCore.sln b/src/MixCore.sln index 173078678..2e83fa708 100644 --- a/src/MixCore.sln +++ b/src/MixCore.sln @@ -5,7 +5,7 @@ VisualStudioVersion = 16.0.29215.179 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CMS", "CMS", "{C45D03E7-0453-4199-A5DE-E61B5FF29AF4}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Mix.Cms.Web", "Mix.Cms.Web\Mix.Cms.Web.csproj", "{0E27FDA9-70B1-41AD-8465-3E56EA78F0DF}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Mixcore", "Mix.Cms.Web\Mixcore.csproj", "{0E27FDA9-70B1-41AD-8465-3E56EA78F0DF}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Mix.Cms.Api", "Mix.Cms.Api\Mix.Cms.Api.csproj", "{BC4D7CE6-F507-482E-A939-B9F8D6533929}" EndProject @@ -66,7 +66,6 @@ Global HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution - {0E27FDA9-70B1-41AD-8465-3E56EA78F0DF} = {C45D03E7-0453-4199-A5DE-E61B5FF29AF4} {BC4D7CE6-F507-482E-A939-B9F8D6533929} = {C45D03E7-0453-4199-A5DE-E61B5FF29AF4} {46A6FAC4-B138-4AB8-AAB2-597EE1774371} = {C45D03E7-0453-4199-A5DE-E61B5FF29AF4} {08480B8D-2BA4-4E6F-8A08-D668E6F4C13D} = {C45D03E7-0453-4199-A5DE-E61B5FF29AF4}