Jarvis.Toolkit 1.2.0.6

dotnet add package Jarvis.Toolkit --version 1.2.0.6
                    
NuGet\Install-Package Jarvis.Toolkit -Version 1.2.0.6
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Jarvis.Toolkit" Version="1.2.0.6" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Jarvis.Toolkit" Version="1.2.0.6" />
                    
Directory.Packages.props
<PackageReference Include="Jarvis.Toolkit" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Jarvis.Toolkit --version 1.2.0.6
                    
#r "nuget: Jarvis.Toolkit, 1.2.0.6"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Jarvis.Toolkit@1.2.0.6
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Jarvis.Toolkit&version=1.2.0.6
                    
Install as a Cake Addin
#tool nuget:?package=Jarvis.Toolkit&version=1.2.0.6
                    
Install as a Cake Tool

Jarvis.Toolkit

Biblioteca de utilidades para .NET com extensões, validações, serviços HTTP, criptografia, autenticação, e-mail, notificações push e muito mais.

Instalação

dotnet add package Jarvis.Toolkit

Extensões

String

// Extrair conteúdo
"123.456.789-00".GetOnlyNumbers(); // "12345678900"
"abc123".GetOnlyLetters(); // "abc"

// Verificações
"texto".IsNullOrEmpty(); // false
"texto".NotNullOrEmptyOrWhiteSpace(); // true

// Capitalização
"hello world".FirstCharToUpper(); // "Hello world"
"hello world".AllFirstCharToUpper(); // "Hello World"

// Máscara
"12345678900".SetMask(MaskType.CPF); // "123.456.789-00"
"12345678".SetMask(MaskType.CEP); // "12345-678"
"1234567890".SetMask("(##) ####-####"); // "(12) 3456-7890"

// Remover acentos e caracteres especiais
"café".RemoveAccentuation(); // "cafe"
"a@b#c".RemoveSpecialCharacters(); // "abc"

// Truncar e nomes
"texto longo".Truncate(5); // "texto..."
"João Carlos Silva".GetFirstAndLastName(); // "João Silva"

// Valor padrão
string nulo = null;
nulo.IfNullOrEmpty("padrão"); // "padrão"

Data e Hora

// Validações
"25/12/2024".IsDate(); // true
"14:30".IsTime(); // true

// Conversões (formato brasileiro dd/MM/yyyy)
DateTime.Now.ToDate(); // "01/02/2026"
DateTime.Now.ToDateTime(); // "01/02/2026 14:30"
DateTime.Now.ToTime(); // "14:30"
"25/12/2024".ToDate(); // DateTime

// ISO
DateTime.Now.ToISODate(); // "2026-02-01"
DateTime.Now.ToISODateTime(); // "2026-02-01 14:30:00"

// Fuso horário Brasil
DateTime.UtcNow.ToDateTimeBr(); // converte UTC para horário de Brasília
DateTimeBr.Now; // DateTime agora em horário de Brasília

// Idade
new DateTime(1990, 5, 15).Age(); // 35
new DateTime(1990, 5, 15).AgeWithMonths(); // "35 anos e 8 meses"

// Dia da semana / Mês (pt-BR)
DateTime.Now.ToDay(); // "Sábado"
DateTime.Now.ToMonth(); // "Fevereiro"

// Verificações e limites
DateTime.Now.IsWeekend(); // true/false
DateTime.Now.FirstDayOfMonth();
DateTime.Now.LastDayOfMonth();
DateTime.Now.EndOfDay();

Objeto

object obj = null;
obj.IsNull(); // true
obj.NotNull(); // false

// Conversões
"123".ToInt(); // 123
"3.14".ToDouble(); // 3.14
"guid-string".ToGuid(); // Guid
"123".ToIntNullable(); // int?

// Condicionais
valor.If(condicao, novoValor);
condicao.IfElse(valorTrue, valorFalse);
item.IsNullOrNotEnabled(); // verifica propriedade "Ativo"

Número

(-5).IfNegative(0); // 0
(0).IfZero(1); // 1
(-5).IfNegativeOrZero(1); // 1

valor.MinValue(0); // não permite menor que 0
valor.MaxValue(100); // não permite maior que 100
valor.RangeValue(0, 100); // limita entre 0 e 100

