Просмотр исходного кода

Add nullable annotations to Identity.Extensions (#40007)

* Add nullable annotations to Identity.Extensions

Contributes to https://github.com/dotnet/aspnetcore/issues/5680
Pranav K 4 лет назад
Родитель
Сommit
05b2afb73b
50 измененных файлов с 1774 добавлено и 236 удалено
  1. 3 3
      src/Identity/EntityFrameworkCore/src/IdentityDbContext.cs
  2. 3 4
      src/Identity/EntityFrameworkCore/src/IdentityEntityFrameworkBuilderExtensions.cs
  3. 6 6
      src/Identity/EntityFrameworkCore/src/IdentityUserContext.cs
  4. 0 1
      src/Identity/EntityFrameworkCore/src/Microsoft.AspNetCore.Identity.EntityFrameworkCore.csproj
  5. 251 1
      src/Identity/EntityFrameworkCore/src/PublicAPI.Unshipped.txt
  6. 15 15
      src/Identity/EntityFrameworkCore/src/RoleStore.cs
  7. 13 13
      src/Identity/EntityFrameworkCore/src/UserOnlyStore.cs
  8. 16 16
      src/Identity/EntityFrameworkCore/src/UserStore.cs
  9. 4 2
      src/Identity/Extensions.Core/src/DefaultPersonalDataProtector.cs
  10. 6 3
      src/Identity/Extensions.Core/src/ILookupNormalizer.cs
  11. 6 2
      src/Identity/Extensions.Core/src/ILookupProtector.cs
  12. 1 1
      src/Identity/Extensions.Core/src/IPasswordValidator.cs
  13. 6 2
      src/Identity/Extensions.Core/src/IPersonalDataProtector.cs
  14. 6 6
      src/Identity/Extensions.Core/src/IRoleStore.cs
  15. 2 2
      src/Identity/Extensions.Core/src/IUserAuthenticationTokenStore.cs
  16. 1 1
      src/Identity/Extensions.Core/src/IUserAuthenticatorKeyStore.cs
  17. 5 5
      src/Identity/Extensions.Core/src/IUserEmailStore.cs
  18. 1 1
      src/Identity/Extensions.Core/src/IUserLoginStore.cs
  19. 2 2
      src/Identity/Extensions.Core/src/IUserPasswordStore.cs
  20. 2 2
      src/Identity/Extensions.Core/src/IUserPhoneNumberStore.cs
  21. 1 1
      src/Identity/Extensions.Core/src/IUserSecurityStampStore.cs
  22. 6 6
      src/Identity/Extensions.Core/src/IUserStore.cs
  23. 3 3
      src/Identity/Extensions.Core/src/IdentityBuilder.cs
  24. 2 2
      src/Identity/Extensions.Core/src/IdentityError.cs
  25. 3 3
      src/Identity/Extensions.Core/src/IdentityErrorDescriber.cs
  26. 0 1
      src/Identity/Extensions.Core/src/Microsoft.Extensions.Identity.Core.csproj
  27. 1 1
      src/Identity/Extensions.Core/src/PasswordHasher.cs
  28. 2 2
      src/Identity/Extensions.Core/src/PasswordValidator.cs
  29. 2 3
      src/Identity/Extensions.Core/src/PrincipalExtensions.cs
  30. 917 0
      src/Identity/Extensions.Core/src/PublicAPI.Unshipped.txt
  31. 6 4
      src/Identity/Extensions.Core/src/Rfc6238AuthenticationService.cs
  32. 7 5
      src/Identity/Extensions.Core/src/RoleManager.cs
  33. 1 1
      src/Identity/Extensions.Core/src/RoleValidator.cs
  34. 1 1
      src/Identity/Extensions.Core/src/TokenProviderDescriptor.cs
  35. 6 2
      src/Identity/Extensions.Core/src/UpperInvariantLookupNormalizer.cs
  36. 1 1
      src/Identity/Extensions.Core/src/UserClaimsPrincipalFactory.cs
  37. 2 2
      src/Identity/Extensions.Core/src/UserLoginInfo.cs
  38. 39 31
      src/Identity/Extensions.Core/src/UserManager.cs
  39. 1 1
      src/Identity/Extensions.Core/src/UserValidator.cs
  40. 5 5
      src/Identity/Extensions.Stores/src/IdentityRole.cs
  41. 6 6
      src/Identity/Extensions.Stores/src/IdentityRoleClaim.cs
  42. 10 10
      src/Identity/Extensions.Stores/src/IdentityUser.cs
  43. 5 5
      src/Identity/Extensions.Stores/src/IdentityUserClaim.cs
  44. 4 4
      src/Identity/Extensions.Stores/src/IdentityUserLogin.cs
  45. 2 2
      src/Identity/Extensions.Stores/src/IdentityUserRole.cs
  46. 4 4
      src/Identity/Extensions.Stores/src/IdentityUserToken.cs
  47. 0 1
      src/Identity/Extensions.Stores/src/Microsoft.Extensions.Identity.Stores.csproj
  48. 345 0
      src/Identity/Extensions.Stores/src/PublicAPI.Unshipped.txt
  49. 11 10
      src/Identity/Extensions.Stores/src/RoleStoreBase.cs
  50. 32 31
      src/Identity/Extensions.Stores/src/UserStoreBase.cs

+ 3 - 3
src/Identity/EntityFrameworkCore/src/IdentityDbContext.cs

@@ -98,17 +98,17 @@ public abstract class IdentityDbContext<TUser, TRole, TKey, TUserClaim, TUserRol
     /// <summary>
     /// Gets or sets the <see cref="DbSet{TEntity}"/> of User roles.
     /// </summary>
-    public virtual DbSet<TUserRole> UserRoles { get; set; }
+    public virtual DbSet<TUserRole> UserRoles { get; set; } = default!;
 
     /// <summary>
     /// Gets or sets the <see cref="DbSet{TEntity}"/> of roles.
     /// </summary>
-    public virtual DbSet<TRole> Roles { get; set; }
+    public virtual DbSet<TRole> Roles { get; set; } = default!;
 
     /// <summary>
     /// Gets or sets the <see cref="DbSet{TEntity}"/> of role claims.
     /// </summary>
-    public virtual DbSet<TRoleClaim> RoleClaims { get; set; }
+    public virtual DbSet<TRoleClaim> RoleClaims { get; set; } = default!;
 
     /// <summary>
     /// Configures the schema needed for the identity framework.

+ 3 - 4
src/Identity/EntityFrameworkCore/src/IdentityEntityFrameworkBuilderExtensions.cs

@@ -26,7 +26,7 @@ public static class IdentityEntityFrameworkBuilderExtensions
         return builder;
     }
 
-    private static void AddStores(IServiceCollection services, Type userType, Type roleType, Type contextType)
+    private static void AddStores(IServiceCollection services, Type userType, Type? roleType, Type contextType)
     {
         var identityUserType = FindGenericBaseType(userType, typeof(IdentityUser<>));
         if (identityUserType == null)
@@ -89,12 +89,11 @@ public static class IdentityEntityFrameworkBuilderExtensions
             }
             services.TryAddScoped(typeof(IUserStore<>).MakeGenericType(userType), userStoreType);
         }
-
     }
 
