diff --git a/Tests/Dgmjr.Primitives.Tests.csproj b/Tests/Dgmjr.Primitives.Tests.csproj
index 5de7e37..d553733 100644
--- a/Tests/Dgmjr.Primitives.Tests.csproj
+++ b/Tests/Dgmjr.Primitives.Tests.csproj
@@ -12,16 +12,18 @@
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/Tests/Dgmjr.Primitives.Tests.sln b/Tests/Dgmjr.Primitives.Tests.sln
index de9044f..414a42d 100644
--- a/Tests/Dgmjr.Primitives.Tests.sln
+++ b/Tests/Dgmjr.Primitives.Tests.sln
@@ -2,56 +2,15 @@
#
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{B283EBC2-E01F-412D-9339-FD56EF114549}"
ProjectSection(SolutionItems) = preProject
- ..\..\..\..\Packages\Versions.props = ..\..\..\..\Packages\Versions.props
- ..\..\..\..\Packages\Versions.Local.json = ..\..\..\..\Packages\Versions.Local.json
+ ..\..\..\..\Directory.Build.props = ..\..\..\..\Directory.Build.props
+ ..\..\..\..\Directory.Build.targets = ..\..\..\..\Directory.Build.targets
+ ..\..\..\..\global.json = ..\..\..\..\global.json
..\..\..\..\Packages\Versions.Local.props = ..\..\..\..\Packages\Versions.Local.props
- ..\..\..\..\Packages\Packages.pkgs = ..\..\..\..\Packages\Packages.pkgs
- ..\..\..\..\Packages\Packages\AnyOf.pkgs = ..\..\..\..\Packages\Packages\AnyOf.pkgs
- ..\..\..\..\Packages\Packages\APIVersioning.pkgs = ..\..\..\..\Packages\Packages\APIVersioning.pkgs
- ..\..\..\..\Packages\Packages\AutoMapper.pkgs = ..\..\..\..\Packages\Packages\AutoMapper.pkgs
- ..\..\..\..\Packages\Packages\Azure.pkgs = ..\..\..\..\Packages\Packages\Azure.pkgs
- ..\..\..\..\Packages\Packages\AzureFunctions.pkgs = ..\..\..\..\Packages\Packages\AzureFunctions.pkgs
- ..\..\..\..\Packages\Packages\DDD.pkgs = ..\..\..\..\Packages\Packages\DDD.pkgs
- ..\..\..\..\Packages\Packages\EFCore.pkgs = ..\..\..\..\Packages\Packages\EFCore.pkgs
- ..\..\..\..\Packages\Packages\GlobalBuild.pkgs = ..\..\..\..\Packages\Packages\GlobalBuild.pkgs
- ..\..\..\..\Packages\Packages\GlobalCodeGenerators.pkgs = ..\..\..\..\Packages\Packages\GlobalCodeGenerators.pkgs
- ..\..\..\..\Packages\Packages\Images.pkgs = ..\..\..\..\Packages\Packages\Images.pkgs
- ..\..\..\..\Packages\Packages\McMaster.CommandLineUtils.pkgs = ..\..\..\..\Packages\Packages\McMaster.CommandLineUtils.pkgs
- ..\..\..\..\Packages\Packages\MediatR.pkgs = ..\..\..\..\Packages\Packages\MediatR.pkgs
- ..\..\..\..\Packages\Packages\Microsoft.AspNetCore.pkgs = ..\..\..\..\Packages\Packages\Microsoft.AspNetCore.pkgs
- ..\..\..\..\Packages\Packages\Microsoft.Extensions.pkgs = ..\..\..\..\Packages\Packages\Microsoft.Extensions.pkgs
- ..\..\..\..\Packages\Packages\Microsoft.Identity.pkgs = ..\..\..\..\Packages\Packages\Microsoft.Identity.pkgs
- ..\..\..\..\Packages\Packages\Microsoft.VisualStudio.Shell.Interop.pkgs = ..\..\..\..\Packages\Packages\Microsoft.VisualStudio.Shell.Interop.pkgs
- ..\..\..\..\Packages\Packages\Miscellany.pkgs = ..\..\..\..\Packages\Packages\Miscellany.pkgs
- ..\..\..\..\Packages\Packages\MSBuild.pkgs = ..\..\..\..\Packages\Packages\MSBuild.pkgs
- ..\..\..\..\Packages\Packages\MSBuildProjectCreator.pkgs = ..\..\..\..\Packages\Packages\MSBuildProjectCreator.pkgs
- ..\..\..\..\Packages\Packages\MSBuildSdks.pkgs = ..\..\..\..\Packages\Packages\MSBuildSdks.pkgs
- ..\..\..\..\Packages\Packages\Newtonsoft.Json.pkgs = ..\..\..\..\Packages\Packages\Newtonsoft.Json.pkgs
- ..\..\..\..\Packages\Packages\NuGet.pkgs = ..\..\..\..\Packages\Packages\NuGet.pkgs
- ..\..\..\..\Packages\Packages\Powershell.pkgs = ..\..\..\..\Packages\Packages\Powershell.pkgs
- ..\..\..\..\Packages\Packages\Roslyn.pkgs = ..\..\..\..\Packages\Packages\Roslyn.pkgs
- ..\..\..\..\Packages\Packages\Serilog.pkgs = ..\..\..\..\Packages\Packages\Serilog.pkgs
- ..\..\..\..\Packages\Packages\SlnGen.pkgs = ..\..\..\..\Packages\Packages\SlnGen.pkgs
- ..\..\..\..\Packages\Packages\Swashbuckle.pkgs = ..\..\..\..\Packages\Packages\Swashbuckle.pkgs
- ..\..\..\..\Packages\Packages\System.pkgs = ..\..\..\..\Packages\Packages\System.pkgs
- ..\..\..\..\Packages\Packages\Telegram.pkgs = ..\..\..\..\Packages\Packages\Telegram.pkgs
- ..\..\..\..\Packages\Packages\Testing.EfCore.pkgs = ..\..\..\..\Packages\Packages\Testing.EfCore.pkgs
- ..\..\..\..\Packages\Packages\Testing.pkgs = ..\..\..\..\Packages\Packages\Testing.pkgs
- ..\..\..\..\Packages\Packages\Validation.pkgs = ..\..\..\..\Packages\Packages\Validation.pkgs
- ..\..\..\..\Packages\Packages\XmlDocMd.pkgs = ..\..\..\..\Packages\Packages\XmlDocMd.pkgs
- ..\..\..\..\Packages\Versions\AspNetCoreIdentity.props = ..\..\..\..\Packages\Versions\AspNetCoreIdentity.props
- ..\..\..\..\Packages\Versions\AutoMapper.props = ..\..\..\..\Packages\Versions\AutoMapper.props
- ..\..\..\..\Packages\Versions\CoreIntegratedLibs.props = ..\..\..\..\Packages\Versions\CoreIntegratedLibs.props
- ..\..\..\..\Packages\Versions\EFCore.props = ..\..\..\..\Packages\Versions\EFCore.props
- ..\..\..\..\Packages\Versions\JsonPatch.props = ..\..\..\..\Packages\Versions\JsonPatch.props
- ..\..\..\..\Packages\Versions\MediatR.props = ..\..\..\..\Packages\Versions\MediatR.props
- ..\..\..\..\Packages\Versions\Microsoft.CodeAnalysis.props = ..\..\..\..\Packages\Versions\Microsoft.CodeAnalysis.props
- ..\..\..\..\Packages\Versions\Microsoft.Extensions.Logging.props = ..\..\..\..\Packages\Versions\Microsoft.Extensions.Logging.props
- ..\..\..\..\Packages\Versions\MSBuild.props = ..\..\..\..\Packages\Versions\MSBuild.props
- ..\..\..\..\Packages\Versions\PowerShell.props = ..\..\..\..\Packages\Versions\PowerShell.props
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dgmjr.Primitives.Tests", "Dgmjr.Primitives.Tests.csproj", "{89D6F98C-27F8-46DE-9F4A-4381BBEAD6B5}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dgmjr.Primitives", "..\src\Dgmjr.Primitives.csproj", "{4E1F4A52-7F97-43E1-AAA6-2EEEE07326E6}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dgmjr.Primitives.Tests", "Dgmjr.Primitives.Tests.csproj", "{028D927A-D932-4DC0-B8CC-0FADA0950F0A}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -63,18 +22,30 @@ Global
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {89D6F98C-27F8-46DE-9F4A-4381BBEAD6B5}.Local|Any CPU.ActiveCfg = Local|Any CPU
- {89D6F98C-27F8-46DE-9F4A-4381BBEAD6B5}.Local|Any CPU.Build.0 = Local|Any CPU
- {89D6F98C-27F8-46DE-9F4A-4381BBEAD6B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {89D6F98C-27F8-46DE-9F4A-4381BBEAD6B5}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {89D6F98C-27F8-46DE-9F4A-4381BBEAD6B5}.Testing|Any CPU.ActiveCfg = Testing|Any CPU
- {89D6F98C-27F8-46DE-9F4A-4381BBEAD6B5}.Testing|Any CPU.Build.0 = Testing|Any CPU
- {89D6F98C-27F8-46DE-9F4A-4381BBEAD6B5}.Staging|Any CPU.ActiveCfg = Staging|Any CPU
- {89D6F98C-27F8-46DE-9F4A-4381BBEAD6B5}.Staging|Any CPU.Build.0 = Staging|Any CPU
- {89D6F98C-27F8-46DE-9F4A-4381BBEAD6B5}.Production|Any CPU.ActiveCfg = Local|Any CPU
- {89D6F98C-27F8-46DE-9F4A-4381BBEAD6B5}.Production|Any CPU.Build.0 = Local|Any CPU
- {89D6F98C-27F8-46DE-9F4A-4381BBEAD6B5}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {89D6F98C-27F8-46DE-9F4A-4381BBEAD6B5}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4E1F4A52-7F97-43E1-AAA6-2EEEE07326E6}.Local|Any CPU.ActiveCfg = Local|Any CPU
+ {4E1F4A52-7F97-43E1-AAA6-2EEEE07326E6}.Local|Any CPU.Build.0 = Local|Any CPU
+ {4E1F4A52-7F97-43E1-AAA6-2EEEE07326E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4E1F4A52-7F97-43E1-AAA6-2EEEE07326E6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4E1F4A52-7F97-43E1-AAA6-2EEEE07326E6}.Testing|Any CPU.ActiveCfg = Testing|Any CPU
+ {4E1F4A52-7F97-43E1-AAA6-2EEEE07326E6}.Testing|Any CPU.Build.0 = Testing|Any CPU
+ {4E1F4A52-7F97-43E1-AAA6-2EEEE07326E6}.Staging|Any CPU.ActiveCfg = Staging|Any CPU
+ {4E1F4A52-7F97-43E1-AAA6-2EEEE07326E6}.Staging|Any CPU.Build.0 = Staging|Any CPU
+ {4E1F4A52-7F97-43E1-AAA6-2EEEE07326E6}.Production|Any CPU.ActiveCfg = Local|Any CPU
+ {4E1F4A52-7F97-43E1-AAA6-2EEEE07326E6}.Production|Any CPU.Build.0 = Local|Any CPU
+ {4E1F4A52-7F97-43E1-AAA6-2EEEE07326E6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4E1F4A52-7F97-43E1-AAA6-2EEEE07326E6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {028D927A-D932-4DC0-B8CC-0FADA0950F0A}.Local|Any CPU.ActiveCfg = Local|Any CPU
+ {028D927A-D932-4DC0-B8CC-0FADA0950F0A}.Local|Any CPU.Build.0 = Local|Any CPU
+ {028D927A-D932-4DC0-B8CC-0FADA0950F0A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {028D927A-D932-4DC0-B8CC-0FADA0950F0A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {028D927A-D932-4DC0-B8CC-0FADA0950F0A}.Testing|Any CPU.ActiveCfg = Testing|Any CPU
+ {028D927A-D932-4DC0-B8CC-0FADA0950F0A}.Testing|Any CPU.Build.0 = Testing|Any CPU
+ {028D927A-D932-4DC0-B8CC-0FADA0950F0A}.Staging|Any CPU.ActiveCfg = Staging|Any CPU
+ {028D927A-D932-4DC0-B8CC-0FADA0950F0A}.Staging|Any CPU.Build.0 = Staging|Any CPU
+ {028D927A-D932-4DC0-B8CC-0FADA0950F0A}.Production|Any CPU.ActiveCfg = Local|Any CPU
+ {028D927A-D932-4DC0-B8CC-0FADA0950F0A}.Production|Any CPU.Build.0 = Local|Any CPU
+ {028D927A-D932-4DC0-B8CC-0FADA0950F0A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {028D927A-D932-4DC0-B8CC-0FADA0950F0A}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/Tests/Dgmjr.Primitives.Tests.xml b/Tests/Dgmjr.Primitives.Tests.xml
index 1427be4..41f3ab7 100644
--- a/Tests/Dgmjr.Primitives.Tests.xml
+++ b/Tests/Dgmjr.Primitives.Tests.xml
@@ -6,7 +6,11 @@
- Pattern explanation:
+ Pattern:
+ ^(?<Scheme>\r\n [a-z][a-z0-9+\\-.]*\r\n )\r\n :\r\n (?<DoubleSlashes>\\/\\/)?\r\n (?<Authority>\r\n (?:\r\n (?<UserInfo>\r\n (?:\r\n %[0-9a-f]{2}|[-._~!$&'()*+,;=:]|[a-z0-9]\r\n )*\r\n )@\r\n )?\r\n (?<Host>\r\n (?:\r\n \\[(?:\r\n (?:[0-9a-f]{1,4}:){6}(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?<=:):(?=:))|::(?:[0-9a-f]{1,4}:){5}(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?<=:):(?=:))|(?:[0-9a-f]{1,4}:)?(?:[0-9a-f]{1,4}:)?(?:[0-9a-f]{1,4}:)?(?:[0-9a-f]{1,4}:)?(?:[0-9a-f]{1,4}:)?[0-9a-f]{1,4}:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4}|(?:[0-9a-f]{1,4}:){1,7}:|:(?:[0-9a-f]{1,4}:){1,7}\r\n )\r\n (?![0-9a-f])\r\n )\r\n |[a-z0-9]+\r\n (?:[-.][a-z0-9]+)*\r\n )\r\n (?:\r\n \\:\r\n (?<Port>[0-9]+)\r\n )?\r\n )?\r\n (?<Path>(?:\\/(?:%[0-9a-f]{2}|[-._~!$&'()*+,;=:@\\/]|(?:[a-z0-9]|%[0-9a-f]{2})*)*)*)?\r\n (?:\r\n \\?\r\n (?<Query>\r\n (?:%[0-9a-f]{2}|[-._~!$&'()*+,;=:@\\/?]|(?:[a-z0-9]|%[0-9a-f]{2})*)*\r\n )?\r\n )?\r\n (?:\r\n #\r\n (?<Fragment>\r\n (?:%[0-9a-f]{2}|[-._~!$&'()*+,;=:@\\/?]|(?:[a-z0-9]|%[0-9a-f]{2})*)*\r\n )?\r\n )?$
+ Options:
+ RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline | RegexOptions.IgnorePatternWhitespace
+ Explanation:
○ Match if at the beginning of the string.
○ "Scheme" capture group.
@@ -105,7 +109,7 @@
○ Optional (greedy).
○ Match ':'.
○ "Port" capture group.
- ○ Match '0' through '9' greedily at least once.
+ ○ Match a character in the set [0-9] greedily at least once.
○ Optional (greedy).
○ "Path" capture group.
○ Loop greedily any number of times.
@@ -209,74 +213,100 @@
Pushes 3 values onto the backtracking stack.
-
- Provides access to the current assembly information.
-
-
- Provides access to the git information for the current assembly.
-
- IsDirty: true
+
+ Gets whether the current repository is dirty.
+
- IsDirtyString: true
+
+ => @"true"
+
- Repository URL:
+
+ => @""
+
- Branch: Cleaning-up-Primitives
+
+ => @""
+
- Commit: 36acd78
+
+ => @""
+
- Sha: 36acd78829bbcfd4a6e43ef6016ffb8277624669
+
+ => @""
+
- Commit date:
+
+ => @""
+
- Commits on top of base version: 17
+
+ => @"0"
+
- Tag: v0.0.1-17-g36acd78
+
+ => @""
+
- Base tag: v0.0.1
-
-
- Provides access to the base version information used to determine the .
+
+ => @""
+
- Major: 0
+
+ => @"0"
+
- Minor: 0
+
+ => @"0"
+
- Patch: 1
-
-
- Provides access to SemVer information for the current assembly.
+
+ => @"0"
+
- Major: 0
+
+ => @"0"
+
- Minor: 0
+
+ => @"0"
+
- Patch: 18
+
+ => @"0"
+
- Label:
+
+ => @""
+
- Label with dash prefix:
+
+ => @""
+
- Source: Tag
+
+ => @"Default"
+
diff --git a/Tests/DurationTests.cs b/Tests/DurationTests.cs
index 76fcde4..2d59189 100644
--- a/Tests/DurationTests.cs
+++ b/Tests/DurationTests.cs
@@ -7,7 +7,7 @@ namespace Dgmjr.Primitives.Tests;
public class DurationTests : BaseTest
{
- public DurationTests(IOutputHelper output)
+ public DurationTests(ITestOutputHelper output)
: base(output) { }
[Theory]
diff --git a/Tests/iriTests.cs b/Tests/iriTests.cs
index d86cf67..c20a4d5 100644
--- a/Tests/iriTests.cs
+++ b/Tests/iriTests.cs
@@ -1,3 +1,4 @@
+using System.Text.RegularExpressions;
using System.Reflection.Emit;
using System.Runtime.CompilerServices;
@@ -52,8 +53,11 @@ public iriTests(ITestOutputHelper output)
)?
)?$";
- [GeneratedRegex(RegexString, Compiled | Singleline | IgnoreCase | IgnorePatternWhitespace)]
- private static partial Regex Regex();
+ [GeneratedRegex(
+ RegexString,
+ Rxo.Compiled | Rxo.Singleline | Rxo.IgnoreCase | Rxo.IgnorePatternWhitespace
+ )]
+ public static partial Regex Regex();
protected override string[][] InvalidValuesStrings => new[] { new[] { "fcku!!!!!!" } };
diff --git a/src/Int24.cs b/src/Int24.cs
index 45d865f..27f3eaa 100644
--- a/src/Int24.cs
+++ b/src/Int24.cs
@@ -61,10 +61,10 @@ namespace System
private readonly byte _b2;
public static implicit operator uint(i24 value) =>
- (uint)value | (uint)(value >> BitOffset) | (uint)(value >> BitOffset * 2);
+ (uint)value._b0 | (uint)(value._b1 >> BitOffset) | (uint)(value._b2 >> BitOffset * 2);
public static implicit operator int(i24 value) =>
- (int)value | (int)(value >> BitOffset) | (int)(value >> BitOffset * 2);
+ (int)value._b0 | (int)(value._b1 >> BitOffset) | (int)(value._b2 >> BitOffset * 2);
///
/// Gets the value of the integer.
diff --git a/src/LICENSE.md b/src/LICENSE.md
old mode 100644
new mode 100755
index fa428d5..2b5eaac
--- a/src/LICENSE.md
+++ b/src/LICENSE.md
@@ -1,25 +1,35 @@
---
-
date: 2023-07-13T05:44:46.048Z
-description: Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files..yadda, yadda, yadda...
+description: Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files, yadda, yadda, yadda...
keywords:
-- IP
-- copyright
-- license
-- mit
+ - IP
+ - copyright
+ - license
+ - mit
+permissions:
+ - commercial-use
+ - modifications
+ - distribution
+ - private-use
+conditions:
+ - include-copyright
+liimitations:
+ - liability
+ - warranty
lastmod: 2023-08-29T17:13:51.216Z
license: MIT
slug: mit-license
title: MIT License
type: license
--------------
+---
# MIT License
-Copyright (c) 2022-2023 [David G. Moore, Jr.](mailto:david@dgmjr.io "Send David an email") ([@dgmjr](https://github.com/dgmjr "Contact david on GitHub")), All Rights Reserved
+## Copyright © 2022-2023 [David G. Moore, Jr.](mailto:david@dgmjr.io "Send David an email") ([@dgmjr](https://github.com/dgmjr "Contact david on GitHub")), All Rights Reserved
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
diff --git a/src/ObjectId.cs b/src/ObjectId.cs
index 427cfc6..2e3dded 100644
--- a/src/ObjectId.cs
+++ b/src/ObjectId.cs
@@ -64,6 +64,8 @@ public readonly partial record struct ObjectId
public static ObjectId Empty => From(EmptyValue) with { OriginalString = EmptyValue };
+ public override readonly string ToString() => IsEmpty ? string.Empty : Value;
+
public readonly bool IsNull => Value == EmptyValue;
public readonly bool IsEmpty => Value == EmptyValue;
public string OriginalString { get; init; }
@@ -153,11 +155,10 @@ public static bool TryParse(string? s, IFormatProvider? provider, out ObjectId r
public readonly int Timestamp => int.Parse(Value.Substring(0, 8), NumberStyles.HexNumber);
public long Machine => long.Parse(Value.Substring(7, 10), NumberStyles.HexNumber);
public i24 Counter => i24.Parse(Value.Substring(17, 6), NumberStyles.HexNumber);
+ private static i24 _counter = new(Randoms.NextInt32(0, i24.MaxValue));
public static i24 NextCounter() => _counter++;
- private static i24 _counter = new(Randoms.NextInt32(0, i24.MaxValue));
-
public static long _Machine = BitConverter.ToInt64(
Guid.NewGuid().ToByteArray().Take(5).ToArray(),
0