Formatação (pt-BR)

1234.56.ToMoney(); // "R$ 1.234,56"
0.1575.ToPercent(); // "15,75%"
1234.56.ToNumber(); // "1.234,56"

// Converter de string formatada para número
"R$ 1.234,56".ToNumber<double>(); // 1234.56
"15,75%".ToNumber<double>(); // 15.75

Validação

"12345678900".IsCPF(); // true/false
"00038166000105".IsCNPJ(); // true/false
"12345678".IsCEP(); // true/false
"user@email.com".IsEmail(); // true/false
"11999887766".IsPhoneNumber(); // true/false
"12345678900".IsChavePix(); // true/false (CPF, CNPJ, email, telefone ou EVP)

Serialização JSON

// Serializar
var json = objeto.Serialize();
var json = objeto.Serialize(writeIndented: true);

// Deserializar
var obj = json.Deserialize<Produto>();
var obj = json.TryDeserialize<Produto>(); // retorna default em caso de erro

Mapeamento de Objetos

// Mapear propriedades por nome
var model = source.MapTo<TargetModel>();

// Com controle
var result = source.MapTo(target);
result.Set(x => x.Nome, s => s.FullName);

// Mapear lista
var result = sources.MapListTo(new TargetModel());

// Ignorar propriedades nulas
var result = source.MapToIgnoreNull(target);

// Atributos de controle
[MapIgnoreSource] // ignora ao mapear como target
[MapIgnoreTarget] // ignora ao mapear como source

Coleções e Listas

// Paginação
var pagina = lista.Page(pageNumber: 2, pageSize: 10);
var total = lista.TotalPages(pageSize: 10);

// Verificações
lista.IsNullOrEmpty();
lista.IsEmpty();
lista.EmptyIfNull(); // retorna vazio em vez de null

// Operações
lista.ForEach(x => x.Ativo = true);
lista.Randomize();
lista.Split(3); // divide em 3 grupos
lista.Partition(10); // divide em páginas de 10
lista.WithIndex(); // ForeachResult com Index, IsFirstItem, IsLastItem

// Filtros opcionais (ignora se valor é null)
lista.WhereOptional(x => x.Status, statusFiltro);
lista.InRange(x => x.Valor, min, max);

IQueryable

// Paginação (compatível com EF Core)
query.Page(pageNumber, pageSize);
query.TotalPages(pageSize);

// Filtros opcionais (ignora se valor é null)
query.WhereOptional(x => x.Status, statusFiltro);
query.InRange(x => x.Valor, min, max);
query.Contains(x => x.Nome, textoBusca);

Enum

myEnum.ToInt(); // 1
1.ToEnum<MeuEnum>(); // MeuEnum.Valor
"Valor".ToEnum<MeuEnum>(); // MeuEnum.Valor

// Display attribute
myEnum.GetName(); // [Display(Name = "...")]
myEnum.GetDescription(); // [Display(Description = "...")]

// Listar
Enum<MeuEnum>.AsEnumerable();
Enum<MeuEnum>.FilterExcluded(); // ignora itens com [Exclude]
Enum<MeuEnum>.ToGenericList();

Criptografia e Hash

// AES
var encrypted = "texto".AESEncrypt("chave16chars!!!");
var decrypted = encrypted.AESDecrypt("chave16chars!!!");

// SHA1 / MD5
var sha1 = "texto".SHA1Hash();
var md5 = "texto".MD5Hash();

// Base64
var base64 = "texto".ToBase64();
var original = base64.FromBase64();

// URL Slug
"Meu Título Aqui".ToUrlSlug(); // "meu-titulo-aqui"

// Ofuscar ID
Guid.NewGuid().ObfuscateId(); // string ofuscada
"ofuscado".DeobfuscateId(); // Guid original

HTML

"texto".Bold(); // <b>texto</b>
"texto".Italic(); // <i>texto</i>
"texto".Paragraph(); // <p>texto</p>
"texto".Link("https://..."); // <a href='https://...'>texto</a>

Claims

// Ler claims do ClaimsPrincipal
var id = User.Id();
var name = User.Name();
var roles = User.Roles();
var email = User.Email();
var isAuth = User.IsAuthenticated();

URI e Query String