-    private static Type FindGenericBaseType(Type currentType, Type genericBaseType)
+    private static Type? FindGenericBaseType(Type currentType, Type genericBaseType)
     {
-        var type = currentType;
+        Type? type = currentType;
         while (type != null)
         {
             var genericType = type.IsGenericType ? type.GetGenericTypeDefinition() : null;

+ 6 - 6
src/Identity/EntityFrameworkCore/src/IdentityUserContext.cs

@@ -78,24 +78,24 @@ public abstract class IdentityUserContext<TUser, TKey, TUserClaim, TUserLogin, T
     /// <summary>
     /// Gets or sets the <see cref="DbSet{TEntity}"/> of Users.
     /// </summary>
-    public virtual DbSet<TUser> Users { get; set; }
+    public virtual DbSet<TUser> Users { get; set; } = default!;
 
     /// <summary>
     /// Gets or sets the <see cref="DbSet{TEntity}"/> of User claims.
     /// </summary>
-    public virtual DbSet<TUserClaim> UserClaims { get; set; }
+    public virtual DbSet<TUserClaim> UserClaims { get; set; } = default!;
 
     /// <summary>
     /// Gets or sets the <see cref="DbSet{TEntity}"/> of User logins.
     /// </summary>
-    public virtual DbSet<TUserLogin> UserLogins { get; set; }
+    public virtual DbSet<TUserLogin> UserLogins { get; set; } = default!;
 
     /// <summary>
     /// Gets or sets the <see cref="DbSet{TEntity}"/> of User tokens.
     /// </summary>
-    public virtual DbSet<TUserToken> UserTokens { get; set; }
+    public virtual DbSet<TUserToken> UserTokens { get; set; } = default!;
 
-    private StoreOptions GetStoreOptions() => this.GetService<IDbContextOptions>()
+    private StoreOptions? GetStoreOptions() => this.GetService<IDbContextOptions>()
                         .Extensions.OfType<CoreOptionsExtension>()
                         .FirstOrDefault()?.ApplicationServiceProvider
                         ?.GetService<IOptions<IdentityOptions>>()
@@ -118,7 +118,7 @@ public abstract class IdentityUserContext<TUser, TKey, TUserClaim, TUserLogin, T
         var storeOptions = GetStoreOptions();
         var maxKeyLength = storeOptions?.MaxLengthForKeys ?? 0;
         var encryptPersonalData = storeOptions?.ProtectPersonalData ?? false;
-        PersonalDataConverter converter = null;
+        PersonalDataConverter? converter = null;
 
         builder.Entity<TUser>(b =>
         {

+ 0 - 1
src/Identity/EntityFrameworkCore/src/Microsoft.AspNetCore.Identity.EntityFrameworkCore.csproj

@@ -5,7 +5,6 @@
     <TargetFramework>$(DefaultNetCoreTargetFramework)</TargetFramework>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;entityframeworkcore;identity;membership</PackageTags>
-    <Nullable>disable</Nullable>
   </PropertyGroup>
 
   <ItemGroup>

+ 251 - 1
src/Identity/EntityFrameworkCore/src/PublicAPI.Unshipped.txt

@@ -1,2 +1,252 @@
 #nullable enable
-~virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.SaveChanges(System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task
+virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.SaveChanges(System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext.IdentityDbContext(Microsoft.EntityFrameworkCore.DbContextOptions options) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext<TUser, TRole, TKey, TUserClaim, TUserRole, TUserLogin, TRoleClaim, TUserToken>
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext<TUser, TRole, TKey, TUserClaim, TUserRole, TUserLogin, TRoleClaim, TUserToken>.IdentityDbContext(Microsoft.EntityFrameworkCore.DbContextOptions options) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext<TUser, TRole, TKey>
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext<TUser, TRole, TKey>.IdentityDbContext(Microsoft.EntityFrameworkCore.DbContextOptions options) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext<TUser>.IdentityDbContext(Microsoft.EntityFrameworkCore.DbContextOptions options) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserContext<TUser, TKey, TUserClaim, TUserLogin, TUserToken>
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserContext<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.IdentityUserContext(Microsoft.EntityFrameworkCore.DbContextOptions options) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserContext<TUser, TKey>
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserContext<TUser, TKey>.IdentityUserContext(Microsoft.EntityFrameworkCore.DbContextOptions options) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserContext<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserContext<TUser>.IdentityUserContext(Microsoft.EntityFrameworkCore.DbContextOptions options) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.ErrorDescriber.get -> Microsoft.AspNetCore.Identity.IdentityErrorDescriber
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.ErrorDescriber.set -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.RoleStore(TContext context, Microsoft.AspNetCore.Identity.IdentityErrorDescriber describer = null) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey>
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey>.RoleStore(TContext context, Microsoft.AspNetCore.Identity.IdentityErrorDescriber describer = null) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext>
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext>.RoleStore(TContext context, Microsoft.AspNetCore.Identity.IdentityErrorDescriber describer = null) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole>
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole>.RoleStore(Microsoft.EntityFrameworkCore.DbContext context, Microsoft.AspNetCore.Identity.IdentityErrorDescriber describer = null) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.SaveChanges(System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.UserClaims.get -> Microsoft.EntityFrameworkCore.DbSet<TUserClaim>
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.UserLogins.get -> Microsoft.EntityFrameworkCore.DbSet<TUserLogin>
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.UserOnlyStore(TContext context, Microsoft.AspNetCore.Identity.IdentityErrorDescriber describer = null) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.UsersSet.get -> Microsoft.EntityFrameworkCore.DbSet<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.UserTokens.get -> Microsoft.EntityFrameworkCore.DbSet<TUserToken>
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey>
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey>.UserOnlyStore(TContext context, Microsoft.AspNetCore.Identity.IdentityErrorDescriber describer = null) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext>
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext>.UserOnlyStore(TContext context, Microsoft.AspNetCore.Identity.IdentityErrorDescriber describer = null) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser>.UserOnlyStore(Microsoft.EntityFrameworkCore.DbContext context, Microsoft.AspNetCore.Identity.IdentityErrorDescriber describer = null) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore.UserStore(Microsoft.EntityFrameworkCore.DbContext context, Microsoft.AspNetCore.Identity.IdentityErrorDescriber describer = null) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.SaveChanges(System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.UserStore(TContext context, Microsoft.AspNetCore.Identity.IdentityErrorDescriber describer = null) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey>
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey>.UserStore(TContext context, Microsoft.AspNetCore.Identity.IdentityErrorDescriber describer = null) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext>
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext>.UserStore(TContext context, Microsoft.AspNetCore.Identity.IdentityErrorDescriber describer = null) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser>.UserStore(Microsoft.EntityFrameworkCore.DbContext context, Microsoft.AspNetCore.Identity.IdentityErrorDescriber describer = null) -> void
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext<TUser, TRole, TKey, TUserClaim, TUserRole, TUserLogin, TRoleClaim, TUserToken>.OnModelCreating(Microsoft.EntityFrameworkCore.ModelBuilder builder) -> void
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserContext<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.OnModelCreating(Microsoft.EntityFrameworkCore.ModelBuilder builder) -> void
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.AddClaimsAsync(TUser user, System.Collections.Generic.IEnumerable<System.Security.Claims.Claim> claims, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.AddLoginAsync(TUser user, Microsoft.AspNetCore.Identity.UserLoginInfo login, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.AddUserTokenAsync(TUserToken token) -> System.Threading.Tasks.Task
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.CreateAsync(TUser user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.DeleteAsync(TUser user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.FindByEmailAsync(string normalizedEmail, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<TUser>
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.FindByIdAsync(string userId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<TUser>
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.FindByLoginAsync(string loginProvider, string providerKey, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<TUser>
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.FindByNameAsync(string normalizedUserName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<TUser>
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.FindTokenAsync(TUser user, string loginProvider, string name, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TUserToken>
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.FindUserAsync(TKey userId, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TUser>
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.FindUserLoginAsync(string loginProvider, string providerKey, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TUserLogin>
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.FindUserLoginAsync(TKey userId, string loginProvider, string providerKey, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TUserLogin>
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.GetClaimsAsync(TUser user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<System.Security.Claims.Claim>>
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.GetLoginsAsync(TUser user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<Microsoft.AspNetCore.Identity.UserLoginInfo>>
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.GetUsersForClaimAsync(System.Security.Claims.Claim claim, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<TUser>>
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.RemoveClaimsAsync(TUser user, System.Collections.Generic.IEnumerable<System.Security.Claims.Claim> claims, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.RemoveLoginAsync(TUser user, string loginProvider, string providerKey, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.RemoveUserTokenAsync(TUserToken token) -> System.Threading.Tasks.Task
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.ReplaceClaimAsync(TUser user, System.Security.Claims.Claim claim, System.Security.Claims.Claim newClaim, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.UpdateAsync(TUser user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.Users.get -> System.Linq.IQueryable<TUser>
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.AddClaimsAsync(TUser user, System.Collections.Generic.IEnumerable<System.Security.Claims.Claim> claims, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.AddLoginAsync(TUser user, Microsoft.AspNetCore.Identity.UserLoginInfo login, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.AddToRoleAsync(TUser user, string normalizedRoleName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.AddUserTokenAsync(TUserToken token) -> System.Threading.Tasks.Task
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.CreateAsync(TUser user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.DeleteAsync(TUser user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.FindByEmailAsync(string normalizedEmail, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<TUser>
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.FindByIdAsync(string userId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<TUser>
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.FindByLoginAsync(string loginProvider, string providerKey, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<TUser>
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.FindByNameAsync(string normalizedUserName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<TUser>
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.FindRoleAsync(string normalizedRoleName, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TRole>
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.FindTokenAsync(TUser user, string loginProvider, string name, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TUserToken>
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.FindUserAsync(TKey userId, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TUser>
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.FindUserLoginAsync(string loginProvider, string providerKey, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TUserLogin>
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.FindUserLoginAsync(TKey userId, string loginProvider, string providerKey, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TUserLogin>
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.FindUserRoleAsync(TKey userId, TKey roleId, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TUserRole>
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.GetClaimsAsync(TUser user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<System.Security.Claims.Claim>>
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.GetLoginsAsync(TUser user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<Microsoft.AspNetCore.Identity.UserLoginInfo>>
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.GetRolesAsync(TUser user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<string>>
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.GetUsersForClaimAsync(System.Security.Claims.Claim claim, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<TUser>>
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.GetUsersInRoleAsync(string normalizedRoleName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<TUser>>
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.IsInRoleAsync(TUser user, string normalizedRoleName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<bool>
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.RemoveClaimsAsync(TUser user, System.Collections.Generic.IEnumerable<System.Security.Claims.Claim> claims, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.RemoveFromRoleAsync(TUser user, string normalizedRoleName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.RemoveLoginAsync(TUser user, string loginProvider, string providerKey, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.RemoveUserTokenAsync(TUserToken token) -> System.Threading.Tasks.Task
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.ReplaceClaimAsync(TUser user, System.Security.Claims.Claim claim, System.Security.Claims.Claim newClaim, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.UpdateAsync(TUser user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.Users.get -> System.Linq.IQueryable<TUser>
+*REMOVED*~static Microsoft.Extensions.DependencyInjection.IdentityEntityFrameworkBuilderExtensions.AddEntityFrameworkStores<TContext>(this Microsoft.AspNetCore.Identity.IdentityBuilder builder) -> Microsoft.AspNetCore.Identity.IdentityBuilder
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext<TUser, TRole, TKey, TUserClaim, TUserRole, TUserLogin, TRoleClaim, TUserToken>.RoleClaims.get -> Microsoft.EntityFrameworkCore.DbSet<TRoleClaim>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext<TUser, TRole, TKey, TUserClaim, TUserRole, TUserLogin, TRoleClaim, TUserToken>.RoleClaims.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext<TUser, TRole, TKey, TUserClaim, TUserRole, TUserLogin, TRoleClaim, TUserToken>.Roles.get -> Microsoft.EntityFrameworkCore.DbSet<TRole>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext<TUser, TRole, TKey, TUserClaim, TUserRole, TUserLogin, TRoleClaim, TUserToken>.Roles.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext<TUser, TRole, TKey, TUserClaim, TUserRole, TUserLogin, TRoleClaim, TUserToken>.UserRoles.get -> Microsoft.EntityFrameworkCore.DbSet<TUserRole>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext<TUser, TRole, TKey, TUserClaim, TUserRole, TUserLogin, TRoleClaim, TUserToken>.UserRoles.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserContext<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.UserClaims.get -> Microsoft.EntityFrameworkCore.DbSet<TUserClaim>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserContext<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.UserClaims.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserContext<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.UserLogins.get -> Microsoft.EntityFrameworkCore.DbSet<TUserLogin>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserContext<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.UserLogins.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserContext<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.Users.get -> Microsoft.EntityFrameworkCore.DbSet<TUser>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserContext<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.Users.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserContext<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.UserTokens.get -> Microsoft.EntityFrameworkCore.DbSet<TUserToken>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserContext<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.UserTokens.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.AddClaimAsync(TRole role, System.Security.Claims.Claim claim, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.Context.get -> TContext
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.ConvertIdFromString(string id) -> TKey
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.ConvertIdToString(TKey id) -> string
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.CreateAsync(TRole role, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.CreateRoleClaim(TRole role, System.Security.Claims.Claim claim) -> TRoleClaim
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.DeleteAsync(TRole role, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.FindByIdAsync(string id, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<TRole>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.FindByNameAsync(string normalizedName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<TRole>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.GetClaimsAsync(TRole role, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<System.Security.Claims.Claim>>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.GetNormalizedRoleNameAsync(TRole role, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<string>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.GetRoleIdAsync(TRole role, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<string>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.GetRoleNameAsync(TRole role, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<string>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.RemoveClaimAsync(TRole role, System.Security.Claims.Claim claim, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.Roles.get -> System.Linq.IQueryable<TRole>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.SetNormalizedRoleNameAsync(TRole role, string normalizedName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.SetRoleNameAsync(TRole role, string roleName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.UpdateAsync(TRole role, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.Context.get -> TContext
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.Context.get -> TContext
+Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext.IdentityDbContext(Microsoft.EntityFrameworkCore.DbContextOptions! options) -> void
+Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext<TUser, TRole, TKey, TUserClaim, TUserRole, TUserLogin, TRoleClaim, TUserToken>.IdentityDbContext(Microsoft.EntityFrameworkCore.DbContextOptions! options) -> void
+Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext<TUser, TRole, TKey>.IdentityDbContext(Microsoft.EntityFrameworkCore.DbContextOptions! options) -> void
+Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext<TUser>.IdentityDbContext(Microsoft.EntityFrameworkCore.DbContextOptions! options) -> void
+Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserContext<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.IdentityUserContext(Microsoft.EntityFrameworkCore.DbContextOptions! options) -> void
+Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserContext<TUser, TKey>.IdentityUserContext(Microsoft.EntityFrameworkCore.DbContextOptions! options) -> void
+Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserContext<TUser>.IdentityUserContext(Microsoft.EntityFrameworkCore.DbContextOptions! options) -> void
+Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.ErrorDescriber.get -> Microsoft.AspNetCore.Identity.IdentityErrorDescriber!
+Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.ErrorDescriber.set -> void
+Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.RoleStore(TContext! context, Microsoft.AspNetCore.Identity.IdentityErrorDescriber? describer = null) -> void
+Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey>.RoleStore(TContext! context, Microsoft.AspNetCore.Identity.IdentityErrorDescriber? describer = null) -> void
+Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext>.RoleStore(TContext! context, Microsoft.AspNetCore.Identity.IdentityErrorDescriber? describer = null) -> void
+Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole>.RoleStore(Microsoft.EntityFrameworkCore.DbContext! context, Microsoft.AspNetCore.Identity.IdentityErrorDescriber? describer = null) -> void
+Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.SaveChanges(System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
+Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.UserClaims.get -> Microsoft.EntityFrameworkCore.DbSet<TUserClaim!>!
+Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.UserLogins.get -> Microsoft.EntityFrameworkCore.DbSet<TUserLogin!>!
+Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.UserOnlyStore(TContext! context, Microsoft.AspNetCore.Identity.IdentityErrorDescriber? describer = null) -> void
+Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.UsersSet.get -> Microsoft.EntityFrameworkCore.DbSet<TUser!>!
+Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.UserTokens.get -> Microsoft.EntityFrameworkCore.DbSet<TUserToken!>!
+Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey>.UserOnlyStore(TContext! context, Microsoft.AspNetCore.Identity.IdentityErrorDescriber? describer = null) -> void
+Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext>.UserOnlyStore(TContext! context, Microsoft.AspNetCore.Identity.IdentityErrorDescriber? describer = null) -> void
+Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser>.UserOnlyStore(Microsoft.EntityFrameworkCore.DbContext! context, Microsoft.AspNetCore.Identity.IdentityErrorDescriber? describer = null) -> void
+Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore.UserStore(Microsoft.EntityFrameworkCore.DbContext! context, Microsoft.AspNetCore.Identity.IdentityErrorDescriber? describer = null) -> void
+Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.SaveChanges(System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
+Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.UserStore(TContext! context, Microsoft.AspNetCore.Identity.IdentityErrorDescriber? describer = null) -> void
+Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey>.UserStore(TContext! context, Microsoft.AspNetCore.Identity.IdentityErrorDescriber? describer = null) -> void
+Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext>.UserStore(TContext! context, Microsoft.AspNetCore.Identity.IdentityErrorDescriber? describer = null) -> void
+Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser>.UserStore(Microsoft.EntityFrameworkCore.DbContext! context, Microsoft.AspNetCore.Identity.IdentityErrorDescriber? describer = null) -> void
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext<TUser, TRole, TKey, TUserClaim, TUserRole, TUserLogin, TRoleClaim, TUserToken>.OnModelCreating(Microsoft.EntityFrameworkCore.ModelBuilder! builder) -> void
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserContext<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.OnModelCreating(Microsoft.EntityFrameworkCore.ModelBuilder! builder) -> void
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.AddClaimsAsync(TUser! user, System.Collections.Generic.IEnumerable<System.Security.Claims.Claim!>! claims, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.AddLoginAsync(TUser! user, Microsoft.AspNetCore.Identity.UserLoginInfo! login, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.AddUserTokenAsync(TUserToken! token) -> System.Threading.Tasks.Task!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.CreateAsync(TUser! user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.DeleteAsync(TUser! user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.FindByEmailAsync(string! normalizedEmail, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<TUser?>!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.FindByIdAsync(string! userId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<TUser?>!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.FindByLoginAsync(string! loginProvider, string! providerKey, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<TUser?>!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.FindByNameAsync(string! normalizedUserName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<TUser?>!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.FindTokenAsync(TUser! user, string! loginProvider, string! name, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TUserToken?>!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.FindUserAsync(TKey userId, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TUser?>!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.FindUserLoginAsync(string! loginProvider, string! providerKey, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TUserLogin?>!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.FindUserLoginAsync(TKey userId, string! loginProvider, string! providerKey, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TUserLogin?>!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.GetClaimsAsync(TUser! user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<System.Security.Claims.Claim!>!>!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.GetLoginsAsync(TUser! user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<Microsoft.AspNetCore.Identity.UserLoginInfo!>!>!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.GetUsersForClaimAsync(System.Security.Claims.Claim! claim, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<TUser!>!>!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.RemoveClaimsAsync(TUser! user, System.Collections.Generic.IEnumerable<System.Security.Claims.Claim!>! claims, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.RemoveLoginAsync(TUser! user, string! loginProvider, string! providerKey, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.RemoveUserTokenAsync(TUserToken! token) -> System.Threading.Tasks.Task!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.ReplaceClaimAsync(TUser! user, System.Security.Claims.Claim! claim, System.Security.Claims.Claim! newClaim, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.UpdateAsync(TUser! user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.Users.get -> System.Linq.IQueryable<TUser!>!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.AddClaimsAsync(TUser! user, System.Collections.Generic.IEnumerable<System.Security.Claims.Claim!>! claims, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.AddLoginAsync(TUser! user, Microsoft.AspNetCore.Identity.UserLoginInfo! login, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.AddToRoleAsync(TUser! user, string! normalizedRoleName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.AddUserTokenAsync(TUserToken! token) -> System.Threading.Tasks.Task!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.CreateAsync(TUser! user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.DeleteAsync(TUser! user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.FindByEmailAsync(string! normalizedEmail, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<TUser?>!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.FindByIdAsync(string! userId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<TUser?>!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.FindByLoginAsync(string! loginProvider, string! providerKey, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<TUser?>!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.FindByNameAsync(string! normalizedUserName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<TUser?>!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.FindRoleAsync(string! normalizedRoleName, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TRole?>!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.FindTokenAsync(TUser! user, string! loginProvider, string! name, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TUserToken?>!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.FindUserAsync(TKey userId, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TUser?>!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.FindUserLoginAsync(string! loginProvider, string! providerKey, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TUserLogin?>!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.FindUserLoginAsync(TKey userId, string! loginProvider, string! providerKey, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TUserLogin?>!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.FindUserRoleAsync(TKey userId, TKey roleId, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TUserRole?>!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.GetClaimsAsync(TUser! user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<System.Security.Claims.Claim!>!>!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.GetLoginsAsync(TUser! user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<Microsoft.AspNetCore.Identity.UserLoginInfo!>!>!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.GetRolesAsync(TUser! user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<string!>!>!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.GetUsersForClaimAsync(System.Security.Claims.Claim! claim, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<TUser!>!>!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.GetUsersInRoleAsync(string! normalizedRoleName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<TUser!>!>!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.IsInRoleAsync(TUser! user, string! normalizedRoleName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<bool>!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.RemoveClaimsAsync(TUser! user, System.Collections.Generic.IEnumerable<System.Security.Claims.Claim!>! claims, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.RemoveFromRoleAsync(TUser! user, string! normalizedRoleName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.RemoveLoginAsync(TUser! user, string! loginProvider, string! providerKey, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.RemoveUserTokenAsync(TUserToken! token) -> System.Threading.Tasks.Task!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.ReplaceClaimAsync(TUser! user, System.Security.Claims.Claim! claim, System.Security.Claims.Claim! newClaim, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.UpdateAsync(TUser! user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+override Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.Users.get -> System.Linq.IQueryable<TUser!>!
+static Microsoft.Extensions.DependencyInjection.IdentityEntityFrameworkBuilderExtensions.AddEntityFrameworkStores<TContext>(this Microsoft.AspNetCore.Identity.IdentityBuilder! builder) -> Microsoft.AspNetCore.Identity.IdentityBuilder!
+virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext<TUser, TRole, TKey, TUserClaim, TUserRole, TUserLogin, TRoleClaim, TUserToken>.RoleClaims.get -> Microsoft.EntityFrameworkCore.DbSet<TRoleClaim!>!
+virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext<TUser, TRole, TKey, TUserClaim, TUserRole, TUserLogin, TRoleClaim, TUserToken>.RoleClaims.set -> void
+virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext<TUser, TRole, TKey, TUserClaim, TUserRole, TUserLogin, TRoleClaim, TUserToken>.Roles.get -> Microsoft.EntityFrameworkCore.DbSet<TRole!>!
+virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext<TUser, TRole, TKey, TUserClaim, TUserRole, TUserLogin, TRoleClaim, TUserToken>.Roles.set -> void
+virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext<TUser, TRole, TKey, TUserClaim, TUserRole, TUserLogin, TRoleClaim, TUserToken>.UserRoles.get -> Microsoft.EntityFrameworkCore.DbSet<TUserRole!>!
+virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext<TUser, TRole, TKey, TUserClaim, TUserRole, TUserLogin, TRoleClaim, TUserToken>.UserRoles.set -> void
+virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserContext<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.UserClaims.get -> Microsoft.EntityFrameworkCore.DbSet<TUserClaim!>!
+virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserContext<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.UserClaims.set -> void
+virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserContext<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.UserLogins.get -> Microsoft.EntityFrameworkCore.DbSet<TUserLogin!>!
+virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserContext<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.UserLogins.set -> void
+virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserContext<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.Users.get -> Microsoft.EntityFrameworkCore.DbSet<TUser!>!
+virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserContext<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.Users.set -> void
+virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserContext<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.UserTokens.get -> Microsoft.EntityFrameworkCore.DbSet<TUserToken!>!
+virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserContext<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.UserTokens.set -> void
+virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.AddClaimAsync(TRole! role, System.Security.Claims.Claim! claim, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.Context.get -> TContext!
+virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.ConvertIdFromString(string! id) -> TKey?
+virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.ConvertIdToString(TKey id) -> string?
+virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.CreateAsync(TRole! role, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.CreateRoleClaim(TRole! role, System.Security.Claims.Claim! claim) -> TRoleClaim!
+virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.DeleteAsync(TRole! role, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.FindByIdAsync(string! id, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<TRole?>!
+virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.FindByNameAsync(string! normalizedName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<TRole?>!
+virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.GetClaimsAsync(TRole! role, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<System.Security.Claims.Claim!>!>!
+virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.GetNormalizedRoleNameAsync(TRole! role, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<string?>!
+virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.GetRoleIdAsync(TRole! role, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<string!>!
+virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.GetRoleNameAsync(TRole! role, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<string?>!
+virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.RemoveClaimAsync(TRole! role, System.Security.Claims.Claim! claim, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.Roles.get -> System.Linq.IQueryable<TRole!>!
+virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.SetNormalizedRoleNameAsync(TRole! role, string? normalizedName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.SetRoleNameAsync(TRole! role, string? roleName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim>.UpdateAsync(TRole! role, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken>.Context.get -> TContext!
+virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.Context.get -> TContext!

+ 15 - 15
src/Identity/EntityFrameworkCore/src/RoleStore.cs

@@ -20,7 +20,7 @@ public class RoleStore<TRole> : RoleStore<TRole, DbContext, string>
     /// </summary>
     /// <param name="context">The <see cref="DbContext"/>.</param>
     /// <param name="describer">The <see cref="IdentityErrorDescriber"/>.</param>
-    public RoleStore(DbContext context, IdentityErrorDescriber describer = null) : base(context, describer) { }
+    public RoleStore(DbContext context, IdentityErrorDescriber? describer = null) : base(context, describer) { }
 }
 
 /// <summary>
@@ -37,7 +37,7 @@ public class RoleStore<TRole, TContext> : RoleStore<TRole, TContext, string>
     /// </summary>
     /// <param name="context">The <see cref="DbContext"/>.</param>
     /// <param name="describer">The <see cref="IdentityErrorDescriber"/>.</param>
-    public RoleStore(TContext context, IdentityErrorDescriber describer = null) : base(context, describer) { }
+    public RoleStore(TContext context, IdentityErrorDescriber? describer = null) : base(context, describer) { }
 }
 
 /// <summary>
@@ -58,7 +58,7 @@ public class RoleStore<TRole, TContext, TKey> : RoleStore<TRole, TContext, TKey,
     /// </summary>
     /// <param name="context">The <see cref="DbContext"/>.</param>
     /// <param name="describer">The <see cref="IdentityErrorDescriber"/>.</param>
-    public RoleStore(TContext context, IdentityErrorDescriber describer = null) : base(context, describer) { }
+    public RoleStore(TContext context, IdentityErrorDescriber? describer = null) : base(context, describer) { }
 }
 
 /// <summary>
@@ -83,7 +83,7 @@ public class RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim> :
     /// </summary>
     /// <param name="context">The <see cref="DbContext"/>.</param>
     /// <param name="describer">The <see cref="IdentityErrorDescriber"/>.</param>
-    public RoleStore(TContext context, IdentityErrorDescriber describer = null)
+    public RoleStore(TContext context, IdentityErrorDescriber? describer = null)
     {
         if (context == null)
         {
@@ -211,7 +211,7 @@ public class RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim> :
         {
             throw new ArgumentNullException(nameof(role));
         }
-        return Task.FromResult(ConvertIdToString(role.Id));
+        return Task.FromResult(ConvertIdToString(role.Id)!);
     }
 
     /// <summary>
@@ -220,7 +220,7 @@ public class RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim> :
     /// <param name="role">The role whose name should be returned.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>A <see cref="Task{TResult}"/> that contains the name of the role.</returns>
-    public virtual Task<string> GetRoleNameAsync(TRole role, CancellationToken cancellationToken = default(CancellationToken))
+    public virtual Task<string?> GetRoleNameAsync(TRole role, CancellationToken cancellationToken = default(CancellationToken))
     {
         cancellationToken.ThrowIfCancellationRequested();
         ThrowIfDisposed();
@@ -238,7 +238,7 @@ public class RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim> :
     /// <param name="roleName">The name of the role.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The <see cref="Task"/> that represents the asynchronous operation.</returns>
-    public virtual Task SetRoleNameAsync(TRole role, string roleName, CancellationToken cancellationToken = default(CancellationToken))
+    public virtual Task SetRoleNameAsync(TRole role, string? roleName, CancellationToken cancellationToken = default(CancellationToken))
     {
         cancellationToken.ThrowIfCancellationRequested();
         ThrowIfDisposed();
@@ -255,13 +255,13 @@ public class RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim> :
     /// </summary>
     /// <param name="id">The id to convert.</param>
     /// <returns>An instance of <typeparamref name="TKey"/> representing the provided <paramref name="id"/>.</returns>
-    public virtual TKey ConvertIdFromString(string id)
+    public virtual TKey? ConvertIdFromString(string id)
     {
         if (id == null)
         {
             return default(TKey);
         }
-        return (TKey)TypeDescriptor.GetConverter(typeof(TKey)).ConvertFromInvariantString(id);
+        return (TKey?)TypeDescriptor.GetConverter(typeof(TKey)).ConvertFromInvariantString(id);
     }
 
     /// <summary>
@@ -269,7 +269,7 @@ public class RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim> :
     /// </summary>
     /// <param name="id">The id to convert.</param>
     /// <returns>An <see cref="string"/> representation of the provided <paramref name="id"/>.</returns>
-    public virtual string ConvertIdToString(TKey id)
+    public virtual string? ConvertIdToString(TKey id)
     {
         if (id.Equals(default(TKey)))
         {
@@ -284,7 +284,7 @@ public class RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim> :
     /// <param name="id">The role ID to look for.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>A <see cref="Task{TResult}"/> that result of the look up.</returns>
-    public virtual Task<TRole> FindByIdAsync(string id, CancellationToken cancellationToken = default(CancellationToken))
+    public virtual Task<TRole?> FindByIdAsync(string id, CancellationToken cancellationToken = default(CancellationToken))
     {
         cancellationToken.ThrowIfCancellationRequested();
         ThrowIfDisposed();
@@ -298,7 +298,7 @@ public class RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim> :
     /// <param name="normalizedName">The normalized role name to look for.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>A <see cref="Task{TResult}"/> that result of the look up.</returns>
-    public virtual Task<TRole> FindByNameAsync(string normalizedName, CancellationToken cancellationToken = default(CancellationToken))
+    public virtual Task<TRole?> FindByNameAsync(string normalizedName, CancellationToken cancellationToken = default(CancellationToken))
     {
         cancellationToken.ThrowIfCancellationRequested();
         ThrowIfDisposed();
@@ -311,7 +311,7 @@ public class RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim> :
     /// <param name="role">The role whose normalized name should be retrieved.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>A <see cref="Task{TResult}"/> that contains the name of the role.</returns>
-    public virtual Task<string> GetNormalizedRoleNameAsync(TRole role, CancellationToken cancellationToken = default(CancellationToken))
+    public virtual Task<string?> GetNormalizedRoleNameAsync(TRole role, CancellationToken cancellationToken = default(CancellationToken))
     {
         cancellationToken.ThrowIfCancellationRequested();
         ThrowIfDisposed();
@@ -329,7 +329,7 @@ public class RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim> :
     /// <param name="normalizedName">The normalized name to set</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The <see cref="Task"/> that represents the asynchronous operation.</returns>
-    public virtual Task SetNormalizedRoleNameAsync(TRole role, string normalizedName, CancellationToken cancellationToken = default(CancellationToken))
+    public virtual Task SetNormalizedRoleNameAsync(TRole role, string? normalizedName, CancellationToken cancellationToken = default(CancellationToken))
     {
         cancellationToken.ThrowIfCancellationRequested();
         ThrowIfDisposed();
@@ -371,7 +371,7 @@ public class RoleStore<TRole, TContext, TKey, TUserRole, TRoleClaim> :
             throw new ArgumentNullException(nameof(role));
         }
 
-        return await RoleClaims.Where(rc => rc.RoleId.Equals(role.Id)).Select(c => new Claim(c.ClaimType, c.ClaimValue)).ToListAsync(cancellationToken);
+        return await RoleClaims.Where(rc => rc.RoleId.Equals(role.Id)).Select(c => new Claim(c.ClaimType!, c.ClaimValue!)).ToListAsync(cancellationToken);
     }
 
     /// <summary>

+ 13 - 13
src/Identity/EntityFrameworkCore/src/UserOnlyStore.cs

@@ -18,7 +18,7 @@ public class UserOnlyStore<TUser> : UserOnlyStore<TUser, DbContext, string> wher
     /// </summary>
     /// <param name="context">The <see cref="DbContext"/>.</param>
     /// <param name="describer">The <see cref="IdentityErrorDescriber"/>.</param>
-    public UserOnlyStore(DbContext context, IdentityErrorDescriber describer = null) : base(context, describer) { }
+    public UserOnlyStore(DbContext context, IdentityErrorDescriber? describer = null) : base(context, describer) { }
 }
 
 /// <summary>
@@ -35,7 +35,7 @@ public class UserOnlyStore<TUser, TContext> : UserOnlyStore<TUser, TContext, str
     /// </summary>
     /// <param name="context">The <see cref="DbContext"/>.</param>
     /// <param name="describer">The <see cref="IdentityErrorDescriber"/>.</param>
-    public UserOnlyStore(TContext context, IdentityErrorDescriber describer = null) : base(context, describer) { }
+    public UserOnlyStore(TContext context, IdentityErrorDescriber? describer = null) : base(context, describer) { }
 }
 
 /// <summary>
@@ -54,7 +54,7 @@ public class UserOnlyStore<TUser, TContext, TKey> : UserOnlyStore<TUser, TContex
     /// </summary>
     /// <param name="context">The <see cref="DbContext"/>.</param>
     /// <param name="describer">The <see cref="IdentityErrorDescriber"/>.</param>
-    public UserOnlyStore(TContext context, IdentityErrorDescriber describer = null) : base(context, describer) { }
+    public UserOnlyStore(TContext context, IdentityErrorDescriber? describer = null) : base(context, describer) { }
 }
 
 /// <summary>
@@ -93,7 +93,7 @@ public class UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserT
     /// </summary>
     /// <param name="context">The context used to access the store.</param>
     /// <param name="describer">The <see cref="IdentityErrorDescriber"/> used to describe store errors.</param>
-    public UserOnlyStore(TContext context, IdentityErrorDescriber describer = null) : base(describer ?? new IdentityErrorDescriber())
+    public UserOnlyStore(TContext context, IdentityErrorDescriber? describer = null) : base(describer ?? new IdentityErrorDescriber())
     {
         if (context == null)
         {
@@ -226,12 +226,12 @@ public class UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserT
     /// <returns>
     /// The <see cref="Task"/> that represents the asynchronous operation, containing the user matching the specified <paramref name="userId"/> if it exists.
     /// </returns>
-    public override Task<TUser> FindByIdAsync(string userId, CancellationToken cancellationToken = default(CancellationToken))
+    public override Task<TUser?> FindByIdAsync(string userId, CancellationToken cancellationToken = default(CancellationToken))
     {
         cancellationToken.ThrowIfCancellationRequested();
         ThrowIfDisposed();
         var id = ConvertIdFromString(userId);
-        return UsersSet.FindAsync(new object[] { id }, cancellationToken).AsTask();
+        return UsersSet.FindAsync(new object?[] { id }, cancellationToken).AsTask();
     }
 
     /// <summary>
@@ -242,7 +242,7 @@ public class UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserT
     /// <returns>
     /// The <see cref="Task"/> that represents the asynchronous operation, containing the user matching the specified <paramref name="normalizedUserName"/> if it exists.
     /// </returns>
-    public override Task<TUser> FindByNameAsync(string normalizedUserName, CancellationToken cancellationToken = default(CancellationToken))
+    public override Task<TUser?> FindByNameAsync(string normalizedUserName, CancellationToken cancellationToken = default(CancellationToken))
     {
         cancellationToken.ThrowIfCancellationRequested();
         ThrowIfDisposed();
@@ -264,7 +264,7 @@ public class UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserT
     /// <param name="userId">The user's id.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The user if it exists.</returns>
-    protected override Task<TUser> FindUserAsync(TKey userId, CancellationToken cancellationToken)
+    protected override Task<TUser?> FindUserAsync(TKey userId, CancellationToken cancellationToken)
     {
         return Users.SingleOrDefaultAsync(u => u.Id.Equals(userId), cancellationToken);
     }
@@ -277,7 +277,7 @@ public class UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserT
     /// <param name="providerKey">The key provided by the <paramref name="loginProvider"/> to identify a user.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The user login if it exists.</returns>
-    protected override Task<TUserLogin> FindUserLoginAsync(TKey userId, string loginProvider, string providerKey, CancellationToken cancellationToken)
+    protected override Task<TUserLogin?> FindUserLoginAsync(TKey userId, string loginProvider, string providerKey, CancellationToken cancellationToken)
     {
         return UserLogins.SingleOrDefaultAsync(userLogin => userLogin.UserId.Equals(userId) && userLogin.LoginProvider == loginProvider && userLogin.ProviderKey == providerKey, cancellationToken);
     }
@@ -289,7 +289,7 @@ public class UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserT
     /// <param name="providerKey">The key provided by the <paramref name="loginProvider"/> to identify a user.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The user login if it exists.</returns>
-    protected override Task<TUserLogin> FindUserLoginAsync(string loginProvider, string providerKey, CancellationToken cancellationToken)
+    protected override Task<TUserLogin?> FindUserLoginAsync(string loginProvider, string providerKey, CancellationToken cancellationToken)
     {
         return UserLogins.SingleOrDefaultAsync(userLogin => userLogin.LoginProvider == loginProvider && userLogin.ProviderKey == providerKey, cancellationToken);
     }
@@ -474,7 +474,7 @@ public class UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserT
     /// <returns>
     /// The <see cref="Task"/> for the asynchronous operation, containing the user, if any which matched the specified login provider and key.
     /// </returns>
-    public override async Task<TUser> FindByLoginAsync(string loginProvider, string providerKey,
+    public override async Task<TUser?> FindByLoginAsync(string loginProvider, string providerKey,
         CancellationToken cancellationToken = default(CancellationToken))
     {
         cancellationToken.ThrowIfCancellationRequested();
@@ -495,7 +495,7 @@ public class UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserT
     /// <returns>
     /// The task object containing the results of the asynchronous lookup operation, the user if any associated with the specified normalized email address.
     /// </returns>
-    public override Task<TUser> FindByEmailAsync(string normalizedEmail, CancellationToken cancellationToken = default(CancellationToken))
+    public override Task<TUser?> FindByEmailAsync(string normalizedEmail, CancellationToken cancellationToken = default(CancellationToken))
     {
         cancellationToken.ThrowIfCancellationRequested();
         ThrowIfDisposed();
@@ -537,7 +537,7 @@ public class UserOnlyStore<TUser, TContext, TKey, TUserClaim, TUserLogin, TUserT
     /// <param name="name">The name of the token.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The user token if it exists.</returns>
-    protected override Task<TUserToken> FindTokenAsync(TUser user, string loginProvider, string name, CancellationToken cancellationToken)
+    protected override Task<TUserToken?> FindTokenAsync(TUser user, string loginProvider, string name, CancellationToken cancellationToken)
         => UserTokens.FindAsync(new object[] { user.Id, loginProvider, name }, cancellationToken).AsTask();
 
     /// <summary>

+ 16 - 16
src/Identity/EntityFrameworkCore/src/UserStore.cs

@@ -19,7 +19,7 @@ public class UserStore : UserStore<IdentityUser<string>>
     /// </summary>
     /// <param name="context">The <see cref="DbContext"/>.</param>
     /// <param name="describer">The <see cref="IdentityErrorDescriber"/>.</param>
-    public UserStore(DbContext context, IdentityErrorDescriber describer = null) : base(context, describer) { }
+    public UserStore(DbContext context, IdentityErrorDescriber? describer = null) : base(context, describer) { }
 }
 
 /// <summary>
@@ -34,7 +34,7 @@ public class UserStore<TUser> : UserStore<TUser, IdentityRole, DbContext, string
     /// </summary>
     /// <param name="context">The <see cref="DbContext"/>.</param>
     /// <param name="describer">The <see cref="IdentityErrorDescriber"/>.</param>
-    public UserStore(DbContext context, IdentityErrorDescriber describer = null) : base(context, describer) { }
+    public UserStore(DbContext context, IdentityErrorDescriber? describer = null) : base(context, describer) { }
 }
 
 /// <summary>
@@ -53,7 +53,7 @@ public class UserStore<TUser, TRole, TContext> : UserStore<TUser, TRole, TContex
     /// </summary>
     /// <param name="context">The <see cref="DbContext"/>.</param>
     /// <param name="describer">The <see cref="IdentityErrorDescriber"/>.</param>
-    public UserStore(TContext context, IdentityErrorDescriber describer = null) : base(context, describer) { }
+    public UserStore(TContext context, IdentityErrorDescriber? describer = null) : base(context, describer) { }
 }
 
 /// <summary>
@@ -74,7 +74,7 @@ public class UserStore<TUser, TRole, TContext, TKey> : UserStore<TUser, TRole, T
     /// </summary>
     /// <param name="context">The <see cref="DbContext"/>.</param>
     /// <param name="describer">The <see cref="IdentityErrorDescriber"/>.</param>
-    public UserStore(TContext context, IdentityErrorDescriber describer = null) : base(context, describer) { }
+    public UserStore(TContext context, IdentityErrorDescriber? describer = null) : base(context, describer) { }
 }
 
 /// <summary>
@@ -107,7 +107,7 @@ public class UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUse
     /// </summary>
     /// <param name="context">The context used to access the store.</param>
     /// <param name="describer">The <see cref="IdentityErrorDescriber"/> used to describe store errors.</param>
-    public UserStore(TContext context, IdentityErrorDescriber describer = null) : base(describer ?? new IdentityErrorDescriber())
+    public UserStore(TContext context, IdentityErrorDescriber? describer = null) : base(describer ?? new IdentityErrorDescriber())
     {
         if (context == null)
         {
@@ -227,12 +227,12 @@ public class UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUse
     /// <returns>
     /// The <see cref="Task"/> that represents the asynchronous operation, containing the user matching the specified <paramref name="userId"/> if it exists.
     /// </returns>
-    public override Task<TUser> FindByIdAsync(string userId, CancellationToken cancellationToken = default(CancellationToken))
+    public override Task<TUser?> FindByIdAsync(string userId, CancellationToken cancellationToken = default(CancellationToken))
     {
         cancellationToken.ThrowIfCancellationRequested();
         ThrowIfDisposed();
         var id = ConvertIdFromString(userId);
-        return UsersSet.FindAsync(new object[] { id }, cancellationToken).AsTask();
+        return UsersSet.FindAsync(new object?[] { id }, cancellationToken).AsTask();
     }
 
     /// <summary>
@@ -243,7 +243,7 @@ public class UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUse
     /// <returns>
     /// The <see cref="Task"/> that represents the asynchronous operation, containing the user matching the specified <paramref name="normalizedUserName"/> if it exists.
     /// </returns>
-    public override Task<TUser> FindByNameAsync(string normalizedUserName, CancellationToken cancellationToken = default(CancellationToken))
+    public override Task<TUser?> FindByNameAsync(string normalizedUserName, CancellationToken cancellationToken = default(CancellationToken))
     {
         cancellationToken.ThrowIfCancellationRequested();
         ThrowIfDisposed();
@@ -265,7 +265,7 @@ public class UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUse
     /// <param name="normalizedRoleName">The normalized role name.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The role if it exists.</returns>
-    protected override Task<TRole> FindRoleAsync(string normalizedRoleName, CancellationToken cancellationToken)
+    protected override Task<TRole?> FindRoleAsync(string normalizedRoleName, CancellationToken cancellationToken)
     {
         return Roles.SingleOrDefaultAsync(r => r.NormalizedName == normalizedRoleName, cancellationToken);
     }
@@ -277,7 +277,7 @@ public class UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUse
     /// <param name="roleId">The role's id.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The user role if it exists.</returns>
-    protected override Task<TUserRole> FindUserRoleAsync(TKey userId, TKey roleId, CancellationToken cancellationToken)
+    protected override Task<TUserRole?> FindUserRoleAsync(TKey userId, TKey roleId, CancellationToken cancellationToken)
     {
         return UserRoles.FindAsync(new object[] { userId, roleId }, cancellationToken).AsTask();
     }
@@ -288,7 +288,7 @@ public class UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUse
     /// <param name="userId">The user's id.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The user if it exists.</returns>
-    protected override Task<TUser> FindUserAsync(TKey userId, CancellationToken cancellationToken)
+    protected override Task<TUser?> FindUserAsync(TKey userId, CancellationToken cancellationToken)
     {
         return Users.SingleOrDefaultAsync(u => u.Id.Equals(userId), cancellationToken);
     }
@@ -301,7 +301,7 @@ public class UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUse
     /// <param name="providerKey">The key provided by the <paramref name="loginProvider"/> to identify a user.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The user login if it exists.</returns>
-    protected override Task<TUserLogin> FindUserLoginAsync(TKey userId, string loginProvider, string providerKey, CancellationToken cancellationToken)
+    protected override Task<TUserLogin?> FindUserLoginAsync(TKey userId, string loginProvider, string providerKey, CancellationToken cancellationToken)
     {
         return UserLogins.SingleOrDefaultAsync(userLogin => userLogin.UserId.Equals(userId) && userLogin.LoginProvider == loginProvider && userLogin.ProviderKey == providerKey, cancellationToken);
     }
@@ -313,7 +313,7 @@ public class UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUse
     /// <param name="providerKey">The key provided by the <paramref name="loginProvider"/> to identify a user.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The user login if it exists.</returns>
-    protected override Task<TUserLogin> FindUserLoginAsync(string loginProvider, string providerKey, CancellationToken cancellationToken)
+    protected override Task<TUserLogin?> FindUserLoginAsync(string loginProvider, string providerKey, CancellationToken cancellationToken)
     {
         return UserLogins.SingleOrDefaultAsync(userLogin => userLogin.LoginProvider == loginProvider && userLogin.ProviderKey == providerKey, cancellationToken);
     }
@@ -606,7 +606,7 @@ public class UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUse
     /// <returns>
     /// The <see cref="Task"/> for the asynchronous operation, containing the user, if any which matched the specified login provider and key.
     /// </returns>
-    public override async Task<TUser> FindByLoginAsync(string loginProvider, string providerKey,
+    public override async Task<TUser?> FindByLoginAsync(string loginProvider, string providerKey,
         CancellationToken cancellationToken = default(CancellationToken))
     {
         cancellationToken.ThrowIfCancellationRequested();
@@ -627,7 +627,7 @@ public class UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUse
     /// <returns>
     /// The task object containing the results of the asynchronous lookup operation, the user if any associated with the specified normalized email address.
     /// </returns>
-    public override Task<TUser> FindByEmailAsync(string normalizedEmail, CancellationToken cancellationToken = default(CancellationToken))
+    public override Task<TUser?> FindByEmailAsync(string normalizedEmail, CancellationToken cancellationToken = default(CancellationToken))
     {
         cancellationToken.ThrowIfCancellationRequested();
         ThrowIfDisposed();
@@ -700,7 +700,7 @@ public class UserStore<TUser, TRole, TContext, TKey, TUserClaim, TUserRole, TUse
     /// <param name="name">The name of the token.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The user token if it exists.</returns>
-    protected override Task<TUserToken> FindTokenAsync(TUser user, string loginProvider, string name, CancellationToken cancellationToken)
+    protected override Task<TUserToken?> FindTokenAsync(TUser user, string loginProvider, string name, CancellationToken cancellationToken)
         => UserTokens.FindAsync(new object[] { user.Id, loginProvider, name }, cancellationToken).AsTask();
 
     /// <summary>

+ 4 - 2
src/Identity/Extensions.Core/src/DefaultPersonalDataProtector.cs

@@ -2,6 +2,7 @@
 // The .NET Foundation licenses this file to you under the MIT license.
 
 using System;
+using System.Diagnostics;
 
 namespace Microsoft.AspNetCore.Identity;
 
@@ -30,8 +31,9 @@ public class DefaultPersonalDataProtector : IPersonalDataProtector
     /// </summary>
     /// <param name="data">The data to unprotect.</param>
     /// <returns>The unprotected data.</returns>
-    public virtual string Unprotect(string data)
+    public virtual string? Unprotect(string? data)
     {
+        Debug.Assert(data != null);
         var split = data.IndexOf(':');
         if (split == -1 || split == data.Length - 1)
         {
@@ -47,7 +49,7 @@ public class DefaultPersonalDataProtector : IPersonalDataProtector
     /// </summary>
     /// <param name="data">The data to protect.</param>
     /// <returns>The protected data.</returns>
-    public virtual string Protect(string data)
+    public virtual string? Protect(string? data)
     {
         var current = _keyRing.CurrentKeyId;
         return current + ":" + _encryptor.Protect(current, data);

+ 6 - 3
src/Identity/Extensions.Core/src/ILookupNormalizer.cs

@@ -1,6 +1,8 @@
 // Licensed to the .NET Foundation under one or more agreements.
 // The .NET Foundation licenses this file to you under the MIT license.
 
+using System.Diagnostics.CodeAnalysis;
+
 namespace Microsoft.AspNetCore.Identity;
 
 /// <summary>
@@ -13,13 +15,14 @@ public interface ILookupNormalizer
     /// </summary>
     /// <param name="name">The key to normalize.</param>
     /// <returns>A normalized representation of the specified <paramref name="name"/>.</returns>
-    string NormalizeName(string name);
+    [return: NotNullIfNotNull("name")]
+    string? NormalizeName(string? name);
 
     /// <summary>
     /// Returns a normalized representation of the specified <paramref name="email"/>.
     /// </summary>
     /// <param name="email">The email to normalize.</param>
     /// <returns>A normalized representation of the specified <paramref name="email"/>.</returns>
-    string NormalizeEmail(string email);
-
+    [return: NotNullIfNotNull("email")]
+    string? NormalizeEmail(string? email);
 }

+ 6 - 2
src/Identity/Extensions.Core/src/ILookupProtector.cs

@@ -1,6 +1,8 @@
 // Licensed to the .NET Foundation under one or more agreements.
 // The .NET Foundation licenses this file to you under the MIT license.
 
+using System.Diagnostics.CodeAnalysis;
+
 namespace Microsoft.AspNetCore.Identity;
 
 /// <summary>
@@ -14,7 +16,8 @@ public interface ILookupProtector
     /// <param name="keyId">The key to use.</param>
     /// <param name="data">The data to protect.</param>
     /// <returns>The protected data.</returns>
-    string Protect(string keyId, string data);
+    [return: NotNullIfNotNull("data")]
+    string? Protect(string keyId, string? data);
 
     /// <summary>
     /// Unprotect the data using the specified key.
@@ -22,5 +25,6 @@ public interface ILookupProtector
     /// <param name="keyId">The key to use.</param>
     /// <param name="data">The data to unprotect.</param>
     /// <returns>The original data.</returns>
-    string Unprotect(string keyId, string data);
+    [return: NotNullIfNotNull("data")]
+    string? Unprotect(string keyId, string? data);
 }

+ 1 - 1
src/Identity/Extensions.Core/src/IPasswordValidator.cs

@@ -18,5 +18,5 @@ public interface IPasswordValidator<TUser> where TUser : class
     /// <param name="user">The user whose password should be validated.</param>
     /// <param name="password">The password supplied for validation</param>
     /// <returns>The task object representing the asynchronous operation.</returns>
-    Task<IdentityResult> ValidateAsync(UserManager<TUser> manager, TUser user, string password);
+    Task<IdentityResult> ValidateAsync(UserManager<TUser> manager, TUser user, string? password);
 }

+ 6 - 2
src/Identity/Extensions.Core/src/IPersonalDataProtector.cs

@@ -1,6 +1,8 @@
 // Licensed to the .NET Foundation under one or more agreements.
 // The .NET Foundation licenses this file to you under the MIT license.
 
+using System.Diagnostics.CodeAnalysis;
+
 namespace Microsoft.AspNetCore.Identity;
 
 /// <summary>
@@ -13,12 +15,14 @@ public interface IPersonalDataProtector
     /// </summary>
     /// <param name="data">The data to protect.</param>
     /// <returns>The protected data.</returns>
-    string Protect(string data);
+    [return: NotNullIfNotNull("data")]
+    string? Protect(string? data);
 
     /// <summary>
     /// Unprotect the data.
     /// </summary>
     /// <param name="data"></param>
     /// <returns>The unprotected data.</returns>
-    string Unprotect(string data);
+    [return: NotNullIfNotNull("data")]
+    string? Unprotect(string? data);
 }

+ 6 - 6
src/Identity/Extensions.Core/src/IRoleStore.cs

@@ -51,7 +51,7 @@ public interface IRoleStore<TRole> : IDisposable where TRole : class
     /// <param name="role">The role whose name should be returned.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>A <see cref="Task{TResult}"/> that contains the name of the role.</returns>
-    Task<string> GetRoleNameAsync(TRole role, CancellationToken cancellationToken);
+    Task<string?> GetRoleNameAsync(TRole role, CancellationToken cancellationToken);
 
     /// <summary>
     /// Sets the name of a role in the store as an asynchronous operation.
@@ -60,7 +60,7 @@ public interface IRoleStore<TRole> : IDisposable where TRole : class
     /// <param name="roleName">The name of the role.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The <see cref="Task"/> that represents the asynchronous operation.</returns>
-    Task SetRoleNameAsync(TRole role, string roleName, CancellationToken cancellationToken);
+    Task SetRoleNameAsync(TRole role, string? roleName, CancellationToken cancellationToken);
 
     /// <summary>
     /// Get a role's normalized name as an asynchronous operation.
@@ -68,7 +68,7 @@ public interface IRoleStore<TRole> : IDisposable where TRole : class
     /// <param name="role">The role whose normalized name should be retrieved.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>A <see cref="Task{TResult}"/> that contains the name of the role.</returns>
-    Task<string> GetNormalizedRoleNameAsync(TRole role, CancellationToken cancellationToken);
+    Task<string?> GetNormalizedRoleNameAsync(TRole role, CancellationToken cancellationToken);
 
     /// <summary>
     /// Set a role's normalized name as an asynchronous operation.
@@ -77,7 +77,7 @@ public interface IRoleStore<TRole> : IDisposable where TRole : class
     /// <param name="normalizedName">The normalized name to set</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The <see cref="Task"/> that represents the asynchronous operation.</returns>
-    Task SetNormalizedRoleNameAsync(TRole role, string normalizedName, CancellationToken cancellationToken);
+    Task SetNormalizedRoleNameAsync(TRole role, string? normalizedName, CancellationToken cancellationToken);
 
     /// <summary>
     /// Finds the role who has the specified ID as an asynchronous operation.
@@ -85,7 +85,7 @@ public interface IRoleStore<TRole> : IDisposable where TRole : class
     /// <param name="roleId">The role ID to look for.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>A <see cref="Task{TResult}"/> that result of the look up.</returns>
-    Task<TRole> FindByIdAsync(string roleId, CancellationToken cancellationToken);
+    Task<TRole?> FindByIdAsync(string roleId, CancellationToken cancellationToken);
 
     /// <summary>
     /// Finds the role who has the specified normalized name as an asynchronous operation.
@@ -93,5 +93,5 @@ public interface IRoleStore<TRole> : IDisposable where TRole : class
     /// <param name="normalizedRoleName">The normalized role name to look for.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>A <see cref="Task{TResult}"/> that result of the look up.</returns>
-    Task<TRole> FindByNameAsync(string normalizedRoleName, CancellationToken cancellationToken);
+    Task<TRole?> FindByNameAsync(string normalizedRoleName, CancellationToken cancellationToken);
 }

+ 2 - 2
src/Identity/Extensions.Core/src/IUserAuthenticationTokenStore.cs

@@ -21,7 +21,7 @@ public interface IUserAuthenticationTokenStore<TUser> : IUserStore<TUser> where
     /// <param name="value">The value of the token.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The <see cref="Task"/> that represents the asynchronous operation.</returns>
-    Task SetTokenAsync(TUser user, string loginProvider, string name, string value, CancellationToken cancellationToken);
+    Task SetTokenAsync(TUser user, string loginProvider, string name, string? value, CancellationToken cancellationToken);
 
     /// <summary>
     /// Deletes a token for a user.
@@ -41,5 +41,5 @@ public interface IUserAuthenticationTokenStore<TUser> : IUserStore<TUser> where
     /// <param name="name">The name of the token.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The <see cref="Task"/> that represents the asynchronous operation.</returns>
-    Task<string> GetTokenAsync(TUser user, string loginProvider, string name, CancellationToken cancellationToken);
+    Task<string?> GetTokenAsync(TUser user, string loginProvider, string name, CancellationToken cancellationToken);
 }

+ 1 - 1
src/Identity/Extensions.Core/src/IUserAuthenticatorKeyStore.cs

@@ -27,5 +27,5 @@ public interface IUserAuthenticatorKeyStore<TUser> : IUserStore<TUser> where TUs
     /// <param name="user">The user whose security stamp should be set.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The <see cref="Task"/> that represents the asynchronous operation, containing the security stamp for the specified <paramref name="user"/>.</returns>
-    Task<string> GetAuthenticatorKeyAsync(TUser user, CancellationToken cancellationToken);
+    Task<string?> GetAuthenticatorKeyAsync(TUser user, CancellationToken cancellationToken);
 }

+ 5 - 5
src/Identity/Extensions.Core/src/IUserEmailStore.cs

@@ -19,7 +19,7 @@ public interface IUserEmailStore<TUser> : IUserStore<TUser> where TUser : class
     /// <param name="email">The email to set.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The task object representing the asynchronous operation.</returns>
-    Task SetEmailAsync(TUser user, string email, CancellationToken cancellationToken);
+    Task SetEmailAsync(TUser user, string? email, CancellationToken cancellationToken);
 
     /// <summary>
     /// Gets the email address for the specified <paramref name="user"/>.
@@ -27,7 +27,7 @@ public interface IUserEmailStore<TUser> : IUserStore<TUser> where TUser : class
     /// <param name="user">The user whose email should be returned.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The task object containing the results of the asynchronous operation, the email address for the specified <paramref name="user"/>.</returns>
-    Task<string> GetEmailAsync(TUser user, CancellationToken cancellationToken);
+    Task<string?> GetEmailAsync(TUser user, CancellationToken cancellationToken);
 
     /// <summary>
     /// Gets a flag indicating whether the email address for the specified <paramref name="user"/> has been verified, true if the email address is verified otherwise
@@ -58,7 +58,7 @@ public interface IUserEmailStore<TUser> : IUserStore<TUser> where TUser : class
     /// <returns>
     /// The task object containing the results of the asynchronous lookup operation, the user if any associated with the specified normalized email address.
     /// </returns>
-    Task<TUser> FindByEmailAsync(string normalizedEmail, CancellationToken cancellationToken);
+    Task<TUser?> FindByEmailAsync(string normalizedEmail, CancellationToken cancellationToken);
 
     /// <summary>
     /// Returns the normalized email for the specified <paramref name="user"/>.
@@ -68,7 +68,7 @@ public interface IUserEmailStore<TUser> : IUserStore<TUser> where TUser : class
     /// <returns>
     /// The task object containing the results of the asynchronous lookup operation, the normalized email address if any associated with the specified user.
     /// </returns>
-    Task<string> GetNormalizedEmailAsync(TUser user, CancellationToken cancellationToken);
+    Task<string?> GetNormalizedEmailAsync(TUser user, CancellationToken cancellationToken);
 
     /// <summary>
     /// Sets the normalized email for the specified <paramref name="user"/>.
@@ -77,5 +77,5 @@ public interface IUserEmailStore<TUser> : IUserStore<TUser> where TUser : class
     /// <param name="normalizedEmail">The normalized email to set for the specified <paramref name="user"/>.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The task object representing the asynchronous operation.</returns>
-    Task SetNormalizedEmailAsync(TUser user, string normalizedEmail, CancellationToken cancellationToken);
+    Task SetNormalizedEmailAsync(TUser user, string? normalizedEmail, CancellationToken cancellationToken);
 }

+ 1 - 1
src/Identity/Extensions.Core/src/IUserLoginStore.cs

@@ -53,5 +53,5 @@ public interface IUserLoginStore<TUser> : IUserStore<TUser> where TUser : class
     /// <returns>
     /// The <see cref="Task"/> for the asynchronous operation, containing the user, if any which matched the specified login provider and key.
     /// </returns>
-    Task<TUser> FindByLoginAsync(string loginProvider, string providerKey, CancellationToken cancellationToken);
+    Task<TUser?> FindByLoginAsync(string loginProvider, string providerKey, CancellationToken cancellationToken);
 }

+ 2 - 2
src/Identity/Extensions.Core/src/IUserPasswordStore.cs

@@ -19,7 +19,7 @@ public interface IUserPasswordStore<TUser> : IUserStore<TUser> where TUser : cla
     /// <param name="passwordHash">The password hash to set.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The <see cref="Task"/> that represents the asynchronous operation.</returns>
-    Task SetPasswordHashAsync(TUser user, string passwordHash, CancellationToken cancellationToken);
+    Task SetPasswordHashAsync(TUser user, string? passwordHash, CancellationToken cancellationToken);
 
     /// <summary>
     /// Gets the password hash for the specified <paramref name="user"/>.
@@ -27,7 +27,7 @@ public interface IUserPasswordStore<TUser> : IUserStore<TUser> where TUser : cla
     /// <param name="user">The user whose password hash to retrieve.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The <see cref="Task"/> that represents the asynchronous operation, returning the password hash for the specified <paramref name="user"/>.</returns>
-    Task<string> GetPasswordHashAsync(TUser user, CancellationToken cancellationToken);
+    Task<string?> GetPasswordHashAsync(TUser user, CancellationToken cancellationToken);
 
     /// <summary>
     /// Gets a flag indicating whether the specified <paramref name="user"/> has a password.

+ 2 - 2
src/Identity/Extensions.Core/src/IUserPhoneNumberStore.cs

@@ -19,7 +19,7 @@ public interface IUserPhoneNumberStore<TUser> : IUserStore<TUser> where TUser :
     /// <param name="phoneNumber">The telephone number to set.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The <see cref="Task"/> that represents the asynchronous operation.</returns>
-    Task SetPhoneNumberAsync(TUser user, string phoneNumber, CancellationToken cancellationToken);
+    Task SetPhoneNumberAsync(TUser user, string? phoneNumber, CancellationToken cancellationToken);
 
     /// <summary>
     /// Gets the telephone number, if any, for the specified <paramref name="user"/>.
@@ -27,7 +27,7 @@ public interface IUserPhoneNumberStore<TUser> : IUserStore<TUser> where TUser :
     /// <param name="user">The user whose telephone number should be retrieved.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The <see cref="Task"/> that represents the asynchronous operation, containing the user's telephone number, if any.</returns>
-    Task<string> GetPhoneNumberAsync(TUser user, CancellationToken cancellationToken);
+    Task<string?> GetPhoneNumberAsync(TUser user, CancellationToken cancellationToken);
 
     /// <summary>
     /// Gets a flag indicating whether the specified <paramref name="user"/>'s telephone number has been confirmed.

+ 1 - 1
src/Identity/Extensions.Core/src/IUserSecurityStampStore.cs

@@ -27,5 +27,5 @@ public interface IUserSecurityStampStore<TUser> : IUserStore<TUser> where TUser
     /// <param name="user">The user whose security stamp should be set.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The <see cref="Task"/> that represents the asynchronous operation, containing the security stamp for the specified <paramref name="user"/>.</returns>
-    Task<string> GetSecurityStampAsync(TUser user, CancellationToken cancellationToken);
+    Task<string?> GetSecurityStampAsync(TUser user, CancellationToken cancellationToken);
 }

+ 6 - 6
src/Identity/Extensions.Core/src/IUserStore.cs

@@ -27,7 +27,7 @@ public interface IUserStore<TUser> : IDisposable where TUser : class
     /// <param name="user">The user whose name should be retrieved.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The <see cref="Task"/> that represents the asynchronous operation, containing the name for the specified <paramref name="user"/>.</returns>
-    Task<string> GetUserNameAsync(TUser user, CancellationToken cancellationToken);
+    Task<string?> GetUserNameAsync(TUser user, CancellationToken cancellationToken);
 
     /// <summary>
     /// Sets the given <paramref name="userName" /> for the specified <paramref name="user"/>.
@@ -36,7 +36,7 @@ public interface IUserStore<TUser> : IDisposable where TUser : class
     /// <param name="userName">The user name to set.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The <see cref="Task"/> that represents the asynchronous operation.</returns>
-    Task SetUserNameAsync(TUser user, string userName, CancellationToken cancellationToken);
+    Task SetUserNameAsync(TUser user, string? userName, CancellationToken cancellationToken);
 
     /// <summary>
     /// Gets the normalized user name for the specified <paramref name="user"/>.
@@ -44,7 +44,7 @@ public interface IUserStore<TUser> : IDisposable where TUser : class
     /// <param name="user">The user whose normalized name should be retrieved.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The <see cref="Task"/> that represents the asynchronous operation, containing the normalized user name for the specified <paramref name="user"/>.</returns>
-    Task<string> GetNormalizedUserNameAsync(TUser user, CancellationToken cancellationToken);
+    Task<string?> GetNormalizedUserNameAsync(TUser user, CancellationToken cancellationToken);
 
     /// <summary>
     /// Sets the given normalized name for the specified <paramref name="user"/>.
@@ -53,7 +53,7 @@ public interface IUserStore<TUser> : IDisposable where TUser : class
     /// <param name="normalizedName">The normalized name to set.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The <see cref="Task"/> that represents the asynchronous operation.</returns>
-    Task SetNormalizedUserNameAsync(TUser user, string normalizedName, CancellationToken cancellationToken);
+    Task SetNormalizedUserNameAsync(TUser user, string? normalizedName, CancellationToken cancellationToken);
 
     /// <summary>
     /// Creates the specified <paramref name="user"/> in the user store.
@@ -87,7 +87,7 @@ public interface IUserStore<TUser> : IDisposable where TUser : class
     /// <returns>
     /// The <see cref="Task"/> that represents the asynchronous operation, containing the user matching the specified <paramref name="userId"/> if it exists.
     /// </returns>
-    Task<TUser> FindByIdAsync(string userId, CancellationToken cancellationToken);
+    Task<TUser?> FindByIdAsync(string userId, CancellationToken cancellationToken);
 
     /// <summary>
     /// Finds and returns a user, if any, who has the specified normalized user name.
@@ -97,5 +97,5 @@ public interface IUserStore<TUser> : IDisposable where TUser : class
     /// <returns>
     /// The <see cref="Task"/> that represents the asynchronous operation, containing the user matching the specified <paramref name="normalizedUserName"/> if it exists.
     /// </returns>
-    Task<TUser> FindByNameAsync(string normalizedUserName, CancellationToken cancellationToken);
+    Task<TUser?> FindByNameAsync(string normalizedUserName, CancellationToken cancellationToken);
 }

+ 3 - 3
src/Identity/Extensions.Core/src/IdentityBuilder.cs

@@ -39,7 +39,7 @@ public class IdentityBuilder
     /// <value>
     /// The <see cref="Type"/> used for users.
     /// </value>
-    public Type UserType { get; private set; }
+    public Type UserType { get; }
 
     /// <summary>
     /// Gets the <see cref="Type"/> used for roles.
@@ -47,7 +47,7 @@ public class IdentityBuilder
     /// <value>
     /// The <see cref="Type"/> used for roles.
     /// </value>
-    public Type RoleType { get; private set; }
+    public Type? RoleType { get; private set; }
 
     /// <summary>
     /// Gets the <see cref="IServiceCollection"/> services are attached to.
@@ -55,7 +55,7 @@ public class IdentityBuilder
     /// <value>
     /// The <see cref="IServiceCollection"/> services are attached to.
     /// </value>
-    public IServiceCollection Services { get; private set; }
+    public IServiceCollection Services { get; }
 
     private IdentityBuilder AddScoped(Type serviceType, Type concreteType)
     {

+ 2 - 2
src/Identity/Extensions.Core/src/IdentityError.cs

@@ -14,7 +14,7 @@ public class IdentityError
     /// <value>
     /// The code for this error.
     /// </value>
-    public string Code { get; set; }
+    public string Code { get; set; } = default!;
 
     /// <summary>
     /// Gets or sets the description for this error.
@@ -22,5 +22,5 @@ public class IdentityError
     /// <value>
     /// The description for this error.
     /// </value>
-    public string Description { get; set; }
+    public string Description { get; set; } = default!;
 }

+ 3 - 3
src/Identity/Extensions.Core/src/IdentityErrorDescriber.cs

@@ -96,7 +96,7 @@ public class IdentityErrorDescriber
     /// </summary>
     /// <param name="userName">The user name that is invalid.</param>
     /// <returns>An <see cref="IdentityError"/> indicating the specified user <paramref name="userName"/> is invalid.</returns>
-    public virtual IdentityError InvalidUserName(string userName)
+    public virtual IdentityError InvalidUserName(string? userName)
     {
         return new IdentityError
         {
@@ -110,7 +110,7 @@ public class IdentityErrorDescriber
     /// </summary>
     /// <param name="email">The email that is invalid.</param>
     /// <returns>An <see cref="IdentityError"/> indicating the specified <paramref name="email"/> is invalid.</returns>
-    public virtual IdentityError InvalidEmail(string email)
+    public virtual IdentityError InvalidEmail(string? email)
     {
         return new IdentityError
         {
@@ -152,7 +152,7 @@ public class IdentityErrorDescriber
     /// </summary>
     /// <param name="role">The invalid role.</param>
     /// <returns>An <see cref="IdentityError"/> indicating the specific role <paramref name="role"/> name is invalid.</returns>
-    public virtual IdentityError InvalidRoleName(string role)
+    public virtual IdentityError InvalidRoleName(string? role)
     {
         return new IdentityError
         {

+ 0 - 1
src/Identity/Extensions.Core/src/Microsoft.Extensions.Identity.Core.csproj

@@ -7,7 +7,6 @@
     <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;identity;membership</PackageTags>
-    <Nullable>disable</Nullable>
   </PropertyGroup>
 
   <ItemGroup>

+ 1 - 1
src/Identity/Extensions.Core/src/PasswordHasher.cs

@@ -39,7 +39,7 @@ public class PasswordHasher<TUser> : IPasswordHasher<TUser> where TUser : class
     /// Creates a new instance of <see cref="PasswordHasher{TUser}"/>.
     /// </summary>
     /// <param name="optionsAccessor">The options for this instance.</param>
-    public PasswordHasher(IOptions<PasswordHasherOptions> optionsAccessor = null)
+    public PasswordHasher(IOptions<PasswordHasherOptions>? optionsAccessor = null)
     {
         var options = optionsAccessor?.Value ?? new PasswordHasherOptions();
 

+ 2 - 2
src/Identity/Extensions.Core/src/PasswordValidator.cs

@@ -18,7 +18,7 @@ public class PasswordValidator<TUser> : IPasswordValidator<TUser> where TUser :
     /// Constructions a new instance of <see cref="PasswordValidator{TUser}"/>.
     /// </summary>
     /// <param name="errors">The <see cref="IdentityErrorDescriber"/> to retrieve error text from.</param>
-    public PasswordValidator(IdentityErrorDescriber errors = null)
+    public PasswordValidator(IdentityErrorDescriber? errors = null)
     {
         Describer = errors ?? new IdentityErrorDescriber();
     }
@@ -36,7 +36,7 @@ public class PasswordValidator<TUser> : IPasswordValidator<TUser> where TUser :
     /// <param name="user">The user whose password should be validated.</param>
     /// <param name="password">The password supplied for validation</param>
     /// <returns>The task object representing the asynchronous operation.</returns>
-    public virtual Task<IdentityResult> ValidateAsync(UserManager<TUser> manager, TUser user, string password)
+    public virtual Task<IdentityResult> ValidateAsync(UserManager<TUser> manager, TUser user, string? password)
     {
         if (password == null)
         {

+ 2 - 3
src/Identity/Extensions.Core/src/PrincipalExtensions.cs

@@ -14,14 +14,13 @@ public static class PrincipalExtensions
     /// <param name="principal">The <see cref="ClaimsPrincipal"/> instance this method extends.</param>
     /// <param name="claimType">The claim type whose first value should be returned.</param>
     /// <returns>The value of the first instance of the specified claim type, or null if the claim is not present.</returns>
-    public static string FindFirstValue(this ClaimsPrincipal principal, string claimType)
+    public static string? FindFirstValue(this ClaimsPrincipal principal, string claimType)
     {
         if (principal == null)
         {
             throw new ArgumentNullException(nameof(principal));
         }
         var claim = principal.FindFirst(claimType);
-        return claim != null ? claim.Value : null;
+        return claim?.Value;
     }
-
 }

+ 917 - 0
src/Identity/Extensions.Core/src/PublicAPI.Unshipped.txt

@@ -1 +1,918 @@
 #nullable enable
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.TotpSecurityStampBasedTokenProvider<TUser>.CanGenerateTwoFactorTokenAsync(Microsoft.AspNetCore.Identity.UserManager<TUser> manager, TUser user) -> System.Threading.Tasks.Task<bool>
+*REMOVED*~const Microsoft.AspNetCore.Identity.UserManager<TUser>.ChangePhoneNumberTokenPurpose = "ChangePhoneNumber" -> string
+*REMOVED*~const Microsoft.AspNetCore.Identity.UserManager<TUser>.ConfirmEmailTokenPurpose = "EmailConfirmation" -> string
+*REMOVED*~const Microsoft.AspNetCore.Identity.UserManager<TUser>.ResetPasswordTokenPurpose = "ResetPassword" -> string
+*REMOVED*~Microsoft.AspNetCore.Identity.ClaimsIdentityOptions.EmailClaimType.get -> string
+*REMOVED*~Microsoft.AspNetCore.Identity.ClaimsIdentityOptions.EmailClaimType.set -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.ClaimsIdentityOptions.RoleClaimType.get -> string
+*REMOVED*~Microsoft.AspNetCore.Identity.ClaimsIdentityOptions.RoleClaimType.set -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.ClaimsIdentityOptions.SecurityStampClaimType.get -> string
+*REMOVED*~Microsoft.AspNetCore.Identity.ClaimsIdentityOptions.SecurityStampClaimType.set -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.ClaimsIdentityOptions.UserIdClaimType.get -> string
+*REMOVED*~Microsoft.AspNetCore.Identity.ClaimsIdentityOptions.UserIdClaimType.set -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.ClaimsIdentityOptions.UserNameClaimType.get -> string
+*REMOVED*~Microsoft.AspNetCore.Identity.ClaimsIdentityOptions.UserNameClaimType.set -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.DefaultPersonalDataProtector.DefaultPersonalDataProtector(Microsoft.AspNetCore.Identity.ILookupProtectorKeyRing keyRing, Microsoft.AspNetCore.Identity.ILookupProtector protector) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.DefaultUserConfirmation<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.EmailTokenProvider<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.IdentityBuilder.IdentityBuilder(System.Type user, Microsoft.Extensions.DependencyInjection.IServiceCollection services) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.IdentityBuilder.IdentityBuilder(System.Type user, System.Type role, Microsoft.Extensions.DependencyInjection.IServiceCollection services) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.IdentityBuilder.RoleType.get -> System.Type
+*REMOVED*~Microsoft.AspNetCore.Identity.IdentityBuilder.Services.get -> Microsoft.Extensions.DependencyInjection.IServiceCollection
+*REMOVED*~Microsoft.AspNetCore.Identity.IdentityBuilder.UserType.get -> System.Type
+*REMOVED*~Microsoft.AspNetCore.Identity.IdentityError.Code.get -> string
+*REMOVED*~Microsoft.AspNetCore.Identity.IdentityError.Code.set -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.IdentityError.Description.get -> string
+*REMOVED*~Microsoft.AspNetCore.Identity.IdentityError.Description.set -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.IdentityOptions.ClaimsIdentity.get -> Microsoft.AspNetCore.Identity.ClaimsIdentityOptions
+*REMOVED*~Microsoft.AspNetCore.Identity.IdentityOptions.ClaimsIdentity.set -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.IdentityOptions.Lockout.get -> Microsoft.AspNetCore.Identity.LockoutOptions
+*REMOVED*~Microsoft.AspNetCore.Identity.IdentityOptions.Lockout.set -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.IdentityOptions.Password.get -> Microsoft.AspNetCore.Identity.PasswordOptions
+*REMOVED*~Microsoft.AspNetCore.Identity.IdentityOptions.Password.set -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.IdentityOptions.SignIn.get -> Microsoft.AspNetCore.Identity.SignInOptions
+*REMOVED*~Microsoft.AspNetCore.Identity.IdentityOptions.SignIn.set -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.IdentityOptions.Stores.get -> Microsoft.AspNetCore.Identity.StoreOptions
+*REMOVED*~Microsoft.AspNetCore.Identity.IdentityOptions.Stores.set -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.IdentityOptions.Tokens.get -> Microsoft.AspNetCore.Identity.TokenOptions
+*REMOVED*~Microsoft.AspNetCore.Identity.IdentityOptions.Tokens.set -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.IdentityOptions.User.get -> Microsoft.AspNetCore.Identity.UserOptions
+*REMOVED*~Microsoft.AspNetCore.Identity.IdentityOptions.User.set -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.IdentityResult.Errors.get -> System.Collections.Generic.IEnumerable<Microsoft.AspNetCore.Identity.IdentityError>
+*REMOVED*~Microsoft.AspNetCore.Identity.ILookupNormalizer.NormalizeEmail(string email) -> string
+*REMOVED*~Microsoft.AspNetCore.Identity.ILookupNormalizer.NormalizeName(string name) -> string
+*REMOVED*~Microsoft.AspNetCore.Identity.ILookupProtector.Protect(string keyId, string data) -> string
+*REMOVED*~Microsoft.AspNetCore.Identity.ILookupProtector.Unprotect(string keyId, string data) -> string
+*REMOVED*~Microsoft.AspNetCore.Identity.ILookupProtectorKeyRing.CurrentKeyId.get -> string
+*REMOVED*~Microsoft.AspNetCore.Identity.ILookupProtectorKeyRing.GetAllKeyIds() -> System.Collections.Generic.IEnumerable<string>
+*REMOVED*~Microsoft.AspNetCore.Identity.ILookupProtectorKeyRing.this[string keyId].get -> string
+*REMOVED*~Microsoft.AspNetCore.Identity.IPasswordHasher<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.IPasswordHasher<TUser>.HashPassword(TUser user, string password) -> string
+*REMOVED*~Microsoft.AspNetCore.Identity.IPasswordHasher<TUser>.VerifyHashedPassword(TUser user, string hashedPassword, string providedPassword) -> Microsoft.AspNetCore.Identity.PasswordVerificationResult
+*REMOVED*~Microsoft.AspNetCore.Identity.IPasswordValidator<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.IPasswordValidator<TUser>.ValidateAsync(Microsoft.AspNetCore.Identity.UserManager<TUser> manager, TUser user, string password) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~Microsoft.AspNetCore.Identity.IPersonalDataProtector.Protect(string data) -> string
+*REMOVED*~Microsoft.AspNetCore.Identity.IPersonalDataProtector.Unprotect(string data) -> string
+*REMOVED*~Microsoft.AspNetCore.Identity.IProtectedUserStore<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.IQueryableRoleStore<TRole>
+*REMOVED*~Microsoft.AspNetCore.Identity.IQueryableRoleStore<TRole>.Roles.get -> System.Linq.IQueryable<TRole>
+*REMOVED*~Microsoft.AspNetCore.Identity.IQueryableUserStore<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.IQueryableUserStore<TUser>.Users.get -> System.Linq.IQueryable<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.IRoleClaimStore<TRole>
+*REMOVED*~Microsoft.AspNetCore.Identity.IRoleClaimStore<TRole>.AddClaimAsync(TRole role, System.Security.Claims.Claim claim, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~Microsoft.AspNetCore.Identity.IRoleClaimStore<TRole>.GetClaimsAsync(TRole role, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<System.Security.Claims.Claim>>
+*REMOVED*~Microsoft.AspNetCore.Identity.IRoleClaimStore<TRole>.RemoveClaimAsync(TRole role, System.Security.Claims.Claim claim, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~Microsoft.AspNetCore.Identity.IRoleStore<TRole>
+*REMOVED*~Microsoft.AspNetCore.Identity.IRoleStore<TRole>.CreateAsync(TRole role, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~Microsoft.AspNetCore.Identity.IRoleStore<TRole>.DeleteAsync(TRole role, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~Microsoft.AspNetCore.Identity.IRoleStore<TRole>.FindByIdAsync(string roleId, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TRole>
+*REMOVED*~Microsoft.AspNetCore.Identity.IRoleStore<TRole>.FindByNameAsync(string normalizedRoleName, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TRole>
+*REMOVED*~Microsoft.AspNetCore.Identity.IRoleStore<TRole>.GetNormalizedRoleNameAsync(TRole role, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<string>
+*REMOVED*~Microsoft.AspNetCore.Identity.IRoleStore<TRole>.GetRoleIdAsync(TRole role, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<string>
+*REMOVED*~Microsoft.AspNetCore.Identity.IRoleStore<TRole>.GetRoleNameAsync(TRole role, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<string>
+*REMOVED*~Microsoft.AspNetCore.Identity.IRoleStore<TRole>.SetNormalizedRoleNameAsync(TRole role, string normalizedName, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task
+*REMOVED*~Microsoft.AspNetCore.Identity.IRoleStore<TRole>.SetRoleNameAsync(TRole role, string roleName, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task
+*REMOVED*~Microsoft.AspNetCore.Identity.IRoleStore<TRole>.UpdateAsync(TRole role, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~Microsoft.AspNetCore.Identity.IRoleValidator<TRole>
+*REMOVED*~Microsoft.AspNetCore.Identity.IRoleValidator<TRole>.ValidateAsync(Microsoft.AspNetCore.Identity.RoleManager<TRole> manager, TRole role) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserAuthenticationTokenStore<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserAuthenticationTokenStore<TUser>.GetTokenAsync(TUser user, string loginProvider, string name, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<string>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserAuthenticationTokenStore<TUser>.RemoveTokenAsync(TUser user, string loginProvider, string name, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserAuthenticationTokenStore<TUser>.SetTokenAsync(TUser user, string loginProvider, string name, string value, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserAuthenticatorKeyStore<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserAuthenticatorKeyStore<TUser>.GetAuthenticatorKeyAsync(TUser user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<string>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserAuthenticatorKeyStore<TUser>.SetAuthenticatorKeyAsync(TUser user, string key, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserClaimsPrincipalFactory<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserClaimsPrincipalFactory<TUser>.CreateAsync(TUser user) -> System.Threading.Tasks.Task<System.Security.Claims.ClaimsPrincipal>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserClaimStore<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserClaimStore<TUser>.AddClaimsAsync(TUser user, System.Collections.Generic.IEnumerable<System.Security.Claims.Claim> claims, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserClaimStore<TUser>.GetClaimsAsync(TUser user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<System.Security.Claims.Claim>>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserClaimStore<TUser>.GetUsersForClaimAsync(System.Security.Claims.Claim claim, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<TUser>>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserClaimStore<TUser>.RemoveClaimsAsync(TUser user, System.Collections.Generic.IEnumerable<System.Security.Claims.Claim> claims, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserClaimStore<TUser>.ReplaceClaimAsync(TUser user, System.Security.Claims.Claim claim, System.Security.Claims.Claim newClaim, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserConfirmation<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserConfirmation<TUser>.IsConfirmedAsync(Microsoft.AspNetCore.Identity.UserManager<TUser> manager, TUser user) -> System.Threading.Tasks.Task<bool>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserEmailStore<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserEmailStore<TUser>.FindByEmailAsync(string normalizedEmail, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserEmailStore<TUser>.GetEmailAsync(TUser user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<string>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserEmailStore<TUser>.GetEmailConfirmedAsync(TUser user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<bool>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserEmailStore<TUser>.GetNormalizedEmailAsync(TUser user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<string>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserEmailStore<TUser>.SetEmailAsync(TUser user, string email, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserEmailStore<TUser>.SetEmailConfirmedAsync(TUser user, bool confirmed, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserEmailStore<TUser>.SetNormalizedEmailAsync(TUser user, string normalizedEmail, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserLockoutStore<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserLockoutStore<TUser>.GetAccessFailedCountAsync(TUser user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<int>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserLockoutStore<TUser>.GetLockoutEnabledAsync(TUser user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<bool>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserLockoutStore<TUser>.GetLockoutEndDateAsync(TUser user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<System.DateTimeOffset?>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserLockoutStore<TUser>.IncrementAccessFailedCountAsync(TUser user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<int>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserLockoutStore<TUser>.ResetAccessFailedCountAsync(TUser user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserLockoutStore<TUser>.SetLockoutEnabledAsync(TUser user, bool enabled, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserLockoutStore<TUser>.SetLockoutEndDateAsync(TUser user, System.DateTimeOffset? lockoutEnd, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserLoginStore<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserLoginStore<TUser>.AddLoginAsync(TUser user, Microsoft.AspNetCore.Identity.UserLoginInfo login, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserLoginStore<TUser>.FindByLoginAsync(string loginProvider, string providerKey, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserLoginStore<TUser>.GetLoginsAsync(TUser user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<Microsoft.AspNetCore.Identity.UserLoginInfo>>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserLoginStore<TUser>.RemoveLoginAsync(TUser user, string loginProvider, string providerKey, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserPasswordStore<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserPasswordStore<TUser>.GetPasswordHashAsync(TUser user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<string>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserPasswordStore<TUser>.HasPasswordAsync(TUser user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<bool>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserPasswordStore<TUser>.SetPasswordHashAsync(TUser user, string passwordHash, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserPhoneNumberStore<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserPhoneNumberStore<TUser>.GetPhoneNumberAsync(TUser user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<string>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserPhoneNumberStore<TUser>.GetPhoneNumberConfirmedAsync(TUser user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<bool>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserPhoneNumberStore<TUser>.SetPhoneNumberAsync(TUser user, string phoneNumber, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserPhoneNumberStore<TUser>.SetPhoneNumberConfirmedAsync(TUser user, bool confirmed, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserRoleStore<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserRoleStore<TUser>.AddToRoleAsync(TUser user, string roleName, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserRoleStore<TUser>.GetRolesAsync(TUser user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<string>>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserRoleStore<TUser>.GetUsersInRoleAsync(string roleName, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<TUser>>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserRoleStore<TUser>.IsInRoleAsync(TUser user, string roleName, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<bool>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserRoleStore<TUser>.RemoveFromRoleAsync(TUser user, string roleName, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserSecurityStampStore<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserSecurityStampStore<TUser>.GetSecurityStampAsync(TUser user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<string>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserSecurityStampStore<TUser>.SetSecurityStampAsync(TUser user, string stamp, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserStore<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserStore<TUser>.CreateAsync(TUser user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserStore<TUser>.DeleteAsync(TUser user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserStore<TUser>.FindByIdAsync(string userId, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserStore<TUser>.FindByNameAsync(string normalizedUserName, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserStore<TUser>.GetNormalizedUserNameAsync(TUser user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<string>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserStore<TUser>.GetUserIdAsync(TUser user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<string>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserStore<TUser>.GetUserNameAsync(TUser user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<string>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserStore<TUser>.SetNormalizedUserNameAsync(TUser user, string normalizedName, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserStore<TUser>.SetUserNameAsync(TUser user, string userName, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserStore<TUser>.UpdateAsync(TUser user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserTwoFactorRecoveryCodeStore<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserTwoFactorRecoveryCodeStore<TUser>.CountCodesAsync(TUser user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<int>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserTwoFactorRecoveryCodeStore<TUser>.RedeemCodeAsync(TUser user, string code, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<bool>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserTwoFactorRecoveryCodeStore<TUser>.ReplaceCodesAsync(TUser user, System.Collections.Generic.IEnumerable<string> recoveryCodes, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserTwoFactorStore<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserTwoFactorStore<TUser>.GetTwoFactorEnabledAsync(TUser user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<bool>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserTwoFactorStore<TUser>.SetTwoFactorEnabledAsync(TUser user, bool enabled, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserTwoFactorTokenProvider<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserTwoFactorTokenProvider<TUser>.CanGenerateTwoFactorTokenAsync(Microsoft.AspNetCore.Identity.UserManager<TUser> manager, TUser user) -> System.Threading.Tasks.Task<bool>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserTwoFactorTokenProvider<TUser>.GenerateAsync(string purpose, Microsoft.AspNetCore.Identity.UserManager<TUser> manager, TUser user) -> System.Threading.Tasks.Task<string>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserTwoFactorTokenProvider<TUser>.ValidateAsync(string purpose, string token, Microsoft.AspNetCore.Identity.UserManager<TUser> manager, TUser user) -> System.Threading.Tasks.Task<bool>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserValidator<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.IUserValidator<TUser>.ValidateAsync(Microsoft.AspNetCore.Identity.UserManager<TUser> manager, TUser user) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~Microsoft.AspNetCore.Identity.PasswordHasher<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.PasswordHasher<TUser>.PasswordHasher(Microsoft.Extensions.Options.IOptions<Microsoft.AspNetCore.Identity.PasswordHasherOptions> optionsAccessor = null) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.PasswordValidator<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.PasswordValidator<TUser>.Describer.get -> Microsoft.AspNetCore.Identity.IdentityErrorDescriber
+*REMOVED*~Microsoft.AspNetCore.Identity.PasswordValidator<TUser>.PasswordValidator(Microsoft.AspNetCore.Identity.IdentityErrorDescriber errors = null) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.PhoneNumberTokenProvider<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.RoleManager<TRole>
+*REMOVED*~Microsoft.AspNetCore.Identity.RoleManager<TRole>.ErrorDescriber.get -> Microsoft.AspNetCore.Identity.IdentityErrorDescriber
+*REMOVED*~Microsoft.AspNetCore.Identity.RoleManager<TRole>.ErrorDescriber.set -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.RoleManager<TRole>.KeyNormalizer.get -> Microsoft.AspNetCore.Identity.ILookupNormalizer
+*REMOVED*~Microsoft.AspNetCore.Identity.RoleManager<TRole>.KeyNormalizer.set -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.RoleManager<TRole>.RoleManager(Microsoft.AspNetCore.Identity.IRoleStore<TRole> store, System.Collections.Generic.IEnumerable<Microsoft.AspNetCore.Identity.IRoleValidator<TRole>> roleValidators, Microsoft.AspNetCore.Identity.ILookupNormalizer keyNormalizer, Microsoft.AspNetCore.Identity.IdentityErrorDescriber errors, Microsoft.Extensions.Logging.ILogger<Microsoft.AspNetCore.Identity.RoleManager<TRole>> logger) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.RoleManager<TRole>.RoleValidators.get -> System.Collections.Generic.IList<Microsoft.AspNetCore.Identity.IRoleValidator<TRole>>
+*REMOVED*~Microsoft.AspNetCore.Identity.RoleManager<TRole>.Store.get -> Microsoft.AspNetCore.Identity.IRoleStore<TRole>
+*REMOVED*~Microsoft.AspNetCore.Identity.RoleValidator<TRole>
+*REMOVED*~Microsoft.AspNetCore.Identity.RoleValidator<TRole>.RoleValidator(Microsoft.AspNetCore.Identity.IdentityErrorDescriber errors = null) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.TokenOptions.AuthenticatorIssuer.get -> string
+*REMOVED*~Microsoft.AspNetCore.Identity.TokenOptions.AuthenticatorIssuer.set -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.TokenOptions.AuthenticatorTokenProvider.get -> string
+*REMOVED*~Microsoft.AspNetCore.Identity.TokenOptions.AuthenticatorTokenProvider.set -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.TokenOptions.ChangeEmailTokenProvider.get -> string
+*REMOVED*~Microsoft.AspNetCore.Identity.TokenOptions.ChangeEmailTokenProvider.set -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.TokenOptions.ChangePhoneNumberTokenProvider.get -> string
+*REMOVED*~Microsoft.AspNetCore.Identity.TokenOptions.ChangePhoneNumberTokenProvider.set -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.TokenOptions.EmailConfirmationTokenProvider.get -> string
+*REMOVED*~Microsoft.AspNetCore.Identity.TokenOptions.EmailConfirmationTokenProvider.set -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.TokenOptions.PasswordResetTokenProvider.get -> string
+*REMOVED*~Microsoft.AspNetCore.Identity.TokenOptions.PasswordResetTokenProvider.set -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.TokenOptions.ProviderMap.get -> System.Collections.Generic.Dictionary<string, Microsoft.AspNetCore.Identity.TokenProviderDescriptor>
+*REMOVED*~Microsoft.AspNetCore.Identity.TokenOptions.ProviderMap.set -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.TokenProviderDescriptor.ProviderInstance.get -> object
+*REMOVED*~Microsoft.AspNetCore.Identity.TokenProviderDescriptor.ProviderInstance.set -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.TokenProviderDescriptor.ProviderType.get -> System.Type
+*REMOVED*~Microsoft.AspNetCore.Identity.TokenProviderDescriptor.TokenProviderDescriptor(System.Type type) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.TotpSecurityStampBasedTokenProvider<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.UpperInvariantLookupNormalizer.NormalizeEmail(string email) -> string
+*REMOVED*~Microsoft.AspNetCore.Identity.UpperInvariantLookupNormalizer.NormalizeName(string name) -> string
+*REMOVED*~Microsoft.AspNetCore.Identity.UserClaimsPrincipalFactory<TUser, TRole>
+*REMOVED*~Microsoft.AspNetCore.Identity.UserClaimsPrincipalFactory<TUser, TRole>.RoleManager.get -> Microsoft.AspNetCore.Identity.RoleManager<TRole>
+*REMOVED*~Microsoft.AspNetCore.Identity.UserClaimsPrincipalFactory<TUser, TRole>.UserClaimsPrincipalFactory(Microsoft.AspNetCore.Identity.UserManager<TUser> userManager, Microsoft.AspNetCore.Identity.RoleManager<TRole> roleManager, Microsoft.Extensions.Options.IOptions<Microsoft.AspNetCore.Identity.IdentityOptions> options) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.UserClaimsPrincipalFactory<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.UserClaimsPrincipalFactory<TUser>.Options.get -> Microsoft.AspNetCore.Identity.IdentityOptions
+*REMOVED*~Microsoft.AspNetCore.Identity.UserClaimsPrincipalFactory<TUser>.UserClaimsPrincipalFactory(Microsoft.AspNetCore.Identity.UserManager<TUser> userManager, Microsoft.Extensions.Options.IOptions<Microsoft.AspNetCore.Identity.IdentityOptions> optionsAccessor) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.UserClaimsPrincipalFactory<TUser>.UserManager.get -> Microsoft.AspNetCore.Identity.UserManager<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.UserLoginInfo.LoginProvider.get -> string
+*REMOVED*~Microsoft.AspNetCore.Identity.UserLoginInfo.LoginProvider.set -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.UserLoginInfo.ProviderDisplayName.get -> string
+*REMOVED*~Microsoft.AspNetCore.Identity.UserLoginInfo.ProviderDisplayName.set -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.UserLoginInfo.ProviderKey.get -> string
+*REMOVED*~Microsoft.AspNetCore.Identity.UserLoginInfo.ProviderKey.set -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.UserLoginInfo.UserLoginInfo(string loginProvider, string providerKey, string displayName) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.UserManager<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.UserManager<TUser>.ErrorDescriber.get -> Microsoft.AspNetCore.Identity.IdentityErrorDescriber
+*REMOVED*~Microsoft.AspNetCore.Identity.UserManager<TUser>.ErrorDescriber.set -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.UserManager<TUser>.KeyNormalizer.get -> Microsoft.AspNetCore.Identity.ILookupNormalizer
+*REMOVED*~Microsoft.AspNetCore.Identity.UserManager<TUser>.KeyNormalizer.set -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.UserManager<TUser>.Options.get -> Microsoft.AspNetCore.Identity.IdentityOptions
+*REMOVED*~Microsoft.AspNetCore.Identity.UserManager<TUser>.Options.set -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.UserManager<TUser>.PasswordHasher.get -> Microsoft.AspNetCore.Identity.IPasswordHasher<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.UserManager<TUser>.PasswordHasher.set -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.UserManager<TUser>.PasswordValidators.get -> System.Collections.Generic.IList<Microsoft.AspNetCore.Identity.IPasswordValidator<TUser>>
+*REMOVED*~Microsoft.AspNetCore.Identity.UserManager<TUser>.Store.get -> Microsoft.AspNetCore.Identity.IUserStore<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.UserManager<TUser>.Store.set -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.UserManager<TUser>.UserManager(Microsoft.AspNetCore.Identity.IUserStore<TUser> store, Microsoft.Extensions.Options.IOptions<Microsoft.AspNetCore.Identity.IdentityOptions> optionsAccessor, Microsoft.AspNetCore.Identity.IPasswordHasher<TUser> passwordHasher, System.Collections.Generic.IEnumerable<Microsoft.AspNetCore.Identity.IUserValidator<TUser>> userValidators, System.Collections.Generic.IEnumerable<Microsoft.AspNetCore.Identity.IPasswordValidator<TUser>> passwordValidators, Microsoft.AspNetCore.Identity.ILookupNormalizer keyNormalizer, Microsoft.AspNetCore.Identity.IdentityErrorDescriber errors, System.IServiceProvider services, Microsoft.Extensions.Logging.ILogger<Microsoft.AspNetCore.Identity.UserManager<TUser>> logger) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.UserManager<TUser>.UserValidators.get -> System.Collections.Generic.IList<Microsoft.AspNetCore.Identity.IUserValidator<TUser>>
+*REMOVED*~Microsoft.AspNetCore.Identity.UserManager<TUser>.ValidatePasswordAsync(TUser user, string password) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~Microsoft.AspNetCore.Identity.UserManager<TUser>.ValidateUserAsync(TUser user) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~Microsoft.AspNetCore.Identity.UserOptions.AllowedUserNameCharacters.get -> string
+*REMOVED*~Microsoft.AspNetCore.Identity.UserOptions.AllowedUserNameCharacters.set -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.UserValidator<TUser>
+*REMOVED*~Microsoft.AspNetCore.Identity.UserValidator<TUser>.Describer.get -> Microsoft.AspNetCore.Identity.IdentityErrorDescriber
+*REMOVED*~Microsoft.AspNetCore.Identity.UserValidator<TUser>.UserValidator(Microsoft.AspNetCore.Identity.IdentityErrorDescriber errors = null) -> void
+*REMOVED*~override Microsoft.AspNetCore.Identity.EmailTokenProvider<TUser>.CanGenerateTwoFactorTokenAsync(Microsoft.AspNetCore.Identity.UserManager<TUser> manager, TUser user) -> System.Threading.Tasks.Task<bool>
+*REMOVED*~override Microsoft.AspNetCore.Identity.EmailTokenProvider<TUser>.GetUserModifierAsync(string purpose, Microsoft.AspNetCore.Identity.UserManager<TUser> manager, TUser user) -> System.Threading.Tasks.Task<string>
+*REMOVED*~override Microsoft.AspNetCore.Identity.IdentityResult.ToString() -> string
+*REMOVED*~override Microsoft.AspNetCore.Identity.PhoneNumberTokenProvider<TUser>.CanGenerateTwoFactorTokenAsync(Microsoft.AspNetCore.Identity.UserManager<TUser> manager, TUser user) -> System.Threading.Tasks.Task<bool>
+*REMOVED*~override Microsoft.AspNetCore.Identity.PhoneNumberTokenProvider<TUser>.GetUserModifierAsync(string purpose, Microsoft.AspNetCore.Identity.UserManager<TUser> manager, TUser user) -> System.Threading.Tasks.Task<string>
+*REMOVED*~override Microsoft.AspNetCore.Identity.SignInResult.ToString() -> string
+*REMOVED*~override Microsoft.AspNetCore.Identity.UserClaimsPrincipalFactory<TUser, TRole>.GenerateClaimsAsync(TUser user) -> System.Threading.Tasks.Task<System.Security.Claims.ClaimsIdentity>
+*REMOVED*~static Microsoft.AspNetCore.Identity.IdentityResult.Failed(params Microsoft.AspNetCore.Identity.IdentityError[] errors) -> Microsoft.AspNetCore.Identity.IdentityResult
+*REMOVED*~static Microsoft.AspNetCore.Identity.IdentityResult.Success.get -> Microsoft.AspNetCore.Identity.IdentityResult
+*REMOVED*~static Microsoft.AspNetCore.Identity.SignInResult.Failed.get -> Microsoft.AspNetCore.Identity.SignInResult
+*REMOVED*~static Microsoft.AspNetCore.Identity.SignInResult.LockedOut.get -> Microsoft.AspNetCore.Identity.SignInResult
+*REMOVED*~static Microsoft.AspNetCore.Identity.SignInResult.NotAllowed.get -> Microsoft.AspNetCore.Identity.SignInResult
+*REMOVED*~static Microsoft.AspNetCore.Identity.SignInResult.Success.get -> Microsoft.AspNetCore.Identity.SignInResult
+*REMOVED*~static Microsoft.AspNetCore.Identity.SignInResult.TwoFactorRequired.get -> Microsoft.AspNetCore.Identity.SignInResult
+*REMOVED*~static Microsoft.AspNetCore.Identity.UserManager<TUser>.GetChangeEmailTokenPurpose(string newEmail) -> string
+*REMOVED*~static Microsoft.Extensions.DependencyInjection.IdentityServiceCollectionExtensions.AddIdentityCore<TUser>(this Microsoft.Extensions.DependencyInjection.IServiceCollection services) -> Microsoft.AspNetCore.Identity.IdentityBuilder
+*REMOVED*~static Microsoft.Extensions.DependencyInjection.IdentityServiceCollectionExtensions.AddIdentityCore<TUser>(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Action<Microsoft.AspNetCore.Identity.IdentityOptions> setupAction) -> Microsoft.AspNetCore.Identity.IdentityBuilder
+*REMOVED*~static readonly Microsoft.AspNetCore.Identity.TokenOptions.DefaultAuthenticatorProvider -> string
+*REMOVED*~static readonly Microsoft.AspNetCore.Identity.TokenOptions.DefaultEmailProvider -> string
+*REMOVED*~static readonly Microsoft.AspNetCore.Identity.TokenOptions.DefaultPhoneProvider -> string
+*REMOVED*~static readonly Microsoft.AspNetCore.Identity.TokenOptions.DefaultProvider -> string
+*REMOVED*~static System.Security.Claims.PrincipalExtensions.FindFirstValue(this System.Security.Claims.ClaimsPrincipal principal, string claimType) -> string
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.AuthenticatorTokenProvider<TUser>.CanGenerateTwoFactorTokenAsync(Microsoft.AspNetCore.Identity.UserManager<TUser> manager, TUser user) -> System.Threading.Tasks.Task<bool>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.AuthenticatorTokenProvider<TUser>.GenerateAsync(string purpose, Microsoft.AspNetCore.Identity.UserManager<TUser> manager, TUser user) -> System.Threading.Tasks.Task<string>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.AuthenticatorTokenProvider<TUser>.ValidateAsync(string purpose, string token, Microsoft.AspNetCore.Identity.UserManager<TUser> manager, TUser user) -> System.Threading.Tasks.Task<bool>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.DefaultPersonalDataProtector.Protect(string data) -> string
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.DefaultPersonalDataProtector.Unprotect(string data) -> string
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.DefaultUserConfirmation<TUser>.IsConfirmedAsync(Microsoft.AspNetCore.Identity.UserManager<TUser> manager, TUser user) -> System.Threading.Tasks.Task<bool>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityBuilder.AddClaimsPrincipalFactory<TFactory>() -> Microsoft.AspNetCore.Identity.IdentityBuilder
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityBuilder.AddErrorDescriber<TDescriber>() -> Microsoft.AspNetCore.Identity.IdentityBuilder
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityBuilder.AddPasswordValidator<TValidator>() -> Microsoft.AspNetCore.Identity.IdentityBuilder
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityBuilder.AddPersonalDataProtection<TProtector, TKeyRing>() -> Microsoft.AspNetCore.Identity.IdentityBuilder
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityBuilder.AddRoleManager<TRoleManager>() -> Microsoft.AspNetCore.Identity.IdentityBuilder
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityBuilder.AddRoles<TRole>() -> Microsoft.AspNetCore.Identity.IdentityBuilder
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityBuilder.AddRoleStore<TStore>() -> Microsoft.AspNetCore.Identity.IdentityBuilder
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityBuilder.AddRoleValidator<TRole>() -> Microsoft.AspNetCore.Identity.IdentityBuilder
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityBuilder.AddTokenProvider(string providerName, System.Type provider) -> Microsoft.AspNetCore.Identity.IdentityBuilder
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityBuilder.AddTokenProvider<TProvider>(string providerName) -> Microsoft.AspNetCore.Identity.IdentityBuilder
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityBuilder.AddUserConfirmation<TUserConfirmation>() -> Microsoft.AspNetCore.Identity.IdentityBuilder
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityBuilder.AddUserManager<TUserManager>() -> Microsoft.AspNetCore.Identity.IdentityBuilder
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityBuilder.AddUserStore<TStore>() -> Microsoft.AspNetCore.Identity.IdentityBuilder
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityBuilder.AddUserValidator<TValidator>() -> Microsoft.AspNetCore.Identity.IdentityBuilder
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.ConcurrencyFailure() -> Microsoft.AspNetCore.Identity.IdentityError
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.DefaultError() -> Microsoft.AspNetCore.Identity.IdentityError
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.DuplicateEmail(string email) -> Microsoft.AspNetCore.Identity.IdentityError
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.DuplicateRoleName(string role) -> Microsoft.AspNetCore.Identity.IdentityError
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.DuplicateUserName(string userName) -> Microsoft.AspNetCore.Identity.IdentityError
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.InvalidEmail(string email) -> Microsoft.AspNetCore.Identity.IdentityError
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.InvalidRoleName(string role) -> Microsoft.AspNetCore.Identity.IdentityError
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.InvalidToken() -> Microsoft.AspNetCore.Identity.IdentityError
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.InvalidUserName(string userName) -> Microsoft.AspNetCore.Identity.IdentityError
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.LoginAlreadyAssociated() -> Microsoft.AspNetCore.Identity.IdentityError
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.PasswordMismatch() -> Microsoft.AspNetCore.Identity.IdentityError
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.PasswordRequiresDigit() -> Microsoft.AspNetCore.Identity.IdentityError
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.PasswordRequiresLower() -> Microsoft.AspNetCore.Identity.IdentityError
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.PasswordRequiresNonAlphanumeric() -> Microsoft.AspNetCore.Identity.IdentityError
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.PasswordRequiresUniqueChars(int uniqueChars) -> Microsoft.AspNetCore.Identity.IdentityError
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.PasswordRequiresUpper() -> Microsoft.AspNetCore.Identity.IdentityError
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.PasswordTooShort(int length) -> Microsoft.AspNetCore.Identity.IdentityError
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.RecoveryCodeRedemptionFailed() -> Microsoft.AspNetCore.Identity.IdentityError
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.UserAlreadyHasPassword() -> Microsoft.AspNetCore.Identity.IdentityError
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.UserAlreadyInRole(string role) -> Microsoft.AspNetCore.Identity.IdentityError
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.UserLockoutNotEnabled() -> Microsoft.AspNetCore.Identity.IdentityError
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.UserNotInRole(string role) -> Microsoft.AspNetCore.Identity.IdentityError
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.PasswordHasher<TUser>.HashPassword(TUser user, string password) -> string
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.PasswordHasher<TUser>.VerifyHashedPassword(TUser user, string hashedPassword, string providedPassword) -> Microsoft.AspNetCore.Identity.PasswordVerificationResult
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.PasswordValidator<TUser>.ValidateAsync(Microsoft.AspNetCore.Identity.UserManager<TUser> manager, TUser user, string password) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.AddClaimAsync(TRole role, System.Security.Claims.Claim claim) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.CreateAsync(TRole role) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.DeleteAsync(TRole role) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.FindByIdAsync(string roleId) -> System.Threading.Tasks.Task<TRole>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.FindByNameAsync(string roleName) -> System.Threading.Tasks.Task<TRole>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.GetClaimsAsync(TRole role) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<System.Security.Claims.Claim>>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.GetRoleIdAsync(TRole role) -> System.Threading.Tasks.Task<string>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.GetRoleNameAsync(TRole role) -> System.Threading.Tasks.Task<string>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.Logger.get -> Microsoft.Extensions.Logging.ILogger
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.Logger.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.NormalizeKey(string key) -> string
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.RemoveClaimAsync(TRole role, System.Security.Claims.Claim claim) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.RoleExistsAsync(string roleName) -> System.Threading.Tasks.Task<bool>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.Roles.get -> System.Linq.IQueryable<TRole>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.SetRoleNameAsync(TRole role, string name) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.UpdateAsync(TRole role) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.UpdateNormalizedRoleNameAsync(TRole role) -> System.Threading.Tasks.Task
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.UpdateRoleAsync(TRole role) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.ValidateRoleAsync(TRole role) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.RoleValidator<TRole>.ValidateAsync(Microsoft.AspNetCore.Identity.RoleManager<TRole> manager, TRole role) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.TotpSecurityStampBasedTokenProvider<TUser>.GenerateAsync(string purpose, Microsoft.AspNetCore.Identity.UserManager<TUser> manager, TUser user) -> System.Threading.Tasks.Task<string>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.TotpSecurityStampBasedTokenProvider<TUser>.GetUserModifierAsync(string purpose, Microsoft.AspNetCore.Identity.UserManager<TUser> manager, TUser user) -> System.Threading.Tasks.Task<string>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.TotpSecurityStampBasedTokenProvider<TUser>.ValidateAsync(string purpose, string token, Microsoft.AspNetCore.Identity.UserManager<TUser> manager, TUser user) -> System.Threading.Tasks.Task<bool>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserClaimsPrincipalFactory<TUser>.CreateAsync(TUser user) -> System.Threading.Tasks.Task<System.Security.Claims.ClaimsPrincipal>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserClaimsPrincipalFactory<TUser>.GenerateClaimsAsync(TUser user) -> System.Threading.Tasks.Task<System.Security.Claims.ClaimsIdentity>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.AccessFailedAsync(TUser user) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.AddClaimAsync(TUser user, System.Security.Claims.Claim claim) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.AddClaimsAsync(TUser user, System.Collections.Generic.IEnumerable<System.Security.Claims.Claim> claims) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.AddLoginAsync(TUser user, Microsoft.AspNetCore.Identity.UserLoginInfo login) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.AddPasswordAsync(TUser user, string password) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.AddToRoleAsync(TUser user, string role) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.AddToRolesAsync(TUser user, System.Collections.Generic.IEnumerable<string> roles) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.ChangeEmailAsync(TUser user, string newEmail, string token) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.ChangePasswordAsync(TUser user, string currentPassword, string newPassword) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.ChangePhoneNumberAsync(TUser user, string phoneNumber, string token) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.CheckPasswordAsync(TUser user, string password) -> System.Threading.Tasks.Task<bool>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.ConfirmEmailAsync(TUser user, string token) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.CountRecoveryCodesAsync(TUser user) -> System.Threading.Tasks.Task<int>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.CreateAsync(TUser user) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.CreateAsync(TUser user, string password) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.CreateSecurityTokenAsync(TUser user) -> System.Threading.Tasks.Task<byte[]>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.CreateTwoFactorRecoveryCode() -> string
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.DeleteAsync(TUser user) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.FindByEmailAsync(string email) -> System.Threading.Tasks.Task<TUser>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.FindByIdAsync(string userId) -> System.Threading.Tasks.Task<TUser>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.FindByLoginAsync(string loginProvider, string providerKey) -> System.Threading.Tasks.Task<TUser>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.FindByNameAsync(string userName) -> System.Threading.Tasks.Task<TUser>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GenerateChangeEmailTokenAsync(TUser user, string newEmail) -> System.Threading.Tasks.Task<string>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GenerateChangePhoneNumberTokenAsync(TUser user, string phoneNumber) -> System.Threading.Tasks.Task<string>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GenerateConcurrencyStampAsync(TUser user) -> System.Threading.Tasks.Task<string>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GenerateEmailConfirmationTokenAsync(TUser user) -> System.Threading.Tasks.Task<string>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GenerateNewAuthenticatorKey() -> string
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GenerateNewTwoFactorRecoveryCodesAsync(TUser user, int number) -> System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<string>>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GeneratePasswordResetTokenAsync(TUser user) -> System.Threading.Tasks.Task<string>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GenerateTwoFactorTokenAsync(TUser user, string tokenProvider) -> System.Threading.Tasks.Task<string>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GenerateUserTokenAsync(TUser user, string tokenProvider, string purpose) -> System.Threading.Tasks.Task<string>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetAccessFailedCountAsync(TUser user) -> System.Threading.Tasks.Task<int>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetAuthenticationTokenAsync(TUser user, string loginProvider, string tokenName) -> System.Threading.Tasks.Task<string>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetAuthenticatorKeyAsync(TUser user) -> System.Threading.Tasks.Task<string>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetClaimsAsync(TUser user) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<System.Security.Claims.Claim>>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetEmailAsync(TUser user) -> System.Threading.Tasks.Task<string>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetLockoutEnabledAsync(TUser user) -> System.Threading.Tasks.Task<bool>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetLockoutEndDateAsync(TUser user) -> System.Threading.Tasks.Task<System.DateTimeOffset?>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetLoginsAsync(TUser user) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<Microsoft.AspNetCore.Identity.UserLoginInfo>>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetPhoneNumberAsync(TUser user) -> System.Threading.Tasks.Task<string>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetRolesAsync(TUser user) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<string>>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetSecurityStampAsync(TUser user) -> System.Threading.Tasks.Task<string>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetTwoFactorEnabledAsync(TUser user) -> System.Threading.Tasks.Task<bool>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetUserAsync(System.Security.Claims.ClaimsPrincipal principal) -> System.Threading.Tasks.Task<TUser>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetUserId(System.Security.Claims.ClaimsPrincipal principal) -> string
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetUserIdAsync(TUser user) -> System.Threading.Tasks.Task<string>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetUserName(System.Security.Claims.ClaimsPrincipal principal) -> string
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetUserNameAsync(TUser user) -> System.Threading.Tasks.Task<string>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetUsersForClaimAsync(System.Security.Claims.Claim claim) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<TUser>>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetUsersInRoleAsync(string roleName) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<TUser>>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetValidTwoFactorProvidersAsync(TUser user) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<string>>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.HasPasswordAsync(TUser user) -> System.Threading.Tasks.Task<bool>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.IsEmailConfirmedAsync(TUser user) -> System.Threading.Tasks.Task<bool>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.IsInRoleAsync(TUser user, string role) -> System.Threading.Tasks.Task<bool>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.IsLockedOutAsync(TUser user) -> System.Threading.Tasks.Task<bool>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.IsPhoneNumberConfirmedAsync(TUser user) -> System.Threading.Tasks.Task<bool>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.Logger.get -> Microsoft.Extensions.Logging.ILogger
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.Logger.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.NormalizeEmail(string email) -> string
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.NormalizeName(string name) -> string
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.RedeemTwoFactorRecoveryCodeAsync(TUser user, string code) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.RegisterTokenProvider(string providerName, Microsoft.AspNetCore.Identity.IUserTwoFactorTokenProvider<TUser> provider) -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.RemoveAuthenticationTokenAsync(TUser user, string loginProvider, string tokenName) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.RemoveClaimAsync(TUser user, System.Security.Claims.Claim claim) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.RemoveClaimsAsync(TUser user, System.Collections.Generic.IEnumerable<System.Security.Claims.Claim> claims) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.RemoveFromRoleAsync(TUser user, string role) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.RemoveFromRolesAsync(TUser user, System.Collections.Generic.IEnumerable<string> roles) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.RemoveLoginAsync(TUser user, string loginProvider, string providerKey) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.RemovePasswordAsync(TUser user) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.ReplaceClaimAsync(TUser user, System.Security.Claims.Claim claim, System.Security.Claims.Claim newClaim) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.ResetAccessFailedCountAsync(TUser user) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.ResetAuthenticatorKeyAsync(TUser user) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.ResetPasswordAsync(TUser user, string token, string newPassword) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.SetAuthenticationTokenAsync(TUser user, string loginProvider, string tokenName, string tokenValue) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.SetEmailAsync(TUser user, string email) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.SetLockoutEnabledAsync(TUser user, bool enabled) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.SetLockoutEndDateAsync(TUser user, System.DateTimeOffset? lockoutEnd) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.SetPhoneNumberAsync(TUser user, string phoneNumber) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.SetTwoFactorEnabledAsync(TUser user, bool enabled) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.SetUserNameAsync(TUser user, string userName) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.UpdateAsync(TUser user) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.UpdateNormalizedEmailAsync(TUser user) -> System.Threading.Tasks.Task
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.UpdateNormalizedUserNameAsync(TUser user) -> System.Threading.Tasks.Task
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.UpdatePasswordHash(TUser user, string newPassword, bool validatePassword) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.UpdateSecurityStampAsync(TUser user) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.UpdateUserAsync(TUser user) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.Users.get -> System.Linq.IQueryable<TUser>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.VerifyChangePhoneNumberTokenAsync(TUser user, string token, string phoneNumber) -> System.Threading.Tasks.Task<bool>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.VerifyPasswordAsync(Microsoft.AspNetCore.Identity.IUserPasswordStore<TUser> store, TUser user, string password) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.PasswordVerificationResult>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.VerifyTwoFactorTokenAsync(TUser user, string tokenProvider, string token) -> System.Threading.Tasks.Task<bool>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.VerifyUserTokenAsync(TUser user, string tokenProvider, string purpose, string token) -> System.Threading.Tasks.Task<bool>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserValidator<TUser>.ValidateAsync(Microsoft.AspNetCore.Identity.UserManager<TUser> manager, TUser user) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*Microsoft.AspNetCore.Identity.AuthenticatorTokenProvider<TUser>.AuthenticatorTokenProvider() -> void
+*REMOVED*Microsoft.AspNetCore.Identity.ClaimsIdentityOptions
+*REMOVED*Microsoft.AspNetCore.Identity.ClaimsIdentityOptions.ClaimsIdentityOptions() -> void
+*REMOVED*Microsoft.AspNetCore.Identity.DefaultPersonalDataProtector
+*REMOVED*Microsoft.AspNetCore.Identity.DefaultUserConfirmation<TUser>.DefaultUserConfirmation() -> void
+*REMOVED*Microsoft.AspNetCore.Identity.EmailTokenProvider<TUser>.EmailTokenProvider() -> void
+*REMOVED*Microsoft.AspNetCore.Identity.IdentityBuilder
+*REMOVED*Microsoft.AspNetCore.Identity.IdentityError
+*REMOVED*Microsoft.AspNetCore.Identity.IdentityError.IdentityError() -> void
+*REMOVED*Microsoft.AspNetCore.Identity.IdentityErrorDescriber
+*REMOVED*Microsoft.AspNetCore.Identity.IdentityErrorDescriber.IdentityErrorDescriber() -> void
+*REMOVED*Microsoft.AspNetCore.Identity.IdentityOptions
+*REMOVED*Microsoft.AspNetCore.Identity.IdentityOptions.IdentityOptions() -> void
+*REMOVED*Microsoft.AspNetCore.Identity.IdentityResult
+*REMOVED*Microsoft.AspNetCore.Identity.IdentityResult.IdentityResult() -> void
+*REMOVED*Microsoft.AspNetCore.Identity.IdentityResult.Succeeded.get -> bool
+*REMOVED*Microsoft.AspNetCore.Identity.IdentityResult.Succeeded.set -> void
+*REMOVED*Microsoft.AspNetCore.Identity.ILookupNormalizer
+*REMOVED*Microsoft.AspNetCore.Identity.ILookupProtector
+*REMOVED*Microsoft.AspNetCore.Identity.ILookupProtectorKeyRing
+*REMOVED*Microsoft.AspNetCore.Identity.IPersonalDataProtector
+*REMOVED*Microsoft.AspNetCore.Identity.LockoutOptions
+*REMOVED*Microsoft.AspNetCore.Identity.LockoutOptions.AllowedForNewUsers.get -> bool
+*REMOVED*Microsoft.AspNetCore.Identity.LockoutOptions.AllowedForNewUsers.set -> void
+*REMOVED*Microsoft.AspNetCore.Identity.LockoutOptions.DefaultLockoutTimeSpan.get -> System.TimeSpan
+*REMOVED*Microsoft.AspNetCore.Identity.LockoutOptions.DefaultLockoutTimeSpan.set -> void
+*REMOVED*Microsoft.AspNetCore.Identity.LockoutOptions.LockoutOptions() -> void
+*REMOVED*Microsoft.AspNetCore.Identity.LockoutOptions.MaxFailedAccessAttempts.get -> int
+*REMOVED*Microsoft.AspNetCore.Identity.LockoutOptions.MaxFailedAccessAttempts.set -> void
+*REMOVED*Microsoft.AspNetCore.Identity.PasswordHasherCompatibilityMode
+*REMOVED*Microsoft.AspNetCore.Identity.PasswordHasherCompatibilityMode.IdentityV2 = 0 -> Microsoft.AspNetCore.Identity.PasswordHasherCompatibilityMode
+*REMOVED*Microsoft.AspNetCore.Identity.PasswordHasherCompatibilityMode.IdentityV3 = 1 -> Microsoft.AspNetCore.Identity.PasswordHasherCompatibilityMode
+*REMOVED*Microsoft.AspNetCore.Identity.PasswordHasherOptions
+*REMOVED*Microsoft.AspNetCore.Identity.PasswordHasherOptions.CompatibilityMode.get -> Microsoft.AspNetCore.Identity.PasswordHasherCompatibilityMode
+*REMOVED*Microsoft.AspNetCore.Identity.PasswordHasherOptions.CompatibilityMode.set -> void
+*REMOVED*Microsoft.AspNetCore.Identity.PasswordHasherOptions.IterationCount.get -> int
+*REMOVED*Microsoft.AspNetCore.Identity.PasswordHasherOptions.IterationCount.set -> void
+*REMOVED*Microsoft.AspNetCore.Identity.PasswordHasherOptions.PasswordHasherOptions() -> void
+*REMOVED*Microsoft.AspNetCore.Identity.PasswordOptions
+*REMOVED*Microsoft.AspNetCore.Identity.PasswordOptions.PasswordOptions() -> void
+*REMOVED*Microsoft.AspNetCore.Identity.PasswordOptions.RequireDigit.get -> bool
+*REMOVED*Microsoft.AspNetCore.Identity.PasswordOptions.RequireDigit.set -> void
+*REMOVED*Microsoft.AspNetCore.Identity.PasswordOptions.RequiredLength.get -> int
+*REMOVED*Microsoft.AspNetCore.Identity.PasswordOptions.RequiredLength.set -> void
+*REMOVED*Microsoft.AspNetCore.Identity.PasswordOptions.RequiredUniqueChars.get -> int
+*REMOVED*Microsoft.AspNetCore.Identity.PasswordOptions.RequiredUniqueChars.set -> void
+*REMOVED*Microsoft.AspNetCore.Identity.PasswordOptions.RequireLowercase.get -> bool
+*REMOVED*Microsoft.AspNetCore.Identity.PasswordOptions.RequireLowercase.set -> void
+*REMOVED*Microsoft.AspNetCore.Identity.PasswordOptions.RequireNonAlphanumeric.get -> bool
+*REMOVED*Microsoft.AspNetCore.Identity.PasswordOptions.RequireNonAlphanumeric.set -> void
+*REMOVED*Microsoft.AspNetCore.Identity.PasswordOptions.RequireUppercase.get -> bool
+*REMOVED*Microsoft.AspNetCore.Identity.PasswordOptions.RequireUppercase.set -> void
+*REMOVED*Microsoft.AspNetCore.Identity.PasswordVerificationResult
+*REMOVED*Microsoft.AspNetCore.Identity.PasswordVerificationResult.Failed = 0 -> Microsoft.AspNetCore.Identity.PasswordVerificationResult
+*REMOVED*Microsoft.AspNetCore.Identity.PasswordVerificationResult.Success = 1 -> Microsoft.AspNetCore.Identity.PasswordVerificationResult
+*REMOVED*Microsoft.AspNetCore.Identity.PasswordVerificationResult.SuccessRehashNeeded = 2 -> Microsoft.AspNetCore.Identity.PasswordVerificationResult
+*REMOVED*Microsoft.AspNetCore.Identity.PersonalDataAttribute
+*REMOVED*Microsoft.AspNetCore.Identity.PersonalDataAttribute.PersonalDataAttribute() -> void
+*REMOVED*Microsoft.AspNetCore.Identity.PhoneNumberTokenProvider<TUser>.PhoneNumberTokenProvider() -> void
+*REMOVED*Microsoft.AspNetCore.Identity.ProtectedPersonalDataAttribute
+*REMOVED*Microsoft.AspNetCore.Identity.ProtectedPersonalDataAttribute.ProtectedPersonalDataAttribute() -> void
+*REMOVED*Microsoft.AspNetCore.Identity.RoleManager<TRole>.Dispose() -> void
+*REMOVED*Microsoft.AspNetCore.Identity.RoleManager<TRole>.ThrowIfDisposed() -> void
+*REMOVED*Microsoft.AspNetCore.Identity.SignInOptions
+*REMOVED*Microsoft.AspNetCore.Identity.SignInOptions.RequireConfirmedAccount.get -> bool
+*REMOVED*Microsoft.AspNetCore.Identity.SignInOptions.RequireConfirmedAccount.set -> void
+*REMOVED*Microsoft.AspNetCore.Identity.SignInOptions.RequireConfirmedEmail.get -> bool
+*REMOVED*Microsoft.AspNetCore.Identity.SignInOptions.RequireConfirmedEmail.set -> void
+*REMOVED*Microsoft.AspNetCore.Identity.SignInOptions.RequireConfirmedPhoneNumber.get -> bool
+*REMOVED*Microsoft.AspNetCore.Identity.SignInOptions.RequireConfirmedPhoneNumber.set -> void
+*REMOVED*Microsoft.AspNetCore.Identity.SignInOptions.SignInOptions() -> void
+*REMOVED*Microsoft.AspNetCore.Identity.SignInResult
+*REMOVED*Microsoft.AspNetCore.Identity.SignInResult.IsLockedOut.get -> bool
+*REMOVED*Microsoft.AspNetCore.Identity.SignInResult.IsLockedOut.set -> void
+*REMOVED*Microsoft.AspNetCore.Identity.SignInResult.IsNotAllowed.get -> bool
+*REMOVED*Microsoft.AspNetCore.Identity.SignInResult.IsNotAllowed.set -> void
+*REMOVED*Microsoft.AspNetCore.Identity.SignInResult.RequiresTwoFactor.get -> bool
+*REMOVED*Microsoft.AspNetCore.Identity.SignInResult.RequiresTwoFactor.set -> void
+*REMOVED*Microsoft.AspNetCore.Identity.SignInResult.SignInResult() -> void
+*REMOVED*Microsoft.AspNetCore.Identity.SignInResult.Succeeded.get -> bool
+*REMOVED*Microsoft.AspNetCore.Identity.SignInResult.Succeeded.set -> void
+*REMOVED*Microsoft.AspNetCore.Identity.StoreOptions
+*REMOVED*Microsoft.AspNetCore.Identity.StoreOptions.MaxLengthForKeys.get -> int
+*REMOVED*Microsoft.AspNetCore.Identity.StoreOptions.MaxLengthForKeys.set -> void
+*REMOVED*Microsoft.AspNetCore.Identity.StoreOptions.ProtectPersonalData.get -> bool
+*REMOVED*Microsoft.AspNetCore.Identity.StoreOptions.ProtectPersonalData.set -> void
+*REMOVED*Microsoft.AspNetCore.Identity.StoreOptions.StoreOptions() -> void
+*REMOVED*Microsoft.AspNetCore.Identity.TokenOptions
+*REMOVED*Microsoft.AspNetCore.Identity.TokenOptions.TokenOptions() -> void
+*REMOVED*Microsoft.AspNetCore.Identity.TokenProviderDescriptor
+*REMOVED*Microsoft.AspNetCore.Identity.TotpSecurityStampBasedTokenProvider<TUser>.TotpSecurityStampBasedTokenProvider() -> void
+*REMOVED*Microsoft.AspNetCore.Identity.UpperInvariantLookupNormalizer
+*REMOVED*Microsoft.AspNetCore.Identity.UpperInvariantLookupNormalizer.UpperInvariantLookupNormalizer() -> void
+*REMOVED*Microsoft.AspNetCore.Identity.UserLoginInfo
+*REMOVED*Microsoft.AspNetCore.Identity.UserManager<TUser>.Dispose() -> void
+*REMOVED*Microsoft.AspNetCore.Identity.UserManager<TUser>.ThrowIfDisposed() -> void
+*REMOVED*Microsoft.AspNetCore.Identity.UserOptions
+*REMOVED*Microsoft.AspNetCore.Identity.UserOptions.RequireUniqueEmail.get -> bool
+*REMOVED*Microsoft.AspNetCore.Identity.UserOptions.RequireUniqueEmail.set -> void
+*REMOVED*Microsoft.AspNetCore.Identity.UserOptions.UserOptions() -> void
+*REMOVED*Microsoft.Extensions.DependencyInjection.IdentityServiceCollectionExtensions
+*REMOVED*System.Security.Claims.PrincipalExtensions
+*REMOVED*virtual Microsoft.AspNetCore.Identity.PasswordValidator<TUser>.IsDigit(char c) -> bool
+*REMOVED*virtual Microsoft.AspNetCore.Identity.PasswordValidator<TUser>.IsLetterOrDigit(char c) -> bool
+*REMOVED*virtual Microsoft.AspNetCore.Identity.PasswordValidator<TUser>.IsLower(char c) -> bool
+*REMOVED*virtual Microsoft.AspNetCore.Identity.PasswordValidator<TUser>.IsUpper(char c) -> bool
+*REMOVED*virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.CancellationToken.get -> System.Threading.CancellationToken
+*REMOVED*virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.Dispose(bool disposing) -> void
+*REMOVED*virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.SupportsQueryableRoles.get -> bool
+*REMOVED*virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.SupportsRoleClaims.get -> bool
+*REMOVED*virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.CancellationToken.get -> System.Threading.CancellationToken
+*REMOVED*virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.Dispose(bool disposing) -> void
+*REMOVED*virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.SupportsQueryableUsers.get -> bool
+*REMOVED*virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.SupportsUserAuthenticationTokens.get -> bool
+*REMOVED*virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.SupportsUserAuthenticatorKey.get -> bool
+*REMOVED*virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.SupportsUserClaim.get -> bool
+*REMOVED*virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.SupportsUserEmail.get -> bool
+*REMOVED*virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.SupportsUserLockout.get -> bool
+*REMOVED*virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.SupportsUserLogin.get -> bool
+*REMOVED*virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.SupportsUserPassword.get -> bool
+*REMOVED*virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.SupportsUserPhoneNumber.get -> bool
+*REMOVED*virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.SupportsUserRole.get -> bool
+*REMOVED*virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.SupportsUserSecurityStamp.get -> bool
+*REMOVED*virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.SupportsUserTwoFactor.get -> bool
+*REMOVED*virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.SupportsUserTwoFactorRecoveryCodes.get -> bool
+abstract Microsoft.AspNetCore.Identity.TotpSecurityStampBasedTokenProvider<TUser>.CanGenerateTwoFactorTokenAsync(Microsoft.AspNetCore.Identity.UserManager<TUser!>! manager, TUser! user) -> System.Threading.Tasks.Task<bool>!
+const Microsoft.AspNetCore.Identity.UserManager<TUser>.ChangePhoneNumberTokenPurpose = "ChangePhoneNumber" -> string!
+const Microsoft.AspNetCore.Identity.UserManager<TUser>.ConfirmEmailTokenPurpose = "EmailConfirmation" -> string!
+const Microsoft.AspNetCore.Identity.UserManager<TUser>.ResetPasswordTokenPurpose = "ResetPassword" -> string!
+Microsoft.AspNetCore.Identity.ClaimsIdentityOptions.EmailClaimType.get -> string!
+Microsoft.AspNetCore.Identity.ClaimsIdentityOptions.EmailClaimType.set -> void
+Microsoft.AspNetCore.Identity.ClaimsIdentityOptions.RoleClaimType.get -> string!
+Microsoft.AspNetCore.Identity.ClaimsIdentityOptions.RoleClaimType.set -> void
+Microsoft.AspNetCore.Identity.ClaimsIdentityOptions.SecurityStampClaimType.get -> string!
+Microsoft.AspNetCore.Identity.ClaimsIdentityOptions.SecurityStampClaimType.set -> void
+Microsoft.AspNetCore.Identity.ClaimsIdentityOptions.UserIdClaimType.get -> string!
+Microsoft.AspNetCore.Identity.ClaimsIdentityOptions.UserIdClaimType.set -> void
+Microsoft.AspNetCore.Identity.ClaimsIdentityOptions.UserNameClaimType.get -> string!
+Microsoft.AspNetCore.Identity.ClaimsIdentityOptions.UserNameClaimType.set -> void
+Microsoft.AspNetCore.Identity.DefaultPersonalDataProtector.DefaultPersonalDataProtector(Microsoft.AspNetCore.Identity.ILookupProtectorKeyRing! keyRing, Microsoft.AspNetCore.Identity.ILookupProtector! protector) -> void
+Microsoft.AspNetCore.Identity.IdentityBuilder.IdentityBuilder(System.Type! user, Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void
+Microsoft.AspNetCore.Identity.IdentityBuilder.IdentityBuilder(System.Type! user, System.Type! role, Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void
+Microsoft.AspNetCore.Identity.IdentityBuilder.RoleType.get -> System.Type?
+Microsoft.AspNetCore.Identity.IdentityBuilder.Services.get -> Microsoft.Extensions.DependencyInjection.IServiceCollection!
+Microsoft.AspNetCore.Identity.IdentityBuilder.UserType.get -> System.Type!
+Microsoft.AspNetCore.Identity.IdentityError.Code.get -> string!
+Microsoft.AspNetCore.Identity.IdentityError.Code.set -> void
+Microsoft.AspNetCore.Identity.IdentityError.Description.get -> string!
+Microsoft.AspNetCore.Identity.IdentityError.Description.set -> void
+Microsoft.AspNetCore.Identity.IdentityOptions.ClaimsIdentity.get -> Microsoft.AspNetCore.Identity.ClaimsIdentityOptions!
+Microsoft.AspNetCore.Identity.IdentityOptions.ClaimsIdentity.set -> void
+Microsoft.AspNetCore.Identity.IdentityOptions.Lockout.get -> Microsoft.AspNetCore.Identity.LockoutOptions!
+Microsoft.AspNetCore.Identity.IdentityOptions.Lockout.set -> void
+Microsoft.AspNetCore.Identity.IdentityOptions.Password.get -> Microsoft.AspNetCore.Identity.PasswordOptions!
+Microsoft.AspNetCore.Identity.IdentityOptions.Password.set -> void
+Microsoft.AspNetCore.Identity.IdentityOptions.SignIn.get -> Microsoft.AspNetCore.Identity.SignInOptions!
+Microsoft.AspNetCore.Identity.IdentityOptions.SignIn.set -> void
+Microsoft.AspNetCore.Identity.IdentityOptions.Stores.get -> Microsoft.AspNetCore.Identity.StoreOptions!
+Microsoft.AspNetCore.Identity.IdentityOptions.Stores.set -> void
+Microsoft.AspNetCore.Identity.IdentityOptions.Tokens.get -> Microsoft.AspNetCore.Identity.TokenOptions!
+Microsoft.AspNetCore.Identity.IdentityOptions.Tokens.set -> void
+Microsoft.AspNetCore.Identity.IdentityOptions.User.get -> Microsoft.AspNetCore.Identity.UserOptions!
+Microsoft.AspNetCore.Identity.IdentityOptions.User.set -> void
+Microsoft.AspNetCore.Identity.IdentityResult.Errors.get -> System.Collections.Generic.IEnumerable<Microsoft.AspNetCore.Identity.IdentityError!>!
+Microsoft.AspNetCore.Identity.ILookupNormalizer.NormalizeEmail(string? email) -> string?
+Microsoft.AspNetCore.Identity.ILookupNormalizer.NormalizeName(string? name) -> string?
+Microsoft.AspNetCore.Identity.ILookupProtector.Protect(string! keyId, string? data) -> string?
+Microsoft.AspNetCore.Identity.ILookupProtector.Unprotect(string! keyId, string? data) -> string?
+Microsoft.AspNetCore.Identity.ILookupProtectorKeyRing.CurrentKeyId.get -> string!
+Microsoft.AspNetCore.Identity.ILookupProtectorKeyRing.GetAllKeyIds() -> System.Collections.Generic.IEnumerable<string!>!
+Microsoft.AspNetCore.Identity.ILookupProtectorKeyRing.this[string! keyId].get -> string!
+Microsoft.AspNetCore.Identity.IPasswordHasher<TUser>.HashPassword(TUser! user, string! password) -> string!
+Microsoft.AspNetCore.Identity.IPasswordHasher<TUser>.VerifyHashedPassword(TUser! user, string! hashedPassword, string! providedPassword) -> Microsoft.AspNetCore.Identity.PasswordVerificationResult
+Microsoft.AspNetCore.Identity.IPasswordValidator<TUser>.ValidateAsync(Microsoft.AspNetCore.Identity.UserManager<TUser!>! manager, TUser! user, string? password) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+Microsoft.AspNetCore.Identity.IPersonalDataProtector.Protect(string? data) -> string?
+Microsoft.AspNetCore.Identity.IPersonalDataProtector.Unprotect(string? data) -> string?
+Microsoft.AspNetCore.Identity.IQueryableRoleStore<TRole>.Roles.get -> System.Linq.IQueryable<TRole!>!
+Microsoft.AspNetCore.Identity.IQueryableUserStore<TUser>.Users.get -> System.Linq.IQueryable<TUser!>!
+Microsoft.AspNetCore.Identity.IRoleClaimStore<TRole>.AddClaimAsync(TRole! role, System.Security.Claims.Claim! claim, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+Microsoft.AspNetCore.Identity.IRoleClaimStore<TRole>.GetClaimsAsync(TRole! role, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<System.Security.Claims.Claim!>!>!
+Microsoft.AspNetCore.Identity.IRoleClaimStore<TRole>.RemoveClaimAsync(TRole! role, System.Security.Claims.Claim! claim, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+Microsoft.AspNetCore.Identity.IRoleStore<TRole>.CreateAsync(TRole! role, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+Microsoft.AspNetCore.Identity.IRoleStore<TRole>.DeleteAsync(TRole! role, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+Microsoft.AspNetCore.Identity.IRoleStore<TRole>.FindByIdAsync(string! roleId, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TRole?>!
+Microsoft.AspNetCore.Identity.IRoleStore<TRole>.FindByNameAsync(string! normalizedRoleName, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TRole?>!
+Microsoft.AspNetCore.Identity.IRoleStore<TRole>.GetNormalizedRoleNameAsync(TRole! role, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<string?>!
+Microsoft.AspNetCore.Identity.IRoleStore<TRole>.GetRoleIdAsync(TRole! role, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<string!>!
+Microsoft.AspNetCore.Identity.IRoleStore<TRole>.GetRoleNameAsync(TRole! role, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<string?>!
+Microsoft.AspNetCore.Identity.IRoleStore<TRole>.SetNormalizedRoleNameAsync(TRole! role, string? normalizedName, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
+Microsoft.AspNetCore.Identity.IRoleStore<TRole>.SetRoleNameAsync(TRole! role, string? roleName, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
+Microsoft.AspNetCore.Identity.IRoleStore<TRole>.UpdateAsync(TRole! role, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+Microsoft.AspNetCore.Identity.IRoleValidator<TRole>.ValidateAsync(Microsoft.AspNetCore.Identity.RoleManager<TRole!>! manager, TRole! role) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+Microsoft.AspNetCore.Identity.IUserAuthenticationTokenStore<TUser>.GetTokenAsync(TUser! user, string! loginProvider, string! name, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<string?>!
+Microsoft.AspNetCore.Identity.IUserAuthenticationTokenStore<TUser>.RemoveTokenAsync(TUser! user, string! loginProvider, string! name, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
+Microsoft.AspNetCore.Identity.IUserAuthenticationTokenStore<TUser>.SetTokenAsync(TUser! user, string! loginProvider, string! name, string? value, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
+Microsoft.AspNetCore.Identity.IUserAuthenticatorKeyStore<TUser>.GetAuthenticatorKeyAsync(TUser! user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<string?>!
+Microsoft.AspNetCore.Identity.IUserAuthenticatorKeyStore<TUser>.SetAuthenticatorKeyAsync(TUser! user, string! key, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
+Microsoft.AspNetCore.Identity.IUserClaimsPrincipalFactory<TUser>.CreateAsync(TUser! user) -> System.Threading.Tasks.Task<System.Security.Claims.ClaimsPrincipal!>!
+Microsoft.AspNetCore.Identity.IUserClaimStore<TUser>.AddClaimsAsync(TUser! user, System.Collections.Generic.IEnumerable<System.Security.Claims.Claim!>! claims, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
+Microsoft.AspNetCore.Identity.IUserClaimStore<TUser>.GetClaimsAsync(TUser! user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<System.Security.Claims.Claim!>!>!
+Microsoft.AspNetCore.Identity.IUserClaimStore<TUser>.GetUsersForClaimAsync(System.Security.Claims.Claim! claim, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<TUser!>!>!
+Microsoft.AspNetCore.Identity.IUserClaimStore<TUser>.RemoveClaimsAsync(TUser! user, System.Collections.Generic.IEnumerable<System.Security.Claims.Claim!>! claims, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
+Microsoft.AspNetCore.Identity.IUserClaimStore<TUser>.ReplaceClaimAsync(TUser! user, System.Security.Claims.Claim! claim, System.Security.Claims.Claim! newClaim, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
+Microsoft.AspNetCore.Identity.IUserConfirmation<TUser>.IsConfirmedAsync(Microsoft.AspNetCore.Identity.UserManager<TUser!>! manager, TUser! user) -> System.Threading.Tasks.Task<bool>!
+Microsoft.AspNetCore.Identity.IUserEmailStore<TUser>.FindByEmailAsync(string! normalizedEmail, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TUser?>!
+Microsoft.AspNetCore.Identity.IUserEmailStore<TUser>.GetEmailAsync(TUser! user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<string?>!
+Microsoft.AspNetCore.Identity.IUserEmailStore<TUser>.GetEmailConfirmedAsync(TUser! user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<bool>!
+Microsoft.AspNetCore.Identity.IUserEmailStore<TUser>.GetNormalizedEmailAsync(TUser! user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<string?>!
+Microsoft.AspNetCore.Identity.IUserEmailStore<TUser>.SetEmailAsync(TUser! user, string? email, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
+Microsoft.AspNetCore.Identity.IUserEmailStore<TUser>.SetEmailConfirmedAsync(TUser! user, bool confirmed, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
+Microsoft.AspNetCore.Identity.IUserEmailStore<TUser>.SetNormalizedEmailAsync(TUser! user, string? normalizedEmail, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
+Microsoft.AspNetCore.Identity.IUserLockoutStore<TUser>.GetAccessFailedCountAsync(TUser! user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<int>!
+Microsoft.AspNetCore.Identity.IUserLockoutStore<TUser>.GetLockoutEnabledAsync(TUser! user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<bool>!
+Microsoft.AspNetCore.Identity.IUserLockoutStore<TUser>.GetLockoutEndDateAsync(TUser! user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<System.DateTimeOffset?>!
+Microsoft.AspNetCore.Identity.IUserLockoutStore<TUser>.IncrementAccessFailedCountAsync(TUser! user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<int>!
+Microsoft.AspNetCore.Identity.IUserLockoutStore<TUser>.ResetAccessFailedCountAsync(TUser! user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
+Microsoft.AspNetCore.Identity.IUserLockoutStore<TUser>.SetLockoutEnabledAsync(TUser! user, bool enabled, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
+Microsoft.AspNetCore.Identity.IUserLockoutStore<TUser>.SetLockoutEndDateAsync(TUser! user, System.DateTimeOffset? lockoutEnd, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
+Microsoft.AspNetCore.Identity.IUserLoginStore<TUser>.AddLoginAsync(TUser! user, Microsoft.AspNetCore.Identity.UserLoginInfo! login, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
+Microsoft.AspNetCore.Identity.IUserLoginStore<TUser>.FindByLoginAsync(string! loginProvider, string! providerKey, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TUser?>!
+Microsoft.AspNetCore.Identity.IUserLoginStore<TUser>.GetLoginsAsync(TUser! user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<Microsoft.AspNetCore.Identity.UserLoginInfo!>!>!
+Microsoft.AspNetCore.Identity.IUserLoginStore<TUser>.RemoveLoginAsync(TUser! user, string! loginProvider, string! providerKey, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
+Microsoft.AspNetCore.Identity.IUserPasswordStore<TUser>.GetPasswordHashAsync(TUser! user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<string?>!
+Microsoft.AspNetCore.Identity.IUserPasswordStore<TUser>.HasPasswordAsync(TUser! user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<bool>!
+Microsoft.AspNetCore.Identity.IUserPasswordStore<TUser>.SetPasswordHashAsync(TUser! user, string? passwordHash, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
+Microsoft.AspNetCore.Identity.IUserPhoneNumberStore<TUser>.GetPhoneNumberAsync(TUser! user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<string?>!
+Microsoft.AspNetCore.Identity.IUserPhoneNumberStore<TUser>.GetPhoneNumberConfirmedAsync(TUser! user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<bool>!
+Microsoft.AspNetCore.Identity.IUserPhoneNumberStore<TUser>.SetPhoneNumberAsync(TUser! user, string? phoneNumber, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
+Microsoft.AspNetCore.Identity.IUserPhoneNumberStore<TUser>.SetPhoneNumberConfirmedAsync(TUser! user, bool confirmed, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
+Microsoft.AspNetCore.Identity.IUserRoleStore<TUser>.AddToRoleAsync(TUser! user, string! roleName, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
+Microsoft.AspNetCore.Identity.IUserRoleStore<TUser>.GetRolesAsync(TUser! user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<string!>!>!
+Microsoft.AspNetCore.Identity.IUserRoleStore<TUser>.GetUsersInRoleAsync(string! roleName, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<TUser!>!>!
+Microsoft.AspNetCore.Identity.IUserRoleStore<TUser>.IsInRoleAsync(TUser! user, string! roleName, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<bool>!
+Microsoft.AspNetCore.Identity.IUserRoleStore<TUser>.RemoveFromRoleAsync(TUser! user, string! roleName, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
+Microsoft.AspNetCore.Identity.IUserSecurityStampStore<TUser>.GetSecurityStampAsync(TUser! user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<string?>!
+Microsoft.AspNetCore.Identity.IUserSecurityStampStore<TUser>.SetSecurityStampAsync(TUser! user, string! stamp, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
+Microsoft.AspNetCore.Identity.IUserStore<TUser>.CreateAsync(TUser! user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+Microsoft.AspNetCore.Identity.IUserStore<TUser>.DeleteAsync(TUser! user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+Microsoft.AspNetCore.Identity.IUserStore<TUser>.FindByIdAsync(string! userId, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TUser?>!
+Microsoft.AspNetCore.Identity.IUserStore<TUser>.FindByNameAsync(string! normalizedUserName, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TUser?>!
+Microsoft.AspNetCore.Identity.IUserStore<TUser>.GetNormalizedUserNameAsync(TUser! user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<string?>!
+Microsoft.AspNetCore.Identity.IUserStore<TUser>.GetUserIdAsync(TUser! user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<string!>!
+Microsoft.AspNetCore.Identity.IUserStore<TUser>.GetUserNameAsync(TUser! user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<string?>!
+Microsoft.AspNetCore.Identity.IUserStore<TUser>.SetNormalizedUserNameAsync(TUser! user, string? normalizedName, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
+Microsoft.AspNetCore.Identity.IUserStore<TUser>.SetUserNameAsync(TUser! user, string? userName, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
+Microsoft.AspNetCore.Identity.IUserStore<TUser>.UpdateAsync(TUser! user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+Microsoft.AspNetCore.Identity.IUserTwoFactorRecoveryCodeStore<TUser>.CountCodesAsync(TUser! user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<int>!
+Microsoft.AspNetCore.Identity.IUserTwoFactorRecoveryCodeStore<TUser>.RedeemCodeAsync(TUser! user, string! code, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<bool>!
+Microsoft.AspNetCore.Identity.IUserTwoFactorRecoveryCodeStore<TUser>.ReplaceCodesAsync(TUser! user, System.Collections.Generic.IEnumerable<string!>! recoveryCodes, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
+Microsoft.AspNetCore.Identity.IUserTwoFactorStore<TUser>.GetTwoFactorEnabledAsync(TUser! user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<bool>!
+Microsoft.AspNetCore.Identity.IUserTwoFactorStore<TUser>.SetTwoFactorEnabledAsync(TUser! user, bool enabled, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
+Microsoft.AspNetCore.Identity.IUserTwoFactorTokenProvider<TUser>.CanGenerateTwoFactorTokenAsync(Microsoft.AspNetCore.Identity.UserManager<TUser!>! manager, TUser! user) -> System.Threading.Tasks.Task<bool>!
+Microsoft.AspNetCore.Identity.IUserTwoFactorTokenProvider<TUser>.GenerateAsync(string! purpose, Microsoft.AspNetCore.Identity.UserManager<TUser!>! manager, TUser! user) -> System.Threading.Tasks.Task<string!>!
+Microsoft.AspNetCore.Identity.IUserTwoFactorTokenProvider<TUser>.ValidateAsync(string! purpose, string! token, Microsoft.AspNetCore.Identity.UserManager<TUser!>! manager, TUser! user) -> System.Threading.Tasks.Task<bool>!
+Microsoft.AspNetCore.Identity.IUserValidator<TUser>.ValidateAsync(Microsoft.AspNetCore.Identity.UserManager<TUser!>! manager, TUser! user) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+Microsoft.AspNetCore.Identity.PasswordValidator<TUser>.Describer.get -> Microsoft.AspNetCore.Identity.IdentityErrorDescriber!
+Microsoft.AspNetCore.Identity.PasswordValidator<TUser>.PasswordValidator(Microsoft.AspNetCore.Identity.IdentityErrorDescriber? errors = null) -> void
+Microsoft.AspNetCore.Identity.RoleManager<TRole>.ErrorDescriber.get -> Microsoft.AspNetCore.Identity.IdentityErrorDescriber!
+Microsoft.AspNetCore.Identity.RoleManager<TRole>.ErrorDescriber.set -> void
+Microsoft.AspNetCore.Identity.RoleManager<TRole>.KeyNormalizer.get -> Microsoft.AspNetCore.Identity.ILookupNormalizer!
+Microsoft.AspNetCore.Identity.RoleManager<TRole>.KeyNormalizer.set -> void
+Microsoft.AspNetCore.Identity.RoleManager<TRole>.RoleManager(Microsoft.AspNetCore.Identity.IRoleStore<TRole!>! store, System.Collections.Generic.IEnumerable<Microsoft.AspNetCore.Identity.IRoleValidator<TRole!>!>! roleValidators, Microsoft.AspNetCore.Identity.ILookupNormalizer! keyNormalizer, Microsoft.AspNetCore.Identity.IdentityErrorDescriber! errors, Microsoft.Extensions.Logging.ILogger<Microsoft.AspNetCore.Identity.RoleManager<TRole!>!>! logger) -> void
+Microsoft.AspNetCore.Identity.RoleManager<TRole>.RoleValidators.get -> System.Collections.Generic.IList<Microsoft.AspNetCore.Identity.IRoleValidator<TRole!>!>!
+Microsoft.AspNetCore.Identity.RoleManager<TRole>.Store.get -> Microsoft.AspNetCore.Identity.IRoleStore<TRole!>!
+Microsoft.AspNetCore.Identity.RoleValidator<TRole>.RoleValidator(Microsoft.AspNetCore.Identity.IdentityErrorDescriber? errors = null) -> void
+Microsoft.AspNetCore.Identity.TokenOptions.AuthenticatorIssuer.get -> string!
+Microsoft.AspNetCore.Identity.TokenOptions.AuthenticatorIssuer.set -> void
+Microsoft.AspNetCore.Identity.TokenOptions.AuthenticatorTokenProvider.get -> string!
+Microsoft.AspNetCore.Identity.TokenOptions.AuthenticatorTokenProvider.set -> void
+Microsoft.AspNetCore.Identity.TokenOptions.ChangeEmailTokenProvider.get -> string!
+Microsoft.AspNetCore.Identity.TokenOptions.ChangeEmailTokenProvider.set -> void
+Microsoft.AspNetCore.Identity.TokenOptions.ChangePhoneNumberTokenProvider.get -> string!
+Microsoft.AspNetCore.Identity.TokenOptions.ChangePhoneNumberTokenProvider.set -> void
+Microsoft.AspNetCore.Identity.TokenOptions.EmailConfirmationTokenProvider.get -> string!
+Microsoft.AspNetCore.Identity.TokenOptions.EmailConfirmationTokenProvider.set -> void
+Microsoft.AspNetCore.Identity.TokenOptions.PasswordResetTokenProvider.get -> string!
+Microsoft.AspNetCore.Identity.TokenOptions.PasswordResetTokenProvider.set -> void
+Microsoft.AspNetCore.Identity.TokenOptions.ProviderMap.get -> System.Collections.Generic.Dictionary<string!, Microsoft.AspNetCore.Identity.TokenProviderDescriptor!>!
+Microsoft.AspNetCore.Identity.TokenOptions.ProviderMap.set -> void
+Microsoft.AspNetCore.Identity.TokenProviderDescriptor.ProviderInstance.get -> object?
+Microsoft.AspNetCore.Identity.TokenProviderDescriptor.ProviderInstance.set -> void
+Microsoft.AspNetCore.Identity.TokenProviderDescriptor.ProviderType.get -> System.Type!
+Microsoft.AspNetCore.Identity.TokenProviderDescriptor.TokenProviderDescriptor(System.Type! type) -> void
+Microsoft.AspNetCore.Identity.UpperInvariantLookupNormalizer.NormalizeEmail(string? email) -> string?
+Microsoft.AspNetCore.Identity.UpperInvariantLookupNormalizer.NormalizeName(string? name) -> string?
+Microsoft.AspNetCore.Identity.UserClaimsPrincipalFactory<TUser, TRole>.RoleManager.get -> Microsoft.AspNetCore.Identity.RoleManager<TRole!>!
+Microsoft.AspNetCore.Identity.UserClaimsPrincipalFactory<TUser>.Options.get -> Microsoft.AspNetCore.Identity.IdentityOptions!
+Microsoft.AspNetCore.Identity.UserClaimsPrincipalFactory<TUser>.UserManager.get -> Microsoft.AspNetCore.Identity.UserManager<TUser!>!
+Microsoft.AspNetCore.Identity.UserLoginInfo.LoginProvider.get -> string!
+Microsoft.AspNetCore.Identity.UserLoginInfo.LoginProvider.set -> void
+Microsoft.AspNetCore.Identity.UserLoginInfo.ProviderDisplayName.get -> string?
+Microsoft.AspNetCore.Identity.UserLoginInfo.ProviderDisplayName.set -> void
+Microsoft.AspNetCore.Identity.UserLoginInfo.ProviderKey.get -> string!
+Microsoft.AspNetCore.Identity.UserLoginInfo.ProviderKey.set -> void
+Microsoft.AspNetCore.Identity.UserLoginInfo.UserLoginInfo(string! loginProvider, string! providerKey, string? displayName) -> void
+Microsoft.AspNetCore.Identity.UserManager<TUser>.ErrorDescriber.get -> Microsoft.AspNetCore.Identity.IdentityErrorDescriber!
+Microsoft.AspNetCore.Identity.UserManager<TUser>.ErrorDescriber.set -> void
+Microsoft.AspNetCore.Identity.UserManager<TUser>.KeyNormalizer.get -> Microsoft.AspNetCore.Identity.ILookupNormalizer!
+Microsoft.AspNetCore.Identity.UserManager<TUser>.KeyNormalizer.set -> void
+Microsoft.AspNetCore.Identity.UserManager<TUser>.Options.get -> Microsoft.AspNetCore.Identity.IdentityOptions!
+Microsoft.AspNetCore.Identity.UserManager<TUser>.Options.set -> void
+Microsoft.AspNetCore.Identity.UserManager<TUser>.PasswordHasher.get -> Microsoft.AspNetCore.Identity.IPasswordHasher<TUser!>!
+Microsoft.AspNetCore.Identity.UserManager<TUser>.PasswordHasher.set -> void
+Microsoft.AspNetCore.Identity.UserManager<TUser>.PasswordValidators.get -> System.Collections.Generic.IList<Microsoft.AspNetCore.Identity.IPasswordValidator<TUser!>!>!
+Microsoft.AspNetCore.Identity.UserManager<TUser>.Store.get -> Microsoft.AspNetCore.Identity.IUserStore<TUser!>!
+Microsoft.AspNetCore.Identity.UserManager<TUser>.Store.set -> void
+~Microsoft.AspNetCore.Identity.UserManager<TUser>.UserManager(Microsoft.AspNetCore.Identity.IUserStore<TUser!>! store, Microsoft.Extensions.Options.IOptions<Microsoft.AspNetCore.Identity.IdentityOptions!>! optionsAccessor, Microsoft.AspNetCore.Identity.IPasswordHasher<TUser!>! passwordHasher, System.Collections.Generic.IEnumerable<Microsoft.AspNetCore.Identity.IUserValidator<TUser!>!>! userValidators, System.Collections.Generic.IEnumerable<Microsoft.AspNetCore.Identity.IPasswordValidator<TUser!>!>! passwordValidators, Microsoft.AspNetCore.Identity.ILookupNormalizer! keyNormalizer, Microsoft.AspNetCore.Identity.IdentityErrorDescriber! errors, System.IServiceProvider! services, Microsoft.Extensions.Logging.ILogger<Microsoft.AspNetCore.Identity.UserManager<TUser!>!>! logger) -> void
+Microsoft.AspNetCore.Identity.UserManager<TUser>.UserValidators.get -> System.Collections.Generic.IList<Microsoft.AspNetCore.Identity.IUserValidator<TUser!>!>!
+Microsoft.AspNetCore.Identity.UserManager<TUser>.ValidatePasswordAsync(TUser! user, string? password) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+Microsoft.AspNetCore.Identity.UserManager<TUser>.ValidateUserAsync(TUser! user) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+Microsoft.AspNetCore.Identity.UserOptions.AllowedUserNameCharacters.get -> string!
+Microsoft.AspNetCore.Identity.UserOptions.AllowedUserNameCharacters.set -> void
+Microsoft.AspNetCore.Identity.UserValidator<TUser>.Describer.get -> Microsoft.AspNetCore.Identity.IdentityErrorDescriber!
+Microsoft.AspNetCore.Identity.UserValidator<TUser>.UserValidator(Microsoft.AspNetCore.Identity.IdentityErrorDescriber? errors = null) -> void
+override Microsoft.AspNetCore.Identity.EmailTokenProvider<TUser>.CanGenerateTwoFactorTokenAsync(Microsoft.AspNetCore.Identity.UserManager<TUser!>! manager, TUser! user) -> System.Threading.Tasks.Task<bool>!
+override Microsoft.AspNetCore.Identity.EmailTokenProvider<TUser>.GetUserModifierAsync(string! purpose, Microsoft.AspNetCore.Identity.UserManager<TUser!>! manager, TUser! user) -> System.Threading.Tasks.Task<string!>!
+override Microsoft.AspNetCore.Identity.IdentityResult.ToString() -> string!
+override Microsoft.AspNetCore.Identity.PhoneNumberTokenProvider<TUser>.CanGenerateTwoFactorTokenAsync(Microsoft.AspNetCore.Identity.UserManager<TUser!>! manager, TUser! user) -> System.Threading.Tasks.Task<bool>!
+override Microsoft.AspNetCore.Identity.PhoneNumberTokenProvider<TUser>.GetUserModifierAsync(string! purpose, Microsoft.AspNetCore.Identity.UserManager<TUser!>! manager, TUser! user) -> System.Threading.Tasks.Task<string!>!
+override Microsoft.AspNetCore.Identity.SignInResult.ToString() -> string!
+override Microsoft.AspNetCore.Identity.UserClaimsPrincipalFactory<TUser, TRole>.GenerateClaimsAsync(TUser! user) -> System.Threading.Tasks.Task<System.Security.Claims.ClaimsIdentity!>!
+static Microsoft.AspNetCore.Identity.IdentityResult.Failed(params Microsoft.AspNetCore.Identity.IdentityError![]! errors) -> Microsoft.AspNetCore.Identity.IdentityResult!
+static Microsoft.AspNetCore.Identity.IdentityResult.Success.get -> Microsoft.AspNetCore.Identity.IdentityResult!
+static Microsoft.AspNetCore.Identity.SignInResult.Failed.get -> Microsoft.AspNetCore.Identity.SignInResult!
+static Microsoft.AspNetCore.Identity.SignInResult.LockedOut.get -> Microsoft.AspNetCore.Identity.SignInResult!
+static Microsoft.AspNetCore.Identity.SignInResult.NotAllowed.get -> Microsoft.AspNetCore.Identity.SignInResult!
+static Microsoft.AspNetCore.Identity.SignInResult.Success.get -> Microsoft.AspNetCore.Identity.SignInResult!
+static Microsoft.AspNetCore.Identity.SignInResult.TwoFactorRequired.get -> Microsoft.AspNetCore.Identity.SignInResult!
+static Microsoft.AspNetCore.Identity.UserManager<TUser>.GetChangeEmailTokenPurpose(string! newEmail) -> string!
+static Microsoft.Extensions.DependencyInjection.IdentityServiceCollectionExtensions.AddIdentityCore<TUser>(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.AspNetCore.Identity.IdentityBuilder!
+static Microsoft.Extensions.DependencyInjection.IdentityServiceCollectionExtensions.AddIdentityCore<TUser>(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, System.Action<Microsoft.AspNetCore.Identity.IdentityOptions!>! setupAction) -> Microsoft.AspNetCore.Identity.IdentityBuilder!
+static readonly Microsoft.AspNetCore.Identity.TokenOptions.DefaultAuthenticatorProvider -> string!
+static readonly Microsoft.AspNetCore.Identity.TokenOptions.DefaultEmailProvider -> string!
+static readonly Microsoft.AspNetCore.Identity.TokenOptions.DefaultPhoneProvider -> string!
+static readonly Microsoft.AspNetCore.Identity.TokenOptions.DefaultProvider -> string!
+static System.Security.Claims.PrincipalExtensions.FindFirstValue(this System.Security.Claims.ClaimsPrincipal! principal, string! claimType) -> string?
+virtual Microsoft.AspNetCore.Identity.AuthenticatorTokenProvider<TUser>.CanGenerateTwoFactorTokenAsync(Microsoft.AspNetCore.Identity.UserManager<TUser!>! manager, TUser! user) -> System.Threading.Tasks.Task<bool>!
+virtual Microsoft.AspNetCore.Identity.AuthenticatorTokenProvider<TUser>.GenerateAsync(string! purpose, Microsoft.AspNetCore.Identity.UserManager<TUser!>! manager, TUser! user) -> System.Threading.Tasks.Task<string!>!
+virtual Microsoft.AspNetCore.Identity.AuthenticatorTokenProvider<TUser>.ValidateAsync(string! purpose, string! token, Microsoft.AspNetCore.Identity.UserManager<TUser!>! manager, TUser! user) -> System.Threading.Tasks.Task<bool>!
+virtual Microsoft.AspNetCore.Identity.DefaultPersonalDataProtector.Protect(string? data) -> string?
+virtual Microsoft.AspNetCore.Identity.DefaultPersonalDataProtector.Unprotect(string? data) -> string?
+virtual Microsoft.AspNetCore.Identity.DefaultUserConfirmation<TUser>.IsConfirmedAsync(Microsoft.AspNetCore.Identity.UserManager<TUser!>! manager, TUser! user) -> System.Threading.Tasks.Task<bool>!
+virtual Microsoft.AspNetCore.Identity.IdentityBuilder.AddClaimsPrincipalFactory<TFactory>() -> Microsoft.AspNetCore.Identity.IdentityBuilder!
+virtual Microsoft.AspNetCore.Identity.IdentityBuilder.AddErrorDescriber<TDescriber>() -> Microsoft.AspNetCore.Identity.IdentityBuilder!
+virtual Microsoft.AspNetCore.Identity.IdentityBuilder.AddPasswordValidator<TValidator>() -> Microsoft.AspNetCore.Identity.IdentityBuilder!
+virtual Microsoft.AspNetCore.Identity.IdentityBuilder.AddPersonalDataProtection<TProtector, TKeyRing>() -> Microsoft.AspNetCore.Identity.IdentityBuilder!
+virtual Microsoft.AspNetCore.Identity.IdentityBuilder.AddRoleManager<TRoleManager>() -> Microsoft.AspNetCore.Identity.IdentityBuilder!
+virtual Microsoft.AspNetCore.Identity.IdentityBuilder.AddRoles<TRole>() -> Microsoft.AspNetCore.Identity.IdentityBuilder!
+virtual Microsoft.AspNetCore.Identity.IdentityBuilder.AddRoleStore<TStore>() -> Microsoft.AspNetCore.Identity.IdentityBuilder!
+virtual Microsoft.AspNetCore.Identity.IdentityBuilder.AddRoleValidator<TRole>() -> Microsoft.AspNetCore.Identity.IdentityBuilder!
+virtual Microsoft.AspNetCore.Identity.IdentityBuilder.AddTokenProvider(string! providerName, System.Type! provider) -> Microsoft.AspNetCore.Identity.IdentityBuilder!
+virtual Microsoft.AspNetCore.Identity.IdentityBuilder.AddTokenProvider<TProvider>(string! providerName) -> Microsoft.AspNetCore.Identity.IdentityBuilder!
+virtual Microsoft.AspNetCore.Identity.IdentityBuilder.AddUserConfirmation<TUserConfirmation>() -> Microsoft.AspNetCore.Identity.IdentityBuilder!
+virtual Microsoft.AspNetCore.Identity.IdentityBuilder.AddUserManager<TUserManager>() -> Microsoft.AspNetCore.Identity.IdentityBuilder!
+virtual Microsoft.AspNetCore.Identity.IdentityBuilder.AddUserStore<TStore>() -> Microsoft.AspNetCore.Identity.IdentityBuilder!
+virtual Microsoft.AspNetCore.Identity.IdentityBuilder.AddUserValidator<TValidator>() -> Microsoft.AspNetCore.Identity.IdentityBuilder!
+virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.ConcurrencyFailure() -> Microsoft.AspNetCore.Identity.IdentityError!
+virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.DefaultError() -> Microsoft.AspNetCore.Identity.IdentityError!
+virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.DuplicateEmail(string! email) -> Microsoft.AspNetCore.Identity.IdentityError!
+virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.DuplicateRoleName(string! role) -> Microsoft.AspNetCore.Identity.IdentityError!
+virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.DuplicateUserName(string! userName) -> Microsoft.AspNetCore.Identity.IdentityError!
+virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.InvalidEmail(string? email) -> Microsoft.AspNetCore.Identity.IdentityError!
+virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.InvalidRoleName(string? role) -> Microsoft.AspNetCore.Identity.IdentityError!
+virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.InvalidToken() -> Microsoft.AspNetCore.Identity.IdentityError!
+virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.InvalidUserName(string? userName) -> Microsoft.AspNetCore.Identity.IdentityError!
+virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.LoginAlreadyAssociated() -> Microsoft.AspNetCore.Identity.IdentityError!
+virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.PasswordMismatch() -> Microsoft.AspNetCore.Identity.IdentityError!
+virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.PasswordRequiresDigit() -> Microsoft.AspNetCore.Identity.IdentityError!
+virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.PasswordRequiresLower() -> Microsoft.AspNetCore.Identity.IdentityError!
+virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.PasswordRequiresNonAlphanumeric() -> Microsoft.AspNetCore.Identity.IdentityError!
+virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.PasswordRequiresUniqueChars(int uniqueChars) -> Microsoft.AspNetCore.Identity.IdentityError!
+virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.PasswordRequiresUpper() -> Microsoft.AspNetCore.Identity.IdentityError!
+virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.PasswordTooShort(int length) -> Microsoft.AspNetCore.Identity.IdentityError!
+virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.RecoveryCodeRedemptionFailed() -> Microsoft.AspNetCore.Identity.IdentityError!
+virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.UserAlreadyHasPassword() -> Microsoft.AspNetCore.Identity.IdentityError!
+virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.UserAlreadyInRole(string! role) -> Microsoft.AspNetCore.Identity.IdentityError!
+virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.UserLockoutNotEnabled() -> Microsoft.AspNetCore.Identity.IdentityError!
+virtual Microsoft.AspNetCore.Identity.IdentityErrorDescriber.UserNotInRole(string! role) -> Microsoft.AspNetCore.Identity.IdentityError!
+virtual Microsoft.AspNetCore.Identity.PasswordHasher<TUser>.HashPassword(TUser! user, string! password) -> string!
+virtual Microsoft.AspNetCore.Identity.PasswordHasher<TUser>.VerifyHashedPassword(TUser! user, string! hashedPassword, string! providedPassword) -> Microsoft.AspNetCore.Identity.PasswordVerificationResult
+virtual Microsoft.AspNetCore.Identity.PasswordValidator<TUser>.ValidateAsync(Microsoft.AspNetCore.Identity.UserManager<TUser!>! manager, TUser! user, string? password) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.AddClaimAsync(TRole! role, System.Security.Claims.Claim! claim) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.CreateAsync(TRole! role) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.DeleteAsync(TRole! role) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.FindByIdAsync(string! roleId) -> System.Threading.Tasks.Task<TRole?>!
+virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.FindByNameAsync(string! roleName) -> System.Threading.Tasks.Task<TRole?>!
+virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.GetClaimsAsync(TRole! role) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<System.Security.Claims.Claim!>!>!
+virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.GetRoleIdAsync(TRole! role) -> System.Threading.Tasks.Task<string!>!
+virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.GetRoleNameAsync(TRole! role) -> System.Threading.Tasks.Task<string?>!
+virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.Logger.get -> Microsoft.Extensions.Logging.ILogger!
+virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.Logger.set -> void
+virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.NormalizeKey(string? key) -> string?
+virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.RemoveClaimAsync(TRole! role, System.Security.Claims.Claim! claim) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.RoleExistsAsync(string! roleName) -> System.Threading.Tasks.Task<bool>!
+virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.Roles.get -> System.Linq.IQueryable<TRole!>!
+virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.SetRoleNameAsync(TRole! role, string? name) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.UpdateAsync(TRole! role) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.UpdateNormalizedRoleNameAsync(TRole! role) -> System.Threading.Tasks.Task!
+virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.UpdateRoleAsync(TRole! role) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.RoleManager<TRole>.ValidateRoleAsync(TRole! role) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.RoleValidator<TRole>.ValidateAsync(Microsoft.AspNetCore.Identity.RoleManager<TRole!>! manager, TRole! role) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.TotpSecurityStampBasedTokenProvider<TUser>.GenerateAsync(string! purpose, Microsoft.AspNetCore.Identity.UserManager<TUser!>! manager, TUser! user) -> System.Threading.Tasks.Task<string!>!
+virtual Microsoft.AspNetCore.Identity.TotpSecurityStampBasedTokenProvider<TUser>.GetUserModifierAsync(string! purpose, Microsoft.AspNetCore.Identity.UserManager<TUser!>! manager, TUser! user) -> System.Threading.Tasks.Task<string!>!
+virtual Microsoft.AspNetCore.Identity.TotpSecurityStampBasedTokenProvider<TUser>.ValidateAsync(string! purpose, string! token, Microsoft.AspNetCore.Identity.UserManager<TUser!>! manager, TUser! user) -> System.Threading.Tasks.Task<bool>!
+virtual Microsoft.AspNetCore.Identity.UserClaimsPrincipalFactory<TUser>.CreateAsync(TUser! user) -> System.Threading.Tasks.Task<System.Security.Claims.ClaimsPrincipal!>!
+virtual Microsoft.AspNetCore.Identity.UserClaimsPrincipalFactory<TUser>.GenerateClaimsAsync(TUser! user) -> System.Threading.Tasks.Task<System.Security.Claims.ClaimsIdentity!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.AccessFailedAsync(TUser! user) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.AddClaimAsync(TUser! user, System.Security.Claims.Claim! claim) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.AddClaimsAsync(TUser! user, System.Collections.Generic.IEnumerable<System.Security.Claims.Claim!>! claims) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.AddLoginAsync(TUser! user, Microsoft.AspNetCore.Identity.UserLoginInfo! login) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.AddPasswordAsync(TUser! user, string! password) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.AddToRoleAsync(TUser! user, string! role) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.AddToRolesAsync(TUser! user, System.Collections.Generic.IEnumerable<string!>! roles) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.ChangeEmailAsync(TUser! user, string! newEmail, string! token) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.ChangePasswordAsync(TUser! user, string! currentPassword, string! newPassword) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.ChangePhoneNumberAsync(TUser! user, string! phoneNumber, string! token) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.CheckPasswordAsync(TUser! user, string! password) -> System.Threading.Tasks.Task<bool>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.ConfirmEmailAsync(TUser! user, string! token) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.CountRecoveryCodesAsync(TUser! user) -> System.Threading.Tasks.Task<int>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.CreateAsync(TUser! user) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.CreateAsync(TUser! user, string! password) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.CreateSecurityTokenAsync(TUser! user) -> System.Threading.Tasks.Task<byte[]!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.CreateTwoFactorRecoveryCode() -> string!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.DeleteAsync(TUser! user) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.FindByEmailAsync(string! email) -> System.Threading.Tasks.Task<TUser?>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.FindByIdAsync(string! userId) -> System.Threading.Tasks.Task<TUser?>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.FindByLoginAsync(string! loginProvider, string! providerKey) -> System.Threading.Tasks.Task<TUser?>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.FindByNameAsync(string! userName) -> System.Threading.Tasks.Task<TUser?>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GenerateChangeEmailTokenAsync(TUser! user, string! newEmail) -> System.Threading.Tasks.Task<string!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GenerateChangePhoneNumberTokenAsync(TUser! user, string! phoneNumber) -> System.Threading.Tasks.Task<string!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GenerateConcurrencyStampAsync(TUser! user) -> System.Threading.Tasks.Task<string!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GenerateEmailConfirmationTokenAsync(TUser! user) -> System.Threading.Tasks.Task<string!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GenerateNewAuthenticatorKey() -> string!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GenerateNewTwoFactorRecoveryCodesAsync(TUser! user, int number) -> System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<string!>?>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GeneratePasswordResetTokenAsync(TUser! user) -> System.Threading.Tasks.Task<string!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GenerateTwoFactorTokenAsync(TUser! user, string! tokenProvider) -> System.Threading.Tasks.Task<string!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GenerateUserTokenAsync(TUser! user, string! tokenProvider, string! purpose) -> System.Threading.Tasks.Task<string!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetAccessFailedCountAsync(TUser! user) -> System.Threading.Tasks.Task<int>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetAuthenticationTokenAsync(TUser! user, string! loginProvider, string! tokenName) -> System.Threading.Tasks.Task<string?>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetAuthenticatorKeyAsync(TUser! user) -> System.Threading.Tasks.Task<string?>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetClaimsAsync(TUser! user) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<System.Security.Claims.Claim!>!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetEmailAsync(TUser! user) -> System.Threading.Tasks.Task<string?>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetLockoutEnabledAsync(TUser! user) -> System.Threading.Tasks.Task<bool>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetLockoutEndDateAsync(TUser! user) -> System.Threading.Tasks.Task<System.DateTimeOffset?>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetLoginsAsync(TUser! user) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<Microsoft.AspNetCore.Identity.UserLoginInfo!>!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetPhoneNumberAsync(TUser! user) -> System.Threading.Tasks.Task<string?>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetRolesAsync(TUser! user) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<string!>!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetSecurityStampAsync(TUser! user) -> System.Threading.Tasks.Task<string!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetTwoFactorEnabledAsync(TUser! user) -> System.Threading.Tasks.Task<bool>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetUserAsync(System.Security.Claims.ClaimsPrincipal! principal) -> System.Threading.Tasks.Task<TUser?>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetUserId(System.Security.Claims.ClaimsPrincipal! principal) -> string?
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetUserIdAsync(TUser! user) -> System.Threading.Tasks.Task<string!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetUserName(System.Security.Claims.ClaimsPrincipal! principal) -> string?
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetUserNameAsync(TUser! user) -> System.Threading.Tasks.Task<string?>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetUsersForClaimAsync(System.Security.Claims.Claim! claim) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<TUser!>!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetUsersInRoleAsync(string! roleName) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<TUser!>!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.GetValidTwoFactorProvidersAsync(TUser! user) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<string!>!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.HasPasswordAsync(TUser! user) -> System.Threading.Tasks.Task<bool>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.IsEmailConfirmedAsync(TUser! user) -> System.Threading.Tasks.Task<bool>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.IsInRoleAsync(TUser! user, string! role) -> System.Threading.Tasks.Task<bool>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.IsLockedOutAsync(TUser! user) -> System.Threading.Tasks.Task<bool>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.IsPhoneNumberConfirmedAsync(TUser! user) -> System.Threading.Tasks.Task<bool>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.Logger.get -> Microsoft.Extensions.Logging.ILogger!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.Logger.set -> void
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.NormalizeEmail(string? email) -> string?
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.NormalizeName(string? name) -> string?
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.RedeemTwoFactorRecoveryCodeAsync(TUser! user, string! code) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.RegisterTokenProvider(string! providerName, Microsoft.AspNetCore.Identity.IUserTwoFactorTokenProvider<TUser!>! provider) -> void
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.RemoveAuthenticationTokenAsync(TUser! user, string! loginProvider, string! tokenName) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.RemoveClaimAsync(TUser! user, System.Security.Claims.Claim! claim) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.RemoveClaimsAsync(TUser! user, System.Collections.Generic.IEnumerable<System.Security.Claims.Claim!>! claims) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.RemoveFromRoleAsync(TUser! user, string! role) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.RemoveFromRolesAsync(TUser! user, System.Collections.Generic.IEnumerable<string!>! roles) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.RemoveLoginAsync(TUser! user, string! loginProvider, string! providerKey) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.RemovePasswordAsync(TUser! user) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.ReplaceClaimAsync(TUser! user, System.Security.Claims.Claim! claim, System.Security.Claims.Claim! newClaim) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.ResetAccessFailedCountAsync(TUser! user) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.ResetAuthenticatorKeyAsync(TUser! user) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.ResetPasswordAsync(TUser! user, string! token, string! newPassword) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.SetAuthenticationTokenAsync(TUser! user, string! loginProvider, string! tokenName, string? tokenValue) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.SetEmailAsync(TUser! user, string? email) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.SetLockoutEnabledAsync(TUser! user, bool enabled) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.SetLockoutEndDateAsync(TUser! user, System.DateTimeOffset? lockoutEnd) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.SetPhoneNumberAsync(TUser! user, string! phoneNumber) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.SetTwoFactorEnabledAsync(TUser! user, bool enabled) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.SetUserNameAsync(TUser! user, string? userName) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.UpdateAsync(TUser! user) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.UpdateNormalizedEmailAsync(TUser! user) -> System.Threading.Tasks.Task!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.UpdateNormalizedUserNameAsync(TUser! user) -> System.Threading.Tasks.Task!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.UpdatePasswordHash(TUser! user, string! newPassword, bool validatePassword) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.UpdateSecurityStampAsync(TUser! user) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.UpdateUserAsync(TUser! user) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.Users.get -> System.Linq.IQueryable<TUser!>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.VerifyChangePhoneNumberTokenAsync(TUser! user, string! token, string! phoneNumber) -> System.Threading.Tasks.Task<bool>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.VerifyPasswordAsync(Microsoft.AspNetCore.Identity.IUserPasswordStore<TUser!>! store, TUser! user, string! password) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.PasswordVerificationResult>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.VerifyTwoFactorTokenAsync(TUser! user, string! tokenProvider, string! token) -> System.Threading.Tasks.Task<bool>!
+virtual Microsoft.AspNetCore.Identity.UserManager<TUser>.VerifyUserTokenAsync(TUser! user, string! tokenProvider, string! purpose, string! token) -> System.Threading.Tasks.Task<bool>!
+virtual Microsoft.AspNetCore.Identity.UserValidator<TUser>.ValidateAsync(Microsoft.AspNetCore.Identity.UserManager<TUser!>! manager, TUser! user) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+*REMOVED*~Microsoft.AspNetCore.Identity.PasswordHasher<TUser>.PasswordHasher(Microsoft.Extensions.Options.IOptions<Microsoft.AspNetCore.Identity.PasswordHasherOptions> optionsAccessor = null) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.UserClaimsPrincipalFactory<TUser, TRole>.UserClaimsPrincipalFactory(Microsoft.AspNetCore.Identity.UserManager<TUser> userManager, Microsoft.AspNetCore.Identity.RoleManager<TRole> roleManager, Microsoft.Extensions.Options.IOptions<Microsoft.AspNetCore.Identity.IdentityOptions> options) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.UserClaimsPrincipalFactory<TUser>.UserClaimsPrincipalFactory(Microsoft.AspNetCore.Identity.UserManager<TUser> userManager, Microsoft.Extensions.Options.IOptions<Microsoft.AspNetCore.Identity.IdentityOptions> optionsAccessor) -> void
+~Microsoft.AspNetCore.Identity.PasswordHasher<TUser>.PasswordHasher(Microsoft.Extensions.Options.IOptions<Microsoft.AspNetCore.Identity.PasswordHasherOptions!>? optionsAccessor = null) -> void
+~Microsoft.AspNetCore.Identity.UserClaimsPrincipalFactory<TUser, TRole>.UserClaimsPrincipalFactory(Microsoft.AspNetCore.Identity.UserManager<TUser!>! userManager, Microsoft.AspNetCore.Identity.RoleManager<TRole!>! roleManager, Microsoft.Extensions.Options.IOptions<Microsoft.AspNetCore.Identity.IdentityOptions!>! options) -> void
+~Microsoft.AspNetCore.Identity.UserClaimsPrincipalFactory<TUser>.UserClaimsPrincipalFactory(Microsoft.AspNetCore.Identity.UserManager<TUser!>! userManager, Microsoft.Extensions.Options.IOptions<Microsoft.AspNetCore.Identity.IdentityOptions!>! optionsAccessor) -> void

+ 6 - 4
src/Identity/Extensions.Core/src/Rfc6238AuthenticationService.cs

@@ -1,6 +1,8 @@
 // Licensed to the .NET Foundation under one or more agreements.
 // The .NET Foundation licenses this file to you under the MIT license.
 
+#nullable enable
+
 using System;
 using System.Diagnostics;
 using System.Net;
@@ -37,7 +39,7 @@ internal static class Rfc6238AuthenticationService
         HashAlgorithm hashAlgorithm,
 #endif
         ulong timestepNumber,
-        string modifier)
+        string? modifier)
     {
         // # of 0's = length of pin
         const int Mod = 1000000;
@@ -63,7 +65,7 @@ internal static class Rfc6238AuthenticationService
         return binaryCode % Mod;
     }
 
-    private static byte[] ApplyModifier(byte[] input, string modifier)
+    private static byte[] ApplyModifier(byte[] input, string? modifier)
     {
         if (string.IsNullOrEmpty(modifier))
         {
@@ -88,7 +90,7 @@ internal static class Rfc6238AuthenticationService
         return (ulong)(delta.Ticks / _timestep.Ticks);
     }
 
-    public static int GenerateCode(byte[] securityToken, string modifier = null)
+    public static int GenerateCode(byte[] securityToken, string? modifier = null)
     {
         if (securityToken == null)
         {
@@ -108,7 +110,7 @@ internal static class Rfc6238AuthenticationService
 #endif
     }
 
-    public static bool ValidateCode(byte[] securityToken, int code, string modifier = null)
+    public static bool ValidateCode(byte[] securityToken, int code, string? modifier = null)
     {
         if (securityToken == null)
         {

+ 7 - 5
src/Identity/Extensions.Core/src/RoleManager.cs

@@ -3,6 +3,7 @@
 
 using System;
 using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
 using System.Linq;
 using System.Security.Claims;
 using System.Threading;
@@ -242,7 +243,8 @@ public class RoleManager<TRole> : IDisposable where TRole : class
     /// </summary>
     /// <param name="key">The value to normalize.</param>
     /// <returns>A normalized representation of the specified <paramref name="key"/>.</returns>
-    public virtual string NormalizeKey(string key)
+    [return: NotNullIfNotNull("key")]
+    public virtual string? NormalizeKey(string? key)
     {
         return (KeyNormalizer == null) ? key : KeyNormalizer.NormalizeName(key);
     }
@@ -255,7 +257,7 @@ public class RoleManager<TRole> : IDisposable where TRole : class
     /// The <see cref="Task"/> that represents the asynchronous operation, containing the role
     /// associated with the specified <paramref name="roleId"/>
     /// </returns>
-    public virtual Task<TRole> FindByIdAsync(string roleId)
+    public virtual Task<TRole?> FindByIdAsync(string roleId)
     {
         ThrowIfDisposed();
         return Store.FindByIdAsync(roleId, CancellationToken);
@@ -269,7 +271,7 @@ public class RoleManager<TRole> : IDisposable where TRole : class
     /// The <see cref="Task"/> that represents the asynchronous operation, containing the name of the
     /// specified <paramref name="role"/>.
     /// </returns>
-    public virtual Task<string> GetRoleNameAsync(TRole role)
+    public virtual Task<string?> GetRoleNameAsync(TRole role)
     {
         ThrowIfDisposed();
         return Store.GetRoleNameAsync(role, CancellationToken);
@@ -284,7 +286,7 @@ public class RoleManager<TRole> : IDisposable where TRole : class
     /// The <see cref="Task"/> that represents the asynchronous operation, containing the <see cref="IdentityResult"/>
     /// of the operation.
     /// </returns>
-    public virtual async Task<IdentityResult> SetRoleNameAsync(TRole role, string name)
+    public virtual async Task<IdentityResult> SetRoleNameAsync(TRole role, string? name)
     {
         ThrowIfDisposed();
 
@@ -315,7 +317,7 @@ public class RoleManager<TRole> : IDisposable where TRole : class
     /// The <see cref="Task"/> that represents the asynchronous operation, containing the role
     /// associated with the specified <paramref name="roleName"/>
     /// </returns>
-    public virtual Task<TRole> FindByNameAsync(string roleName)
+    public virtual Task<TRole?> FindByNameAsync(string roleName)
     {
         ThrowIfDisposed();
         if (roleName == null)

+ 1 - 1
src/Identity/Extensions.Core/src/RoleValidator.cs

@@ -17,7 +17,7 @@ public class RoleValidator<TRole> : IRoleValidator<TRole> where TRole : class
     /// Creates a new instance of <see cref="RoleValidator{TRole}"/>.
     /// </summary>
     /// <param name="errors">The <see cref="IdentityErrorDescriber"/> used to provider error messages.</param>
-    public RoleValidator(IdentityErrorDescriber errors = null)
+    public RoleValidator(IdentityErrorDescriber? errors = null)
     {
         Describer = errors ?? new IdentityErrorDescriber();
     }

+ 1 - 1
src/Identity/Extensions.Core/src/TokenProviderDescriptor.cs

@@ -27,5 +27,5 @@ public class TokenProviderDescriptor
     /// <summary>
     /// If specified, the instance to be used for the token provider.
     /// </summary>
-    public object ProviderInstance { get; set; }
+    public object? ProviderInstance { get; set; }
 }

+ 6 - 2
src/Identity/Extensions.Core/src/UpperInvariantLookupNormalizer.cs

@@ -1,6 +1,8 @@
 // Licensed to the .NET Foundation under one or more agreements.
 // The .NET Foundation licenses this file to you under the MIT license.
 
+using System.Diagnostics.CodeAnalysis;
+
 namespace Microsoft.AspNetCore.Identity;
 
 /// <summary>
@@ -13,7 +15,8 @@ public sealed class UpperInvariantLookupNormalizer : ILookupNormalizer
     /// </summary>
     /// <param name="name">The key to normalize.</param>
     /// <returns>A normalized representation of the specified <paramref name="name"/>.</returns>
-    public string NormalizeName(string name)
+    [return: NotNullIfNotNull("name")]
+    public string? NormalizeName(string? name)
     {
         if (name == null)
         {
@@ -27,5 +30,6 @@ public sealed class UpperInvariantLookupNormalizer : ILookupNormalizer
     /// </summary>
     /// <param name="email">The email to normalize.</param>
     /// <returns>A normalized representation of the specified <paramref name="email"/>.</returns>
-    public string NormalizeEmail(string email) => NormalizeName(email);
+    [return: NotNullIfNotNull("email")]
+    public string? NormalizeEmail(string? email) => NormalizeName(email);
 }

+ 1 - 1
src/Identity/Extensions.Core/src/UserClaimsPrincipalFactory.cs

@@ -80,7 +80,7 @@ public class UserClaimsPrincipalFactory<TUser> : IUserClaimsPrincipalFactory<TUs
             Options.ClaimsIdentity.UserNameClaimType,
             Options.ClaimsIdentity.RoleClaimType);
         id.AddClaim(new Claim(Options.ClaimsIdentity.UserIdClaimType, userId));
-        id.AddClaim(new Claim(Options.ClaimsIdentity.UserNameClaimType, userName));
+        id.AddClaim(new Claim(Options.ClaimsIdentity.UserNameClaimType, userName!));
         if (UserManager.SupportsUserEmail)
         {
             var email = await UserManager.GetEmailAsync(user).ConfigureAwait(false);

+ 2 - 2
src/Identity/Extensions.Core/src/UserLoginInfo.cs

@@ -14,7 +14,7 @@ public class UserLoginInfo
     /// <param name="loginProvider">The provider associated with this login information.</param>
     /// <param name="providerKey">The unique identifier for this user provided by the login provider.</param>
     /// <param name="displayName">The display name for this user provided by the login provider.</param>
-    public UserLoginInfo(string loginProvider, string providerKey, string displayName)
+    public UserLoginInfo(string loginProvider, string providerKey, string? displayName)
     {
         LoginProvider = loginProvider;
         ProviderKey = providerKey;
@@ -50,5 +50,5 @@ public class UserLoginInfo
     /// <remarks>
     /// Examples of the display name may be local, FACEBOOK, Google, etc.
     /// </remarks>
-    public string ProviderDisplayName { get; set; }
+    public string? ProviderDisplayName { get; set; }
 }

+ 39 - 31
src/Identity/Extensions.Core/src/UserManager.cs

@@ -3,6 +3,7 @@
 
 using System;
 using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
 using System.Linq;
 using System.Security.Claims;
 using System.Security.Cryptography;
@@ -121,7 +122,7 @@ public class UserManager<TUser> : IDisposable where TUser : class
             {
                 throw new InvalidOperationException(Resources.StoreNotIProtectedUserStore);
             }
-            if (services.GetService<ILookupProtector>() == null)
+            if (services?.GetService<ILookupProtector>() == null)
             {
                 throw new InvalidOperationException(Resources.NoPersonalDataProtector);
             }
@@ -400,7 +401,7 @@ public class UserManager<TUser> : IDisposable where TUser : class
     /// <param name="principal">The <see cref="ClaimsPrincipal"/> instance.</param>
     /// <returns>The Name claim value, or null if the claim is not present.</returns>
     /// <remarks>The Name claim is identified by <see cref="ClaimsIdentity.DefaultNameClaimType"/>.</remarks>
-    public virtual string GetUserName(ClaimsPrincipal principal)
+    public virtual string? GetUserName(ClaimsPrincipal principal)
     {
         if (principal == null)
         {
@@ -415,7 +416,7 @@ public class UserManager<TUser> : IDisposable where TUser : class
     /// <param name="principal">The <see cref="ClaimsPrincipal"/> instance.</param>
     /// <returns>The User ID claim value, or null if the claim is not present.</returns>
     /// <remarks>The User ID claim is identified by <see cref="ClaimTypes.NameIdentifier"/>.</remarks>
-    public virtual string GetUserId(ClaimsPrincipal principal)
+    public virtual string? GetUserId(ClaimsPrincipal principal)
     {
         if (principal == null)
         {
@@ -431,14 +432,14 @@ public class UserManager<TUser> : IDisposable where TUser : class
     /// <param name="principal">The principal which contains the user id claim.</param>
     /// <returns>The user corresponding to the IdentityOptions.ClaimsIdentity.UserIdClaimType claim in
     /// the principal or null</returns>
-    public virtual Task<TUser> GetUserAsync(ClaimsPrincipal principal)
+    public virtual Task<TUser?> GetUserAsync(ClaimsPrincipal principal)
     {
         if (principal == null)
         {
             throw new ArgumentNullException(nameof(principal));
         }
         var id = GetUserId(principal);
-        return id == null ? Task.FromResult<TUser>(null) : FindByIdAsync(id);
+        return id == null ? Task.FromResult<TUser?>(null) : FindByIdAsync(id);
     }
 
     /// <summary>
@@ -527,7 +528,7 @@ public class UserManager<TUser> : IDisposable where TUser : class
     /// <returns>
     /// The <see cref="Task"/> that represents the asynchronous operation, containing the user matching the specified <paramref name="userId"/> if it exists.
     /// </returns>
-    public virtual Task<TUser> FindByIdAsync(string userId)
+    public virtual Task<TUser?> FindByIdAsync(string userId)
     {
         ThrowIfDisposed();
         return Store.FindByIdAsync(userId, CancellationToken);
@@ -540,7 +541,7 @@ public class UserManager<TUser> : IDisposable where TUser : class
     /// <returns>
     /// The <see cref="Task"/> that represents the asynchronous operation, containing the user matching the specified <paramref name="userName"/> if it exists.
     /// </returns>
-    public virtual async Task<TUser> FindByNameAsync(string userName)
+    public virtual async Task<TUser?> FindByNameAsync(string userName)
     {
         ThrowIfDisposed();
         if (userName == null)
@@ -607,7 +608,8 @@ public class UserManager<TUser> : IDisposable where TUser : class
     /// </summary>
     /// <param name="name">The name to normalize.</param>
     /// <returns>A normalized value representing the specified <paramref name="name"/>.</returns>
-    public virtual string NormalizeName(string name)
+    [return: NotNullIfNotNull("name")]
+    public virtual string? NormalizeName(string? name)
         => (KeyNormalizer == null) ? name : KeyNormalizer.NormalizeName(name);
 
     /// <summary>
@@ -615,15 +617,17 @@ public class UserManager<TUser> : IDisposable where TUser : class
     /// </summary>
     /// <param name="email">The email to normalize.</param>
     /// <returns>A normalized value representing the specified <paramref name="email"/>.</returns>
-    public virtual string NormalizeEmail(string email)
+    [return: NotNullIfNotNull("email")]
+    public virtual string? NormalizeEmail(string? email)
         => (KeyNormalizer == null) ? email : KeyNormalizer.NormalizeEmail(email);
 
-    private string ProtectPersonalData(string data)
+    [return: NotNullIfNotNull("data")]
+    private string? ProtectPersonalData(string? data)
     {
         if (Options.Stores.ProtectPersonalData)
         {
-            var keyRing = _services.GetService<ILookupProtectorKeyRing>();
-            var protector = _services.GetService<ILookupProtector>();
+            var keyRing = _services.GetRequiredService<ILookupProtectorKeyRing>();
+            var protector = _services.GetRequiredService<ILookupProtector>();
             return protector.Protect(keyRing.CurrentKeyId, data);
         }
         return data;
@@ -646,7 +650,7 @@ public class UserManager<TUser> : IDisposable where TUser : class
     /// </summary>
     /// <param name="user">The user whose name should be retrieved.</param>
     /// <returns>The <see cref="Task"/> that represents the asynchronous operation, containing the name for the specified <paramref name="user"/>.</returns>
-    public virtual async Task<string> GetUserNameAsync(TUser user)
+    public virtual async Task<string?> GetUserNameAsync(TUser user)
     {
         ThrowIfDisposed();
         if (user == null)
@@ -662,7 +666,7 @@ public class UserManager<TUser> : IDisposable where TUser : class
     /// <param name="user">The user whose name should be set.</param>
     /// <param name="userName">The user name to set.</param>
     /// <returns>The <see cref="Task"/> that represents the asynchronous operation.</returns>
-    public virtual async Task<IdentityResult> SetUserNameAsync(TUser user, string userName)
+    public virtual async Task<IdentityResult> SetUserNameAsync(TUser user, string? userName)
     {
         ThrowIfDisposed();
         if (user == null)
@@ -945,7 +949,7 @@ public class UserManager<TUser> : IDisposable where TUser : class
     /// <returns>
     /// The <see cref="Task"/> for the asynchronous operation, containing the user, if any which matched the specified login provider and key.
     /// </returns>
-    public virtual Task<TUser> FindByLoginAsync(string loginProvider, string providerKey)
+    public virtual Task<TUser?> FindByLoginAsync(string loginProvider, string providerKey)
     {
         ThrowIfDisposed();
         var loginStore = GetLoginStore();
@@ -1367,7 +1371,7 @@ public class UserManager<TUser> : IDisposable where TUser : class
     /// </summary>
     /// <param name="user">The user whose email should be returned.</param>
     /// <returns>The task object containing the results of the asynchronous operation, the email address for the specified <paramref name="user"/>.</returns>
-    public virtual async Task<string> GetEmailAsync(TUser user)
+    public virtual async Task<string?> GetEmailAsync(TUser user)
     {
         ThrowIfDisposed();
         var store = GetEmailStore();
@@ -1387,7 +1391,7 @@ public class UserManager<TUser> : IDisposable where TUser : class
     /// The <see cref="Task"/> that represents the asynchronous operation, containing the <see cref="IdentityResult"/>
     /// of the operation.
     /// </returns>
-    public virtual async Task<IdentityResult> SetEmailAsync(TUser user, string email)
+    public virtual async Task<IdentityResult> SetEmailAsync(TUser user, string? email)
     {
         ThrowIfDisposed();
         var store = GetEmailStore();
@@ -1411,7 +1415,7 @@ public class UserManager<TUser> : IDisposable where TUser : class
     /// <returns>
     /// The task object containing the results of the asynchronous lookup operation, the user, if any, associated with a normalized value of the specified email address.
     /// </returns>
-    public virtual async Task<TUser> FindByEmailAsync(string email)
+    public virtual async Task<TUser?> FindByEmailAsync(string email)
     {
         ThrowIfDisposed();
         var store = GetEmailStore();
@@ -1451,11 +1455,11 @@ public class UserManager<TUser> : IDisposable where TUser : class
     /// <returns>The task object representing the asynchronous operation.</returns>
     public virtual async Task UpdateNormalizedEmailAsync(TUser user)
     {
-        var store = GetEmailStore(throwOnFail: false);
+        var store = GetOptionalEmailStore();
         if (store != null)
         {
             var email = await GetEmailAsync(user).ConfigureAwait(false);
-            await store.SetNormalizedEmailAsync(user, ProtectPersonalData(NormalizeEmail(email)), CancellationToken).ConfigureAwait(false);
+            await store.SetNormalizedEmailAsync(user, ProtectPersonalData(NormalizeEmail(email)!), CancellationToken).ConfigureAwait(false);
         }
     }
 
@@ -1567,7 +1571,7 @@ public class UserManager<TUser> : IDisposable where TUser : class
     /// </summary>
     /// <param name="user">The user whose telephone number should be retrieved.</param>
     /// <returns>The <see cref="Task"/> that represents the asynchronous operation, containing the user's telephone number, if any.</returns>
-    public virtual async Task<string> GetPhoneNumberAsync(TUser user)
+    public virtual async Task<string?> GetPhoneNumberAsync(TUser user)
     {
         ThrowIfDisposed();
         var store = GetPhoneNumberStore();
@@ -2118,7 +2122,7 @@ public class UserManager<TUser> : IDisposable where TUser : class
     /// <param name="loginProvider">The authentication scheme for the provider the token is associated with.</param>
     /// <param name="tokenName">The name of the token.</param>
     /// <returns>The authentication token for a user</returns>
-    public virtual Task<string> GetAuthenticationTokenAsync(TUser user, string loginProvider, string tokenName)
+    public virtual Task<string?> GetAuthenticationTokenAsync(TUser user, string loginProvider, string tokenName)
     {
         ThrowIfDisposed();
         var store = GetAuthenticationTokenStore();
@@ -2146,7 +2150,7 @@ public class UserManager<TUser> : IDisposable where TUser : class
     /// <param name="tokenName">The name of the token.</param>
     /// <param name="tokenValue">The value of the token.</param>
     /// <returns>Whether the user was successfully updated.</returns>
-    public virtual async Task<IdentityResult> SetAuthenticationTokenAsync(TUser user, string loginProvider, string tokenName, string tokenValue)
+    public virtual async Task<IdentityResult> SetAuthenticationTokenAsync(TUser user, string loginProvider, string tokenName, string? tokenValue)
     {
         ThrowIfDisposed();
         var store = GetAuthenticationTokenStore();
@@ -2201,7 +2205,7 @@ public class UserManager<TUser> : IDisposable where TUser : class
     /// </summary>
     /// <param name="user">The user.</param>
     /// <returns>The authenticator key</returns>
-    public virtual Task<string> GetAuthenticatorKeyAsync(TUser user)
+    public virtual Task<string?> GetAuthenticatorKeyAsync(TUser user)
     {
         ThrowIfDisposed();
         var store = GetAuthenticatorKeyStore();
@@ -2243,7 +2247,7 @@ public class UserManager<TUser> : IDisposable where TUser : class
     /// <param name="user">The user to generate recovery codes for.</param>
     /// <param name="number">The number of codes to generate.</param>
     /// <returns>The new recovery codes for the user.  Note: there may be less than number returned, as duplicates will be removed.</returns>
-    public virtual async Task<IEnumerable<string>> GenerateNewTwoFactorRecoveryCodesAsync(TUser user, int number)
+    public virtual async Task<IEnumerable<string>?> GenerateNewTwoFactorRecoveryCodesAsync(TUser user, int number)
     {
         ThrowIfDisposed();
         var store = GetRecoveryCodeStore();
@@ -2348,14 +2352,18 @@ public class UserManager<TUser> : IDisposable where TUser : class
         return cast;
     }
 
-    private IUserEmailStore<TUser> GetEmailStore(bool throwOnFail = true)
+    private IUserEmailStore<TUser> GetEmailStore()
     {
-        var cast = Store as IUserEmailStore<TUser>;
-        if (throwOnFail && cast == null)
+        if (Store is not IUserEmailStore<TUser> emailStore)
         {
             throw new NotSupportedException(Resources.StoreNotIUserEmailStore);
         }
-        return cast;
+        return emailStore;
+    }
+
+    private IUserEmailStore<TUser>? GetOptionalEmailStore()
+    {
+        return Store as IUserEmailStore<TUser>;
     }
 
     private IUserPhoneNumberStore<TUser> GetPhoneNumberStore()
@@ -2398,7 +2406,7 @@ public class UserManager<TUser> : IDisposable where TUser : class
         => UpdatePasswordHash(GetPasswordStore(), user, newPassword, validatePassword);
 
     private async Task<IdentityResult> UpdatePasswordHash(IUserPasswordStore<TUser> passwordStore,
-        TUser user, string newPassword, bool validatePassword = true)
+        TUser user, string? newPassword, bool validatePassword = true)
     {
         if (validatePassword)
         {
@@ -2513,7 +2521,7 @@ public class UserManager<TUser> : IDisposable where TUser : class
     /// <param name="user">The user.</param>
     /// <param name="password">The password.</param>
     /// <returns>A <see cref="IdentityResult"/> representing whether validation was successful.</returns>
-    protected async Task<IdentityResult> ValidatePasswordAsync(TUser user, string password)
+    protected async Task<IdentityResult> ValidatePasswordAsync(TUser user, string? password)
     {
         var errors = new List<IdentityError>();
         var isValid = true;

+ 1 - 1
src/Identity/Extensions.Core/src/UserValidator.cs

@@ -19,7 +19,7 @@ public class UserValidator<TUser> : IUserValidator<TUser> where TUser : class
     /// Creates a new instance of <see cref="UserValidator{TUser}"/>.
     /// </summary>
     /// <param name="errors">The <see cref="IdentityErrorDescriber"/> used to provider error messages.</param>
-    public UserValidator(IdentityErrorDescriber errors = null)
+    public UserValidator(IdentityErrorDescriber? errors = null)
     {
         Describer = errors ?? new IdentityErrorDescriber();
     }

+ 5 - 5
src/Identity/Extensions.Stores/src/IdentityRole.cs

@@ -57,22 +57,22 @@ public class IdentityRole<TKey> where TKey : IEquatable<TKey>
     /// <summary>
     /// Gets or sets the primary key for this role.
     /// </summary>
-    public virtual TKey Id { get; set; }
+    public virtual TKey Id { get; set; } = default!;
 
     /// <summary>
     /// Gets or sets the name for this role.
     /// </summary>
-    public virtual string Name { get; set; }
+    public virtual string? Name { get; set; }
 
     /// <summary>
     /// Gets or sets the normalized name for this role.
     /// </summary>
-    public virtual string NormalizedName { get; set; }
+    public virtual string? NormalizedName { get; set; }
 
     /// <summary>
     /// A random value that should change whenever a role is persisted to the store
     /// </summary>
-    public virtual string ConcurrencyStamp { get; set; } = Guid.NewGuid().ToString();
+    public virtual string? ConcurrencyStamp { get; set; }
 
     /// <summary>
     /// Returns the name of the role.
@@ -80,6 +80,6 @@ public class IdentityRole<TKey> where TKey : IEquatable<TKey>
     /// <returns>The name of the role.</returns>
     public override string ToString()
     {
-        return Name;
+        return Name ?? string.Empty;
     }
 }

+ 6 - 6
src/Identity/Extensions.Stores/src/IdentityRoleClaim.cs

@@ -15,22 +15,22 @@ public class IdentityRoleClaim<TKey> where TKey : IEquatable<TKey>
     /// <summary>
     /// Gets or sets the identifier for this role claim.
     /// </summary>
-    public virtual int Id { get; set; }
+    public virtual int Id { get; set; } = default!;
 
     /// <summary>
     /// Gets or sets the of the primary key of the role associated with this claim.
     /// </summary>
-    public virtual TKey RoleId { get; set; }
+    public virtual TKey RoleId { get; set; } = default!;
 
     /// <summary>
     /// Gets or sets the claim type for this claim.
     /// </summary>
-    public virtual string ClaimType { get; set; }
+    public virtual string? ClaimType { get; set; }
 
     /// <summary>
     /// Gets or sets the claim value for this claim.
     /// </summary>
-    public virtual string ClaimValue { get; set; }
+    public virtual string? ClaimValue { get; set; }
 
     /// <summary>
     /// Constructs a new claim with the type and value.
@@ -38,14 +38,14 @@ public class IdentityRoleClaim<TKey> where TKey : IEquatable<TKey>
     /// <returns>The <see cref="Claim"/> that was produced.</returns>
     public virtual Claim ToClaim()
     {
-        return new Claim(ClaimType, ClaimValue);
+        return new Claim(ClaimType!, ClaimValue!);
     }
 
     /// <summary>
     /// Initializes by copying ClaimType and ClaimValue from the other claim.
     /// </summary>
     /// <param name="other">The claim to initialize from.</param>
-    public virtual void InitializeFromClaim(Claim other)
+    public virtual void InitializeFromClaim(Claim? other)
     {
         ClaimType = other?.Type;
         ClaimValue = other?.Value;

+ 10 - 10
src/Identity/Extensions.Stores/src/IdentityUser.cs

@@ -59,29 +59,29 @@ public class IdentityUser<TKey> where TKey : IEquatable<TKey>
     /// Gets or sets the primary key for this user.
     /// </summary>
     [PersonalData]
-    public virtual TKey Id { get; set; }
+    public virtual TKey Id { get; set; } = default!;
 
     /// <summary>
     /// Gets or sets the user name for this user.
     /// </summary>
     [ProtectedPersonalData]
-    public virtual string UserName { get; set; }
+    public virtual string? UserName { get; set; }
 
     /// <summary>
     /// Gets or sets the normalized user name for this user.
     /// </summary>
-    public virtual string NormalizedUserName { get; set; }
+    public virtual string? NormalizedUserName { get; set; }
 
     /// <summary>
     /// Gets or sets the email address for this user.
     /// </summary>
     [ProtectedPersonalData]
-    public virtual string Email { get; set; }
+    public virtual string? Email { get; set; }
 
     /// <summary>
     /// Gets or sets the normalized email address for this user.
     /// </summary>
-    public virtual string NormalizedEmail { get; set; }
+    public virtual string? NormalizedEmail { get; set; }
 
     /// <summary>
     /// Gets or sets a flag indicating if a user has confirmed their email address.
@@ -93,23 +93,23 @@ public class IdentityUser<TKey> where TKey : IEquatable<TKey>
     /// <summary>
     /// Gets or sets a salted and hashed representation of the password for this user.
     /// </summary>
-    public virtual string PasswordHash { get; set; }
+    public virtual string? PasswordHash { get; set; }
 
     /// <summary>
     /// A random value that must change whenever a users credentials change (password changed, login removed)
     /// </summary>
-    public virtual string SecurityStamp { get; set; }
+    public virtual string? SecurityStamp { get; set; }
 
     /// <summary>
     /// A random value that must change whenever a user is persisted to the store
     /// </summary>
-    public virtual string ConcurrencyStamp { get; set; } = Guid.NewGuid().ToString();
+    public virtual string? ConcurrencyStamp { get; set; } = Guid.NewGuid().ToString();
 
     /// <summary>
     /// Gets or sets a telephone number for the user.
     /// </summary>
     [ProtectedPersonalData]
-    public virtual string PhoneNumber { get; set; }
+    public virtual string? PhoneNumber { get; set; }
 
     /// <summary>
     /// Gets or sets a flag indicating if a user has confirmed their telephone address.
@@ -148,5 +148,5 @@ public class IdentityUser<TKey> where TKey : IEquatable<TKey>
     /// Returns the username for this user.
     /// </summary>
     public override string ToString()
-        => UserName;
+        => UserName ?? string.Empty;
 }

+ 5 - 5
src/Identity/Extensions.Stores/src/IdentityUserClaim.cs

@@ -15,22 +15,22 @@ public class IdentityUserClaim<TKey> where TKey : IEquatable<TKey>
     /// <summary>
     /// Gets or sets the identifier for this user claim.
     /// </summary>
-    public virtual int Id { get; set; }
+    public virtual int Id { get; set; } = default!;
 
     /// <summary>
     /// Gets or sets the primary key of the user associated with this claim.
     /// </summary>
-    public virtual TKey UserId { get; set; }
+    public virtual TKey UserId { get; set; } = default!;
 
     /// <summary>
     /// Gets or sets the claim type for this claim.
     /// </summary>
-    public virtual string ClaimType { get; set; }
+    public virtual string? ClaimType { get; set; }
 
     /// <summary>
     /// Gets or sets the claim value for this claim.
     /// </summary>
-    public virtual string ClaimValue { get; set; }
+    public virtual string? ClaimValue { get; set; }
 
     /// <summary>
     /// Converts the entity into a Claim instance.
@@ -38,7 +38,7 @@ public class IdentityUserClaim<TKey> where TKey : IEquatable<TKey>
     /// <returns></returns>
     public virtual Claim ToClaim()
     {
-        return new Claim(ClaimType, ClaimValue);
+        return new Claim(ClaimType!, ClaimValue!);
     }
 
     /// <summary>

+ 4 - 4
src/Identity/Extensions.Stores/src/IdentityUserLogin.cs

@@ -14,20 +14,20 @@ public class IdentityUserLogin<TKey> where TKey : IEquatable<TKey>
     /// <summary>
     /// Gets or sets the login provider for the login (e.g. facebook, google)
     /// </summary>
-    public virtual string LoginProvider { get; set; }
+    public virtual string LoginProvider { get; set; } = default!;
 
     /// <summary>
     /// Gets or sets the unique provider identifier for this login.
     /// </summary>
-    public virtual string ProviderKey { get; set; }
+    public virtual string ProviderKey { get; set; } = default!;
 
     /// <summary>
     /// Gets or sets the friendly name used in a UI for this login.
     /// </summary>
-    public virtual string ProviderDisplayName { get; set; }
+    public virtual string? ProviderDisplayName { get; set; }
 
     /// <summary>
     /// Gets or sets the primary key of the user associated with this login.
     /// </summary>
-    public virtual TKey UserId { get; set; }
+    public virtual TKey UserId { get; set; } = default!;
 }

+ 2 - 2
src/Identity/Extensions.Stores/src/IdentityUserRole.cs

@@ -14,10 +14,10 @@ public class IdentityUserRole<TKey> where TKey : IEquatable<TKey>
     /// <summary>
     /// Gets or sets the primary key of the user that is linked to a role.
     /// </summary>
-    public virtual TKey UserId { get; set; }
+    public virtual TKey UserId { get; set; } = default!;
 
     /// <summary>
     /// Gets or sets the primary key of the role that is linked to the user.
     /// </summary>
-    public virtual TKey RoleId { get; set; }
+    public virtual TKey RoleId { get; set; } = default!;
 }

+ 4 - 4
src/Identity/Extensions.Stores/src/IdentityUserToken.cs

@@ -14,21 +14,21 @@ public class IdentityUserToken<TKey> where TKey : IEquatable<TKey>
     /// <summary>
     /// Gets or sets the primary key of the user that the token belongs to.
     /// </summary>
-    public virtual TKey UserId { get; set; }
+    public virtual TKey UserId { get; set; } = default!;
 
     /// <summary>
     /// Gets or sets the LoginProvider this token is from.
     /// </summary>
-    public virtual string LoginProvider { get; set; }
+    public virtual string LoginProvider { get; set; } = default!;
 
     /// <summary>
     /// Gets or sets the name of the token.
     /// </summary>
-    public virtual string Name { get; set; }
+    public virtual string Name { get; set; } = default!;
 
     /// <summary>
     /// Gets or sets the token value.
     /// </summary>
     [ProtectedPersonalData]
-    public virtual string Value { get; set; }
+    public virtual string? Value { get; set; }
 }

+ 0 - 1
src/Identity/Extensions.Stores/src/Microsoft.Extensions.Identity.Stores.csproj

@@ -7,7 +7,6 @@
     <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;identity;membership</PackageTags>
-    <Nullable>disable</Nullable>
   </PropertyGroup>
 
   <ItemGroup>

+ 345 - 0
src/Identity/Extensions.Stores/src/PublicAPI.Unshipped.txt

@@ -1 +1,346 @@
 #nullable enable
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.AddClaimAsync(TRole role, System.Security.Claims.Claim claim, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.CreateAsync(TRole role, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.DeleteAsync(TRole role, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.FindByIdAsync(string id, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<TRole>
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.FindByNameAsync(string normalizedName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<TRole>
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.GetClaimsAsync(TRole role, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<System.Security.Claims.Claim>>
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.RemoveClaimAsync(TRole role, System.Security.Claims.Claim claim, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.Roles.get -> System.Linq.IQueryable<TRole>
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.UpdateAsync(TRole role, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.AddClaimsAsync(TUser user, System.Collections.Generic.IEnumerable<System.Security.Claims.Claim> claims, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.AddLoginAsync(TUser user, Microsoft.AspNetCore.Identity.UserLoginInfo login, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.AddUserTokenAsync(TUserToken token) -> System.Threading.Tasks.Task
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.CreateAsync(TUser user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.DeleteAsync(TUser user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.FindByEmailAsync(string normalizedEmail, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<TUser>
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.FindByIdAsync(string userId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<TUser>
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.FindByNameAsync(string normalizedUserName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<TUser>
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.FindTokenAsync(TUser user, string loginProvider, string name, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TUserToken>
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.FindUserAsync(TKey userId, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TUser>
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.FindUserLoginAsync(string loginProvider, string providerKey, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TUserLogin>
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.FindUserLoginAsync(TKey userId, string loginProvider, string providerKey, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TUserLogin>
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetClaimsAsync(TUser user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<System.Security.Claims.Claim>>
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetLoginsAsync(TUser user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<Microsoft.AspNetCore.Identity.UserLoginInfo>>
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetUsersForClaimAsync(System.Security.Claims.Claim claim, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<TUser>>
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.RemoveClaimsAsync(TUser user, System.Collections.Generic.IEnumerable<System.Security.Claims.Claim> claims, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.RemoveLoginAsync(TUser user, string loginProvider, string providerKey, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.RemoveUserTokenAsync(TUserToken token) -> System.Threading.Tasks.Task
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.ReplaceClaimAsync(TUser user, System.Security.Claims.Claim claim, System.Security.Claims.Claim newClaim, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.UpdateAsync(TUser user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult>
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.Users.get -> System.Linq.IQueryable<TUser>
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TRole, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.AddToRoleAsync(TUser user, string normalizedRoleName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TRole, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.FindRoleAsync(string normalizedRoleName, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TRole>
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TRole, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.FindUserRoleAsync(TKey userId, TKey roleId, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TUserRole>
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TRole, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.GetRolesAsync(TUser user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<string>>
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TRole, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.GetUsersInRoleAsync(string normalizedRoleName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<TUser>>
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TRole, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.IsInRoleAsync(TUser user, string normalizedRoleName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<bool>
+*REMOVED*~abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TRole, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.RemoveFromRoleAsync(TUser user, string normalizedRoleName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~Microsoft.AspNetCore.Identity.IdentityRole.IdentityRole(string roleName) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.IdentityRole<TKey>
+*REMOVED*~Microsoft.AspNetCore.Identity.IdentityRole<TKey>.IdentityRole(string roleName) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.IdentityRoleClaim<TKey>
+*REMOVED*~Microsoft.AspNetCore.Identity.IdentityUser.IdentityUser(string userName) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.IdentityUser<TKey>
+*REMOVED*~Microsoft.AspNetCore.Identity.IdentityUser<TKey>.IdentityUser(string userName) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.IdentityUserClaim<TKey>
+*REMOVED*~Microsoft.AspNetCore.Identity.IdentityUserLogin<TKey>
+*REMOVED*~Microsoft.AspNetCore.Identity.IdentityUserRole<TKey>
+*REMOVED*~Microsoft.AspNetCore.Identity.IdentityUserToken<TKey>
+*REMOVED*~Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>
+*REMOVED*~Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.ErrorDescriber.get -> Microsoft.AspNetCore.Identity.IdentityErrorDescriber
+*REMOVED*~Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.ErrorDescriber.set -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.RoleStoreBase(Microsoft.AspNetCore.Identity.IdentityErrorDescriber describer) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>
+*REMOVED*~Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.ErrorDescriber.get -> Microsoft.AspNetCore.Identity.IdentityErrorDescriber
+*REMOVED*~Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.ErrorDescriber.set -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.UserStoreBase(Microsoft.AspNetCore.Identity.IdentityErrorDescriber describer) -> void
+*REMOVED*~Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TRole, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>
+*REMOVED*~Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TRole, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.UserStoreBase(Microsoft.AspNetCore.Identity.IdentityErrorDescriber describer) -> void
+*REMOVED*~override Microsoft.AspNetCore.Identity.IdentityRole<TKey>.ToString() -> string
+*REMOVED*~override Microsoft.AspNetCore.Identity.IdentityUser<TKey>.ToString() -> string
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityRole<TKey>.ConcurrencyStamp.get -> string
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityRole<TKey>.ConcurrencyStamp.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityRole<TKey>.Id.get -> TKey
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityRole<TKey>.Id.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityRole<TKey>.Name.get -> string
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityRole<TKey>.Name.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityRole<TKey>.NormalizedName.get -> string
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityRole<TKey>.NormalizedName.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityRoleClaim<TKey>.ClaimType.get -> string
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityRoleClaim<TKey>.ClaimType.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityRoleClaim<TKey>.ClaimValue.get -> string
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityRoleClaim<TKey>.ClaimValue.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityRoleClaim<TKey>.InitializeFromClaim(System.Security.Claims.Claim other) -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityRoleClaim<TKey>.RoleId.get -> TKey
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityRoleClaim<TKey>.RoleId.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityRoleClaim<TKey>.ToClaim() -> System.Security.Claims.Claim
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUser<TKey>.ConcurrencyStamp.get -> string
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUser<TKey>.ConcurrencyStamp.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUser<TKey>.Email.get -> string
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUser<TKey>.Email.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUser<TKey>.Id.get -> TKey
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUser<TKey>.Id.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUser<TKey>.NormalizedEmail.get -> string
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUser<TKey>.NormalizedEmail.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUser<TKey>.NormalizedUserName.get -> string
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUser<TKey>.NormalizedUserName.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUser<TKey>.PasswordHash.get -> string
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUser<TKey>.PasswordHash.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUser<TKey>.PhoneNumber.get -> string
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUser<TKey>.PhoneNumber.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUser<TKey>.SecurityStamp.get -> string
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUser<TKey>.SecurityStamp.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUser<TKey>.UserName.get -> string
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUser<TKey>.UserName.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUserClaim<TKey>.ClaimType.get -> string
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUserClaim<TKey>.ClaimType.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUserClaim<TKey>.ClaimValue.get -> string
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUserClaim<TKey>.ClaimValue.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUserClaim<TKey>.InitializeFromClaim(System.Security.Claims.Claim claim) -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUserClaim<TKey>.ToClaim() -> System.Security.Claims.Claim
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUserClaim<TKey>.UserId.get -> TKey
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUserClaim<TKey>.UserId.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUserLogin<TKey>.LoginProvider.get -> string
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUserLogin<TKey>.LoginProvider.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUserLogin<TKey>.ProviderDisplayName.get -> string
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUserLogin<TKey>.ProviderDisplayName.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUserLogin<TKey>.ProviderKey.get -> string
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUserLogin<TKey>.ProviderKey.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUserLogin<TKey>.UserId.get -> TKey
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUserLogin<TKey>.UserId.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUserRole<TKey>.RoleId.get -> TKey
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUserRole<TKey>.RoleId.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUserRole<TKey>.UserId.get -> TKey
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUserRole<TKey>.UserId.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUserToken<TKey>.LoginProvider.get -> string
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUserToken<TKey>.LoginProvider.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUserToken<TKey>.Name.get -> string
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUserToken<TKey>.Name.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUserToken<TKey>.UserId.get -> TKey
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUserToken<TKey>.UserId.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUserToken<TKey>.Value.get -> string
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.IdentityUserToken<TKey>.Value.set -> void
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.ConvertIdFromString(string id) -> TKey
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.ConvertIdToString(TKey id) -> string
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.CreateRoleClaim(TRole role, System.Security.Claims.Claim claim) -> TRoleClaim
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.GetNormalizedRoleNameAsync(TRole role, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<string>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.GetRoleIdAsync(TRole role, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<string>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.GetRoleNameAsync(TRole role, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<string>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.SetNormalizedRoleNameAsync(TRole role, string normalizedName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.SetRoleNameAsync(TRole role, string roleName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.ConvertIdFromString(string id) -> TKey
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.ConvertIdToString(TKey id) -> string
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.CountCodesAsync(TUser user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<int>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.CreateUserClaim(TUser user, System.Security.Claims.Claim claim) -> TUserClaim
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.CreateUserLogin(TUser user, Microsoft.AspNetCore.Identity.UserLoginInfo login) -> TUserLogin
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.CreateUserToken(TUser user, string loginProvider, string name, string value) -> TUserToken
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.FindByLoginAsync(string loginProvider, string providerKey, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<TUser>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetAccessFailedCountAsync(TUser user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<int>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetAuthenticatorKeyAsync(TUser user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<string>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetEmailAsync(TUser user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<string>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetEmailConfirmedAsync(TUser user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<bool>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetLockoutEnabledAsync(TUser user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<bool>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetLockoutEndDateAsync(TUser user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<System.DateTimeOffset?>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetNormalizedEmailAsync(TUser user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<string>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetNormalizedUserNameAsync(TUser user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<string>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetPasswordHashAsync(TUser user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<string>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetPhoneNumberAsync(TUser user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<string>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetPhoneNumberConfirmedAsync(TUser user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<bool>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetSecurityStampAsync(TUser user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<string>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetTokenAsync(TUser user, string loginProvider, string name, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<string>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetTwoFactorEnabledAsync(TUser user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<bool>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetUserIdAsync(TUser user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<string>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetUserNameAsync(TUser user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<string>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.HasPasswordAsync(TUser user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<bool>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.IncrementAccessFailedCountAsync(TUser user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<int>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.RedeemCodeAsync(TUser user, string code, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<bool>
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.RemoveTokenAsync(TUser user, string loginProvider, string name, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.ReplaceCodesAsync(TUser user, System.Collections.Generic.IEnumerable<string> recoveryCodes, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.ResetAccessFailedCountAsync(TUser user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.SetAuthenticatorKeyAsync(TUser user, string key, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.SetEmailAsync(TUser user, string email, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.SetEmailConfirmedAsync(TUser user, bool confirmed, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.SetLockoutEnabledAsync(TUser user, bool enabled, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.SetLockoutEndDateAsync(TUser user, System.DateTimeOffset? lockoutEnd, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.SetNormalizedEmailAsync(TUser user, string normalizedEmail, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.SetNormalizedUserNameAsync(TUser user, string normalizedName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.SetPasswordHashAsync(TUser user, string passwordHash, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.SetPhoneNumberAsync(TUser user, string phoneNumber, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.SetPhoneNumberConfirmedAsync(TUser user, bool confirmed, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.SetSecurityStampAsync(TUser user, string stamp, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.SetTokenAsync(TUser user, string loginProvider, string name, string value, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.SetTwoFactorEnabledAsync(TUser user, bool enabled, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.SetUserNameAsync(TUser user, string userName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task
+*REMOVED*~virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TRole, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.CreateUserRole(TUser user, TRole role) -> TUserRole
+abstract Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.AddClaimAsync(TRole! role, System.Security.Claims.Claim! claim, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+abstract Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.CreateAsync(TRole! role, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+abstract Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.DeleteAsync(TRole! role, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+abstract Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.FindByIdAsync(string! id, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<TRole?>!
+abstract Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.FindByNameAsync(string! normalizedName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<TRole?>!
+abstract Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.GetClaimsAsync(TRole! role, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<System.Security.Claims.Claim!>!>!
+abstract Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.RemoveClaimAsync(TRole! role, System.Security.Claims.Claim! claim, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+abstract Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.Roles.get -> System.Linq.IQueryable<TRole!>!
+abstract Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.UpdateAsync(TRole! role, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.AddClaimsAsync(TUser! user, System.Collections.Generic.IEnumerable<System.Security.Claims.Claim!>! claims, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.AddLoginAsync(TUser! user, Microsoft.AspNetCore.Identity.UserLoginInfo! login, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.AddUserTokenAsync(TUserToken! token) -> System.Threading.Tasks.Task!
+abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.CreateAsync(TUser! user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.DeleteAsync(TUser! user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.FindByEmailAsync(string! normalizedEmail, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<TUser?>!
+abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.FindByIdAsync(string! userId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<TUser?>!
+abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.FindByNameAsync(string! normalizedUserName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<TUser?>!
+abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.FindTokenAsync(TUser! user, string! loginProvider, string! name, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TUserToken?>!
+abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.FindUserAsync(TKey userId, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TUser?>!
+abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.FindUserLoginAsync(string! loginProvider, string! providerKey, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TUserLogin?>!
+abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.FindUserLoginAsync(TKey userId, string! loginProvider, string! providerKey, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TUserLogin?>!
+abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetClaimsAsync(TUser! user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<System.Security.Claims.Claim!>!>!
+abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetLoginsAsync(TUser! user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<Microsoft.AspNetCore.Identity.UserLoginInfo!>!>!
+abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetUsersForClaimAsync(System.Security.Claims.Claim! claim, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<TUser!>!>!
+abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.RemoveClaimsAsync(TUser! user, System.Collections.Generic.IEnumerable<System.Security.Claims.Claim!>! claims, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.RemoveLoginAsync(TUser! user, string! loginProvider, string! providerKey, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.RemoveUserTokenAsync(TUserToken! token) -> System.Threading.Tasks.Task!
+abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.ReplaceClaimAsync(TUser! user, System.Security.Claims.Claim! claim, System.Security.Claims.Claim! newClaim, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.UpdateAsync(TUser! user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult!>!
+abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.Users.get -> System.Linq.IQueryable<TUser!>!
+abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TRole, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.AddToRoleAsync(TUser! user, string! normalizedRoleName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TRole, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.FindRoleAsync(string! normalizedRoleName, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TRole?>!
+abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TRole, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.FindUserRoleAsync(TKey userId, TKey roleId, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<TUserRole?>!
+abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TRole, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.GetRolesAsync(TUser! user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<string!>!>!
+abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TRole, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.GetUsersInRoleAsync(string! normalizedRoleName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<System.Collections.Generic.IList<TUser!>!>!
+abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TRole, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.IsInRoleAsync(TUser! user, string! normalizedRoleName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<bool>!
+abstract Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TRole, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.RemoveFromRoleAsync(TUser! user, string! normalizedRoleName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+Microsoft.AspNetCore.Identity.IdentityRole.IdentityRole(string! roleName) -> void
+Microsoft.AspNetCore.Identity.IdentityRole<TKey>
+Microsoft.AspNetCore.Identity.IdentityRole<TKey>.IdentityRole(string! roleName) -> void
+Microsoft.AspNetCore.Identity.IdentityRoleClaim<TKey>
+Microsoft.AspNetCore.Identity.IdentityUser.IdentityUser(string! userName) -> void
+Microsoft.AspNetCore.Identity.IdentityUser<TKey>
+Microsoft.AspNetCore.Identity.IdentityUser<TKey>.IdentityUser(string! userName) -> void
+Microsoft.AspNetCore.Identity.IdentityUserClaim<TKey>
+Microsoft.AspNetCore.Identity.IdentityUserLogin<TKey>
+Microsoft.AspNetCore.Identity.IdentityUserRole<TKey>
+Microsoft.AspNetCore.Identity.IdentityUserToken<TKey>
+Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.ErrorDescriber.get -> Microsoft.AspNetCore.Identity.IdentityErrorDescriber!
+Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.ErrorDescriber.set -> void
+Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.RoleStoreBase(Microsoft.AspNetCore.Identity.IdentityErrorDescriber! describer) -> void
+Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.ErrorDescriber.get -> Microsoft.AspNetCore.Identity.IdentityErrorDescriber!
+Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.ErrorDescriber.set -> void
+Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.UserStoreBase(Microsoft.AspNetCore.Identity.IdentityErrorDescriber! describer) -> void
+Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TRole, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.UserStoreBase(Microsoft.AspNetCore.Identity.IdentityErrorDescriber! describer) -> void
+override Microsoft.AspNetCore.Identity.IdentityRole<TKey>.ToString() -> string!
+override Microsoft.AspNetCore.Identity.IdentityUser<TKey>.ToString() -> string!
+virtual Microsoft.AspNetCore.Identity.IdentityRole<TKey>.ConcurrencyStamp.get -> string?
+virtual Microsoft.AspNetCore.Identity.IdentityRole<TKey>.ConcurrencyStamp.set -> void
+virtual Microsoft.AspNetCore.Identity.IdentityRole<TKey>.Id.get -> TKey
+virtual Microsoft.AspNetCore.Identity.IdentityRole<TKey>.Id.set -> void
+virtual Microsoft.AspNetCore.Identity.IdentityRole<TKey>.Name.get -> string?
+virtual Microsoft.AspNetCore.Identity.IdentityRole<TKey>.Name.set -> void
+virtual Microsoft.AspNetCore.Identity.IdentityRole<TKey>.NormalizedName.get -> string?
+virtual Microsoft.AspNetCore.Identity.IdentityRole<TKey>.NormalizedName.set -> void
+virtual Microsoft.AspNetCore.Identity.IdentityRoleClaim<TKey>.ClaimType.get -> string?
+virtual Microsoft.AspNetCore.Identity.IdentityRoleClaim<TKey>.ClaimType.set -> void
+virtual Microsoft.AspNetCore.Identity.IdentityRoleClaim<TKey>.ClaimValue.get -> string?
+virtual Microsoft.AspNetCore.Identity.IdentityRoleClaim<TKey>.ClaimValue.set -> void
+virtual Microsoft.AspNetCore.Identity.IdentityRoleClaim<TKey>.InitializeFromClaim(System.Security.Claims.Claim? other) -> void
+virtual Microsoft.AspNetCore.Identity.IdentityRoleClaim<TKey>.RoleId.get -> TKey
+virtual Microsoft.AspNetCore.Identity.IdentityRoleClaim<TKey>.RoleId.set -> void
+virtual Microsoft.AspNetCore.Identity.IdentityRoleClaim<TKey>.ToClaim() -> System.Security.Claims.Claim!
+virtual Microsoft.AspNetCore.Identity.IdentityUser<TKey>.ConcurrencyStamp.get -> string?
+virtual Microsoft.AspNetCore.Identity.IdentityUser<TKey>.ConcurrencyStamp.set -> void
+virtual Microsoft.AspNetCore.Identity.IdentityUser<TKey>.Email.get -> string?
+virtual Microsoft.AspNetCore.Identity.IdentityUser<TKey>.Email.set -> void
+virtual Microsoft.AspNetCore.Identity.IdentityUser<TKey>.Id.get -> TKey
+virtual Microsoft.AspNetCore.Identity.IdentityUser<TKey>.Id.set -> void
+virtual Microsoft.AspNetCore.Identity.IdentityUser<TKey>.NormalizedEmail.get -> string?
+virtual Microsoft.AspNetCore.Identity.IdentityUser<TKey>.NormalizedEmail.set -> void
+virtual Microsoft.AspNetCore.Identity.IdentityUser<TKey>.NormalizedUserName.get -> string?
+virtual Microsoft.AspNetCore.Identity.IdentityUser<TKey>.NormalizedUserName.set -> void
+virtual Microsoft.AspNetCore.Identity.IdentityUser<TKey>.PasswordHash.get -> string?
+virtual Microsoft.AspNetCore.Identity.IdentityUser<TKey>.PasswordHash.set -> void
+virtual Microsoft.AspNetCore.Identity.IdentityUser<TKey>.PhoneNumber.get -> string?
+virtual Microsoft.AspNetCore.Identity.IdentityUser<TKey>.PhoneNumber.set -> void
+virtual Microsoft.AspNetCore.Identity.IdentityUser<TKey>.SecurityStamp.get -> string?
+virtual Microsoft.AspNetCore.Identity.IdentityUser<TKey>.SecurityStamp.set -> void
+virtual Microsoft.AspNetCore.Identity.IdentityUser<TKey>.UserName.get -> string?
+virtual Microsoft.AspNetCore.Identity.IdentityUser<TKey>.UserName.set -> void
+virtual Microsoft.AspNetCore.Identity.IdentityUserClaim<TKey>.ClaimType.get -> string?
+virtual Microsoft.AspNetCore.Identity.IdentityUserClaim<TKey>.ClaimType.set -> void
+virtual Microsoft.AspNetCore.Identity.IdentityUserClaim<TKey>.ClaimValue.get -> string?
+virtual Microsoft.AspNetCore.Identity.IdentityUserClaim<TKey>.ClaimValue.set -> void
+virtual Microsoft.AspNetCore.Identity.IdentityUserClaim<TKey>.InitializeFromClaim(System.Security.Claims.Claim! claim) -> void
+virtual Microsoft.AspNetCore.Identity.IdentityUserClaim<TKey>.ToClaim() -> System.Security.Claims.Claim!
+virtual Microsoft.AspNetCore.Identity.IdentityUserClaim<TKey>.UserId.get -> TKey
+virtual Microsoft.AspNetCore.Identity.IdentityUserClaim<TKey>.UserId.set -> void
+virtual Microsoft.AspNetCore.Identity.IdentityUserLogin<TKey>.LoginProvider.get -> string!
+virtual Microsoft.AspNetCore.Identity.IdentityUserLogin<TKey>.LoginProvider.set -> void
+virtual Microsoft.AspNetCore.Identity.IdentityUserLogin<TKey>.ProviderDisplayName.get -> string?
+virtual Microsoft.AspNetCore.Identity.IdentityUserLogin<TKey>.ProviderDisplayName.set -> void
+virtual Microsoft.AspNetCore.Identity.IdentityUserLogin<TKey>.ProviderKey.get -> string!
+virtual Microsoft.AspNetCore.Identity.IdentityUserLogin<TKey>.ProviderKey.set -> void
+virtual Microsoft.AspNetCore.Identity.IdentityUserLogin<TKey>.UserId.get -> TKey
+virtual Microsoft.AspNetCore.Identity.IdentityUserLogin<TKey>.UserId.set -> void
+virtual Microsoft.AspNetCore.Identity.IdentityUserRole<TKey>.RoleId.get -> TKey
+virtual Microsoft.AspNetCore.Identity.IdentityUserRole<TKey>.RoleId.set -> void
+virtual Microsoft.AspNetCore.Identity.IdentityUserRole<TKey>.UserId.get -> TKey
+virtual Microsoft.AspNetCore.Identity.IdentityUserRole<TKey>.UserId.set -> void
+virtual Microsoft.AspNetCore.Identity.IdentityUserToken<TKey>.LoginProvider.get -> string!
+virtual Microsoft.AspNetCore.Identity.IdentityUserToken<TKey>.LoginProvider.set -> void
+virtual Microsoft.AspNetCore.Identity.IdentityUserToken<TKey>.Name.get -> string!
+virtual Microsoft.AspNetCore.Identity.IdentityUserToken<TKey>.Name.set -> void
+virtual Microsoft.AspNetCore.Identity.IdentityUserToken<TKey>.UserId.get -> TKey
+virtual Microsoft.AspNetCore.Identity.IdentityUserToken<TKey>.UserId.set -> void
+virtual Microsoft.AspNetCore.Identity.IdentityUserToken<TKey>.Value.get -> string?
+virtual Microsoft.AspNetCore.Identity.IdentityUserToken<TKey>.Value.set -> void
+virtual Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.ConvertIdFromString(string? id) -> TKey?
+virtual Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.ConvertIdToString(TKey id) -> string?
+virtual Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.CreateRoleClaim(TRole! role, System.Security.Claims.Claim! claim) -> TRoleClaim!
+virtual Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.GetNormalizedRoleNameAsync(TRole! role, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<string?>!
+virtual Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.GetRoleIdAsync(TRole! role, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<string!>!
+virtual Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.GetRoleNameAsync(TRole! role, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<string?>!
+virtual Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.SetNormalizedRoleNameAsync(TRole! role, string? normalizedName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+virtual Microsoft.AspNetCore.Identity.RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim>.SetRoleNameAsync(TRole! role, string? roleName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.ConvertIdFromString(string? id) -> TKey?
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.ConvertIdToString(TKey id) -> string?
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.CountCodesAsync(TUser! user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<int>!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.CreateUserClaim(TUser! user, System.Security.Claims.Claim! claim) -> TUserClaim!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.CreateUserLogin(TUser! user, Microsoft.AspNetCore.Identity.UserLoginInfo! login) -> TUserLogin!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.CreateUserToken(TUser! user, string! loginProvider, string! name, string? value) -> TUserToken!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.FindByLoginAsync(string! loginProvider, string! providerKey, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<TUser?>!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetAccessFailedCountAsync(TUser! user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<int>!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetAuthenticatorKeyAsync(TUser! user, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<string?>!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetEmailAsync(TUser! user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<string?>!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetEmailConfirmedAsync(TUser! user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<bool>!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetLockoutEnabledAsync(TUser! user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<bool>!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetLockoutEndDateAsync(TUser! user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<System.DateTimeOffset?>!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetNormalizedEmailAsync(TUser! user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<string?>!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetNormalizedUserNameAsync(TUser! user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<string?>!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetPasswordHashAsync(TUser! user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<string?>!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetPhoneNumberAsync(TUser! user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<string?>!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetPhoneNumberConfirmedAsync(TUser! user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<bool>!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetSecurityStampAsync(TUser! user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<string?>!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetTokenAsync(TUser! user, string! loginProvider, string! name, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<string?>!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetTwoFactorEnabledAsync(TUser! user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<bool>!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetUserIdAsync(TUser! user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<string!>!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.GetUserNameAsync(TUser! user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<string?>!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.HasPasswordAsync(TUser! user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<bool>!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.IncrementAccessFailedCountAsync(TUser! user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<int>!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.RedeemCodeAsync(TUser! user, string! code, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<bool>!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.RemoveTokenAsync(TUser! user, string! loginProvider, string! name, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.ReplaceCodesAsync(TUser! user, System.Collections.Generic.IEnumerable<string!>! recoveryCodes, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.ResetAccessFailedCountAsync(TUser! user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.SetAuthenticatorKeyAsync(TUser! user, string! key, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.SetEmailAsync(TUser! user, string? email, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.SetEmailConfirmedAsync(TUser! user, bool confirmed, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.SetLockoutEnabledAsync(TUser! user, bool enabled, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.SetLockoutEndDateAsync(TUser! user, System.DateTimeOffset? lockoutEnd, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.SetNormalizedEmailAsync(TUser! user, string? normalizedEmail, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.SetNormalizedUserNameAsync(TUser! user, string? normalizedName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.SetPasswordHashAsync(TUser! user, string? passwordHash, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.SetPhoneNumberAsync(TUser! user, string? phoneNumber, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.SetPhoneNumberConfirmedAsync(TUser! user, bool confirmed, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.SetSecurityStampAsync(TUser! user, string! stamp, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.SetTokenAsync(TUser! user, string! loginProvider, string! name, string? value, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.SetTwoFactorEnabledAsync(TUser! user, bool enabled, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserToken>.SetUserNameAsync(TUser! user, string? userName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+virtual Microsoft.AspNetCore.Identity.UserStoreBase<TUser, TRole, TKey, TUserClaim, TUserRole, TUserLogin, TUserToken, TRoleClaim>.CreateUserRole(TUser! user, TRole! role) -> TUserRole!

+ 11 - 10
src/Identity/Extensions.Stores/src/RoleStoreBase.cs

@@ -4,6 +4,7 @@
 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
+using System.Diagnostics.CodeAnalysis;
 using System.Linq;
 using System.Security.Claims;
 using System.Threading;
@@ -85,7 +86,7 @@ public abstract class RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim> :
         {
             throw new ArgumentNullException(nameof(role));
         }
-        return Task.FromResult(ConvertIdToString(role.Id));
+        return Task.FromResult(ConvertIdToString(role.Id)!);
     }
 
     /// <summary>
@@ -94,7 +95,7 @@ public abstract class RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim> :
     /// <param name="role">The role whose name should be returned.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>A <see cref="Task{TResult}"/> that contains the name of the role.</returns>
-    public virtual Task<string> GetRoleNameAsync(TRole role, CancellationToken cancellationToken = default(CancellationToken))
+    public virtual Task<string?> GetRoleNameAsync(TRole role, CancellationToken cancellationToken = default(CancellationToken))
     {
         cancellationToken.ThrowIfCancellationRequested();
         ThrowIfDisposed();
@@ -112,7 +113,7 @@ public abstract class RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim> :
     /// <param name="roleName">The name of the role.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The <see cref="Task"/> that represents the asynchronous operation.</returns>
-    public virtual Task SetRoleNameAsync(TRole role, string roleName, CancellationToken cancellationToken = default(CancellationToken))
+    public virtual Task SetRoleNameAsync(TRole role, string? roleName, CancellationToken cancellationToken = default(CancellationToken))
     {
         cancellationToken.ThrowIfCancellationRequested();
         ThrowIfDisposed();
@@ -129,13 +130,13 @@ public abstract class RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim> :
     /// </summary>
     /// <param name="id">The id to convert.</param>
     /// <returns>An instance of <typeparamref name="TKey"/> representing the provided <paramref name="id"/>.</returns>
-    public virtual TKey ConvertIdFromString(string id)
+    public virtual TKey? ConvertIdFromString(string? id)
     {
         if (id == null)
         {
             return default(TKey);
         }
-        return (TKey)TypeDescriptor.GetConverter(typeof(TKey)).ConvertFromInvariantString(id);
+        return (TKey?)TypeDescriptor.GetConverter(typeof(TKey)).ConvertFromInvariantString(id);
     }
 
     /// <summary>
@@ -143,7 +144,7 @@ public abstract class RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim> :
     /// </summary>
     /// <param name="id">The id to convert.</param>
     /// <returns>An <see cref="string"/> representation of the provided <paramref name="id"/>.</returns>
-    public virtual string ConvertIdToString(TKey id)
+    public virtual string? ConvertIdToString(TKey id)
     {
         if (id.Equals(default(TKey)))
         {
@@ -158,7 +159,7 @@ public abstract class RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim> :
     /// <param name="id">The role ID to look for.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>A <see cref="Task{TResult}"/> that result of the look up.</returns>
-    public abstract Task<TRole> FindByIdAsync(string id, CancellationToken cancellationToken = default(CancellationToken));
+    public abstract Task<TRole?> FindByIdAsync(string id, CancellationToken cancellationToken = default(CancellationToken));
 
     /// <summary>
     /// Finds the role who has the specified normalized name as an asynchronous operation.
@@ -166,7 +167,7 @@ public abstract class RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim> :
     /// <param name="normalizedName">The normalized role name to look for.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>A <see cref="Task{TResult}"/> that result of the look up.</returns>
-    public abstract Task<TRole> FindByNameAsync(string normalizedName, CancellationToken cancellationToken = default(CancellationToken));
+    public abstract Task<TRole?> FindByNameAsync(string normalizedName, CancellationToken cancellationToken = default(CancellationToken));
 
     /// <summary>
     /// Get a role's normalized name as an asynchronous operation.
@@ -174,7 +175,7 @@ public abstract class RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim> :
     /// <param name="role">The role whose normalized name should be retrieved.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>A <see cref="Task{TResult}"/> that contains the name of the role.</returns>
-    public virtual Task<string> GetNormalizedRoleNameAsync(TRole role, CancellationToken cancellationToken = default(CancellationToken))
+    public virtual Task<string?> GetNormalizedRoleNameAsync(TRole role, CancellationToken cancellationToken = default(CancellationToken))
     {
         cancellationToken.ThrowIfCancellationRequested();
         ThrowIfDisposed();
@@ -192,7 +193,7 @@ public abstract class RoleStoreBase<TRole, TKey, TUserRole, TRoleClaim> :
     /// <param name="normalizedName">The normalized name to set</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The <see cref="Task"/> that represents the asynchronous operation.</returns>
-    public virtual Task SetNormalizedRoleNameAsync(TRole role, string normalizedName, CancellationToken cancellationToken = default(CancellationToken))
+    public virtual Task SetNormalizedRoleNameAsync(TRole role, string? normalizedName, CancellationToken cancellationToken = default(CancellationToken))
     {
         cancellationToken.ThrowIfCancellationRequested();
         ThrowIfDisposed();

+ 32 - 31
src/Identity/Extensions.Stores/src/UserStoreBase.cs

@@ -4,6 +4,7 @@
 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
+using System.Diagnostics.CodeAnalysis;
 using System.Linq;
 using System.Security.Claims;
 using System.Threading;
@@ -97,7 +98,7 @@ public abstract class UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserTo
     /// <param name="name">The name of the user token.</param>
     /// <param name="value">The value of the user token.</param>
     /// <returns></returns>
-    protected virtual TUserToken CreateUserToken(TUser user, string loginProvider, string name, string value)
+    protected virtual TUserToken CreateUserToken(TUser user, string loginProvider, string name, string? value)
     {
         return new TUserToken
         {
@@ -122,7 +123,7 @@ public abstract class UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserTo
         {
             throw new ArgumentNullException(nameof(user));
         }
-        return Task.FromResult(ConvertIdToString(user.Id));
+        return Task.FromResult(ConvertIdToString(user.Id)!);
     }
 
     /// <summary>
@@ -131,7 +132,7 @@ public abstract class UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserTo
     /// <param name="user">The user whose name should be retrieved.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The <see cref="Task"/> that represents the asynchronous operation, containing the name for the specified <paramref name="user"/>.</returns>
-    public virtual Task<string> GetUserNameAsync(TUser user, CancellationToken cancellationToken = default(CancellationToken))
+    public virtual Task<string?> GetUserNameAsync(TUser user, CancellationToken cancellationToken = default(CancellationToken))
     {
         cancellationToken.ThrowIfCancellationRequested();
         ThrowIfDisposed();
@@ -149,7 +150,7 @@ public abstract class UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserTo
     /// <param name="userName">The user name to set.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The <see cref="Task"/> that represents the asynchronous operation.</returns>
-    public virtual Task SetUserNameAsync(TUser user, string userName, CancellationToken cancellationToken = default(CancellationToken))
+    public virtual Task SetUserNameAsync(TUser user, string? userName, CancellationToken cancellationToken = default(CancellationToken))
     {
         cancellationToken.ThrowIfCancellationRequested();
         ThrowIfDisposed();
@@ -167,7 +168,7 @@ public abstract class UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserTo
     /// <param name="user">The user whose normalized name should be retrieved.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The <see cref="Task"/> that represents the asynchronous operation, containing the normalized user name for the specified <paramref name="user"/>.</returns>
-    public virtual Task<string> GetNormalizedUserNameAsync(TUser user, CancellationToken cancellationToken = default(CancellationToken))
+    public virtual Task<string?> GetNormalizedUserNameAsync(TUser user, CancellationToken cancellationToken = default(CancellationToken))
     {
         cancellationToken.ThrowIfCancellationRequested();
         ThrowIfDisposed();
@@ -185,7 +186,7 @@ public abstract class UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserTo
     /// <param name="normalizedName">The normalized name to set.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The <see cref="Task"/> that represents the asynchronous operation.</returns>
-    public virtual Task SetNormalizedUserNameAsync(TUser user, string normalizedName, CancellationToken cancellationToken = default(CancellationToken))
+    public virtual Task SetNormalizedUserNameAsync(TUser user, string? normalizedName, CancellationToken cancellationToken = default(CancellationToken))
     {
         cancellationToken.ThrowIfCancellationRequested();
         ThrowIfDisposed();
@@ -229,20 +230,20 @@ public abstract class UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserTo
     /// <returns>
     /// The <see cref="Task"/> that represents the asynchronous operation, containing the user matching the specified <paramref name="userId"/> if it exists.
     /// </returns>
-    public abstract Task<TUser> FindByIdAsync(string userId, CancellationToken cancellationToken = default(CancellationToken));
+    public abstract Task<TUser?> FindByIdAsync(string userId, CancellationToken cancellationToken = default(CancellationToken));
 
     /// <summary>
     /// Converts the provided <paramref name="id"/> to a strongly typed key object.
     /// </summary>
     /// <param name="id">The id to convert.</param>
     /// <returns>An instance of <typeparamref name="TKey"/> representing the provided <paramref name="id"/>.</returns>
-    public virtual TKey ConvertIdFromString(string id)
+    public virtual TKey? ConvertIdFromString(string? id)
     {
         if (id == null)
         {
             return default(TKey);
         }
-        return (TKey)TypeDescriptor.GetConverter(typeof(TKey)).ConvertFromInvariantString(id);
+        return (TKey?)TypeDescriptor.GetConverter(typeof(TKey)).ConvertFromInvariantString(id);
     }
 
     /// <summary>
@@ -250,7 +251,7 @@ public abstract class UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserTo
     /// </summary>
     /// <param name="id">The id to convert.</param>
     /// <returns>An <see cref="string"/> representation of the provided <paramref name="id"/>.</returns>
-    public virtual string ConvertIdToString(TKey id)
+    public virtual string? ConvertIdToString(TKey id)
     {
         if (object.Equals(id, default(TKey)))
         {
@@ -267,7 +268,7 @@ public abstract class UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserTo
     /// <returns>
     /// The <see cref="Task"/> that represents the asynchronous operation, containing the user matching the specified <paramref name="normalizedUserName"/> if it exists.
     /// </returns>
-    public abstract Task<TUser> FindByNameAsync(string normalizedUserName, CancellationToken cancellationToken = default(CancellationToken));
+    public abstract Task<TUser?> FindByNameAsync(string normalizedUserName, CancellationToken cancellationToken = default(CancellationToken));
 
     /// <summary>
     /// A navigation property for the users the store contains.
@@ -284,7 +285,7 @@ public abstract class UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserTo
     /// <param name="passwordHash">The password hash to set.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The <see cref="Task"/> that represents the asynchronous operation.</returns>
-    public virtual Task SetPasswordHashAsync(TUser user, string passwordHash, CancellationToken cancellationToken = default(CancellationToken))
+    public virtual Task SetPasswordHashAsync(TUser user, string? passwordHash, CancellationToken cancellationToken = default(CancellationToken))
     {
         cancellationToken.ThrowIfCancellationRequested();
         ThrowIfDisposed();
@@ -302,7 +303,7 @@ public abstract class UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserTo
     /// <param name="user">The user to retrieve the password hash for.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>A <see cref="Task{TResult}"/> that contains the password hash for the user.</returns>
-    public virtual Task<string> GetPasswordHashAsync(TUser user, CancellationToken cancellationToken = default(CancellationToken))
+    public virtual Task<string?> GetPasswordHashAsync(TUser user, CancellationToken cancellationToken = default(CancellationToken))
     {
         cancellationToken.ThrowIfCancellationRequested();
         ThrowIfDisposed();
@@ -332,7 +333,7 @@ public abstract class UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserTo
     /// <param name="userId">The user's id.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The user if it exists.</returns>
-    protected abstract Task<TUser> FindUserAsync(TKey userId, CancellationToken cancellationToken);
+    protected abstract Task<TUser?> FindUserAsync(TKey userId, CancellationToken cancellationToken);
 
     /// <summary>
     /// Return a user login with the matching userId, provider, providerKey if it exists.
@@ -342,7 +343,7 @@ public abstract class UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserTo
     /// <param name="providerKey">The key provided by the <paramref name="loginProvider"/> to identify a user.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The user login if it exists.</returns>
-    protected abstract Task<TUserLogin> FindUserLoginAsync(TKey userId, string loginProvider, string providerKey, CancellationToken cancellationToken);
+    protected abstract Task<TUserLogin?> FindUserLoginAsync(TKey userId, string loginProvider, string providerKey, CancellationToken cancellationToken);
 
     /// <summary>
     /// Return a user login with  provider, providerKey if it exists.
@@ -351,7 +352,7 @@ public abstract class UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserTo
     /// <param name="providerKey">The key provided by the <paramref name="loginProvider"/> to identify a user.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The user login if it exists.</returns>
-    protected abstract Task<TUserLogin> FindUserLoginAsync(string loginProvider, string providerKey, CancellationToken cancellationToken);
+    protected abstract Task<TUserLogin?> FindUserLoginAsync(string loginProvider, string providerKey, CancellationToken cancellationToken);
 
     /// <summary>
     /// Throws if this class has been disposed.
@@ -446,7 +447,7 @@ public abstract class UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserTo
     /// <returns>
     /// The <see cref="Task"/> for the asynchronous operation, containing the user, if any which matched the specified login provider and key.
     /// </returns>
-    public virtual async Task<TUser> FindByLoginAsync(string loginProvider, string providerKey,
+    public virtual async Task<TUser?> FindByLoginAsync(string loginProvider, string providerKey,
         CancellationToken cancellationToken = default(CancellationToken))
     {
         cancellationToken.ThrowIfCancellationRequested();
@@ -506,7 +507,7 @@ public abstract class UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserTo
     /// <param name="email">The email to set.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The task object representing the asynchronous operation.</returns>
-    public virtual Task SetEmailAsync(TUser user, string email, CancellationToken cancellationToken = default(CancellationToken))
+    public virtual Task SetEmailAsync(TUser user, string? email, CancellationToken cancellationToken = default(CancellationToken))
     {
         cancellationToken.ThrowIfCancellationRequested();
         ThrowIfDisposed();
@@ -524,7 +525,7 @@ public abstract class UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserTo
     /// <param name="user">The user whose email should be returned.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The task object containing the results of the asynchronous operation, the email address for the specified <paramref name="user"/>.</returns>
-    public virtual Task<string> GetEmailAsync(TUser user, CancellationToken cancellationToken = default(CancellationToken))
+    public virtual Task<string?> GetEmailAsync(TUser user, CancellationToken cancellationToken = default(CancellationToken))
     {
         cancellationToken.ThrowIfCancellationRequested();
         ThrowIfDisposed();
@@ -543,7 +544,7 @@ public abstract class UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserTo
     /// <returns>
     /// The task object containing the results of the asynchronous lookup operation, the normalized email address if any associated with the specified user.
     /// </returns>
-    public virtual Task<string> GetNormalizedEmailAsync(TUser user, CancellationToken cancellationToken = default(CancellationToken))
+    public virtual Task<string?> GetNormalizedEmailAsync(TUser user, CancellationToken cancellationToken = default(CancellationToken))
     {
         cancellationToken.ThrowIfCancellationRequested();
         ThrowIfDisposed();
@@ -561,7 +562,7 @@ public abstract class UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserTo
     /// <param name="normalizedEmail">The normalized email to set for the specified <paramref name="user"/>.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The task object representing the asynchronous operation.</returns>
-    public virtual Task SetNormalizedEmailAsync(TUser user, string normalizedEmail, CancellationToken cancellationToken = default(CancellationToken))
+    public virtual Task SetNormalizedEmailAsync(TUser user, string? normalizedEmail, CancellationToken cancellationToken = default(CancellationToken))
     {
         cancellationToken.ThrowIfCancellationRequested();
         ThrowIfDisposed();
@@ -581,7 +582,7 @@ public abstract class UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserTo
     /// <returns>
     /// The task object containing the results of the asynchronous lookup operation, the user if any associated with the specified normalized email address.
     /// </returns>
-    public abstract Task<TUser> FindByEmailAsync(string normalizedEmail, CancellationToken cancellationToken = default(CancellationToken));
+    public abstract Task<TUser?> FindByEmailAsync(string normalizedEmail, CancellationToken cancellationToken = default(CancellationToken));
 
     /// <summary>
     /// Gets the last <see cref="DateTimeOffset"/> a user's last lockout expired, if any.
@@ -722,7 +723,7 @@ public abstract class UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserTo
     /// <param name="phoneNumber">The telephone number to set.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The <see cref="Task"/> that represents the asynchronous operation.</returns>
-    public virtual Task SetPhoneNumberAsync(TUser user, string phoneNumber, CancellationToken cancellationToken = default(CancellationToken))
+    public virtual Task SetPhoneNumberAsync(TUser user, string? phoneNumber, CancellationToken cancellationToken = default(CancellationToken))
     {
         cancellationToken.ThrowIfCancellationRequested();
         ThrowIfDisposed();
@@ -740,7 +741,7 @@ public abstract class UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserTo
     /// <param name="user">The user whose telephone number should be retrieved.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The <see cref="Task"/> that represents the asynchronous operation, containing the user's telephone number, if any.</returns>
-    public virtual Task<string> GetPhoneNumberAsync(TUser user, CancellationToken cancellationToken = default(CancellationToken))
+    public virtual Task<string?> GetPhoneNumberAsync(TUser user, CancellationToken cancellationToken = default(CancellationToken))
     {
         cancellationToken.ThrowIfCancellationRequested();
         ThrowIfDisposed();
@@ -819,7 +820,7 @@ public abstract class UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserTo
     /// <param name="user">The user whose security stamp should be set.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The <see cref="Task"/> that represents the asynchronous operation, containing the security stamp for the specified <paramref name="user"/>.</returns>
-    public virtual Task<string> GetSecurityStampAsync(TUser user, CancellationToken cancellationToken = default(CancellationToken))
+    public virtual Task<string?> GetSecurityStampAsync(TUser user, CancellationToken cancellationToken = default(CancellationToken))
     {
         cancellationToken.ThrowIfCancellationRequested();
         ThrowIfDisposed();
@@ -889,7 +890,7 @@ public abstract class UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserTo
     /// <param name="name">The name of the token.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The user token if it exists.</returns>
-    protected abstract Task<TUserToken> FindTokenAsync(TUser user, string loginProvider, string name, CancellationToken cancellationToken);
+    protected abstract Task<TUserToken?> FindTokenAsync(TUser user, string loginProvider, string name, CancellationToken cancellationToken);
 
     /// <summary>
     /// Add a new user token.
@@ -914,7 +915,7 @@ public abstract class UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserTo
     /// <param name="value">The value of the token.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The <see cref="Task"/> that represents the asynchronous operation.</returns>
-    public virtual async Task SetTokenAsync(TUser user, string loginProvider, string name, string value, CancellationToken cancellationToken)
+    public virtual async Task SetTokenAsync(TUser user, string loginProvider, string name, string? value, CancellationToken cancellationToken)
     {
         cancellationToken.ThrowIfCancellationRequested();
         ThrowIfDisposed();
@@ -967,7 +968,7 @@ public abstract class UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserTo
     /// <param name="name">The name of the token.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The <see cref="Task"/> that represents the asynchronous operation.</returns>
-    public virtual async Task<string> GetTokenAsync(TUser user, string loginProvider, string name, CancellationToken cancellationToken)
+    public virtual async Task<string?> GetTokenAsync(TUser user, string loginProvider, string name, CancellationToken cancellationToken)
     {
         cancellationToken.ThrowIfCancellationRequested();
         ThrowIfDisposed();
@@ -1000,7 +1001,7 @@ public abstract class UserStoreBase<TUser, TKey, TUserClaim, TUserLogin, TUserTo
     /// <param name="user">The user whose security stamp should be set.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The <see cref="Task"/> that represents the asynchronous operation, containing the security stamp for the specified <paramref name="user"/>.</returns>
-    public virtual Task<string> GetAuthenticatorKeyAsync(TUser user, CancellationToken cancellationToken)
+    public virtual Task<string?> GetAuthenticatorKeyAsync(TUser user, CancellationToken cancellationToken)
         => GetTokenAsync(user, InternalLoginProvider, AuthenticatorKeyTokenName, cancellationToken);
 
     /// <summary>
@@ -1169,7 +1170,7 @@ public abstract class UserStoreBase<TUser, TRole, TKey, TUserClaim, TUserRole, T
     /// <param name="normalizedRoleName">The normalized role name.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The role if it exists.</returns>
-    protected abstract Task<TRole> FindRoleAsync(string normalizedRoleName, CancellationToken cancellationToken);
+    protected abstract Task<TRole?> FindRoleAsync(string normalizedRoleName, CancellationToken cancellationToken);
 
     /// <summary>
     /// Return a user role for the userId and roleId if it exists.
@@ -1178,5 +1179,5 @@ public abstract class UserStoreBase<TUser, TRole, TKey, TUserClaim, TUserRole, T
     /// <param name="roleId">The role's id.</param>
     /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
     /// <returns>The user role if it exists.</returns>
-    protected abstract Task<TUserRole> FindUserRoleAsync(TKey userId, TKey roleId, CancellationToken cancellationToken);
+    protected abstract Task<TUserRole?> FindUserRoleAsync(TKey userId, TKey roleId, CancellationToken cancellationToken);
 }