var query = QueryItem.Object("nome", "João")
    .AddObject("idade", 30)
    .AddDate("data", DateTime.Now);

var url = query.ToUri("https://api.exemplo.com/buscar");
// https://api.exemplo.com/buscar?nome=Jo%c3%a3o&idade=30&data=2026-02-01

Atributos de Validação

[CPF(ErrorMessage = "CPF inválido")]
public string CPF { get; set; }

[CNPJ(ErrorMessage = "CNPJ inválido")]
public string CNPJ { get; set; }

[CPF_CNPJ(ErrorMessage = "Documento inválido")]
public string Documento { get; set; }

[CEP(ErrorMessage = "CEP inválido")]
public string CEP { get; set; }

[PhoneNumber(ErrorMessage = "Telefone inválido")]
public string Telefone { get; set; }

[ChavePix(ErrorMessage = "Chave PIX inválida")]
public string ChavePix { get; set; }

[MinValue(1, ErrorMessage = "Mínimo 1")]
public int Quantidade { get; set; }

[MaxValue(100, ErrorMessage = "Máximo 100")]
public int Porcentagem { get; set; }

[NotEmptyGuid(ErrorMessage = "Selecione um item")]
public Guid ItemId { get; set; }

[NotEmptyList(ErrorMessage = "Lista não pode ser vazia")]
public List<int> Itens { get; set; }

[RequiredList(ErrorMessage = "Lista obrigatória")]
public List<int> ItensObrigatorios { get; set; }

// Atributos de mapeamento
[MapIgnoreSource] // ignora propriedade na origem
[MapIgnoreTarget] // ignora propriedade no destino

// Atributo de enum
[Exclude] // exclui campo de listagens (FilterExcluded)

Modelos e Respostas

ModelResponse

// Resposta simples
return ModelResponse.Success("Operação realizada");
return ModelResponse.Error("Falha na operação");

// Resposta tipada
return ModelResponse<Produto>.Success(produto);
return ModelResponse<Produto>.Error("Não encontrado");

JsonResponse

return JsonResponse.Success(item, "Salvo com sucesso");
return JsonResponse.Error("Algo deu errado");
return JsonResponse.NotAuthenticated();
return JsonResponse.NotAuthorized();
return JsonResponse.Blocked();

// Deserializar item
var produto = response.Deserialize<Produto>();

HttpResponse

return HttpResponse<Produto>.Success(produto);
return HttpResponse<Produto>.Error("Falha");
return HttpResponse<Produto, ErroDTO>.Error(erroDto);

PaginationResponse

var paginacao = new PaginationResponse<Produto>
{
    PageNumber = 1,
    PageSize = 10,
    TotalItems = 100,
    Items = produtos
};

paginacao.TotalPages; // 10
paginacao.HasNextPage; // true

TokenResponse

var token = new TokenResponse
{
    Token = "jwt...",
    RefreshToken = "refresh...",
    ExpiresToken = DateTime.UtcNow.AddHours(1)
};

token.IsValid; // true se não expirou

Ranges

// DateRange
var range = new DateRange("01/01/2024", "31/12/2024");
range.TotalDays; // 366
range.Dates; // lista de todos os dias
DateRange.Today;
DateRange.ThisMonth;
DateRange.ThisYear;

// TimeRange
var horario = new TimeRange("08:00", "17:00");
horario.TotalHours; // 9

// DateTimeRange
var periodo = new DateTimeRange("01/01/2024 08:00", "31/12/2024 17:00");

CPF e CNPJ (Classes)

CPF cpf = "12345678900";
cpf.Masked; // "123.456.789-00"
cpf.Unmasked; // "12345678900"
cpf.DV; // "00"
cpf.IsValid; // true/false
var novoCpf = CPF.Generate();

CNPJ cnpj = "00038166000105";
cnpj.Masked; // "00.038.166/0001-05"
cnpj.IsValid; // true/false
var novoCnpj = CNPJ.Generate();

GenericItem e GenericList

var item = new GenericItem<int>(1, "Opção 1");
var lista = new GenericList<int> { item };

var item2 = new GenericItem<int, Produto>(1, "Opção", produto);

CardModel

var card = new CardModel<int>
{
    Id = 1,
    Title = "Título",
    Subtitle = "Subtítulo",
    Description = "Descrição",
    Image = "url"
};

Serviços

HTTP Client

var http = new JarvisHttpClient("https://api.exemplo.com");

// GET
var produto = await http.GetAsync<Produto>("/produtos/1");
var response = await http.GetJsonAsync<Produto>("/produtos/1");

// POST / PUT / DELETE
var response = await http.PostJsonAsync<Produto>("/produtos", novoProduto);
var response = await http.PutJsonAsync<Produto>("/produtos/1", produto);
var response = await http.DeleteJsonAsync<Produto>("/produtos/1");

// Download / Upload
var bytes = await http.DownloadAsync("/arquivo.pdf");
var result = await http.UploadAsync<FileResult>("/upload", fileBytes, "foto.jpg");

// Configurar headers
http.Client.BaseAddress("https://api.exemplo.com")
    .BearerAuthorization(jwtToken)
    .AddHeader("X-Custom", "valor");

Consulta CEP

var endereco = await ViaCEP.FindAsync("01001000");
var endereco = await OpenCEP.FindAsync("01001000");
var endereco = await AwesomeCEP.FindAsync("01001000");

// Busca por endereço (ViaCEP)
var resultados = await ViaCEP.FindAsync("SP", "São Paulo", "Paulista");

E-mail (SMTP)

var mail = new JarvisMailClient("smtp.gmail.com", 587, "user@gmail.com", "senha");

// Enviar e-mail
var result = await mail.SendAsync(
    to: "destino@email.com",
    subject: "Assunto",
    body: "<p>Corpo HTML</p>"
);

// Template com placeholders
var template = new JarvisMailTemplate("<p>Olá {nome}!</p>");
template.Replace("{nome}", "João");

OneSignal (Push Notifications)

var onesignal = new JarvisOneSignalClient("app-id", "api-key");

// Enviar notificação
var body = new JarvisOneSignalBody
{
    Title = "Título",
    Message = "Mensagem",
    Segments = new[] { JarvisOneSignalSegments.All }
};

var response = await onesignal.SendAsync(body);

Arquivo (File)

// Upload/download com progresso
var client = new JarvisFileClient();
client.ProgressChanged += (s, e) => Console.WriteLine($"{e.Percent}%");
client.Completed += (s, e) => Console.WriteLine("Concluído");

// Operações de arquivo
var result = JarvisFile.FromBase64(base64String, "foto.jpg");
var base64 = JarvisFile.ToBase64("caminho/arquivo.pdf");

Local Storage

var config = new JarvisLocalStorageConfiguration
{
    FilePath = "C:/dados",
    EnableEncryption = true,
    EncryptionKey = "minha-chave-16!!"
};

using var storage = new JarvisLocalStorageClient(config);
storage.Store("chave", meuObjeto);
var obj = storage.Get<MeuTipo>("chave");
storage.Exists("chave"); // true
storage.Keys(); // lista de chaves

Autenticação

JarvisAuthenticationUser

var user = new JarvisAuthenticationUser("Cookies")
{
    Id = "1",
    Name = "João",
    Email = "joao@email.com",
    Roles = new List<string> { "Admin" }
};

user.SetItem(meuObjeto); // serializa objeto como claim Item
user.AddOther("custom_claim", "valor");

JarvisClaimTypes

JarvisClaimTypes.Id       // claim de ID
JarvisClaimTypes.Name     // claim de nome
JarvisClaimTypes.Email    // claim de e-mail
JarvisClaimTypes.Role     // claim de role
JarvisClaimTypes.ClientId // claim de client ID
JarvisClaimTypes.JwtName  // "unique_name" (JWT)
JarvisClaimTypes.JwtRole  // "role" (JWT)

JWT Options

var options = new JarvisJwtOptions
{
    Issuer = "minha-app",
    Audience = "minha-api",
    SecretKey = "chave-secreta-32-chars!!!!!!!!!",
    Expiration = TimeSpan.FromHours(1)
};

Utilitários

Gerador

var senha = JarvisGenerator.Password(8, PasswordType.Mixed);
var senhaDiaria = JarvisGenerator.DailyPassword(); // 6 dígitos baseado na data
var cpf = JarvisGenerator.CPF();
var cnpj = JarvisGenerator.CNPJ();
var texto = JarvisGenerator.LoremIpsum(100);

Password (PBKDF2/SHA256)

var hash = JarvisPassword.Hash("minha-senha");
var valido = JarvisPassword.Verify("minha-senha", hash); // true

Haversine (Distância Geográfica)

var km = JarvisHaversine.ToKilometers(lat1, lng1, lat2, lng2);
var metros = JarvisHaversine.ToMeters(coord1, coord2);
var milhas = JarvisHaversine.ToMiles(coord1, coord2);

Timer

var elapsed = JarvisTimer.Elapsed(() => MinhaOperacao());
var ms = JarvisTimer.ElapsedMilliseconds(() => MinhaOperacao());
var ms = await JarvisTimer.ElapsedMilliseconds(async () => await MinhaOperacaoAsync());

Log

JarvisLog.Debug("mensagem");
JarvisLog.Info("mensagem");
JarvisLog.Warn("mensagem");
JarvisLog.Error("mensagem");
JarvisLog.Exception(ex);

Matemática

JarvisMath.Percent(10, 100); // 10.0 (10%)
JarvisMath.CalculatePercentage(200, 15); // 30.0 (15% de 200)
JarvisMath.AddPercentage(100, 10); // 110.0
JarvisMath.SubtractPercentage(100, 10); // 90.0

Cor

JarvisColor.Combine("#FF0000", "#0000FF"); // combina cores pela média RGB
JarvisColor.HexToRgb("#FF5500"); // "255, 85, 0"
JarvisColor.HexToRgba("#FF5500", 0.5); // "255, 85, 0, 0.5"

Conversões de Unidade

JarvisConverter.MmToPixels(10, 96); // milímetros para pixels
JarvisConverter.PixelsToMm(100, 96); // pixels para milímetros

Diretórios e Arquivos (Helper)

JarvisDirectoryHelper.CreateIfNotExists("C:/minha-pasta");
JarvisDirectoryHelper.GetOrCreate("dados", "C:/base");
JarvisDirectoryHelper.GetOrCreateHidden("dados-ocultos");

JarvisFileHelper.SetHiddenAttribute("C:/arquivo.txt", true);

Estados e Meses (Brasil)

EstadosBrasil.Lista(); // dicionário "SP" => "São Paulo"
EstadosBrasil.Siglas(); // ["AC", "AL", ..., "TO"]
EstadosBrasil.Nomes(); // ["Acre", "Alagoas", ..., "Tocantins"]

MesesAno.Lista(); // ["Janeiro", ..., "Dezembro"]

Structs

// Meses do ano
var meses = new Months(2024);
meses.January; // 01/01/2024
meses.December; // 01/12/2024

// DateTime Brasil
DateTimeBr.Now; // agora em horário de Brasília
DateTimeBr.Today; // hoje em horário de Brasília

// Enum tipado
var valores = Enum<MeuEnum>.AsEnumerable();

Converters JSON

// Converters para System.Text.Json
var options = new JsonSerializerOptions();
options.Converters.Add(new JsonStringDateConverter());     // "yyyy-MM-dd"
options.Converters.Add(new JsonStringDateTimeConverter()); // "yyyy-MM-dd HH:mm:ss"
options.Converters.Add(new JsonStringDoubleConverter());   // aceita string ou número
Product Compatible and additional computed target framework versions.
.NET net5.0 is compatible.  net5.0-windows was computed.  net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.1 is compatible. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (9)

Showing the top 5 NuGet packages that depend on Jarvis.Toolkit:

Package Downloads
Jarvis.Blazor

Biblioteca de componentes para Blazor.

Jarvis.Components.Web.Mvc.Core

Biblioteca de componentes para WEB MVC Core.

Jarvis.Maui

Biblioteca de componentes para Maui.

Jarvis.WebApi

Biblioteca de componentes para API Web.

Jarvis.Blazor.Mud

Biblioteca de componentes para MudBlazor.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.2.0.6 0 2/3/2026
1.2.0.5 77 2/1/2026
1.2.0.4 96 1/28/2026
1.2.0.3 98 1/21/2026
1.2.0.2 132 1/8/2026
1.2.0.1 320 11/28/2025
1.2.0 268 11/24/2025
1.1.9.9 204 11/24/2025
1.1.9.8 206 11/15/2025
1.1.9.7 333 11/13/2025
1.1.9.6 218 10/18/2025
1.1.9.5 326 9/4/2025
1.1.9.4 276 8/28/2025
1.1.9.3 273 8/14/2025
1.1.9.2 354 8/6/2025
1.1.9.1 307 6/6/2025
1.1.9 454 4/18/2025
1.1.8.9 281 4/3/2025
1.1.8.8 282 4/3/2025
1.1.8.7 262 4/1/2025
1.1.8.6 264 3/30/2025
1.1.8.5 221 3/28/2025
1.1.8.4 294 3/18/2025
1.1.8.3 322 3/6/2025
1.1.8.2 223 2/20/2025
1.1.8.1 237 2/13/2025
1.1.8 194 1/21/2025
1.1.7.9 671 12/24/2024
1.1.7.8 212 12/24/2024
1.1.7.7 207 12/24/2024
1.1.7.6 198 12/20/2024
1.1.7.5 219 12/10/2024
1.1.7.4 246 12/6/2024
1.1.7.3 252 12/3/2024
1.1.7.2 206 12/3/2024
1.1.7.1 216 12/2/2024
1.1.7 215 12/1/2024
1.1.6.9 203 12/1/2024
1.1.6.8 209 12/1/2024
1.1.6.7 226 11/18/2024
1.1.6.6 205 11/16/2024
1.1.6.5 244 11/15/2024
1.1.6.4 215 11/15/2024
1.1.6.3 208 11/15/2024
1.1.6.2 210 11/15/2024
1.1.6.1 219 11/15/2024
1.1.6 279 11/12/2024
1.1.5.9 222 11/8/2024
1.1.5.8 309 10/1/2024
1.1.5.7 201 9/25/2024
1.1.5.6 294 9/18/2024
1.1.5.5 229 9/17/2024
1.1.5.4 284 9/13/2024
1.1.5.3 327 9/2/2024
1.1.5.2 273 9/1/2024
1.1.5.1 352 8/13/2024
1.1.5 228 8/7/2024
1.1.4.9 201 8/7/2024
1.1.4.8 215 8/2/2024
1.1.4.7 192 8/1/2024
1.1.4.6 247 7/12/2024
1.1.4.5 229 7/12/2024
1.1.4.4 230 7/11/2024
1.1.4.3 221 7/10/2024
1.1.4.2 225 7/7/2024
1.1.4.1 422 6/11/2024
1.1.4 289 6/5/2024
1.1.3.9 275 5/30/2024
1.1.3.8 232 5/30/2024
1.1.3.7 218 5/30/2024
1.1.3.6 216 5/30/2024
1.1.3.5 289 5/11/2024
1.1.3.4 248 5/1/2024
1.1.3.3 281 4/29/2024
1.1.3.2 254 4/27/2024
1.1.3.1 257 4/25/2024
1.1.3 251 4/9/2024
1.1.2.9 230 4/2/2024
1.1.2.8 250 4/2/2024
1.1.2.7 242 3/30/2024
1.1.2.6 278 3/25/2024
1.1.2.5 560 3/20/2024
1.1.2.4 343 3/12/2024
1.1.2.3 370 2/24/2024
1.1.2.2 229 2/22/2024
1.1.2.1 246 2/20/2024
1.1.2 403 2/18/2024
1.1.1.9 597 2/16/2024
1.1.1.8 232 2/15/2024
1.1.1.7 265 2/15/2024
1.1.1.6 375 1/28/2024
1.1.1.5 246 1/28/2024
1.1.1.4 266 1/28/2024
1.1.1.3 229 1/27/2024
1.1.1.2 216 1/26/2024
1.1.1.1 254 1/25/2024
1.1.1 1,743 1/24/2024
1.1.0.9 302 1/21/2024
1.1.0.8 2,525 1/9/2024
1.1.0.7 291 1/6/2024
1.1.0.6 271 1/6/2024
1.1.0.5 278 1/6/2024
1.1.0.4 291 1/4/2024
1.1.0.3 283 1/4/2024
1.1.0.2 277 12/31/2023
1.1.0.1 268 12/30/2023
1.1.0 266 12/30/2023
1.0.9.9 277 12/30/2023
1.0.9.8 288 12/29/2023
1.0.9.7 306 12/26/2023
1.0.9.6 652 11/20/2023
1.0.9.5 1,507 11/17/2023
1.0.9.4 1,837 11/16/2023
1.0.9.3 1,652 10/6/2023
1.0.9.2 235 9/26/2023
1.0.9.1 320 9/2/2023
1.0.9 331 8/26/2023
1.0.8.9 302 8/25/2023
1.0.8.8 778 7/31/2023
1.0.8.7 308 7/31/2023
1.0.8.6 304 7/30/2023
1.0.8.5 1,836 5/2/2023
1.0.8.4 1,233 4/24/2023
1.0.8.3 422 4/18/2023
1.0.8.2 370 4/18/2023
1.0.8.1 505 4/4/2023
1.0.8 424 3/29/2023
1.0.7.9 509 3/22/2023
1.0.7.8 1,125 3/3/2023
1.0.7.7 643 2/24/2023
1.0.7.6 565 2/23/2023
1.0.7.5 436 2/23/2023
1.0.7.4 1,121 1/26/2023
1.0.7.3 583 1/24/2023
1.0.7.2 504 1/18/2023
1.0.7.1 697 1/18/2023
1.0.7 1,001 12/14/2022
1.0.6.9 499 12/2/2022
1.0.6.8 932 11/30/2022
1.0.6.7 845 11/9/2022
1.0.6.6 752 10/27/2022
1.0.6.5 2,616 8/26/2022
1.0.6.4 1,081 8/25/2022
1.0.6.3 2,010 8/8/2022
1.0.6.2 1,044 7/28/2022
1.0.6.1 676 7/28/2022
1.0.6 649 7/28/2022
1.0.5.9 845 7/6/2022
1.0.5.8 1,722 6/21/2022
1.0.5.7 1,128 6/15/2022
1.0.5.6 676 6/15/2022
1.0.5.5 1,643 6/8/2022
1.0.5.4 684 6/8/2022
1.0.5.3 705 6/2/2022
1.0.5.2 1,427 5/28/2022
1.0.5.1 1,793 5/23/2022
1.0.5 821 5/21/2022
1.0.4.9 700 5/17/2022
1.0.4.8 870 5/5/2022
1.0.4.7 702 5/1/2022
1.0.4.6 710 4/27/2022
1.0.4.5 1,189 4/8/2022
1.0.4.4 749 3/14/2022
1.0.4.3 690 3/14/2022
1.0.4.2 707 3/14/2022
1.0.4.1 729 3/14/2022
1.0.4 679 3/13/2022
1.0.3.9 716 3/1/2022
1.0.3.8 904 2/24/2022
1.0.3.7 727 2/24/2022
1.0.3.6 764 2/15/2022
1.0.3.5 890 2/14/2022
1.0.3.4 729 2/10/2022
1.0.3.3 734 2/9/2022
1.0.3.2 1,351 1/21/2022
1.0.3.1 720 1/21/2022
1.0.3 633 12/17/2021
1.0.2.9 559 12/16/2021
1.0.2.8 563 12/16/2021
1.0.2.7 586 12/10/2021
1.0.2.6 604 12/9/2021
1.0.2.5 587 12/8/2021
1.0.2.4 564 11/28/2021
1.0.2.3 765 10/23/2021
1.0.2.2 761 10/3/2021
1.0.2.1 670 9/20/2021
1.0.2 548 9/2/2021
1.0.1.9 610 8/23/2021
1.0.1.8 699 7/17/2021
1.0.1.7 642 7/17/2021
1.0.1.6 628 7/6/2021
1.0.1.5 622 7/4/2021
1.0.1.4 693 6/9/2021
1.0.1.3 628 6/3/2021
1.0.1.2 629 6/3/2021
1.0.1.1 649 6/2/2021
1.0.1 649 6/1/2021
1.0.0.9 816 5/18/2021
1.0.0.8 647 5/18/2021
1.0.0.7 574 5/11/2021
1.0.0.6 702 5/2/2021
1.0.0.5 671 5/2/2021
1.0.0.4 634 4/29/2021
1.0.0.3 653 4/21/2021
1.0.0.2 904 4/20/2021
1.0.0.1 675 4/20/2021
1.0.0 639 4/17/2021